html,body{margin:0}:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}img{max-width:100%}[hidden]{display:none!important}:root{--bg: #EEF2F6;--surface: #FFFFFF;--sunk: #E3E9EF;--ink: #15202B;--muted: #566472;--line: #D3DBE3;--accent: #1D4ED8;--accent-ink: #FFFFFF;--danger: #C2410C;--ok: #15803D;--drawing-bg: #DCE3EA;--s-none: #FFFFFF;--s-primary: #94A3B8;--s-agreed: #7C3AED;--s-containment: #334155;--s-fix1: #D97706;--s-fix2: #0284C7;--s-label: #0D9488;--s-tested: #DB2777;--s-handover: #16A34A;--pin-ring: #15202B;--f-ui: "Barlow", "Segoe UI", Roboto, system-ui, sans-serif;--f-cond: "Barlow Condensed", "Arial Narrow", "Barlow", system-ui, sans-serif;--f-mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--r: 10px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0E141B;--surface: #161F29;--sunk: #1D2834;--ink: #E5EBF1;--muted: #93A2B1;--line: #2A3745;--accent: #7AA2FF;--accent-ink: #0B1220;--danger: #FB923C;--ok: #4ADE80;--drawing-bg: #0A1016;color-scheme:dark}}:root[data-theme=dark]{--bg: #0E141B;--surface: #161F29;--sunk: #1D2834;--ink: #E5EBF1;--muted: #93A2B1;--line: #2A3745;--accent: #7AA2FF;--accent-ink: #0B1220;--danger: #FB923C;--ok: #4ADE80;--drawing-bg: #0A1016;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--f-ui);font-size:15px;line-height:1.45}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--surface)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{font-family:var(--f-cond);font-weight:700;letter-spacing:.01em;text-wrap:balance;margin:0}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.wrap{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));max-width:1100px;margin:0 auto}.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}.topbar .wrap{display:flex;align-items:center;gap:10px;padding-block:10px;min-height:56px}.brand{display:flex;align-items:center;gap:8px;font-family:var(--f-cond);font-weight:700;font-size:22px;letter-spacing:.02em}.brand-mark{width:30px;height:30px;flex:none}.topbar .title{flex:1;min-width:0}.topbar .title h1{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .title .sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 12px;min-height:40px;font-weight:600;font-size:14px;white-space:nowrap}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.danger{color:var(--danger)}.btn.ghost{border-color:transparent;background:transparent}.btn.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}.btn.small{min-height:32px;padding:4px 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.icon-btn{width:40px;height:40px;padding:0;flex:none}svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}main{padding-block:16px 40px;display:grid;gap:16px}.eyebrow{font-family:var(--f-cond);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:12px;color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}.muted{color:var(--muted)}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.grow{flex:1;min-width:0}.field{display:grid;gap:4px}.field label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-family:var(--f-cond)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:9px 10px;min-height:42px}.field textarea{min-height:70px;resize:vertical}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.site-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;gap:10px}.site-card:hover{border-color:var(--accent)}.site-card h2{font-size:20px}.pill{border:0;cursor:pointer}.pill.ok{background:color-mix(in srgb,var(--ok) 18%,var(--surface));color:var(--ink)}.pill.warn{background:color-mix(in srgb,var(--danger) 18%,var(--surface));color:var(--ink)}.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:4px;background:var(--sunk);color:var(--muted);font-family:var(--f-cond)}.stagebar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--sunk)}.stagebar span{display:block;height:100%}.empty{text-align:center;padding:32px 16px;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{border:0;background:none;padding:10px 14px;font-family:var(--f-cond);font-weight:600;font-size:16px;letter-spacing:.03em;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}.tabs button[aria-selected=true]{color:var(--ink);border-color:var(--accent)}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:6px}.sum{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--surface);display:grid;gap:6px}.sum .lbl{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.sum .num{font-family:var(--f-mono);font-size:16px;font-variant-numeric:tabular-nums}.sum .num small{color:var(--muted);font-size:12px}.meter{height:5px;background:var(--sunk);border-radius:3px;overflow:hidden}.meter i{display:block;height:100%}.dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:none;border:1.5px solid var(--pin-ring)}.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;white-space:nowrap}.chip[aria-pressed=true]{background:var(--ink);color:var(--surface);border-color:var(--ink)}.viewer-wrap{position:relative;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--drawing-bg)}.viewer{position:relative;height:min(62vh,720px);min-height:320px;overflow:hidden;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.viewer.adding{cursor:crosshair}.stage{position:absolute;left:0;top:0;width:var(--sw);height:var(--sh)}.stage img{display:block;max-width:none!important;width:var(--sw);height:var(--sh);pointer-events:none;-webkit-user-drag:none;background:#fff}.pin{position:absolute;left:calc(var(--x) * var(--sw));top:calc(var(--y) * var(--sh));transform:translate(-50%,-50%);display:flex;align-items:center;gap:3px;pointer-events:auto}.pin .c{width:20px;height:20px;border-radius:50%;border:2px solid var(--pin-ring);box-shadow:0 1px 3px #00000059;display:grid;place-items:center;color:#fff;font:700 11px var(--f-ui)}.pin .c.hollow{color:#15202b}.pin .r{font:600 10px var(--f-mono);background:#ffffffe6;color:#15202b;padding:1px 4px;border-radius:3px;border:1px solid #15202B33;white-space:nowrap;position:absolute;left:24px}.viewer.far .pin .r{display:none}.pin.sq .c{border-radius:5px}.pin.bar .c{width:34px;height:14px;border-radius:3px;font-size:10px}.pin.bar .r{left:38px}.pin.dia .c{border-radius:3px;transform:rotate(45deg);width:18px;height:18px}.cabchecks{display:flex;flex-wrap:wrap;gap:4px}.cc{font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px;background:var(--sunk);color:var(--muted)}.cc.ok{background:color-mix(in srgb,var(--ok) 20%,var(--surface));color:var(--ink)}.cc.na{text-decoration:line-through}.stage-row.isna{opacity:.6}.pin.dim{opacity:.22}.pin.sel .c{outline:3px solid var(--accent);outline-offset:2px}.viewer-tools{position:absolute;right:max(10px,env(safe-area-inset-right,0px));top:10px;display:grid;gap:6px;z-index:2}.viewer-tools .btn{box-shadow:0 1px 4px #0003}.hint{position:absolute;left:50%;bottom:12px;transform:translate(-50%);background:var(--ink);color:var(--surface);padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;z-index:2;white-space:nowrap;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis}.scope{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sel{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px;min-height:40px;font-weight:600;font-size:14px;max-width:100%}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:5px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}th{font-family:var(--f-cond);font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:12px;color:var(--muted);background:var(--sunk);position:sticky;top:0}td.ref button{font-family:var(--f-mono);font-weight:600;background:none;border:0;padding:0;color:var(--accent);text-decoration:underline;text-underline-offset:3px}td.st{text-align:center;padding:4px}.tick{width:34px;height:30px;border-radius:6px;border:1.5px dashed var(--line);background:none;font-size:11px;font-weight:700}.tick.done{border-style:solid;color:#fff}.na{color:var(--line)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#080c1273;z-index:40}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;background:var(--surface);border-radius:16px 16px 0 0;max-height:88dvh;overflow-y:auto;box-shadow:0 -8px 30px #00000040;padding-bottom:env(safe-area-inset-bottom,0px)}@media(min-width:760px){.sheet{left:auto;right:16px;bottom:16px;top:16px;width:440px;max-height:none;border-radius:14px}}.sheet-head{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--line);z-index:1}.sheet-head .wrap{display:flex;align-items:center;gap:10px;padding-block:12px}.sheet-body{display:grid;gap:16px;padding-block:16px 24px}.stages{display:grid;gap:8px}.stage-row{border:1px solid var(--line);border-radius:10px;padding:10px;display:grid;gap:8px}.stage-row.done{border-color:color-mix(in srgb,var(--sc) 60%,var(--line));background:color-mix(in srgb,var(--sc) 7%,var(--surface))}.stage-top{display:flex;align-items:center;gap:10px}.check{width:34px;height:34px;border-radius:8px;border:2px solid var(--line);background:var(--surface);display:grid;place-items:center;flex:none}.stage-row.done .check{background:var(--sc);border-color:var(--sc);color:#fff}.stage-name{font-weight:600}.stage-meta{font-size:12px;color:var(--muted)}.thumbs{display:flex;gap:6px;flex-wrap:wrap}.thumb{width:64px;height:64px;border-radius:6px;overflow:hidden;border:1px solid var(--line);padding:0;background:var(--sunk)}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.confirm{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px;border-radius:8px;background:color-mix(in srgb,var(--danger) 10%,var(--surface))}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#05080ceb;display:grid;grid-template-rows:auto 1fr;color:#fff}.lightbox .bar{display:flex;gap:8px;align-items:center;padding:max(10px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px))}.lightbox .bar .btn{background:#ffffff1a;color:#fff;border-color:#fff3}.lightbox img{max-width:100%;max-height:100%;margin:auto;object-fit:contain;min-height:0}.sig{width:100%;height:160px;border:1px dashed var(--muted);border-radius:8px;background:#fff;touch-action:none;display:block}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:8px;font-weight:600;z-index:80;max-width:calc(100% - 32px)}.banner{border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;background:var(--sunk);font-size:14px}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}
