:root{--bg:#FBFBFD;--surface:#FFFFFF;--surface-2:#F5F5F7;--surface-3:#EEEEF1;--ink:#0A0A0A;--ink-2:#3A3A3C;--muted:#6E6E73;--faint:#A1A1A6;--line:#E5E5EA;--line-2:#D2D2D7;--accent:#FF3B30;--accent-ink:#D70015;--accent-soft:rgba(255,59,48,.08);--accent-line:rgba(255,59,48,.35);--ok:#1E8E3E;--ok-soft:rgba(30,142,62,.1);--warn:#B86E00;--warn-soft:rgba(255,159,10,.14);--warn-line:rgba(255,159,10,.55);--bad:#D70015;--bad-soft:rgba(215,0,21,.09);--info:#0A64C8;--info-soft:rgba(10,100,200,.09);--p-print:#0A64C8;--p-pfd:#7A3FD1;--p-kb:#1E8E3E;--p-ai:#FF3B30;--p-user:#6E6E73;--p-ocr:#B86E00;--paper:#FFFDF6;--paper-line:#D9E3F0;--pen:#1B2A6B;--redpen:#C8102E;--dwg-bg:#FFFFFF;--dwg-ink:#1F2933;--dwg-dim:#3E4C59;--shadow:0 1px 2px rgba(10,10,10,.04),0 8px 24px rgba(10,10,10,.06);--font:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--hand:"Caveat","Segoe Print","Bradley Hand",cursive;--r-sm:8px;--r:12px;--r-lg:18px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0B0B0C;--surface:#151517;--surface-2:#1C1C1F;--surface-3:#242428;--ink:#F5F5F7;--ink-2:#D1D1D6;--muted:#A1A1A6;--faint:#6E6E73;--line:#2C2C30;--line-2:#3A3A3F;--accent:#FF453A;--accent-ink:#FF6961;--accent-soft:rgba(255,69,58,.14);--accent-line:rgba(255,69,58,.45);--ok:#32D74B;--ok-soft:rgba(50,215,75,.13);--warn:#FFB340;--warn-soft:rgba(255,179,64,.15);--warn-line:rgba(255,179,64,.55);--bad:#FF6961;--bad-soft:rgba(255,105,97,.14);--info:#64A8FF;--info-soft:rgba(100,168,255,.14);--p-print:#64A8FF;--p-pfd:#B78CFF;--p-kb:#32D74B;--p-ai:#FF6961;--p-user:#A1A1A6;--p-ocr:#FFB340;--paper:#1E1D1A;--paper-line:#2E3440;--pen:#A9B8FF;--redpen:#FF7A85;--dwg-bg:#111214;--dwg-ink:#D9DEE5;--dwg-dim:#9AA5B1;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);color-scheme:dark}}:root[data-theme=dark]{--bg:#0B0B0C;--surface:#151517;--surface-2:#1C1C1F;--surface-3:#242428;--ink:#F5F5F7;--ink-2:#D1D1D6;--muted:#A1A1A6;--faint:#6E6E73;--line:#2C2C30;--line-2:#3A3A3F;--accent:#FF453A;--accent-ink:#FF6961;--accent-soft:rgba(255,69,58,.14);--accent-line:rgba(255,69,58,.45);--ok:#32D74B;--ok-soft:rgba(50,215,75,.13);--warn:#FFB340;--warn-soft:rgba(255,179,64,.15);--warn-line:rgba(255,179,64,.55);--bad:#FF6961;--bad-soft:rgba(255,105,97,.14);--info:#64A8FF;--info-soft:rgba(100,168,255,.14);--p-print:#64A8FF;--p-pfd:#B78CFF;--p-kb:#32D74B;--p-ai:#FF6961;--p-user:#A1A1A6;--p-ocr:#FFB340;--paper:#1E1D1A;--paper-line:#2E3440;--pen:#A9B8FF;--redpen:#FF7A85;--dwg-bg:#111214;--dwg-ink:#D9DEE5;--dwg-dim:#9AA5B1;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink)}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;text-wrap:balance;letter-spacing:-.01em}h1{font-size:28px;font-weight:600;letter-spacing:-.02em}h2{font-size:20px;font-weight:600}h3{font-size:15px;font-weight:600}p{margin:0}a{color:inherit}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.row.top{align-items:flex-start}.stack{display:flex;flex-direction:column;gap:12px}.stack.lg{gap:20px}.stack.sm{gap:6px}.grow{flex:1;min-width:0}.hide{display:none!important}.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line)}.topbar-in{display:flex;align-items:center;gap:18px;padding-block:10px;padding-inline:max(16px,2vw);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;cursor:pointer;background:none;border:0;padding:0}.brand-mark{width:26px;height:26px;border-radius:50%;background:var(--accent);display:grid;place-items:center;flex:none}.brand-mark i{width:9px;height:9px;border-radius:50%;background:var(--bg);display:block}.brand-name{font-weight:600;font-size:15px;letter-spacing:-.01em}.brand-prod{font-size:12px;color:var(--muted);border-left:1px solid var(--line-2);padding-left:10px}.nav{display:flex;gap:4px;flex-wrap:wrap}.nav button{background:none;border:0;padding:7px 12px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);cursor:pointer}.nav button:hover{color:var(--ink);background:var(--surface-2)}.nav button.on{color:var(--ink);background:var(--surface-3)}.topbar .spacer{flex:1}.ws-chip{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 4px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-size:11px;font-weight:700}.toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;background:none;border:0;padding:4px}.switch{width:34px;height:20px;border-radius:999px;background:var(--line-2);position:relative;transition:background .2s}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px #0003;transition:transform .2s}.toggle.on .switch{background:var(--accent)}.toggle.on .switch:after{transform:translate(14px)}.page{padding-block:24px 64px;padding-inline:max(16px,2vw);max-width:1440px;margin:0 auto}.page-head{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:20px}.page-head .sub{color:var(--muted);margin-top:6px;max-width:70ch}.crumbs{display:flex;gap:6px;font-size:12px;color:var(--muted);margin-bottom:6px;flex-wrap:wrap}.crumbs button{background:none;border:0;padding:0;color:var(--muted);cursor:pointer;font-size:12px}.crumbs button:hover{color:var(--ink)}.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:9px 16px;font-size:13px;font-weight:600;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn.pri{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.pri:hover{opacity:.88}.btn.red{background:var(--accent);border-color:var(--accent);color:#fff}.btn.red:hover{opacity:.9}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{padding:6px 12px;font-size:12px}.btn.xs{padding:3px 9px;font-size:11px}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn svg{width:15px;height:15px;flex:none}.icon-btn{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);cursor:pointer;color:var(--muted)}.icon-btn:hover{color:var(--ink);background:var(--surface-2)}.icon-btn svg{width:14px;height:14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);min-width:0}.card.pad{padding:20px}.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}.card-b{padding:18px}.well{background:var(--surface-2);border-radius:var(--r);padding:14px 16px}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1100px){.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}}.divider{height:1px;background:var(--line);margin:4px 0}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap;border:1px solid transparent}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.info{background:var(--info-soft);color:var(--info)}.pill.red{background:var(--accent-soft);color:var(--accent-ink)}.pill.line{background:transparent;border-color:var(--line-2)}.pill.accent{background:linear-gradient(135deg,#2563eb1a,#6366f11a);color:#2563eb;border-color:#2563eb40}.cls{display:inline-grid;place-items:center;min-width:28px;height:20px;padding:0 6px;border-radius:6px;font-size:10.5px;font-weight:800;letter-spacing:.04em}.cls.CC{background:var(--accent);color:#fff}.cls.SC{background:var(--ink);color:var(--bg)}.cls.none{color:var(--faint)}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 11px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);cursor:pointer;color:var(--ink-2)}.chip.on{border-color:var(--ink);background:var(--ink);color:var(--bg)}.chip:hover{border-color:var(--ink)}.prov{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted)}.prov i{width:8px;height:8px;border-radius:2px;display:inline-block}.prov .print{background:var(--p-print)}.prov .pfd{background:var(--p-pfd)}.prov .kb{background:var(--p-kb)}.prov .ai{background:var(--p-ai)}.prov .user{background:var(--p-user)}.prov .ocr{background:var(--p-ocr)}.kpi{padding:18px 20px;display:flex;flex-direction:column;gap:4px}.kpi .v{font-size:30px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi .v small{font-size:14px;color:var(--muted);font-weight:500;margin-left:4px}.kpi .s{font-size:12px;color:var(--muted)}.bar{height:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}.bar>i{display:block;height:100%;background:var(--ink);border-radius:999px}.bar.red>i{background:var(--accent)}.bar.ok>i{background:var(--ok)}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface)}.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tr.click{cursor:pointer}.tbl tr.click:hover td{background:var(--surface-2)}.tbl .r{text-align:right}.proj{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start}@media(max-width:980px){.proj{grid-template-columns:minmax(0,1fr)}}.rail{position:sticky;top:76px;display:flex;flex-direction:column;gap:2px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}@media(max-width:980px){.rail{position:static;flex-direction:row;overflow-x:auto}}.rail .rh{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:6px}@media(max-width:980px){.rail .rh{display:none}}.stage{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:center;padding:8px 10px;border-radius:10px;cursor:pointer;background:none;border:0;text-align:left;width:100%}@media(max-width:980px){.stage{min-width:170px}}.stage:hover{background:var(--surface-2)}.stage.on{background:var(--surface-3)}.stage .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;border:1.5px solid var(--line-2);color:var(--muted);background:var(--surface)}.stage.ai .n{border-color:var(--accent);color:var(--accent)}.stage.review .n{border-color:var(--warn);color:var(--warn)}.stage.done .n{background:var(--ok);border-color:var(--ok);color:#fff}.stage.stale .n{background:var(--warn);border-color:var(--warn);color:#fff}.stage .t{font-size:13px;font-weight:600;line-height:1.25}.stage .st{font-size:11px;color:var(--muted)}.rail .sep{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding:10px 10px 4px}@media(max-width:980px){.rail .sep{display:none}}.work-h{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;margin-bottom:16px}.work-h .inputs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.saver{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 6px;font-size:12px}.saver .ring{width:34px;height:34px;flex:none}.saver b{font-variant-numeric:tabular-nums}.banner{display:flex;gap:12px;align-items:flex-start;border-radius:var(--r);padding:12px 14px;font-size:13px;border:1px solid var(--line);background:var(--surface)}.banner svg{width:18px;height:18px;flex:none;margin-top:1px}.banner.ai{border-color:var(--accent-line);background:var(--accent-soft)}.banner.ai svg{color:var(--accent)}.banner.warn{border-color:var(--warn-line);background:var(--warn-soft)}.banner.warn svg{color:var(--warn)}.banner.ok{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-soft)}.banner.ok svg{color:var(--ok)}.banner .grow p+p{margin-top:4px}.dev{display:none;border:1px dashed var(--info);background:var(--info-soft);color:var(--ink-2);border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.5}.dev b{color:var(--info);font-weight:700}.dev code{font-family:var(--mono);font-size:11px;background:var(--surface);padding:1px 5px;border-radius:4px;border:1px solid var(--line)}body.devmode .dev{display:block}.dev-tag{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--info);letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;display:block}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:12px;font-weight:600;color:var(--ink-2)}.input,select.input,textarea.input{width:100%;border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;font:inherit;font-size:13px;background:var(--surface);color:var(--ink)}.input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}.drop{border:1.5px dashed var(--line-2);border-radius:var(--r);padding:18px;display:flex;gap:14px;align-items:center;cursor:pointer;background:var(--surface);transition:border-color .15s,background .15s}.drop:hover{border-color:var(--ink);background:var(--surface-2)}.drop.done{border-style:solid;border-color:color-mix(in srgb,var(--ok) 45%,transparent);background:var(--ok-soft)}.drop .ico{width:38px;height:38px;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;flex:none}.drop.done .ico{background:var(--ok);color:#fff}.drop .ico svg{width:18px;height:18px}.radio-card{border:1.5px solid var(--line);border-radius:var(--r);padding:14px 16px;cursor:pointer;background:var(--surface);display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%}.radio-card:hover{border-color:var(--line-2)}.radio-card.on{border-color:var(--ink);box-shadow:0 0 0 3px var(--accent-soft)}.radio-card .rd{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--line-2);flex:none;margin-top:2px;display:grid;place-items:center}.radio-card.on .rd{border-color:var(--accent)}.radio-card.on .rd:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent)}.check{display:flex;gap:10px;align-items:flex-start;font-size:13px;cursor:pointer}.check input{margin-top:3px;accent-color:var(--accent)}.steps{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted)}.steps .s{display:flex;gap:8px;align-items:center;font-weight:600}.steps .s i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:11px;border:1.5px solid var(--line-2)}.steps .s.on{color:var(--ink)}.steps .s.on i{border-color:var(--accent);color:var(--accent)}.steps .s.done i{background:var(--ok);border-color:var(--ok);color:#fff}.steps .ln{width:28px;height:1px;background:var(--line-2)}.split{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:16px;align-items:start}@media(max-width:1180px){.split{grid-template-columns:minmax(0,1fr)}}.viewer{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.viewer-tools{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap}.viewer-body{overflow:auto;padding:14px}svg.dwg{display:block;width:100%;min-width:640px;height:auto;background:var(--dwg-bg);border-radius:8px;box-shadow:var(--shadow)}svg.dwg text{font-family:var(--mono);fill:var(--dwg-ink)}svg.dwg .geo{fill:none;stroke:var(--dwg-ink);stroke-width:1.6}svg.dwg .geo-f{fill:color-mix(in srgb,var(--dwg-ink) 6%,transparent);stroke:var(--dwg-ink);stroke-width:1.6}svg.dwg .thin{fill:none;stroke:var(--dwg-dim);stroke-width:.8}svg.dwg .ctr{fill:none;stroke:var(--dwg-dim);stroke-width:.7;stroke-dasharray:10 3 2 3}svg.dwg .hid{fill:none;stroke:var(--dwg-dim);stroke-width:.8;stroke-dasharray:4 3}svg.dwg .dimt{font-size:11px;fill:var(--dwg-ink)}svg.dwg .note{font-size:10.5px}svg.dwg .hand{font-family:var(--hand);font-size:20px;fill:var(--redpen)}svg.dwg .tb{fill:none;stroke:var(--dwg-ink);stroke-width:1}svg.dwg .tbt{font-size:9.5px;fill:var(--dwg-dim)}svg.dwg .tbv{font-size:12px;font-weight:700}svg.dwg .fcf{fill:var(--dwg-bg);stroke:var(--dwg-ink);stroke-width:1}svg.dwg .bub{opacity:0;transition:opacity .35s,transform .35s;transform-box:fill-box;transform-origin:center;transform:scale(.6)}svg.dwg .bub.show{opacity:1;transform:scale(1)}svg.dwg .bub circle{fill:var(--dwg-bg);stroke:var(--accent);stroke-width:1.8}svg.dwg .bub text{fill:var(--accent);font-family:var(--font);font-size:10.5px;font-weight:700}svg.dwg .bub.sel circle{fill:var(--accent)}svg.dwg .bub.sel text{fill:#fff}svg.dwg .bub.low circle{stroke:var(--warn);stroke-dasharray:3 2}svg.dwg .bub.low text{fill:var(--warn)}svg.dwg .bub.chg circle{stroke:var(--info);stroke-width:2.4;fill:var(--info-soft)}svg.dwg .bub.chg text{fill:var(--info)}svg.dwg .bub{cursor:pointer}svg.dwg .hl{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1;stroke-dasharray:3 2}.scan-line{position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);top:0;opacity:0}.scanning .scan-line{animation:scan 1.8s ease-in-out infinite;opacity:1}@keyframes scan{0%{top:2%}50%{top:96%}to{top:2%}}.boc{max-height:640px;overflow:auto}.boc table{width:100%;border-collapse:collapse;font-size:12.5px}.boc th{position:sticky;top:0;background:var(--surface);z-index:1;text-align:left;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line)}.boc td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.boc tr{cursor:pointer}.boc tr:hover td{background:var(--surface-2)}.boc tr.sel td{background:var(--accent-soft)}.bn{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.6px solid var(--accent);color:var(--accent);font-size:10.5px;font-weight:700;background:var(--surface)}.bn.low{border-color:var(--warn);color:var(--warn);border-style:dashed}.conf{font-size:11px;font-variant-numeric:tabular-nums}.conf.low{color:var(--warn);font-weight:700}.sheet-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface)}.sheet-tools .sep{width:1px;height:22px;background:var(--line)}.sheet-wrap{overflow:auto;max-height:620px;background:var(--surface)}table.sheet{border-collapse:separate;border-spacing:0;font-size:12.5px;min-width:100%}.sheet th{position:sticky;top:0;z-index:2;background:var(--surface-2);color:var(--ink-2);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:8px 10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line-2);white-space:nowrap}.sheet th.rn,.sheet td.rn{position:sticky;left:0;z-index:1;background:var(--surface-2);color:var(--faint);font-size:10.5px;text-align:center;width:38px;min-width:38px;font-family:var(--mono)}.sheet th.rn{z-index:3}.sheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0;vertical-align:top;background:var(--surface);position:relative}.sheet td .c{padding:7px 10px;min-height:32px;outline:none;white-space:pre-wrap;line-height:1.4}.sheet td .c:focus{box-shadow:inset 0 0 0 2px var(--ink);background:var(--surface)}.sheet td.p-print{box-shadow:inset 2px 0 0 var(--p-print)}.sheet td.p-pfd{box-shadow:inset 2px 0 0 var(--p-pfd)}.sheet td.p-kb{box-shadow:inset 2px 0 0 var(--p-kb)}.sheet td.p-ai{box-shadow:inset 2px 0 0 var(--p-ai)}.sheet td.p-ocr{box-shadow:inset 2px 0 0 var(--p-ocr)}.sheet td.p-user{box-shadow:inset 2px 0 0 var(--p-user)}.sheet td.review{background:var(--warn-soft)}.sheet td.review:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--warn)}.sheet tr.selrow td:not(.rn){background:color-mix(in srgb,var(--accent) 5%,var(--surface))}.sheet tr.selrow td.rn{background:var(--accent);color:#fff}.sheet tr.grp td{background:var(--surface-3);font-weight:700;font-size:12px}.sheet tr.grp td .c{padding:6px 10px;position:sticky;left:46px;display:inline-block}.sheet tr.newrow td:not(.rn){background:var(--info-soft)}.sheet td.hot .c{color:var(--bad);font-weight:700}.sheet .w-xs{min-width:56px}.sheet .w-s{min-width:90px}.sheet .w-m{min-width:150px}.sheet .w-l{min-width:220px}.sheet .w-xl{min-width:280px}.inspector{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--line);background:var(--surface-2);font-size:12px;min-height:44px}.inspector b{font-family:var(--mono);font-size:11px}.pfd-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}@media(max-width:1180px){.pfd-wrap{grid-template-columns:minmax(0,1fr)}}.flow{display:flex;flex-direction:column;align-items:stretch;gap:0}.fstep{display:grid;grid-template-columns:28px 46px minmax(0,1fr) auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 12px;transition:box-shadow .15s,border-color .15s}.fstep:hover{border-color:var(--line-2);box-shadow:var(--shadow)}.fstep.drag{opacity:.4}.fstep.over{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.fstep.sel{border-color:var(--ink)}.fstep.added{border-color:var(--info);background:var(--info-soft)}.fstep .grip{cursor:grab;color:var(--faint);display:grid;place-items:center}.fstep .grip svg{width:16px;height:16px}.fstep .sym{width:46px;height:40px;display:grid;place-items:center}.fstep .sym svg{width:40px;height:34px}.fstep .opn{font-family:var(--mono);font-size:11px;color:var(--muted)}.fstep .nm{font-weight:600;font-size:14px;border:0;background:transparent;padding:2px 4px;margin-left:-4px;border-radius:6px;width:100%;color:var(--ink);font-family:var(--font)}.fstep .nm:hover{background:var(--surface-2)}.fstep .nm:focus{outline:none;background:var(--surface-2);box-shadow:0 0 0 2px var(--ink)}.fstep .meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;align-items:center}.fstep select{border:1px solid var(--line);border-radius:999px;padding:3px 8px;font-size:11.5px;background:var(--surface);color:var(--ink-2);max-width:220px}.fstep .acts{display:flex;gap:4px}.connector{display:flex;justify-content:flex-start;padding-left:85px;height:26px;position:relative}.connector:before{content:"";position:absolute;left:85px;top:0;bottom:0;width:1.5px;background:var(--line-2)}.connector .ins{position:absolute;left:72px;top:2px;width:28px;height:22px;border-radius:999px;border:1px dashed var(--line-2);background:var(--bg);display:grid;place-items:center;font-size:14px;color:var(--muted);cursor:pointer;opacity:0;transition:opacity .15s}.connector:hover .ins{opacity:1}.why{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;gap:6px;align-items:flex-start}.why svg{width:12px;height:12px;flex:none;margin-top:2px;color:var(--accent)}.match{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.match.on{border-color:var(--ink)}.score{font-family:var(--mono);font-weight:700;font-size:13px}.opseq{display:flex;gap:3px;flex-wrap:wrap;margin-top:4px}.opseq span{font-size:10px;padding:1px 6px;border-radius:4px;background:var(--surface-2);color:var(--ink-2)}.opseq span.diff{background:var(--warn-soft);color:var(--warn)}.paper{background:var(--paper);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);padding:18px 18px 22px;position:relative;transform:rotate(-.6deg);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 27px,var(--paper-line) 27px,var(--paper-line) 28px);font-family:var(--hand);color:var(--pen)}.paper .ph{font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.paper table{border-collapse:collapse;width:100%;font-size:19px;line-height:1}.paper td,.paper th{border:1px solid color-mix(in srgb,var(--pen) 30%,transparent);padding:4px 6px;text-align:center;height:28px}.paper th{font-family:var(--mono);font-size:10px;color:var(--muted);font-weight:600}.paper td.lowc{background:var(--warn-soft);outline:2px solid var(--warn);outline-offset:-2px}.paper td.flash{animation:flash 1s ease 2}@keyframes flash{50%{background:var(--accent-soft)}}.paper .sig{margin-top:12px;font-size:22px;text-align:right}.paper-wrap{overflow-x:auto;padding:6px}.xl{border:1px solid var(--line-2);border-radius:10px;overflow:auto;background:var(--surface);max-height:460px}.xl table{border-collapse:collapse;font-size:11.5px;font-family:var(--font)}.xl th{background:var(--surface-2);color:var(--muted);font-weight:500;font-size:10.5px;padding:3px 8px;border:1px solid var(--line);position:sticky;top:0;min-width:34px;text-align:center}.xl td{border:1px solid var(--line);padding:4px 8px;min-width:70px;height:24px;white-space:nowrap}.xl td.rh{background:var(--surface-2);color:var(--muted);font-size:10.5px;text-align:center;min-width:34px}.xl td.y{background:#fff6bf;color:#1a1a1a}:root[data-theme=dark] .xl td.y{background:#4a4214;color:#fff6bf}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .xl td.y{background:#4a4214;color:#fff6bf}}.xl td.filled{background:var(--ok-soft);color:var(--ink);font-weight:600}.xl td.hdr{font-weight:700;background:var(--surface-3)}.xl td.title{font-weight:700;font-size:13px}.xl-tabs{display:flex;gap:2px;padding:6px 8px 0;background:var(--surface-2);border:1px solid var(--line-2);border-bottom:0;border-radius:10px 10px 0 0;flex-wrap:wrap}.xl-tabs button{font-size:11.5px;padding:5px 12px;border:0;background:transparent;border-radius:6px 6px 0 0;cursor:pointer;color:var(--muted)}.xl-tabs button.on{background:var(--surface);color:var(--ink);font-weight:600}.xl-tabs+.xl{border-radius:0 0 10px 10px}svg.chart{display:block;width:100%;height:auto}svg.chart text{font-family:var(--font);font-size:10.5px;fill:var(--muted)}svg.chart .grid-l{stroke:var(--line);stroke-width:1}svg.chart .ax{stroke:var(--line-2);stroke-width:1}svg.chart .barr{fill:var(--ink);opacity:.82}svg.chart .lsl{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3}svg.chart .nom{stroke:var(--muted);stroke-width:1;stroke-dasharray:2 3}svg.chart .curve{fill:none;stroke:var(--accent);stroke-width:2}svg.chart .lbl{fill:var(--ink-2);font-weight:600}svg.chart .ring-bg{fill:none;stroke:var(--surface-3)}svg.chart .ring-fg{fill:none;stroke:var(--ok);stroke-linecap:round}.map-row{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr) 92px;gap:10px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line)}.map-row:last-child{border-bottom:0}.map-row .cell{font-family:var(--mono);font-size:11px;color:var(--muted)}.map-row .arrow{color:var(--faint);text-align:center}.map-row select{width:100%;border:1px solid var(--line-2);border-radius:8px;padding:6px 8px;font-size:12.5px;background:var(--surface);color:var(--ink)}.map-row.un select{border-color:var(--warn);background:var(--warn-soft)}@media(max-width:700px){.map-row{grid-template-columns:minmax(0,1fr)}.map-row .arrow{display:none}}.tl{display:flex;flex-direction:column;gap:0;position:relative}.tl-i{display:grid;grid-template-columns:18px minmax(0,1fr);gap:12px;padding-bottom:16px;position:relative}.tl-i:before{content:"";position:absolute;left:8px;top:16px;bottom:0;width:1.5px;background:var(--line)}.tl-i:last-child:before{display:none}.tl-i .d{width:18px;height:18px;border-radius:50%;border:2px solid var(--line-2);background:var(--surface);margin-top:1px}.tl-i.ok .d{border-color:var(--ok);background:var(--ok)}.tl-i.cur .d{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs button{background:none;border:0;padding:10px 14px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.tabs .cnt{font-size:11px;background:var(--surface-2);border-radius:999px;padding:1px 7px;margin-left:6px;color:var(--muted)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0a6b;z-index:80;display:grid;place-items:center;padding:16px;animation:fade .15s}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:0 24px 64px #00000047;width:min(640px,100%);max-height:calc(100vh - 32px);overflow:auto;border:1px solid var(--line)}.modal.wide{width:min(980px,100%)}.modal-h{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}.modal-b{padding:20px}.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--line);flex-wrap:wrap}@keyframes fade{0%{opacity:0}to{opacity:1}}.toasts{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;flex-direction:column;gap:8px;max-width:min(380px,calc(100vw - 32px))}.toast{background:var(--ink);color:var(--bg);padding:11px 14px;border-radius:12px;font-size:13px;box-shadow:0 10px 30px #00000040;display:flex;gap:10px;align-items:flex-start;animation:fade .2s}.toast svg{width:16px;height:16px;flex:none;margin-top:2px}.prog{display:flex;flex-direction:column;gap:10px}.prog-i{display:flex;gap:10px;align-items:center;font-size:13px;color:var(--muted)}.prog-i .sp{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-2);flex:none}.prog-i.run{color:var(--ink)}.prog-i.run .sp{border-color:var(--accent);border-top-color:transparent;animation:spin .7s linear infinite}.prog-i.ok{color:var(--ink-2)}.prog-i.ok .sp{border-color:var(--ok);background:var(--ok)}@keyframes spin{to{transform:rotate(360deg)}}.phone{width:230px;border-radius:32px;border:8px solid var(--ink);background:var(--surface);overflow:hidden;box-shadow:var(--shadow);flex:none}.phone .notch{height:20px;background:var(--ink);width:90px;margin:0 auto;border-radius:0 0 12px 12px}.phone .scr{padding:12px;display:flex;flex-direction:column;gap:10px;font-size:12px;min-height:380px}.phone .cam{height:160px;border-radius:12px;background:repeating-linear-gradient(0deg,var(--paper) 0 13px,var(--paper-line) 13px 14px);border:2px solid var(--accent);position:relative;display:grid;place-items:center;font-family:var(--hand);color:var(--pen);font-size:18px}.phone .shutter{width:46px;height:46px;border-radius:50%;border:4px solid var(--line-2);background:var(--accent);margin:0 auto}.fmap{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}@media(max-width:1100px){.fmap{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.fmap{grid-template-columns:minmax(0,1fr)}}.fnode{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--surface);display:flex;flex-direction:column;gap:6px;min-width:0}.fnode .k{font-family:var(--mono);font-size:10.5px;color:var(--accent);font-weight:700}.fnode ul{margin:0;padding-left:16px;font-size:12px;color:var(--ink-2)}.fnode .io{font-size:11px;color:var(--muted)}.kv{display:grid;grid-template-columns:140px minmax(0,1fr);gap:6px 14px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0}pre.code{font-family:var(--mono);font-size:11.5px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow:auto;margin:0;line-height:1.55;color:var(--ink-2)}.prose{max-width:76ch;color:var(--ink-2)}.prose p+p{margin-top:8px}.tr-row{display:grid;grid-template-columns:64px 120px minmax(0,1fr) minmax(0,1fr);gap:14px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.tr-row .orig{color:var(--muted);font-style:italic}@media(max-width:800px){.tr-row{grid-template-columns:minmax(0,1fr)}}@media(max-width:700px){.ws-chip,.brand-prod{display:none}.nav{flex-wrap:nowrap;overflow-x:auto;max-width:100%}.topbar-in{gap:10px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.tour-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:8000;cursor:default}.tour-spot{position:fixed;z-index:8001;border-radius:8px;box-shadow:0 0 0 4000px #00000073;background:transparent;pointer-events:none;transition:all .25s ease}.tour-tip{position:fixed;z-index:8002;background:var(--surface,#fff);border-radius:10px;padding:16px 18px;box-shadow:0 8px 32px #0000002e;max-width:340px;min-width:260px;animation:tour-in .2s ease}@keyframes tour-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.tour-tip-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.tour-tip-counter{font-size:11px;font-weight:600;color:var(--muted,#888);letter-spacing:.04em}.tour-tip-x{background:none;border:none;cursor:pointer;padding:2px;color:var(--muted);display:flex}.tour-tip-x svg{width:16px;height:16px}.tour-tip h4{margin:0;font-size:14px;font-weight:700;color:var(--ink,#111)}.tour-tip p{margin:6px 0 14px;font-size:13px;line-height:1.5;color:var(--ink-2,#444)}.tour-tip-foot{display:flex;align-items:center;gap:8px}.tour-btn svg{width:15px;height:15px}.info-tip-wrap{position:relative;display:inline-flex;vertical-align:middle;margin-left:4px}.info-tip-btn{background:none;border:none;cursor:pointer;padding:1px;color:var(--faint,#aaa);display:inline-flex;transition:color .15s}.info-tip-btn:hover{color:var(--c-brand,#2563eb)}.info-tip-btn svg{width:16px;height:16px}.info-tip-pop{position:absolute;left:50%;transform:translate(-50%);top:calc(100% + 8px);z-index:6000;background:var(--surface,#fff);border:1px solid var(--line,#e5e5e5);border-radius:8px;padding:10px 12px;box-shadow:0 4px 16px #0000001a;font-size:12.5px;line-height:1.55;color:var(--ink-2,#444);max-width:300px;min-width:200px;animation:tour-in .15s ease}.info-tip-close{position:absolute;top:4px;right:4px;background:none;border:none;cursor:pointer;color:var(--muted);padding:2px;display:flex}.info-tip-close svg{width:13px;height:13px}.nav a{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;font:inherit;font-size:13px;font-weight:500;color:var(--muted);padding:7px 12px;border-radius:999px;cursor:pointer;text-decoration:none}.nav a:hover{color:var(--ink);background:var(--surface-2)}.nav a.on{color:var(--ink);background:var(--surface-3)}.dwg-stack{position:relative}.dwg-stack>.bal{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.bal .bub{cursor:pointer}.bal .bub circle{fill:var(--surface);stroke:var(--accent);stroke-width:1.6}.bal .bub text{font:700 10px var(--mono);fill:var(--accent-ink)}.bal .bub.low circle{stroke:var(--warn);stroke-dasharray:3 2}.bal .bub.low text{fill:var(--warn)}.bal .bub.sel circle{fill:var(--accent);stroke:var(--accent)}.bal .bub.sel text{fill:#fff}.sheet td.p-ocr{box-shadow:inset 3px 0 0 var(--p-ocr)}.sheet .c[contenteditable]:focus{outline:2px solid var(--ink);outline-offset:-2px}.cell-input{width:100%;border:0;background:transparent;font:inherit;color:inherit;padding:6px 8px;min-width:0}.cell-input:focus{outline:2px solid var(--ink);outline-offset:-2px;background:var(--surface)}.empty{padding:28px;text-align:center;color:var(--muted)}.uploaded-img{display:block;width:100%;height:auto}
