:root{--bg:#f7f7f8;--panel:#fff;--panel-2:#f1f1f3;--canvas:#e9e9ec;--line:#e3e3e7;--line-strong:#cfcfd6;--text:#1c1c21;--muted:#6e6e7a;--accent:#5b5bd6;--accent-soft:#ededfc;--danger:#e5484d;--shadow:0 1px 2px #0000000d, 0 8px 24px #00000014;--radius:8px;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111113;--panel:#18181b;--panel-2:#212126;--canvas:#0b0b0d;--line:#2a2a30;--line-strong:#3a3a42;--text:#ececf0;--muted:#9b9ba6;--accent:#8b8bf0;--accent-soft:#25254a;--shadow:0 1px 2px #0006, 0 8px 24px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font:13px/1.45 var(--font);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:600}h2{margin:0;font-size:15px;font-weight:600}h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:600}p{margin:4px 0}kbd{font:11px var(--font);border:1px solid var(--line-strong);background:var(--panel);border-bottom-width:2px;border-radius:4px;padding:1px 5px}button{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:12px}.tabular{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.block{display:block}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.row{align-items:center;gap:6px;min-width:0;display:flex}.row.gap{gap:10px}.gap-sm{gap:6px}.wrap{flex-wrap:wrap}.spacer{flex:1}.boot{background:var(--bg);height:100%}.btn{border:1px solid var(--line-strong);background:var(--panel);cursor:pointer;white-space:nowrap;height:32px;color:var(--text);border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex;text-decoration:none!important}.btn:hover{background:var(--panel-2)}.btn:disabled{opacity:.5;cursor:default}.btn.sm{height:28px;padding:0 10px;font-size:12px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel-2)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger-ghost{color:var(--danger);background:0 0;border-color:#0000}.btn.danger-ghost:hover{background:color-mix(in srgb, var(--danger) 10%, transparent)}.btn.block{width:100%;height:38px}.icon-btn{cursor:pointer;width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:18px;line-height:1;display:inline-grid;text-decoration:none!important}.icon-btn:hover{background:var(--panel-2);color:var(--text)}.input,.select,textarea{border:1px solid var(--line-strong);background:var(--panel);height:32px;font:inherit;color:var(--text);border-radius:6px;min-width:0;padding:0 10px}textarea{resize:vertical;width:100%;height:auto;padding:8px 10px;line-height:1.5}.select{cursor:pointer;padding-right:24px}.input:focus,.select:focus,textarea:focus,.btn:focus-visible,.drop:focus-visible,.title-input:focus{outline:2px solid color-mix(in srgb, var(--accent) 50%, transparent);outline-offset:1px;border-color:var(--accent)}.input.invalid{border-color:#f5a623}.input.search{width:200px}.field{flex-direction:column;gap:4px;margin:0;display:flex}.field>span{color:var(--muted);font-size:12px;font-weight:500}.field.tight{margin-bottom:4px}.field .input{width:100%}.field-hint{color:var(--muted);margin-bottom:8px;font-size:12px}.field-hint.warn{color:#c47f00}.check{cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.alert{background:color-mix(in srgb, var(--danger) 10%, var(--panel));color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent);border-radius:6px;padding:8px 10px;font-size:12px}.pill,.sev,.mini-count{white-space:nowrap;align-items:center;gap:5px;font-size:12px;display:inline-flex}.pill{background:color-mix(in srgb, var(--c) 14%, transparent);border-radius:99px;padding:1px 8px 1px 6px}.pill i,.sev i,.mini-count i,.column-head i{background:var(--c);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.sev i{border-radius:2px;width:7px;height:7px;transform:rotate(45deg)}.tag{background:var(--panel-2);border:1px solid var(--line);white-space:nowrap;color:var(--muted);border-radius:4px;padding:0 6px;font-size:11px;display:inline-block}.issue-num{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;font-weight:500}.avatar{color:#fff;vertical-align:middle;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;font-size:9px;font-weight:600;display:inline-grid}.shell{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:16px;height:48px;padding:0 16px;display:flex}.brand{cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0;font-size:14px;display:flex}.tabs{gap:2px;display:flex}.tabs a{color:var(--muted);border-radius:6px;padding:6px 12px;font-weight:500;text-decoration:none}.tabs a:hover{background:var(--panel-2);color:var(--text)}.tabs a.active{background:var(--accent-soft);color:var(--accent)}.main{flex:1;min-height:0;overflow:auto}.page{max-width:1400px;margin:0 auto;padding:24px 28px 48px}.page.wide{max-width:none}.page-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.empty{text-align:center;color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--radius);padding:48px}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast{background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;max-width:520px;padding:8px 14px;font-size:13px;animation:.15s ease-out pop}.toast-error{background:var(--danger);color:#fff}@keyframes pop{0%{opacity:0;transform:translateY(6px)}}.login{place-items:center;min-height:100%;padding:24px;display:grid}.login-card{background:var(--panel);border:1px solid var(--line);width:360px;max-width:100%;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:14px;padding:28px;display:flex}.login-card h1{font-size:20px}.login-logo{margin-bottom:4px}.backdrop{z-index:50;background:#0006;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);box-shadow:var(--shadow);border-radius:12px;width:520px;max-width:100%;max-height:calc(100vh - 48px);padding:20px 22px;overflow:auto}.modal.wide{width:980px}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-foot{margin-top:18px}.form-cols{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;display:grid}.drops{grid-template-columns:1fr 1fr;gap:16px;display:grid}.drop-label{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:500}.drop{border:1.5px dashed var(--line-strong);border-radius:var(--radius);background:var(--panel-2);cursor:pointer;place-items:center;height:300px;transition:border-color .1s,background .1s;display:grid;position:relative;overflow:hidden}.drop.active{border-color:var(--accent)}.drop.over{border-color:var(--accent);background:var(--accent-soft)}.drop.has{background:var(--canvas);border-style:solid}.drop img{object-fit:contain;object-position:top;width:100%;height:100%}.drop-empty{text-align:center;flex-direction:column;gap:6px;padding:16px;display:flex}.drop-title{font-size:14px;font-weight:600}.drop-clear{color:#fff;cursor:pointer;background:#0009;border:0;border-radius:50%;width:26px;height:26px;font-size:16px;line-height:1;position:absolute;top:8px;right:8px}.first-run{border:1.5px dashed var(--line-strong);background:var(--panel);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:8px;width:100%;padding:64px;display:flex}.first-run:hover{border-color:var(--accent)}.screen-group{margin-bottom:28px}.group-title{margin-bottom:10px;font-size:13px}.screen-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.screen-card{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:10px;transition:box-shadow .15s,border-color .15s;overflow:hidden;text-decoration:none!important}.screen-card:hover{box-shadow:var(--shadow);border-color:var(--line-strong)}.thumbs{background:var(--canvas);gap:1px;height:170px;display:flex}.thumbs img{object-fit:cover;object-position:top;flex:1;min-width:0}.screen-meta{flex-direction:column;gap:6px;padding:10px 12px;display:flex}.count{background:var(--panel-2);color:var(--muted);white-space:nowrap;border-radius:99px;padding:1px 7px;font-size:11px}.count.open{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);font-weight:600}.count.done{color:#30a46c;background:#30a46c29}.compare{flex-direction:column;height:100%;display:flex}.compare-head{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:10px 16px;display:flex}.compare-title{min-width:0}.compare-title h1{font-size:16px}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:14px;min-height:44px;padding:6px 16px;display:flex}.seg{background:var(--panel-2);border-radius:7px;gap:2px;padding:2px;display:inline-flex}.seg button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:5px;padding:4px 10px;font-size:12px;font-weight:500}.seg button.on{background:var(--panel);color:var(--text);box-shadow:0 1px 2px #0000001a}.seg button:disabled{opacity:.4;cursor:not-allowed}.seg.mini{margin-left:auto}.seg.mini button{padding:1px 8px;font-size:11px}.zoom{border:1px solid var(--line);border-radius:7px;align-items:center;display:inline-flex}.zoom-val{cursor:pointer;font-variant-numeric:tabular-nums;background:0 0;border:0;width:48px;font-size:12px}.hint{color:var(--muted);font-size:12px}.hint-on{color:var(--accent);font-weight:600}.compare-body{flex:1;min-height:0;display:flex}.panes{flex:1;min-width:0;display:flex}.pane{border-right:1px solid var(--line);flex-direction:column;flex:1;min-width:0;display:flex}.pane-label{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:2px;height:32px;padding:0 12px;font-size:12px;display:flex}.pane-scroll{background:var(--canvas);flex:1;padding:16px;overflow:auto}.canvas-stack{min-width:120px;margin:0 auto}.build-stack{box-shadow:0 0 0 1px var(--line), 0 4px 16px #00000014;background:#fff;display:grid;position:relative}.build-stack>img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;grid-area:1/1;width:100%;height:auto;display:block}.build-stack>img.overlay-img{pointer-events:none;align-self:start}.pane-embed{background:var(--canvas);flex:1}.pane-embed iframe{border:0;width:100%;height:100%;display:block}.pane-empty{text-align:center;background:var(--canvas);flex:1;place-content:center;gap:8px;padding:24px;display:grid}.annot-layer{cursor:crosshair;touch-action:none;position:absolute;inset:0}.annot-layer.redrawing{outline:2px solid var(--accent);outline-offset:-2px}.rect{border:2px solid var(--c);background:color-mix(in srgb, var(--c) 8%, transparent);cursor:pointer;border-radius:2px;transition:background .1s,box-shadow .1s;position:absolute}.rect:hover,.rect.hover{background:color-mix(in srgb, var(--c) 18%, transparent)}.rect.selected{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--c), 0 0 0 9999px #0000002e;z-index:2}.rect.resolved{opacity:.55;border-style:dashed}.rect-tag{background:var(--c);color:#fff;white-space:nowrap;pointer-events:none;font-variant-numeric:tabular-nums;border-radius:3px 3px 3px 0;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;top:-2px;left:-2px;transform:translateY(-100%)}.rect.drafting{--c:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);pointer-events:none;z-index:3;border-style:dashed}.ghost-rect{pointer-events:none;background:#ffffff0d;border:2px dashed;border-radius:2px;position:absolute}.ghost-rect span{color:#fff;background:#1c1c21;border-radius:3px 3px 3px 0;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;top:-2px;left:-2px;transform:translateY(-100%)}.compare-side{background:var(--panel);border-left:1px solid var(--line);flex:none;width:360px;overflow:auto}.side-list{flex-direction:column;display:flex}.side-head{border-bottom:1px solid var(--line);background:var(--panel);z-index:1;align-items:center;gap:6px;padding:12px 14px;display:flex;position:sticky;top:0}.mini-count{color:var(--muted);font-size:11px}.side-item{text-align:left;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;flex-direction:column;gap:6px;padding:10px 14px;display:flex}.side-item:hover{background:var(--panel-2)}.side-item.resolved{opacity:.6}.side-title{font-weight:500}.empty-side{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:28px 22px;display:flex}.draw-illus{background:var(--panel-2);border-radius:8px;width:120px;height:76px;margin-bottom:8px;position:relative}.draw-illus:after{content:"";border:2px dashed var(--accent);background:var(--accent-soft);border-radius:3px;width:56px;height:32px;position:absolute;top:18px;left:22px}.issue-panel{flex-direction:column;gap:14px;padding:14px 16px 24px;display:flex}.panel-head{align-items:center;gap:8px;min-width:0;display:flex}.panel-crop{border-radius:6px;align-self:flex-start;display:block}.title-input{font:600 16px/1.35 var(--font);color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;width:calc(100% + 16px);margin:0 -8px;padding:6px 8px}.title-input:hover{border-color:var(--line)}.prop-grid{grid-template-columns:84px 1fr;align-items:center;gap:8px 10px;display:grid}.prop-grid>span:nth-child(odd){color:var(--muted);font-size:12px}.prop-grid .select,.prop-grid .input{width:100%;height:30px}.comments{border-top:1px solid var(--line);flex-direction:column;gap:12px;padding-top:14px;display:flex}.comment{gap:8px;display:flex}.comment-body{white-space:pre-wrap;word-break:break-word;margin-top:2px}.comment-form{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.crop{box-shadow:0 0 0 1px var(--line);background-repeat:no-repeat;background-color:var(--canvas);border-radius:4px;flex:none;position:relative}.crop-box{border:1.5px solid var(--accent);border-radius:2px;position:absolute;box-shadow:0 0 0 1px #ffffffb3}.crop-empty{background:var(--panel-2)}.filterbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.filterbar .select{height:30px;font-size:12px}.filterbar .input{height:30px}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:auto}.issues-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1100px}.issues-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel);z-index:1;padding:0;font-size:12px;font-weight:500;position:sticky;top:0}.issues-table th>button{padding:9px 10px}.issues-table th:not(:has(button)){padding:9px 10px}.issues-table th>button{cursor:pointer;color:inherit;text-align:left;background:0 0;border:0;width:100%;font-weight:500}.issues-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:8px 10px;overflow:hidden}.issues-table tr:last-child td{border-bottom:0}.issues-table tbody tr{cursor:pointer}.issues-table tbody tr:hover,.issues-table tbody tr.active{background:var(--panel-2)}.issues-table th:first-child{width:56px}.issues-table th:nth-child(2){width:120px}.issues-table th:nth-child(4){width:180px}.issues-table th:nth-child(5){width:150px}.issues-table th:nth-child(6){width:100px}.issues-table th:nth-child(7),.issues-table th:nth-child(8){width:150px}.issues-table th:nth-child(9){width:96px}.status-select{border-color:color-mix(in srgb, var(--c) 40%, transparent);background:color-mix(in srgb, var(--c) 12%, var(--panel));border-radius:99px;width:100%;height:26px;font-size:12px}.legend{justify-content:flex-end;gap:14px;margin-top:14px;display:flex}.drawer-backdrop{z-index:30;position:fixed;inset:0}.drawer{background:var(--panel);border-left:1px solid var(--line);width:440px;box-shadow:var(--shadow);z-index:31;animation:.15s ease-out slide;position:fixed;top:48px;bottom:0;right:0;overflow:auto}@keyframes slide{0%{opacity:0;transform:translate(16px)}}.board-page{flex-direction:column;height:100%;padding-bottom:16px;display:flex}.board{flex:1;grid-template-columns:repeat(5,minmax(270px,1fr));gap:12px;min-height:0;display:grid;overflow-x:auto}.column{background:var(--panel-2);border:1px solid #0000;border-radius:10px;flex-direction:column;min-height:0;display:flex}.column.drop-on{border-color:var(--accent)}.column-head{flex:none;align-items:center;gap:8px;padding:10px 12px;display:flex}.column-body{flex-direction:column;flex:1;gap:8px;min-height:80px;padding:0 8px 12px;display:flex;overflow-y:auto}.column-empty{text-align:center;padding:20px 0}.card{background:var(--panel);border:1px solid var(--line);cursor:grab;border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex;box-shadow:0 1px 2px #0000000a}.card:hover{border-color:var(--line-strong)}.card.dragging{opacity:.4}.card .crop{align-self:center}.card-title{font-weight:500;line-height:1.35}.card-foot{margin-top:-2px}.drop-line{background:var(--accent);border-radius:2px;height:3px;margin:-2px 0 6px}@media (width<=1100px){.form-cols{grid-template-columns:1fr 1fr}.compare-side{width:300px}}.spinner{vertical-align:-2px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}.spinner.lg{border-width:3px;width:24px;height:24px;margin:0 auto 4px}@keyframes spin{to{transform:rotate(360deg)}}.busy{color:var(--muted);align-items:center;gap:6px;margin-left:8px;display:inline-flex}.warn-text{color:#c47f00;cursor:help}.pane-embed{flex-direction:column;display:flex}.pane-embed iframe{flex:1;height:auto;min-height:0}.render-error{background:color-mix(in srgb, #f5a623 14%, var(--panel));border-bottom:1px solid #f5a62359;flex:none;align-items:center;gap:10px;padding:8px 12px;font-size:12px;display:flex}.render-error span{flex:1;min-width:0}
