:root{--bg:#f6f8fa;--surface:#fff;--surface-2:#f1f4f7;--border:#e4e8ed;--border-strong:#cdd3db;--divider:#eef1f5;--text:#1a1d22;--text-muted:#5c636e;--text-faint:#9099a3;--accent:#f5941e;--accent-hover:#e07d0a;--accent-strong:#b86408;--accent-soft:#fef4e7;--accent-tint:#facf91;--accent-400:#f7a438;--ink:#14171a;--ink-border:#23272d;--ink-text:#eef1f5;--ink-muted:#9ba3ae;--ink-faint:#545b65;--success:#177a4c;--success-soft:#e7f4ec;--info:#2563c9;--info-soft:#e7eefb;--warn:#c77d11;--warn-soft:#fbefd8;--danger:#c8443b;--danger-soft:#fbe9e7;--purple:#6a4bc2;--purple-soft:#ede7fb;--radius:12px;--radius-sm:8px;--radius-lg:16px;--radius-pill:999px;--shadow:0 1px 2px #14171a0d, 0 3px 10px #14171a0a;--shadow-lg:0 6px 16px #14171a1a, 0 12px 32px #14171a14;--font:"Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--display:"Jost", var(--font);--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sidebar-w:214px;--topbar-h:60px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}a{color:var(--accent-hover);text-decoration:none}a:hover{color:var(--accent-strong);text-decoration:none}h1,h2,h3,h4{margin:0 0 .4em;line-height:1.2}h1{font-family:var(--display);letter-spacing:-.01em;font-size:1.9rem;font-weight:400}h2{font-family:var(--display);font-size:1.5rem;font-weight:400}h3{font-size:1.05rem;font-weight:700}p{margin:0 0 1rem}.app-shell{align-items:stretch;min-height:100vh;display:flex}.app-sidebar{width:var(--sidebar-w);background:var(--ink);color:var(--ink-muted);flex-direction:column;flex:none;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.app-sidebar .brand{padding:4px 8px 26px}.app-sidebar .brand img{width:132px;display:block}.app-sidebar .nav-label{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);padding:0 12px 8px;font-size:10px}.app-sidebar .nav-item{color:var(--ink-muted);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:9px 12px;font-size:.9rem;font-weight:500;transition:background .12s,color .12s;display:flex}.app-sidebar .nav-item:hover{color:#f7a438;background:#f5941e1a}.app-sidebar .nav-item.active{color:#f7a438;background:#f5941e1f;font-weight:600}.app-sidebar .user{border-top:1px solid var(--ink-border);align-items:center;gap:10px;margin-top:auto;padding-top:14px;padding-left:12px;display:flex}.app-sidebar .user .avatar{border-radius:var(--radius-pill);background:var(--accent);color:#fff;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:13px;font-weight:700;display:flex}.app-sidebar .user .name{color:var(--ink-text);font-size:.8rem;font-weight:600}.app-sidebar .user .org{color:var(--ink-faint);font-size:.7rem}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.app-topbar{height:var(--topbar-h);border-bottom:1px solid var(--border);background:var(--surface);z-index:20;flex:none;align-items:center;gap:16px;padding:0 26px;display:flex;position:sticky;top:0}.app-topbar .title{color:var(--ink);font-size:1.05rem;font-weight:700}.app-topbar .spacer{flex:1}.app-content{flex:1;min-width:0;padding:22px 26px 60px}.app-content.pad-0{padding:0}.content-max{max-width:1280px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.card+.card{margin-top:16px}.card-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.card-title{color:var(--text);font-size:.95rem;font-weight:700}.panel{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px}.card-accent{background:var(--accent-soft);border-color:var(--accent-tint)}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.kpi-grid.cols-5{grid-template-columns:repeat(5,1fr)}.kpi-grid.cols-3{grid-template-columns:repeat(3,1fr)}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.kpi .label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-size:.7rem;font-weight:600}.kpi .value{color:var(--ink);letter-spacing:-.02em;margin-top:7px;font-size:1.7rem;font-weight:700}.kpi .value.accent{color:var(--accent-strong)}.kpi .trend{align-items:center;gap:5px;margin-top:8px;font-size:.78rem;font-weight:600;display:inline-flex}.kpi .trend.up{color:var(--success)}.kpi .trend.down{color:var(--danger)}.btn{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.9rem;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent-hover);color:#fff;box-shadow:0 1px 2px #e07d0a4d}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:var(--surface-2);color:var(--text-muted);border-color:#0000}.btn-ghost:hover{background:var(--divider)}.btn-danger{color:var(--danger)}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn-sm{padding:7px 14px;font-size:.82rem}.btn-lg{padding:13px 24px;font-size:1rem}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px;display:inline-flex}.seg>*{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 14px;font-size:.8rem;font-weight:600}.seg>.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #14171a14}.field{margin-bottom:16px}.label{color:var(--text);margin-bottom:7px;font-size:.82rem;font-weight:600;display:block}.hint{color:var(--text-faint);margin-top:6px;font-size:.78rem}.hint.error{color:var(--danger)}.input,.select,.textarea{width:100%;font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:10px 12px;font-size:.9rem}.input.mono{font-family:var(--mono)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input.invalid{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.textarea{resize:vertical;min-height:88px}.row{flex-wrap:wrap;gap:14px;display:flex}.row>.field{flex:1;min-width:140px}.table-wrap{background:var(--surface);overflow-x:auto}.table-wrap.bordered{border:1px solid var(--border);border-radius:var(--radius)}table.data{border-collapse:collapse;width:100%;font-size:.86rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--divider);white-space:nowrap;padding:12px 16px}table.data th{background:var(--surface-2);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);font-size:.68rem;font-weight:600}table.data th.num,table.data td.num{text-align:right}table.data td.mono{font-family:var(--mono);color:var(--text-muted);font-size:.8rem}table.data tr:last-child td{border-bottom:none}table.data tbody tr:hover td{background:var(--bg)}table.data tr.clickable{cursor:pointer}.badge{border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);align-items:center;gap:6px;padding:4px 11px;font-size:.72rem;font-weight:600;display:inline-flex}.badge .dot{border-radius:var(--radius-pill);background:currentColor;width:6px;height:6px}.badge-accent{background:var(--accent-soft);color:var(--accent-strong);border-color:#0000}.badge-success{background:var(--success-soft);color:var(--success);border-color:#0000}.badge-info{background:var(--info-soft);color:var(--info);border-color:#0000}.badge-warn{background:var(--warn-soft);color:var(--warn);border-color:#0000}.badge-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.badge-purple{background:var(--purple-soft);color:var(--purple);border-color:#0000}.badge-solid{background:var(--accent);color:#fff;border-color:#0000;font-weight:700}.badge-id{font-family:var(--mono);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-sm);font-weight:500}.notice{border-radius:var(--radius-sm);border-left:3px solid;align-items:flex-start;gap:12px;padding:14px 18px;font-size:.9rem;display:flex}.notice-info{background:var(--info-soft);border-color:var(--info);color:#1b3a7a}.notice-success{background:var(--success-soft);border-color:var(--success);color:#155f3d}.notice-warn{background:var(--warn-soft);border-color:var(--warn);color:#8a550a}.notice-danger{background:var(--danger-soft);border-color:var(--danger);color:#8a2b25}.iball{border-radius:var(--radius-pill);border:1.5px solid var(--border-strong);width:16px;height:16px;color:var(--text-muted);cursor:help;flex:none;justify-content:center;align-items:center;font-size:10px;font-style:normal;font-weight:700;transition:all .12s;display:inline-flex}.iball:hover{border-color:var(--accent);color:var(--accent-hover);background:var(--accent-soft)}.tip{display:inline-flex;position:relative}.tip .tipbox{background:var(--ink);color:var(--ink-text);border-radius:var(--radius-sm);white-space:nowrap;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;z-index:30;padding:8px 11px;font-size:.78rem;font-weight:500;line-height:1.45;transition:opacity .14s,transform .14s;position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%)translateY(4px)}.tip .tipbox.wrap{white-space:normal;text-align:left;width:220px}.tip .tipbox:after{content:"";border:5px solid #0000;border-top-color:var(--ink);position:absolute;top:100%;left:50%;transform:translate(-50%)}.tip:hover .tipbox{opacity:1;transform:translate(-50%)translateY(0)}.tip.b .tipbox{top:calc(100% + 9px);bottom:auto;transform:translate(-50%)translateY(-4px)}.tip.b .tipbox:after{border-top-color:#0000;border-bottom-color:var(--ink);top:auto;bottom:100%}.tip.b:hover .tipbox{transform:translate(-50%)translateY(0)}.tip.r .tipbox{top:50%;bottom:auto;left:calc(100% + 9px);transform:translateY(-50%)translate(-4px)}.tip.r .tipbox:after{border:5px solid #0000;border-right-color:var(--ink);top:50%;left:auto;right:100%;transform:translateY(-50%)}.tip.r:hover .tipbox{transform:translateY(-50%)translate(0)}.tip.l .tipbox{inset:50% calc(100% + 9px) auto auto;transform:translateY(-50%)translate(4px)}.tip.l .tipbox:after{border:5px solid #0000;border-left-color:var(--ink);top:50%;left:100%;transform:translateY(-50%)}.tip.l:hover .tipbox{transform:translateY(-50%)translate(0)}.timeline{align-items:flex-start;display:flex}.timeline .step{flex:1;align-items:center;display:flex}.timeline .node{border-radius:var(--radius-pill);background:var(--divider);width:26px;height:26px;color:var(--text-faint);flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.timeline .node.done{background:var(--success);color:#fff}.timeline .node.current{background:var(--accent);color:#fff}.timeline .connector{background:var(--border);flex:1;height:2px;margin-top:12px}.timeline .connector.filled{background:var(--accent)}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.mono{font-family:var(--mono);font-size:.85em}.display{font-family:var(--display);font-weight:300}.stack>*+*{margin-top:14px}.flex{align-items:center;gap:10px;display:flex}.flex-between{justify-content:space-between;align-items:center;gap:12px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.divider-h{background:var(--border);border:none;height:1px;margin:18px 0}.empty{text-align:center;color:var(--text-muted);padding:48px 20px}@media (max-width:900px){.kpi-grid,.kpi-grid.cols-5,.kpi-grid.cols-3{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}.container{flex:1;min-width:0;padding:22px 26px 60px}.container-narrow{max-width:760px;margin:0 auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.divider{background:var(--border);border:none;height:1px;margin:18px 0}.app-sidebar .user .signout{border:1px solid var(--ink-border);color:var(--ink-muted);font:inherit;border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex:none;padding:5px 8px;font-size:.68rem;font-weight:600;transition:background .12s,color .12s,border-color .12s}.app-sidebar .user .signout:hover{color:#f7a438;background:#f5941e14;border-color:#f5941e66}.preview-banner{background:var(--accent-soft);color:var(--accent-strong);border-bottom:1px solid var(--accent-tint);align-items:center;gap:12px;padding:8px 26px;font-size:.82rem;font-weight:600;display:flex}.list-head{background:var(--surface);border-bottom:1px solid var(--border);padding:18px 26px 0}.list-title-row{align-items:center;gap:16px;margin-bottom:16px;display:flex}.list-title{font-family:var(--display);color:var(--ink);margin:0;font-size:1.4rem;font-weight:400}.stat-strip{flex-wrap:wrap;gap:22px;padding-left:8px;display:flex}.stat-strip>span{color:var(--text-faint);font-size:.75rem}.stat-strip b{color:var(--ink);font-size:.95rem;font-weight:700}.list-filter-row{flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:14px;display:flex}.filter-sep{background:var(--border);flex:none;width:1px;height:24px;margin:0 4px}.chip{border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;padding:6px 12px;font-size:.78rem;font-weight:600;transition:background .12s,color .12s,border-color .12s}.chip:hover{border-color:var(--border-strong)}.chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}.list-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 26px;display:flex}.pager{gap:6px;display:flex}.pg{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--text-faint);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;font-size:.82rem;font-weight:600;display:flex}.pg:hover:not(:disabled){background:var(--surface-2)}.pg:disabled{opacity:.5;cursor:not-allowed}.pg.active{background:var(--accent);color:#fff;border-color:var(--accent)}.detail-row{gap:16px;display:grid}.detail-row-chart{grid-template-columns:1.55fr 1fr}.detail-row-progress{grid-template-columns:1.2fr 1fr}.chart-empty{text-align:center;border-radius:var(--radius-sm);background:var(--surface-2);border:1px dashed var(--border-strong);height:150px;color:var(--text-faint);justify-content:center;align-items:center;padding:0 24px;font-size:.82rem;display:flex}.detail-dl{grid-template-columns:130px 1fr;gap:9px 14px;margin:0;font-size:.85rem;display:grid}.detail-dl dt{color:var(--text-faint)}.detail-dl dd{color:var(--text);margin:0}@media (max-width:900px){.detail-row-chart,.detail-row-progress{grid-template-columns:1fr}}.pac-container{z-index:3000!important}.console-acc summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;list-style:none;display:flex}.console-acc summary::-webkit-details-marker{display:none}.console-acc[open] summary{margin-bottom:16px}.console-acc .acc-chevron{color:var(--text-faint);transition:transform .12s}.console-acc[open] .acc-chevron{transform:rotate(180deg)}.builder{flex:1;align-items:stretch;min-width:0;display:flex}.builder-rail{border-right:1px solid var(--border);background:var(--surface);width:288px;max-height:calc(100vh - var(--topbar-h));flex:none;overflow-y:auto}.builder-main{min-width:0;max-height:calc(100vh - var(--topbar-h));flex:1;padding:22px 24px 60px;overflow-y:auto}.builder-total{border-left:1px solid var(--border);background:var(--surface);width:320px;top:var(--topbar-h);max-height:calc(100vh - var(--topbar-h));flex-direction:column;flex:none;padding:22px;display:flex;position:sticky;overflow-y:auto}@media (max-width:1200px){.builder-total{width:280px}.builder-rail{width:260px}}.switch{border-radius:var(--radius-pill);background:var(--border-strong);cursor:pointer;flex:none;width:34px;height:20px;transition:background .15s;position:relative}.switch .knob{border-radius:var(--radius-pill);background:#fff;width:16px;height:16px;transition:left .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.switch:hover{background:#b0b7c0}.switch.on{background:var(--accent)}.switch.on .knob{left:16px}.switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:none}.switch.disabled{opacity:.45;cursor:not-allowed}.checkbox{border:1px solid var(--border-strong);background:var(--surface);color:#fff;cursor:pointer;border-radius:5px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;transition:all .12s;display:flex}.checkbox:hover{border-color:#b0b7c0}.checkbox.on{background:var(--accent);border-color:var(--accent-hover)}.checkbox:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:none}.slider{height:22px;position:relative}.slider .rail{border-radius:var(--radius-pill);background:var(--divider);height:4px;position:absolute;top:9px;left:0;right:0}.slider .fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, #f7a438, var(--accent));height:4px;position:absolute;top:9px}.slider .handle{border-radius:var(--radius-pill);border:2px solid var(--accent);cursor:grab;background:#fff;width:18px;height:18px;position:absolute;top:2px;box-shadow:0 1px 3px #14171a33}.slider .handle:hover{border-color:var(--accent-hover)}.slider .handle:active{cursor:grabbing}.slider .handle:focus-visible{box-shadow:0 0 0 4px var(--accent-soft);outline:none}.slider.disabled .fill{background:var(--border-strong)}.slider.disabled .handle{border-color:var(--border-strong);cursor:not-allowed}.slider .value{font-family:var(--mono);color:var(--accent-strong);font-size:12px;font-weight:600}.facet-group{border-bottom:1px solid var(--divider)}.facet-head{cursor:pointer;justify-content:space-between;align-items:center;padding:13px 18px;display:flex}.facet-head .title{color:var(--text);font-size:.8rem;font-weight:700}.facet-count{color:var(--accent-strong);background:var(--accent-soft);border-radius:var(--radius-pill);padding:1px 8px;font-size:11px;font-weight:700}.facet-caret{color:var(--text-faint);font-size:11px;transition:transform .15s}.facet-group.collapsed .facet-caret{transform:rotate(-90deg)}.facet-body{padding:0 10px 12px}.facet-opt{cursor:pointer;border-radius:7px;align-items:center;gap:10px;padding:7px 8px;display:flex}.facet-opt:hover{background:var(--bg)}.facet-opt .name{color:var(--text);flex:1;font-size:.82rem}.facet-opt .count{font-family:var(--mono);color:var(--text-faint);font-size:11.5px}.total-label{letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-size:11px;font-weight:600}.total-card{border-radius:var(--radius);background:var(--accent-soft);border:1px solid var(--accent-tint);margin-top:10px;padding:16px}.total-card.below{background:var(--warn-soft);border-color:#ebc98a}.total-card.above{background:var(--surface-2);border-color:var(--border)}.total-number{font-family:var(--display);letter-spacing:-.02em;color:var(--ink);font-size:46px;font-weight:300;line-height:1}.total-card.below .total-number{color:var(--warn)}.total-card.above .total-number{color:var(--text-muted)}.delta-chip{font-family:var(--mono);border-radius:6px;margin-bottom:8px;padding:2px 8px;font-size:13px;font-weight:700}.delta-chip.up{background:var(--success-soft);color:var(--success)}.delta-chip.down{background:var(--warn-soft);color:var(--accent-strong)}@keyframes flash-up{0%{background:var(--success-soft)}to{background:0 0}}@keyframes flash-down{0%{background:var(--warn-soft)}to{background:0 0}}.total-card.flash-up{animation:.9s flash-up}.total-card.flash-down{animation:.9s flash-down}.meter{background:var(--divider);border-radius:var(--radius-pill);height:8px;position:relative}.meter .bar{border-radius:var(--radius-pill);background:linear-gradient(90deg, #f7a438, var(--accent));height:8px;transition:width .25s;position:absolute;top:0;left:0}.meter.below .bar{background:var(--warn)}.meter.above .bar{background:var(--text-faint)}.meter .mark{width:2px;height:16px;position:absolute;top:-4px}.meter .mark.min{background:var(--warn)}.meter .mark.max{background:var(--text-faint)}.meter-scale{color:var(--text-faint);justify-content:space-between;margin-top:8px;font-size:11px;display:flex}.suggest-input{gap:10px;display:flex}.suggest-input .field{flex:1}.chip-suggest{color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;transition:all .12s;display:inline-flex}.chip-suggest:hover{border-color:var(--accent);color:var(--accent-strong)}.chip-suggest.applied{background:var(--accent-soft);color:var(--accent-strong);border-color:#0000}.chip-active{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-strong);cursor:pointer;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.venn{flex:none;width:300px;height:230px;position:relative}.venn .set{border-radius:var(--radius-pill);border:1.5px solid;width:150px;height:150px;position:absolute}.venn .set.a{border-color:var(--accent);background:#f5941e3d}.venn .set.b{border-color:var(--ink);background:#14171a24}.venn .set.c{border-color:var(--info);background:#2563c929}.venn .n{font-family:var(--mono);color:var(--ink);font-size:13px;font-weight:700;position:absolute}.tier-row{align-items:center;gap:12px;display:flex}.tier-row .name{color:var(--text);flex:none;width:150px;font-size:.82rem}.tier-row .track{background:var(--divider);border-radius:6px;flex:1;height:14px;overflow:hidden}.tier-row .bar{border-radius:6px;height:100%}.tier-row .val{font-family:var(--mono);color:var(--text);text-align:right;flex:none;width:52px;font-size:12.5px}.matrix td{padding:3px}.matrix .cell{width:54px;height:34px;font-family:var(--mono);color:#5c330a;border-radius:6px;justify-content:center;align-items:center;font-size:11.5px;font-weight:500;display:flex}.matrix .cell.diag{background:var(--ink);color:#fff;font-weight:700}.loc-row{align-items:center;gap:14px;display:flex}.loc-row.excluded{opacity:.42}.loc-row .track{background:var(--surface-2);border-radius:var(--radius-pill);flex:1;height:10px;overflow:hidden}.loc-row .bar{border-radius:var(--radius-pill);height:100%;transition:width .2s}.loc-row .count{font-family:var(--mono);color:var(--text);text-align:right;flex:none;width:56px;font-size:13px}.async-wrap{background:var(--bg);flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.async-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:520px;padding:40px;box-shadow:0 6px 16px #14171a0f}.spinner{border-radius:var(--radius-pill);border:3px solid var(--accent-tint);border-top-color:var(--accent);width:30px;height:30px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.async-step{align-items:center;gap:12px;display:flex}.async-step .node{border-radius:var(--radius-pill);background:var(--divider);width:22px;height:22px;color:var(--text-faint);flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.async-step .node.done{background:var(--success);color:#fff}.async-step .node.current{background:var(--accent);color:#fff}.dropzone{border:1.5px dashed var(--border-strong);text-align:center;background:var(--bg);cursor:pointer;border-radius:10px;padding:26px;transition:all .12s}.dropzone:hover,.dropzone.dragover{border-color:var(--accent);background:var(--accent-soft)}.file-row{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:11px;padding:9px 12px;display:flex}.file-row .ico{background:var(--success-soft);width:26px;height:26px;color:var(--success);border-radius:6px;flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.file-row .size{font-family:var(--mono);color:var(--text-faint);font-size:11.5px}.badge-type{border-radius:var(--radius-pill);align-items:center;gap:6px;padding:3px 10px;font-size:11.5px;font-weight:700;display:inline-flex}.badge-type.quick{background:var(--info-soft);color:var(--info)}.badge-type.advanced{background:var(--accent-soft);color:var(--accent-strong)}
