:root{--navy: #0f2a4f;--navy-2: #173a6a;--amber: #f5a623;--bg: #eef1f5;--panel: #ffffff;--line: #d6dce5;--text: #1b2433;--muted: #6b7686;--ok: #1d7a46;--bad: #c0362c;--accent: #2563eb;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{background:#e7ebf1;padding:0 4px;border-radius:3px}button,.button,select,input{font:inherit}button,.button{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:6px;padding:5px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;line-height:1.2;white-space:nowrap}button:hover:not(:disabled),.button:hover{background:#f3f6fa;text-decoration:none}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--navy);color:#fff;border-color:var(--navy)}button.primary:hover:not(:disabled){background:var(--navy-2)}button.ghost,.button.ghost{background:transparent;border-color:transparent}button.on,.button.on{background:#dfe9fb;border-color:#9db8ec}input,select{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:#fff}.muted{color:var(--muted)}.small{font-size:12px}.center{height:100%;display:grid;place-content:center;gap:12px;text-align:center}.error{background:#fdecea;color:var(--bad);border:1px solid #f3c2bd;padding:8px 12px;border-radius:6px;margin:8px 0}.error-text{color:var(--bad)}.notice{background:#eef7f1;border:1px solid #c4e3cf;padding:10px 12px;border-radius:6px;margin:10px 0;display:grid;gap:6px}.empty{color:var(--muted);padding:24px;border:1px dashed var(--line);border-radius:8px;text-align:center;background:#fafbfc}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:#fff;letter-spacing:.2px}.brand.big{color:var(--navy);font-size:22px}.logo{width:22px;height:22px;border-radius:5px;background:linear-gradient(135deg,transparent 44%,var(--amber) 44%,var(--amber) 56%,transparent 56%),var(--navy);border:1px solid rgba(255,255,255,.3);display:inline-block}.login{height:100%;display:grid;place-items:center;background:linear-gradient(160deg,var(--navy),#24508f)}.login-card{width:340px;display:grid;gap:10px;padding:28px}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 1px 2px #1018280d}.page{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--navy);color:#dce6f5}.topbar a{color:#fff}.topbar .crumbs{flex:1;display:flex;gap:6px;align-items:center}.topbar .sep{opacity:.5}.topbar button.ghost{color:#dce6f5}.pill{font-size:12px;background:#ffffff1f;padding:3px 8px;border-radius:999px}.content{padding:22px;max-width:1100px;width:100%;margin:0 auto;display:grid;gap:14px}.row{display:flex;gap:8px}.new-project input{flex:1}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.project-card{padding:16px;display:grid;gap:4px;color:inherit}.project-card:hover{border-color:#9db8ec;text-decoration:none}.project-card .title{font-weight:600;font-size:16px;color:var(--navy)}h2{margin:8px 0 0;font-size:16px}.dropzone{border:2px dashed #9fb0c6;border-radius:10px;padding:22px;background:#f8fafc;cursor:pointer;display:grid;gap:6px}.dropzone.over{border-color:var(--accent);background:#eef4ff}.progress{position:relative;height:26px;background:#e6ebf2;border-radius:6px;overflow:hidden}.progress div{position:absolute;inset:0 auto 0 0;background:#9db8ec;transition:width .2s}.progress span{position:relative;padding:0 10px;line-height:26px;font-weight:600}table.docs{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}table.docs th,table.docs td{text-align:left;padding:9px 12px;border-bottom:1px solid #edf0f4}table.docs th{background:#f6f8fb;font-weight:600;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}table.docs td.actions{text-align:right;display:flex;gap:6px;justify-content:flex-end}.badge{font-size:12px;padding:2px 8px;border-radius:999px;background:#eef1f5;border:1px solid var(--line)}.badge.kind-centerline-project{background:#fff4e0;border-color:#f2d199}.badge.kind-centerline-pdf{background:#e8f1ff;border-color:#b6cdf3}.viewer{height:100%;display:grid;grid-template-rows:auto auto 1fr auto;background:#5b6472}.toolbar{display:flex;align-items:center;gap:10px;padding:6px 10px;background:var(--navy);color:#dce6f5;flex-wrap:wrap}.toolbar .button.ghost,.toolbar button.ghost{color:#fff;font-size:16px}.toolbar .doc-title{font-weight:600;color:#fff;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar .group{display:flex;align-items:center;gap:4px;background:#ffffff14;padding:3px;border-radius:8px}.toolbar .group button{padding:4px 9px}.toolbar .group .muted{color:#b8c6dc}.toolbar .zoom{min-width:48px;text-align:center;color:#fff;font-variant-numeric:tabular-nums}.page-input{width:52px;text-align:center;padding:4px}.viewer-body{display:flex;min-height:0;position:relative}.sidebar{width:196px;flex:none;overflow-y:auto;background:#2b323d;padding:8px;display:flex;flex-direction:column;gap:8px}.sidebar-head{color:#dce6f5;font-weight:600;padding:2px 4px}.sidebar-head .muted{color:#93a1b5}.sheet{display:grid;gap:4px;padding:6px;background:transparent;border:2px solid transparent;border-radius:8px;color:#e8edf5;justify-items:center}.sheet:hover:not(:disabled){background:#ffffff0f}.sheet.active{border-color:var(--amber);background:#f5a6231f}.thumb{min-height:96px;width:152px;display:grid;place-items:center;background:#3a4350;border-radius:4px}.thumb.ready{background:transparent;min-height:0}.thumb canvas{background:#fff;box-shadow:0 1px 3px #0006;display:block}.sheet-meta{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:center;font-size:12px}.sheet-no{font-weight:700}.sheet-title{color:#b8c6dc}.scale-badge{background:#1d5c3b;color:#d8f5e4;padding:1px 6px;border-radius:999px;font-size:11px}.scale-badge.none{background:#6b2a25;color:#ffd9d4}.canvas-scroll{flex:1;overflow:auto;position:relative;outline:none}.canvas-scroll.tool-pan{cursor:grab}.canvas-scroll.tool-pan:active{cursor:grabbing}.canvas-scroll.tool-check{cursor:crosshair}.canvas-inner{min-width:100%;min-height:100%;width:max-content;padding:24px;display:grid;place-items:center}.page-wrap{position:relative;box-shadow:0 2px 12px #00000073;background:#fff}.page-canvas{display:block}.overlay{position:absolute;inset:0;pointer-events:none}.check-line{stroke:#e0218a;stroke-width:2.5}.check-dot{fill:#fff;stroke:#e0218a;stroke-width:2}.check-label{fill:#e0218a;font-weight:700;font-size:15px;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px}.rendering{position:sticky;left:8px;bottom:8px;display:inline-block;background:#0000008c;color:#fff;padding:2px 8px;border-radius:4px;font-size:12px;margin:-30px 0 0 8px}.info-panel{width:320px;flex:none;background:#fff;overflow-y:auto;padding:14px 16px;border-left:1px solid var(--line)}.info-panel h3{margin:0 0 8px;font-size:16px}.info-panel h4{margin:14px 0 4px;font-size:13px}.info-panel dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0}.info-panel dt{color:var(--muted)}.info-panel dd{margin:0}.info-panel ul{padding-left:18px;margin:4px 0}.statusbar{display:flex;align-items:center;gap:16px;padding:5px 12px;background:#f6f8fb;border-top:1px solid var(--line);font-size:12.5px;white-space:nowrap;overflow:hidden}.statusbar .spacer{flex:1}.scale-status{font-weight:700;padding:2px 8px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.scale-status.ok{background:#e3f4ea;color:var(--ok)}.scale-status.none{background:#fdecea;color:var(--bad)}.cursor-status{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;min-width:190px}.check-status strong{color:#b0166b}.toolbar .spacer{flex:1}.toolstrip{display:flex;align-items:center;gap:4px;padding:4px 10px;background:#f6f8fb;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolstrip button{padding:4px 9px;font-size:13px}.toolstrip select{padding:3px 6px;font-size:13px}.toolstrip .sep{width:1px;height:20px;background:var(--line);margin:0 4px}.layer-pick{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);margin-left:4px}.canvas-scroll.tool-select{cursor:default}.canvas-scroll.tool-calibrate,.canvas-scroll.tool-measureDistance,.canvas-scroll.tool-measureArea,.canvas-scroll.tool-linear,.canvas-scroll.tool-area,.canvas-scroll.tool-count,.canvas-scroll.tool-text,.canvas-scroll.tool-stamp{cursor:crosshair}.markup-canvas{position:absolute;inset:0;pointer-events:none}.selection{fill:none;stroke:#2563eb;stroke-width:1.5;stroke-dasharray:5 3}.handle{fill:#fff;stroke:#2563eb;stroke-width:1.5}.draft-line{fill:none;stroke:#e0218a;stroke-width:2;stroke-dasharray:6 4}.draft-line.closed{fill:#e0218a14}.draft-dot{fill:#fff;stroke:#e0218a;stroke-width:2}.draft-box{fill:#2563eb0f;stroke:#2563eb;stroke-width:1.5;stroke-dasharray:4 3}.check-label{text-anchor:start}.markup-badge{background:#2b4f86;color:#dce8fb;padding:1px 6px;border-radius:999px;font-size:11px}.inspector{width:250px;flex:none;background:#fff;border-left:1px solid var(--line);padding:12px 14px;overflow-y:auto;display:grid;align-content:start;gap:10px}.inspector h4{margin:0;font-size:14px}.inspector dl{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;margin:0;align-items:center}.inspector dt{color:var(--muted);font-size:12.5px}.inspector dd{margin:0;min-width:0}.inspector dd.clip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inspector select,.inspector input{padding:3px 6px;font-size:13px;max-width:100%}.inspector input.num{width:64px}button.danger{color:var(--bad);border-color:#f0c4bf}.swatches{display:flex;flex-wrap:wrap;gap:5px}.swatch{width:20px;height:20px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c3cbd6}.c-red{background:#ff3b30!important}.c-orange{background:#ff9500!important}.c-yellow{background:#fc0!important}.c-green{background:#28cd41!important}.c-teal{background:#59adc4!important}.c-blue{background:#007aff!important}.c-navy{background:#0f2e5c!important}.c-purple{background:#af52de!important}.c-gray{background:#8e8e93!important}.c-ink{background:#111!important}.c-text-red{color:#ff3b30}.c-text-orange{color:#ff9500}.c-text-blue{color:#007aff}.c-text-gray{color:#78787d}.c-text-navy{color:#0f2e5c}.c-text-green{color:#1e9632}.c-text-purple{color:#af52de}.c-text-teal{color:#3c8ca0}.c-text-ink{color:#111}.c-text-yellow{color:#b8860b}.stamp-list{display:grid;gap:6px;margin:6px 0 10px}.stamp-row{display:flex;gap:4px}.stamp-row .stamp-choice{flex:1}.stamp-choice{justify-content:center;font-weight:800;letter-spacing:.5px;border:2px solid currentColor;background:#fff}.stamp-choice.on{box-shadow:0 0 0 3px #9db8ec}.linkish{background:none;border:none;padding:0;color:var(--accent);cursor:pointer}.statusbar .scale-status.linkish{padding:2px 8px}.statusbar .scale-status.linkish.ok{color:var(--ok)}.statusbar .scale-status.linkish.none{color:var(--bad)}.sync-pill{font-size:12px;padding:3px 9px;border-radius:999px;background:#ffffff1f;color:#dce6f5}.sync-pill.live{background:#1d5c3b;color:#d8f5e4}.sync-pill.sending{background:#6b5a1e;color:#fff3c4}.sync-pill.offline,.sync-pill.error{background:#6b2a25;color:#ffd9d4}.notices{position:fixed;right:16px;bottom:44px;display:grid;gap:8px;z-index:50;max-width:380px}.notices .notice{margin:0;background:#1f2937;color:#f3f4f6;border:none;box-shadow:0 4px 16px #0000004d;font-size:13px}.notices .notice.warn{background:#7a271f}.modal-backdrop{position:fixed;inset:0;background:#0f172a59;display:grid;place-items:center;z-index:100}.modal{background:#fff;border-radius:10px;padding:18px 20px;width:380px;display:grid;gap:10px;box-shadow:0 12px 40px #0000004d}.modal h3{margin:0;font-size:16px}.modal .field{display:grid;gap:4px;font-size:13px}.modal .field.check,.info-panel .field.check{display:flex;align-items:center;gap:6px}.info-panel .field.check{padding:3px 0}.info-panel .field.check .small{margin-left:auto}.modal textarea{font:inherit;border:1px solid var(--line);border-radius:6px;padding:6px 8px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px}a.button{display:inline-flex;align-items:center;border:1px solid var(--line);background:#fff;color:var(--text);border-radius:6px;padding:5px 10px}a.button.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.topbar .navlink{color:#fff;background:#ffffff1f;padding:4px 10px;border-radius:999px;font-size:13px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.dr-project-links{gap:8px;margin-bottom:12px}button.link{border:none;background:none;color:var(--accent);padding:2px 6px}button.link.danger{color:var(--bad)}.ok-msg{background:#e8f6ee;color:var(--ok);border:1px solid #b9e3c9;padding:10px 12px;border-radius:8px;margin:8px 0}.status-chip{display:inline-block;font-size:12px;font-weight:600;text-transform:capitalize;padding:2px 9px;border-radius:999px;background:#eef1f5;color:var(--muted);border:1px solid var(--line)}.status-chip.submitted{background:#e7efff;color:#1d4ed8;border-color:#c4d6ff}.status-chip.approved{background:#e8f6ee;color:var(--ok);border-color:#b9e3c9}.status-chip.incident{background:#fdecea;color:var(--bad);border-color:#f3c2bd;margin-left:4px}.dr-page{background:var(--bg);min-height:100%}.dr-form{max-width:760px;margin:0 auto;padding:12px 12px 120px;display:flex;flex-direction:column;gap:10px}.dr-status-bar{display:flex;justify-content:space-between;align-items:center}.dr-section{padding:0;overflow:hidden}.dr-section>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:14px;font-weight:700;color:var(--navy);font-size:16px}.dr-section>summary::-webkit-details-marker{display:none}.dr-section>summary:after{content:"▾";color:var(--muted);margin-left:auto;padding-left:8px}.dr-section:not([open])>summary:after{content:"▸"}.dr-section>summary .small{margin-left:auto;font-weight:500}.dr-body{padding:0 14px 14px;display:flex;flex-wrap:wrap;gap:10px}.dr-body h4{width:100%;margin:8px 0 0;font-size:13px;color:var(--muted)}.dr-body>button{min-height:40px}.dr-field{display:flex;flex-direction:column;gap:3px;flex:1 1 120px;min-width:0}.dr-field.wide{flex-basis:100%}.dr-field>span{font-size:12px;color:var(--muted);font-weight:600}.dr-form input,.dr-form select,.dr-form textarea{font-size:16px;min-height:42px;padding:8px 10px;width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:#fff;font-family:inherit}.dr-form input[type=checkbox]{width:22px;min-height:22px}.dr-form textarea{width:100%}.dr-check{display:flex;align-items:center;gap:10px;flex-basis:100%;font-size:15px}.dr-lines{width:100%;display:flex;flex-direction:column;gap:8px}.dr-line{display:flex;gap:6px;align-items:flex-start;background:#f7f9fb;border:1px solid var(--line);border-radius:10px;padding:10px}.dr-fields{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.dr-remove{border:none;background:none;font-size:22px;color:var(--muted);padding:0 4px;line-height:1}.dr-add{align-self:flex-start;min-height:42px;border-style:dashed;color:var(--accent);font-weight:600}.dr-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;width:100%}.dr-photos figure{margin:0}.dr-photos img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.dr-photos figcaption{font-size:12px;color:var(--muted);display:flex;justify-content:space-between}.sigpad{width:100%}.sigpad canvas{width:100%;height:180px;background:#fff;border:1px dashed #9aa6b6;border-radius:10px;display:block;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.sigpad.needed canvas,.dr-section.needed .sigpad canvas{border:2px solid #c0392b}.dr-actions{position:static;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px;margin:0 -12px;background:#eef1f5f5;border-top:1px solid var(--line)}.dr-actions>button{min-height:48px;font-size:16px;padding:0 18px;border-radius:10px}.dr-actions>button.big{flex:1}.dr-office{display:flex;flex-wrap:wrap;gap:8px;align-items:center;width:100%}.dr-office input{max-width:200px}.dr-office button{min-height:42px}.dr-office-list h2{margin:4px 0;color:var(--navy)}.dr-filters{display:flex;flex-wrap:wrap;gap:12px;padding:12px;margin:10px 0;align-items:flex-end}.dr-filters label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted);font-weight:600}.dr-toolbar{gap:8px;margin-bottom:8px;align-items:center}.table-wrap{overflow-x:auto}.dr-table{width:100%;border-collapse:collapse;font-size:14px}.dr-table th{text-align:left;font-size:12px;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line);background:#f7f9fb;white-space:nowrap}.dr-table td{padding:9px 10px;border-bottom:1px solid #eef1f5;vertical-align:top}.dr-table tbody tr{cursor:pointer}.dr-table tbody tr:hover{background:#f5f8ff}.dr-table .num{text-align:right;font-variant-numeric:tabular-nums}.dr-table .nowrap{white-space:nowrap}.dr-table tfoot td{font-weight:700;border-top:2px solid var(--line)}@media (max-width: 640px){.topbar{gap:8px;padding:8px 10px;flex-wrap:wrap}.topbar .crumbs{font-size:13px}}@media (max-width: 640px){.topbar .crumbs{display:none}.topbar .brand{flex:1}}.pick-button{width:100%;min-height:44px;display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left;font-size:15px;padding:8px 12px;border-radius:10px;background:#fff;border:1px solid var(--line)}.pick-button.empty span:first-child{color:#8a96a6}.pick-button span:first-child{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.picker-backdrop{place-items:end center}.picker-sheet{width:min(640px,100vw);height:min(85vh,760px);display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px 16px 0 0;margin:0 auto}.picker-sheet h3{margin:0}.picker-sheet input[type=search]{min-height:44px;font-size:16px}.picker-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;flex:none}.picker-chips button{white-space:nowrap;border-radius:999px;min-height:36px;padding:0 12px}.picker-chips button.on{background:#0f2a4f;color:#fff}.picker-list{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:6px;-webkit-overflow-scrolling:touch}.picker-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;min-height:52px;padding:8px 12px;border-radius:10px;background:#fff;border:1px solid var(--line)}.picker-row.picked{border-color:#0f2a4f;background:#e7eef8}.phase-editor textarea{width:100%;min-height:50vh;font-family:ui-monospace,monospace;font-size:13px}.ticket-photo .button{min-height:44px;display:inline-flex;align-items:center;cursor:pointer}.ticket-thumb{width:96px;height:96px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}.dr-field.wide{min-width:0;max-width:100%}.pick-button{min-width:0;max-width:100%;box-sizing:border-box}.pick-button span:first-child{min-width:0;overflow-wrap:anywhere}.ticket-photo .row{max-width:100%}.dr-field{min-width:0}.dr-form select{min-width:0;max-width:100%;text-overflow:ellipsis}.dr-form,.dr-section,.dr-body,.dr-lines,.dr-line{min-width:0;max-width:100%;box-sizing:border-box}.dr-form{width:100%}.home{max-width:1100px;margin:0 auto;padding:16px}.home-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.home-top .search{flex:1 1 220px;min-height:40px}.home-h{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:18px 0 8px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px}.project-card{display:grid;gap:6px;position:relative}.project-card .title{font-weight:600;font-size:15px;color:inherit}.card-actions{display:flex;gap:6px;flex-wrap:wrap}.star{background:none;border:0;font-size:20px;color:#cbd5e1;cursor:pointer;min-width:36px;min-height:36px}.star.on{color:#f59e0b}.me-row{display:flex;gap:6px;align-items:center;font-size:13px}.new-project{display:flex;gap:6px}.ws-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap}.ws-title{font-size:18px;font-weight:600;margin:0;flex:1 1 auto}.tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);background:#fff;padding:0 12px;-webkit-overflow-scrolling:touch}.tabs a,.tabs button{padding:12px 14px;white-space:nowrap;border:0;background:none;border-bottom:3px solid transparent;color:var(--muted);font-weight:500;min-height:44px}.tabs .on,.tabs [aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.ws-content{padding:16px;max-width:1200px;margin:0 auto}.presence{display:flex;align-items:center}.avatar{width:28px;height:28px;border-radius:50%;color:#fff;display:inline-grid;place-items:center;font-size:11px;font-weight:700;border:2px solid #fff;margin-left:-6px}.avatar.me{outline:2px solid var(--accent)}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#94a3b8}.live-dot.live,.live-dot.open{background:#16a34a;box-shadow:0 0 0 3px #16a34a33}.notices{position:fixed;bottom:16px;left:50%;transform:translate(-50%);display:grid;gap:6px;z-index:200}.notice{background:#0f172a;color:#fff;padding:8px 14px;border-radius:8px;font-size:13px;box-shadow:0 6px 20px #00000040}.chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;min-height:34px;font-size:13px;cursor:pointer}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.chip.small{padding:3px 9px;min-height:28px;font-size:12px}.status-chip{font-size:11px;padding:2px 8px;border-radius:999px;background:#e2e8f0;text-transform:capitalize}.plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.plan-card{display:grid;gap:6px}.pin-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.pin-row{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;min-height:44px}.badge{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:6px;color:#fff;font-size:12px;font-weight:700;padding:0 6px}.big-num{font-size:26px;font-weight:700}.sov-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:14px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.sov-table{width:100%;border-collapse:collapse;font-size:13px;background:#fff}.sov-table th,.sov-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.sov-table th{background:#f6f8fb;font-size:12px;color:var(--muted);text-transform:uppercase}.sov-table td.num,.sov-table th.num{text-align:right;font-variant-numeric:tabular-nums}.sov-table .history td{background:#fafbfc}.pbar{position:relative;height:10px;background:#e2e8f0;border-radius:999px;overflow:hidden;min-width:90px}.pbar>div,.pbar>span,.pbar>i{height:100%}.pbar>div,.pbar>span,.pbar>i{position:absolute;inset:0 auto 0 0;background:#16a34a;border-radius:999px}.pbar>div.over{background:#dc2626}.pbar>.pending{background:repeating-linear-gradient(45deg,#fbbf24 0 4px,#fde68a 4px 8px)}.sov-preview{max-height:50vh;overflow:auto}.modal{max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);overflow:auto}.modal.big{width:760px}.button-like{display:inline-flex;align-items:center;padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer;min-height:36px;font-size:13px}.canvas-scroll{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.page-wrap{position:relative}.pins-overlay{position:absolute;inset:0;pointer-events:none}.pin-dot{position:absolute;width:44px;height:44px;margin:-44px 0 0 -22px;padding:0;border:0;background:none;pointer-events:auto;cursor:pointer;display:grid;place-items:center}.pin-dot span{width:28px;height:28px;border-radius:50% 50% 50% 0;transform:rotate(-45deg) translate(-2px,4px);background:var(--pin);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;box-shadow:0 2px 6px #00000059;border:2px solid #fff}.pin-dot span{line-height:1}.pin-dot.closed span{opacity:.55}.pin-dot.selected span{outline:3px solid #0f172a}.pin-panel{width:320px;max-width:100vw;background:#fff;border-left:1px solid var(--line);padding:12px 14px;display:grid;gap:8px;align-content:start;overflow:auto}.pin-panel header,.pin-panel footer{display:flex;justify-content:space-between;align-items:center;gap:8px}.pin-panel label{display:grid;gap:4px;font-size:13px}.pin-panel input,.pin-panel select,.pin-panel textarea{min-height:38px;font-size:15px}.pin-files{list-style:none;padding:0;margin:0;display:grid;gap:6px}.pin-files li{display:flex;align-items:center;gap:8px}.pin-files img{width:72px;height:54px;object-fit:cover;border-radius:4px}.loupe{position:fixed;width:120px;height:120px;border-radius:50%;border:3px solid #dc2626;box-shadow:0 6px 20px #00000059;pointer-events:none;z-index:50;background:#fff}.loupe.snapped{border-color:#16a34a}.done-bar{position:absolute;left:50%;bottom:18px;transform:translate(-50%);display:flex;gap:8px;align-items:center;background:#0f172a;color:#fff;padding:8px 10px;border-radius:12px;z-index:40;box-shadow:0 8px 24px #0000004d;white-space:nowrap}.done-bar button{min-height:44px;min-width:64px;font-size:15px}.overlay .live-ink{fill:none;stroke:#dc2626;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.overlay .live-ink.marker{stroke:#facc15;stroke-width:14;opacity:.45}.toolstrip .toggle{display:inline-flex;gap:4px;align-items:center;font-size:12px;white-space:nowrap}.ink-colors,.pin-filter{display:inline-flex;gap:4px;align-items:center}.swatch.on{outline:2px solid #0f172a;outline-offset:1px}.viewer-body{position:relative}@media (pointer: coarse){.toolstrip button,.toolbar button,.toolbar .button{min-height:44px;min-width:44px}}@media (max-width: 700px){.toolbar{flex-wrap:wrap}.toolstrip{overflow-x:auto;flex-wrap:nowrap}.pin-panel,.inspector,.info-panel{position:fixed;left:0;right:0;bottom:0;width:auto;max-height:55vh;border-top:1px solid var(--line);border-left:0;z-index:60;box-shadow:0 -8px 24px #00000026}.ws-content{padding:10px}.grid{grid-template-columns:1fr}}.viewer{grid-template-columns:minmax(0,1fr);max-width:100vw;overflow:hidden}.viewer>*{min-width:0}.viewer-body{min-width:0;min-height:0}@media (max-width: 700px){.toolbar .group button{min-width:40px;min-height:40px;padding:4px 8px}.toolbar .doc-title{flex:1 1 100%;order:-1}.toolstrip button{white-space:nowrap}}.toolstrip>*{flex-shrink:0}
