@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-B8B3d_DU.woff2) format("woff2"),url(/assets/barlow-vietnamese-400-normal-Dcxa7Lg7.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-DsA6LmuC.woff2) format("woff2"),url(/assets/barlow-latin-ext-400-normal-DGsTVCL_.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-CtwdMZP0.woff2) format("woff2"),url(/assets/barlow-latin-400-normal-Gqj0RTbC.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-Ds--_AhX.woff2) format("woff2"),url(/assets/barlow-vietnamese-500-normal-OcIDFxwj.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-D9Q9nrG3.woff2) format("woff2"),url(/assets/barlow-latin-ext-500-normal-B8S-Wk_i.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BRhHB0xN.woff2) format("woff2"),url(/assets/barlow-latin-500-normal-BAaAwKGi.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-gKnznvH6.woff2) format("woff2"),url(/assets/barlow-vietnamese-600-normal--rM-LJkj.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-Brs4HSvV.woff2) format("woff2"),url(/assets/barlow-latin-ext-600-normal-DxfNEZIW.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DMnFtVx9.woff2) format("woff2"),url(/assets/barlow-latin-600-normal-DznpAvW9.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-vietnamese-700-normal-DQ6dlXpV.woff2) format("woff2"),url(/assets/barlow-vietnamese-700-normal-CtEmPuX0.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-ext-700-normal-sk8_kpF-.woff2) format("woff2"),url(/assets/barlow-latin-ext-700-normal-BgGd7r2K.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-700-normal-Bku5AOSK.woff2) format("woff2"),url(/assets/barlow-latin-700-normal-AkmsA7ur.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DJF-uNlS.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-BiFOxWMd.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-8xWaBKho.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-aT87XWLU.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BZhxI-S8.woff2) format("woff2"),url(/assets/barlow-condensed-latin-500-normal-CgFv4DbK.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-DWeQVCYr.woff2) format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-B_SkwFzN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-DEVAjXQy.woff2) format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-BYLMsm3F.woff) format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-BN11TKSn.woff2) format("woff2"),url(/assets/barlow-condensed-latin-600-normal-CX7qwx3H.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #f3f6fa;--surface: #ffffff;--surface-2: #eaf0f6;--ink: #19325c;--ink-2: #44577a;--muted: #6e7f98;--rule: #d6dfea;--rule-strong: #b7c5d6;--action: #0e736e;--action-hover: #0a5f5b;--action-ink: #ffffff;--focus: #06a599;--err: #d93a35;--err-bg: #fdecea;--warn: #9a6408;--warn-mark: #f2a93b;--warn-bg: #fff4df;--ok: #008f80;--ok-bg: #e2f4f1;--brand-red: #ed3833;--brand-amber: #f2a93b;--brand-teal: #06a599;--brand-sky: #5ba3da;--st-submitted: #2f6fd0;--st-senior: #c98410;--st-approved: #008f80;--st-returned: #d93a35;--st-review: #7b52c9;--st-draft: #8a98ae;--shadow: 0 1px 2px rgba(25, 50, 92, .08), 0 4px 14px rgba(25, 50, 92, .06);--radius-s: 6px;--radius: 10px;--font: "Barlow", system-ui, sans-serif;--font-c: "Barlow Condensed", "Barlow", system-ui, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #0e1a2c;--surface: #15243a;--surface-2: #1b2d47;--ink: #e9eff7;--ink-2: #b6c3d6;--muted: #8494ab;--rule: #263851;--rule-strong: #3a5070;--action: #12a597;--action-hover: #17b9aa;--action-ink: #06201d;--focus: #5fd6c9;--err: #f0645e;--err-bg: #3a1f26;--warn: #f2b34e;--warn-bg: #3a2f1a;--ok: #2cc0b1;--ok-bg: #12332f;--st-submitted: #4d8fe8;--st-senior: #ba7f14;--st-approved: #0fa594;--st-returned: #e5524c;--st-review: #9572db;--st-draft: #7d8ca4;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 18px rgba(0, 0, 0, .25);color-scheme:dark}}:root[data-theme=dark]{--paper: #0e1a2c;--surface: #15243a;--surface-2: #1b2d47;--ink: #e9eff7;--ink-2: #b6c3d6;--muted: #8494ab;--rule: #263851;--rule-strong: #3a5070;--action: #12a597;--action-hover: #17b9aa;--action-ink: #06201d;--focus: #5fd6c9;--err: #f0645e;--err-bg: #3a1f26;--warn: #f2b34e;--warn-bg: #3a2f1a;--ok: #2cc0b1;--ok-bg: #12332f;--st-submitted: #4d8fe8;--st-senior: #ba7f14;--st-approved: #0fa594;--st-returned: #e5524c;--st-review: #9572db;--st-draft: #7d8ca4;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 18px rgba(0, 0, 0, .25);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--paper);color:var(--ink);font:400 16px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{min-height:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--action)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}.num,.depth{font-family:var(--font-c);font-variant-numeric:tabular-nums;letter-spacing:.01em}h1,h2,h3{margin:0;line-height:1.15}h1{font-size:1.6rem;font-weight:700;letter-spacing:-.01em}h2{font-size:1.2rem;font-weight:600}h3{font-size:1rem;font-weight:600}p{margin:0 0 .6em;max-width:72ch}.muted{color:var(--muted)}.small{font-size:.85rem}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}.hidden{display:none!important}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.rail{position:sticky;top:0;height:100vh;overflow:auto;background:var(--surface);border-right:1px solid var(--rule);padding:18px 14px;display:flex;flex-direction:column;gap:18px}.rail .brand img{width:168px;height:auto;display:block}.rail nav{display:grid;gap:2px}.rail nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-s);color:var(--ink-2);text-decoration:none;font-weight:500}.rail nav a:hover{background:var(--surface-2);color:var(--ink)}.rail nav a.active{background:var(--ink);color:var(--paper)}.rail nav .sep{height:1px;background:var(--rule);margin:8px 4px}.rail .proj-switch{width:100%}.rail .foot{margin-top:auto;display:grid;gap:8px;font-size:.85rem}.main{min-width:0;padding:22px 28px 60px}.topbar{display:none;position:sticky;top:0;z-index:20;background:var(--ink);color:#fff;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));align-items:center;gap:10px}.topbar img{height:26px;width:26px}.topbar .t{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabbar{display:none}@media (max-width: 860px){.shell{grid-template-columns:1fr}.rail{display:none}.topbar{display:flex}.main{padding:14px 12px 92px}.tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--surface);border-top:1px solid var(--rule);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{display:grid;justify-items:center;gap:2px;padding:8px 4px 9px;font-size:.75rem;color:var(--muted);text-decoration:none;min-height:56px}.tabbar a.active{color:var(--action);font-weight:600}}.page-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px;flex-wrap:wrap}.page-head .sub{color:var(--muted);margin-top:4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--radius-s);border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{border-color:var(--ink-2)}.btn.primary{background:var(--action);border-color:var(--action);color:var(--action-ink)}.btn.primary:hover{background:var(--action-hover)}.btn.danger{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,transparent)}.btn.ghost{border-color:transparent;background:transparent}.btn.small{min-height:34px;padding:0 10px;font-size:.9rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{width:100%}.icon-btn{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:var(--radius-s);border:0;background:transparent;cursor:pointer;color:inherit}.icon-btn:hover{background:var(--surface-2)}label.f{display:grid;gap:5px;font-weight:500;font-size:.92rem;color:var(--ink-2)}input.in,select.in,textarea.in{width:100%;min-height:44px;padding:8px 11px;border:1px solid var(--rule-strong);border-radius:var(--radius-s);background:var(--surface);color:var(--ink);font-size:1rem}textarea.in{min-height:84px;resize:vertical}input.in:focus,select.in:focus,textarea.in:focus{border-color:var(--focus);outline:2px solid color-mix(in srgb,var(--focus) 30%,transparent)}input[type=color].in{padding:3px;width:54px}.check{display:flex;gap:8px;align-items:center;min-height:44px}.check input{width:20px;height:20px;accent-color:var(--action)}.seg{display:inline-flex;border:1px solid var(--rule-strong);border-radius:var(--radius-s);overflow:hidden}.seg button{border:0;background:var(--surface);padding:0 14px;min-height:40px;cursor:pointer;font-weight:500;color:var(--ink-2)}.seg button+button{border-left:1px solid var(--rule)}.seg button.on{background:var(--ink);color:var(--paper)}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:18px}.panel.tight{padding:12px}.panel h2{margin-bottom:12px}.note{padding:10px 12px;border-radius:var(--radius-s);background:var(--surface-2);color:var(--ink-2)}.note.err{background:var(--err-bg);color:var(--err)}.note.warn{background:var(--warn-bg);color:var(--warn)}.note.ok{background:var(--ok-bg);color:var(--ok)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;padding:2px 9px 2px 7px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.badge:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.badge.s-DRAFT{color:var(--st-draft)}.badge.s-SUBMITTED{color:var(--st-submitted)}.badge.s-IN_REVIEW{color:var(--st-review)}.badge.s-RETURNED,.badge.s-AMENDMENT{color:var(--st-returned)}.badge.s-SENIOR_APPROVED{color:var(--st-senior)}.badge.s-APPROVED{color:var(--st-approved)}.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.18);flex:none;vertical-align:-2px}.tbl{width:100%;border-collapse:collapse;font-size:.95rem}.tbl th{text-align:left;font-weight:600;color:var(--muted);font-size:.82rem;padding:8px 10px;border-bottom:1px solid var(--rule);white-space:nowrap}.tbl td{padding:9px 10px;border-bottom:1px solid var(--rule);vertical-align:middle}.tbl tr:hover td{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}.tbl td.r,.tbl th.r{text-align:right}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}.sync-pill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:4px 12px 4px 8px;font-size:.85rem;font-weight:600;border:0;cursor:pointer;background:#ffffff24;color:inherit;min-height:34px}.rail .sync-pill{background:var(--surface-2);color:var(--ink-2)}.sync-pill .dot{width:10px;height:10px;border-radius:50%;background:var(--ok)}.sync-pill.off .dot{background:var(--muted)}.sync-pill.pend .dot{background:var(--warn-mark)}.sync-pill.err .dot{background:var(--err)}.sync-pill.run .dot{animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}@media (prefers-reduced-motion: reduce){.sync-pill.run .dot{animation:none}}.login-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,480px)}.login-art{position:relative;background:var(--ink);overflow:hidden;color:#fff;padding:40px;display:flex;flex-direction:column;justify-content:flex-end}.login-art svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.login-art .cap{position:relative;max-width:30ch;font-size:1.05rem;color:#ffffffd1}.login-form{background:var(--surface);padding:48px 40px;display:flex;flex-direction:column;justify-content:center;gap:18px}.login-form .wm{width:220px}@media (max-width: 860px){.login-wrap{grid-template-columns:1fr}.login-art{min-height:180px;padding:20px}.login-art .cap{display:none}.login-form{padding:28px 18px}}.hole-list{display:grid;gap:8px}.hole-item{display:grid;grid-template-columns:1fr auto;gap:4px 14px;align-items:center;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 14px;text-decoration:none;color:inherit;min-height:64px}.hole-item:hover{border-color:var(--rule-strong)}.hole-item .id{font-weight:700;font-size:1.05rem}.hole-item .meta{color:var(--muted);font-size:.88rem;display:flex;gap:12px;flex-wrap:wrap}.hole-item .mini{grid-column:1 / -1}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.chip-f{border:1px solid var(--rule-strong);background:var(--surface);border-radius:999px;padding:0 12px;min-height:36px;cursor:pointer;font-weight:500;color:var(--ink-2)}.chip-f.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.work{display:grid;grid-template-columns:76px minmax(0,1fr);gap:16px;align-items:start}.core-col{position:sticky;top:16px;height:calc(100vh - 120px);min-height:360px}@media (max-width: 860px){.work{grid-template-columns:40px minmax(0,1fr);gap:8px}.core-col{top:60px;height:calc(100vh - 190px)}}.tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--rule);margin-bottom:12px;scrollbar-width:none}.tabs button{border:0;background:transparent;padding:10px 14px;min-height:46px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}.tabs button.on{color:var(--ink);border-bottom-color:var(--action)}.tabs .cnt{font-family:var(--font-c);font-weight:600;font-size:.8rem;background:var(--surface-2);border-radius:999px;padding:0 7px;color:var(--ink-2)}.tabs .cnt.e{background:var(--err);color:#fff}.grid{display:grid;gap:6px}.grow-row{display:grid;grid-template-columns:30px 82px 82px 1fr 40px;gap:8px;align-items:start;background:var(--surface);border:1px solid var(--rule);border-left:6px solid var(--rc, var(--rule));border-radius:var(--radius-s);padding:8px 8px 8px 6px}.grow-row.pt{grid-template-columns:30px 92px 1fr 40px}.grow-row.qc{grid-template-columns:30px 1fr 40px}.grow-row.sel{outline:2px solid var(--focus)}.grow-row.has-err{border-color:color-mix(in srgb,var(--err) 60%,var(--rule))}.grow-row .idx{font-family:var(--font-c);color:var(--muted);font-size:.85rem;padding-top:12px;text-align:right}.grow-row .fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.cell{display:grid;gap:3px;min-width:0}.cell>span{font-size:.74rem;color:var(--muted);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell input,.cell .codebtn,.cell select{min-height:42px;width:100%;border:1px solid var(--rule);border-radius:var(--radius-s);background:var(--paper);padding:6px 9px;font-size:1rem}.cell input.depth{font-size:1.12rem;font-weight:600}.cell.err input,.cell.err .codebtn{border-color:var(--err);background:var(--err-bg)}.cell.warn input,.cell.warn .codebtn{border-color:var(--warn-mark);background:var(--warn-bg)}.cell .msg{font-size:.75rem;color:var(--err);line-height:1.2}.cell.warn .msg{color:var(--warn)}.codebtn{display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;color:var(--ink)}.codebtn b{font-family:var(--font-c);font-weight:600;font-size:1.05rem}.codebtn .l{color:var(--muted);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.codebtn.empty{color:var(--muted)}.computed{min-height:42px;display:flex;align-items:center;padding:0 9px;background:var(--surface-2);border-radius:var(--radius-s);font-family:var(--font-c);font-weight:600;font-size:1.05rem}.add-bar{display:flex;gap:8px;position:sticky;bottom:0;padding:10px 0;background:linear-gradient(to top,var(--paper) 70%,transparent);flex-wrap:wrap}@media (max-width: 860px){.grow-row{grid-template-columns:1fr 1fr 40px}.grow-row .idx{display:none}.grow-row .fields{grid-column:1 / -1;grid-template-columns:1fr 1fr}.grow-row.pt,.grow-row.qc{grid-template-columns:1fr 40px}.add-bar{bottom:64px}}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a142473;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--surface);width:min(640px,100%);max-height:82vh;border-radius:16px 16px 0 0;display:flex;flex-direction:column;box-shadow:var(--shadow);padding-bottom:env(safe-area-inset-bottom)}@media (min-width: 861px){.sheet-bg{align-items:center}.sheet{border-radius:14px}}.sheet-h{padding:14px 16px 10px;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--rule)}.sheet-b{overflow:auto;padding:12px 16px 18px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 14px 0 10px;border-radius:10px;border:1px solid var(--rule-strong);background:var(--surface);cursor:pointer;font-weight:600;font-family:var(--font-c);font-size:1.08rem}.chip.on{border-color:var(--action);box-shadow:inset 0 0 0 2px var(--action)}.chip .swatch{width:18px;height:18px}.code-list{display:grid;gap:2px}.code-opt{display:grid;grid-template-columns:22px 70px 1fr;gap:10px;align-items:center;padding:10px 8px;min-height:48px;border-radius:8px;border:0;background:transparent;text-align:left;cursor:pointer;color:var(--ink)}.code-opt:hover,.code-opt.on{background:var(--surface-2)}.code-opt b{font-family:var(--font-c);font-size:1.05rem}.code-opt .g{color:var(--muted);font-size:.8rem}.review{display:grid;grid-template-columns:minmax(360px,560px) minmax(0,1fr);gap:18px;align-items:start}.review>*,.work>*,.admin-grid>*{min-width:0}@media (max-width: 1180px){.review{grid-template-columns:1fr}}.strip-wrap{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 6px 12px 12px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}.issue-list{display:grid;gap:6px}.issue{display:grid;grid-template-columns:10px 1fr;gap:10px;padding:8px 10px;border-radius:var(--radius-s);background:var(--surface);border:1px solid var(--rule);font-size:.92rem;cursor:pointer;text-align:left;color:var(--ink)}.issue:before{content:"";width:10px;height:10px;border-radius:2px;margin-top:5px;background:var(--err)}.issue.warning:before{background:var(--warn-mark);transform:rotate(45deg)}.diff-added td:first-child{box-shadow:inset 4px 0 0 var(--ok)}.diff-changed td:first-child{box-shadow:inset 4px 0 0 var(--warn-mark)}.diff-deleted td{text-decoration:line-through;color:var(--muted)}td.changed{background:var(--warn-bg)}.comment{border-left:3px solid var(--action);padding:6px 10px;background:var(--surface-2);border-radius:0 6px 6px 0;font-size:.92rem}.timeline{display:grid;gap:0}.timeline .ev{display:grid;grid-template-columns:14px 1fr;gap:10px;padding-bottom:12px;position:relative}.timeline .ev:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--ink-2);margin-top:5px}.timeline .ev:not(:last-child):after{content:"";position:absolute;left:4.5px;top:16px;bottom:0;width:1px;background:var(--rule-strong)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}.kpi{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px}.kpi .v{font-family:var(--font-c);font-weight:600;font-size:2.1rem;line-height:1;font-variant-numeric:tabular-nums}.kpi .k{color:var(--muted);font-size:.88rem;margin-top:6px}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media (max-width: 1000px){.two{grid-template-columns:1fr}}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.88rem;color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:6px}.map-wrap{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;position:relative}.map-wrap svg{display:block;width:100%;height:auto;touch-action:none}.tip{position:fixed;z-index:60;pointer-events:none;background:var(--ink);color:var(--paper);padding:8px 10px;border-radius:8px;font-size:.85rem;box-shadow:var(--shadow);max-width:280px}.tip b{font-weight:600}.admin-grid{display:grid;grid-template-columns:260px 1fr;gap:18px;align-items:start}@media (max-width: 1000px){.admin-grid{grid-template-columns:1fr}}.side-list{display:grid;gap:2px}.side-list button{text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:var(--radius-s);cursor:pointer;display:flex;justify-content:space-between;gap:10px;color:var(--ink-2);font-weight:500}.side-list button:hover{background:var(--surface-2)}.side-list button.on{background:var(--ink);color:var(--paper)}.field-row{display:grid;grid-template-columns:30px minmax(90px,1fr) minmax(110px,1.3fr) minmax(110px,1.3fr) minmax(130px,1fr) 40px;gap:6px 8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--rule)}.field-row>:nth-child(6){grid-column:2 / -2;grid-row:2}.field-row>:nth-child(7){grid-column:-2;grid-row:1}.field-row.h{font-size:.8rem;color:var(--muted);font-weight:600}.field-row.h>:nth-child(6){display:none}@media (max-width: 700px){.field-row{grid-template-columns:30px 1fr 1fr 40px}.field-row>*{grid-column:auto!important;grid-row:auto!important}.field-row.h{display:none}}.preview-phone{width:380px;max-width:100%;border:10px solid var(--ink);border-radius:26px;padding:12px;background:var(--paper)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:24px;z-index:70;background:var(--ink);color:var(--paper);padding:12px 18px;border-radius:10px;box-shadow:var(--shadow);max-width:min(520px,calc(100vw - 24px))}@media (max-width: 860px){.toast{bottom:84px}}.lock{min-height:100vh;display:grid;place-items:center;background:var(--ink);color:#fff;padding:20px}.lock .box{width:min(340px,100%);display:grid;gap:16px;justify-items:center;text-align:center}.pin{display:grid;grid-template-columns:repeat(3,72px);gap:12px}.pin button{height:64px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;font:600 1.5rem var(--font-c);cursor:pointer}.pin-dots{display:flex;gap:12px}.pin-dots i{width:14px;height:14px;border-radius:50%;border:2px solid #fff}.pin-dots i.f{background:#fff}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.empty h2{color:var(--ink);margin-bottom:8px}@media (max-width: 1480px){.tpl-edit{grid-template-columns:1fr!important}.tpl-edit>div:last-child{position:static!important}}
