@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");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:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}.__className_7dcaba{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.__variable_7dcaba{--font-plex:"IBM Plex Sans","IBM Plex Sans Fallback"}:root{--bg:#f5f6f8;--surface:#ffffff;--surface-2:#f8f9fb;--surface-3:#eef0f4;--line:#e5e7ec;--line-2:#d3d7df;--text:#15192b;--text-2:#5b6273;--text-3:#8a91a3;--navy:#1f2a44;--navy-2:#2b3860;--gold:#b08d57;--gold-2:#9a7a48;--gold-soft:#f5efe4;--accent:var(--gold);--accent-soft:var(--gold-soft);--focus:rgba(176,141,87,0.35);--danger:#d6405a;--danger-soft:#fbe9ec;--ok:#1f9d5a;--warn:#d9941c;--radius-sm:6px;--radius:8px;--radius-lg:12px;--shadow-sm:0 1px 2px rgba(21,25,43,0.06);--shadow:0 10px 30px rgba(21,25,43,0.12),0 2px 6px rgba(21,25,43,0.06);--sidebar-w:240px;--font-sans:var(--font-plex),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);font-size:13.5px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::placeholder{color:var(--text-3)}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em;text-wrap:balance}h1{font-size:18px}h2{font-size:14.5px}h3{font-size:13.5px}svg.lucide{flex:none}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}@media (prefers-reduced-motion:reduce){*,:after,:before{transition:none!important;animation:none!important}}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex:none;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow:auto}.brand{padding:18px 16px 10px;display:flex;align-items:center;gap:10px}.brand .mark{width:28px;height:28px;border-radius:7px;background:var(--navy);color:var(--gold);display:grid;place-items:center;font-weight:700;font-size:13px;letter-spacing:.02em}.brand .name{font-weight:600;font-size:13.5px;color:var(--text);letter-spacing:-.01em}.brand .sub{font-size:11.5px;color:var(--text-3)}.nav-section{padding:14px 16px 4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);display:flex;justify-content:space-between;align-items:center;font-weight:600}.nav-section button{background:none;border:0;color:var(--text-3);width:22px;height:22px;border-radius:5px;display:grid;place-items:center;padding:0}.nav-section button:hover{color:var(--text);background:var(--surface-3)}.nav{flex-direction:column;gap:1px;padding:0 8px}.nav,.nav a{display:flex}.nav a{align-items:center;gap:9px;padding:6px 10px;border-radius:6px;color:var(--text-2);font-size:13.5px;font-weight:500;position:relative}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--surface-3);color:var(--text)}.nav a.active:before{content:"";position:absolute;left:-8px;top:7px;bottom:7px;width:3px;border-radius:2px;background:var(--gold)}.nav .ic{width:18px;display:inline-flex;justify-content:center;color:var(--text-3);font-size:14px}.nav a.active .ic{color:var(--text)}.nav .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .spacer{flex:1 1}.sidebar .me{padding:10px 12px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}.sidebar .me .n{font-size:13px;font-weight:600}.sidebar .me .e{font-size:11.5px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar .me form{margin-left:auto}.sidebar .me button{background:none;border:0;color:var(--text-3);width:28px;height:28px;border-radius:6px;display:grid;place-items:center;padding:0}.sidebar .me button:hover{color:var(--text);background:var(--surface-3)}.mobilebar,.sidebar-bg{display:none}.main{flex:1 1;min-width:0;display:flex;flex-direction:column}.topbar{gap:12px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:30;min-height:56px}.topbar,.topbar .title{display:flex;align-items:center}.topbar .title{gap:10px;min-width:0}.topbar .title .ic{font-size:20px;line-height:1}.topbar .title .desc,.topbar .title h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .title .desc{font-size:12px;color:var(--text-3)}.topbar .grow{flex:1 1}.content{padding:20px 24px 60px}.avatar{width:24px;height:24px;border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-size:10.5px;font-weight:600;flex:none;letter-spacing:.02em}.avatar.lg{width:36px;height:36px;font-size:13px}.avatar.sm{width:20px;height:20px;font-size:9px}.avatars{display:inline-flex}.avatars .avatar{margin-left:-6px;box-shadow:0 0 0 2px #fff}.avatars .avatar:first-child{margin-left:0}.btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 11px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface);font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;box-shadow:var(--shadow-sm);transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-2);border-color:#c3c8d2}.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn.primary:hover{background:var(--navy-2)}.btn.gold{background:var(--gold);color:#fff;border-color:var(--gold)}.btn.gold:hover{background:var(--gold-2)}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2);box-shadow:none}.btn.ghost:hover{background:var(--surface-3);color:var(--text)}.btn.danger{color:var(--danger)}.btn.sm{height:28px;padding:0 9px;font-size:12.5px}.btn.icon{padding:0;width:32px;justify-content:center}.btn.icon.sm{width:28px}.btn:disabled{opacity:.5;cursor:default}.input,.select,.textarea{height:34px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:#fff;font-size:13.5px;width:100%;box-shadow:var(--shadow-sm)}.textarea{height:auto;min-height:80px;padding:8px 10px;resize:vertical}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:var(--gold)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field label{font-size:12px;font-weight:600;color:var(--text-2)}.row{display:flex;gap:10px;align-items:center}.muted{color:var(--text-2)}.tiny{font-size:12px}.error{color:var(--danger);font-size:13px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px}.card .sub,.card h2{margin-bottom:12px}.card .sub{font-size:12px;color:var(--text-3);margin-top:-8px}.board-tools{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.board-tools .search{width:240px;height:32px}.board-tools .chip-toggle{height:28px;padding:0 10px;border-radius:14px;border:1px solid var(--line-2);background:#fff;font-size:12.5px;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}.board-tools .chip-toggle.on{background:var(--navy);color:#fff;border-color:var(--navy)}.board-wrap{overflow-x:auto;padding-bottom:20px}.group{margin-bottom:24px;min-width:max-content}.group-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;position:-webkit-sticky;position:sticky;left:0;width:-moz-fit-content;width:fit-content;max-width:calc(100vw - var(--sidebar-w) - 48px)}.group-head .caret{background:none;border:0;width:22px;height:22px;border-radius:5px;color:var(--text-3);display:grid;place-items:center;padding:0}.group-head .caret:hover{background:var(--surface-3);color:var(--text)}.group-head .gdot{width:8px;height:8px;border-radius:50%;flex:none}.group-head .gname{font-weight:600;font-size:14px;background:none;border:1px solid transparent;border-radius:5px;padding:2px 6px;min-width:60px;color:var(--text)}.group-head .gname:hover{border-color:var(--line-2)}.group-head .gname:focus{outline:none;border-color:var(--gold);background:#fff}.group-head .count{font-size:12px;color:var(--text-3)}.group-head .gmenu{opacity:0}.group-head:hover .gmenu{opacity:1}table.board{border-collapse:separate;border-spacing:0;background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow-sm)}table.board thead th:first-child{border-top-left-radius:var(--radius)}table.board tr:last-child td:first-child{border-bottom-left-radius:var(--radius)}table.board td,table.board th{border-bottom:1px solid var(--line);border-right:1px solid var(--line);height:38px;padding:0;position:relative;vertical-align:middle}table.board td:last-child,table.board th:last-child{border-right:0}table.board tr:last-child td{border-bottom:0}table.board thead th{font-size:12px;font-weight:500;color:var(--text-2);text-align:center;background:var(--surface-2);height:34px;-webkit-user-select:none;-moz-user-select:none;user-select:none}table.board thead th.name{text-align:left;padding-left:10px}table.board th .hd{display:flex;align-items:center;justify-content:center;gap:4px;padding:0 6px;height:100%}table.board th .hd .menu-btn{opacity:0;background:none;border:0;padding:0;width:18px;height:18px;border-radius:4px;color:var(--text-3);display:grid;place-items:center}table.board th:hover .hd .menu-btn{opacity:1}table.board th .hd .menu-btn:hover{background:var(--surface-3);color:var(--text)}table.board th .resizer{position:absolute;right:-3px;top:0;width:6px;height:100%;cursor:col-resize;z-index:2}table.board th .resizer:hover{background:var(--gold)}td.colorbar,th.colorbar{width:5px;min-width:5px;padding:0;border-right:0!important;position:-webkit-sticky;position:sticky;left:0;z-index:3}td.name{padding:0!important;text-align:left}td.name,th.name{position:-webkit-sticky;position:sticky;left:5px;z-index:2;background:var(--surface);box-shadow:1px 0 0 var(--line)}th.name{background:var(--surface-2)}tr.item:hover td,tr.item:hover td.name{background:#fafbfc}tr.sumrow td.name{background:var(--surface-2)}tr.addrow td:not(.colorbar){position:-webkit-sticky;position:sticky;left:5px;background:var(--surface)}td.name .namecell{display:flex;align-items:center;gap:4px;height:38px;padding-left:4px}td.name .namecell.sub{padding-left:32px}td.name .namecell .exp{width:20px;height:20px;border:0;background:none;color:var(--text-3);border-radius:4px;flex:none;display:grid;place-items:center;padding:0}td.name .namecell .exp:hover{background:var(--surface-3);color:var(--text)}td.name .namecell .exp.on{color:var(--text)}td.name .namecell input{flex:1 1;min-width:0;border:1px solid transparent;background:none;padding:4px 6px;border-radius:5px;font-size:13.5px;font-weight:500}td.name .namecell input:hover{border-color:var(--line-2)}td.name .namecell input:focus{outline:none;border-color:var(--gold);background:#fff}td.name .namecell .open{opacity:0;height:24px;padding:0 7px;font-size:12px;margin-right:6px}tr:hover td.name .namecell .open{opacity:1}td.name .namecell .cc{font-size:11.5px;color:var(--text-3);height:22px;padding:0 6px;border-radius:11px;background:var(--surface-3);display:inline-flex;align-items:center;gap:4px;white-space:nowrap;border:0;cursor:pointer}td.name .namecell .cc.has{color:var(--navy);background:var(--gold-soft)}td.name .namecell .cc:hover{background:var(--line)}tr.item.dragging{opacity:.4}tr.item.dragover td{border-top:2px solid var(--gold)}tr.done td.name input{color:var(--text-3);text-decoration:line-through}tr.addrow td{height:36px}tr.addrow input{width:100%;height:100%;border:0;background:none;padding:0 12px;font-size:13px;color:var(--text-2)}tr.addrow input:focus{outline:none;background:#fff;color:var(--text)}tr.sumrow td{height:30px;background:var(--surface-2);font-size:12px;color:var(--text-2);text-align:center;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tr.sumrow td.name{padding-left:12px!important;font-weight:500}th.addcol{width:44px;min-width:44px}th.addcol button{width:100%;height:100%;border:0;background:none;color:var(--text-3);display:grid;place-items:center}th.addcol button:hover{color:var(--text);background:var(--gold-soft)}td.addcol{background:var(--surface-2)}.cell{height:38px;display:flex;align-items:center;justify-content:center;padding:0 8px;font-size:13px;cursor:pointer;width:100%;overflow:hidden}.cell.left{justify-content:flex-start}.cell.right{justify-content:flex-end}.cell.right,.cell.ro{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cell.ro{cursor:default}.cell.empty{color:var(--text-3)}.cell input.inline{width:100%;height:100%;border:0;background:#fff;padding:0 8px;outline:2px solid var(--gold);outline-offset:-2px;text-align:inherit}.cell input.inline.num{text-align:right}.cell .txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell.status{padding:0 6px}.status-pill{--c:#c4c4c4;max-width:100%;height:24px;padding:0 9px 0 7px;border-radius:12px;display:inline-flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--c) 14%,#fff);color:color-mix(in srgb,var(--c) 62%,#15192b);font-weight:500;font-size:12.5px;white-space:nowrap}.status-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c);flex:none}.status-pill>span{overflow:hidden;text-overflow:ellipsis}.status-pill.none{background:transparent;border:1px dashed var(--line-2);color:var(--text-3)}.status-pill.none:before{display:none}.cell.date{gap:6px}.cell.date.overdue{color:var(--danger);font-weight:600}.cell.date.today{color:var(--warn);font-weight:600}.cell.date.done{color:var(--text-3);text-decoration:line-through}.tl{position:relative;width:100%;height:20px;background:var(--surface-3);overflow:hidden}.tl,.tl .bar{border-radius:10px}.tl .bar{position:absolute;top:0;bottom:0}.tl .lab{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;color:#fff;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.25);white-space:nowrap}.tl.empty .lab{color:var(--text-3);text-shadow:none;font-weight:400}.files{display:flex}.files,.files a{gap:4px;align-items:center;overflow:hidden}.files a{font-size:11.5px;background:var(--gold-soft);color:var(--navy);height:22px;padding:0 8px;border-radius:11px;white-space:nowrap;max-width:120px;text-overflow:ellipsis;display:inline-flex}.files .more{font-size:11px;color:var(--text-3)}.chips{display:flex}.chip,.chips{gap:4px;align-items:center;overflow:hidden}.chip{font-size:12px;background:var(--surface-2);border:1px solid var(--line);height:22px;padding:0 8px;border-radius:11px;white-space:nowrap;max-width:160px;text-overflow:ellipsis;display:inline-flex}.chip:hover{border-color:var(--line-2);background:var(--surface-3)}.chip.link{color:#0b63c4}.cell .cb{width:16px;height:16px;accent-color:var(--navy);cursor:pointer}.pct-bar{position:relative;width:100%;height:18px;border-radius:4px;background:var(--surface-3);overflow:hidden}.pct-bar .fill{position:absolute;left:0;top:0;bottom:0}.pct-bar .lab{position:absolute;inset:0;display:grid;place-items:center;font-size:11.5px;font-weight:600}.pop-backdrop{position:fixed;inset:0;z-index:90}.pop{position:fixed;z-index:91;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;min-width:200px;max-width:360px;max-height:70vh;overflow:auto}.pop .ttl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);padding:6px 8px;font-weight:600}.pop .opt{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:0;background:none;border-radius:6px;text-align:left;font-size:13px;color:var(--text)}.pop .opt:hover{background:var(--surface-2)}.pop .opt:disabled{opacity:.4;cursor:default}.pop .opt.on{background:var(--gold-soft)}.pop .opt.danger{color:var(--danger)}.pop .sep{height:1px;background:var(--line);margin:6px 0}.pop .label-swatch{--c:#c4c4c4;width:100%;height:30px;border-radius:6px;display:flex;align-items:center;gap:8px;padding:0 10px;border:0;margin-bottom:3px;font-size:13px;font-weight:500;background:color-mix(in srgb,var(--c) 12%,#fff);color:color-mix(in srgb,var(--c) 62%,#15192b);text-align:left}.pop .label-swatch:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}.pop .label-swatch:hover{background:color-mix(in srgb,var(--c) 22%,#fff)}.pop .mini-form{padding:6px;display:flex;flex-direction:column;gap:8px}.pop .mini-form .input{font-size:13px;height:32px}.pop .mini-form .row>*{flex:1 1}.pop .person{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;width:100%;border:0;background:none;text-align:left;font-size:13px}.pop .person:hover{background:var(--surface-2)}.pop .person .chk{margin-left:auto;color:var(--ok);display:inline-flex}.pop .swatches{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:6px;gap:6px;padding:6px}.pop .swatches button{width:26px;height:26px;border-radius:50%;border:2px solid transparent}.pop .swatches button.on{border-color:var(--navy)}.pop .labels-editor{display:flex;flex-direction:column;gap:6px;padding:4px}.pop .labels-editor .le{display:flex;gap:6px;align-items:center}.pop .labels-editor .le .sw{width:22px;height:22px;border-radius:50%;border:0;flex:none}.pop .labels-editor .le input{flex:1 1}.pop .labels-editor .le .x{border:0;background:none;color:var(--text-3);display:grid;place-items:center;padding:2px}.pop .labels-editor .le .done-toggle{font-size:10.5px;padding:2px 6px;border-radius:4px;border:1px solid var(--line-2);background:#fff;color:var(--text-3);white-space:nowrap}.pop .labels-editor .le .done-toggle.on{background:var(--ok);color:#fff;border-color:var(--ok)}.pop .hint{font-size:11.5px;color:var(--text-3);padding:2px 8px 6px;line-height:1.4}.modal-bg{position:fixed;inset:0;background:rgba(21,25,43,.4);z-index:100;display:grid;place-items:center}.modal{background:#fff;border-radius:14px;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;padding:22px 24px;box-shadow:var(--shadow)}.modal h2{margin-bottom:14px;font-size:16px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.panel-bg{position:fixed;inset:0;background:rgba(21,25,43,.28);z-index:80}.panel{position:fixed;top:0;right:0;bottom:0;width:min(720px,100vw);background:#fff;z-index:81;box-shadow:-12px 0 40px rgba(21,25,43,.18);display:flex;flex-direction:column}.panel .ph{padding:16px 22px 10px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:6px}.panel .ph input.title{flex:1 1;font-size:18px;font-weight:600;border:1px solid transparent;border-radius:6px;padding:4px 8px;letter-spacing:-.01em}.panel .ph input.title:hover{border-color:var(--line-2)}.panel .ph input.title:focus{outline:none;border-color:var(--gold)}.panel .ph .crumb{font-size:12px;color:var(--text-3);margin-bottom:4px;padding-left:8px}.panel .tabs{display:flex;gap:2px;padding:0 22px;border-bottom:1px solid var(--line)}.panel .tabs button{padding:10px 12px;border:0;background:none;border-bottom:2px solid transparent;font-size:13px;color:var(--text-2);font-weight:500;display:inline-flex;align-items:center;gap:6px}.panel .tabs button:hover{color:var(--text)}.panel .tabs button.on{color:var(--text);border-bottom-color:var(--gold)}.panel .pb{flex:1 1;overflow:auto;padding:18px 22px}.panel .fields{display:grid;grid-template-columns:150px 1fr;grid-gap:8px 14px;gap:8px 14px;align-items:center}.panel .fields .fl{font-size:12.5px;color:var(--text-2);font-weight:500}.panel .fields .fv{border:1px solid var(--line);border-radius:var(--radius-sm);min-height:36px;overflow:hidden}.panel .fields .fv .cell{justify-content:flex-start}.panel .fields .fv .cell.right{justify-content:flex-end}.panel .sub-list{margin-top:22px}.panel .sub-list table.board{width:100%}.comment-box{display:flex;gap:10px;margin-bottom:18px;align-items:flex-start}.comment-box .textarea{min-height:64px}.comment-box .mention-hint{font-size:11.5px;color:var(--text-3);margin-top:4px}.comment{display:flex;gap:10px;padding:12px 0;border-top:1px solid var(--line)}.comment .cb{flex:1 1;min-width:0}.comment .ch{display:flex;gap:8px;align-items:baseline;font-size:12.5px}.comment .ch .n{font-weight:600}.comment .ch .del,.comment .ch .t{color:var(--text-3)}.comment .ch .del{margin-left:auto;border:0;background:none;font-size:12px;opacity:0}.comment:hover .ch .del{opacity:1}.comment .body{margin-top:4px;white-space:pre-wrap;line-height:1.5;overflow-wrap:anywhere}.comment .body .m{background:var(--gold-soft);color:var(--navy);border-radius:4px;padding:0 3px;font-weight:600}.act{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:13px}.act .ab{flex:1 1;min-width:0}.act .ab .who{font-weight:600}.act .ab .when{color:var(--text-3);font-size:12px;margin-left:6px}.act .ab .det{color:var(--text-2);white-space:pre-wrap;margin-top:2px;font-size:12.5px}.mention-pop{position:absolute;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:5;padding:4px}.dropzone{border:1.5px dashed var(--line-2);border-radius:var(--radius);padding:12px;text-align:center;font-size:12.5px;color:var(--text-2);cursor:pointer}.dropzone.over{border-color:var(--gold);background:var(--gold-soft)}.filelist{display:flex;flex-direction:column;gap:4px;margin-top:8px}.filelist .f{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px}.filelist .f .sz{color:var(--text-3);font-size:12px}.filelist .f .x{margin-left:auto;border:0;background:none;color:var(--text-3);display:grid;place-items:center;padding:2px}.filelist .f .x:hover{color:var(--danger)}.doc-row{display:grid;grid-template-columns:24px 1fr 80px 150px 28px;align-items:center;grid-gap:8px;gap:8px;padding:7px 10px;border-top:1px solid var(--line);font-size:13px}.doc-row:hover{background:var(--surface-2)}.doc-row .ic{color:var(--text-3);display:inline-flex}.doc-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.doc-row .nm:hover{color:var(--gold-2)}.doc-row .del{opacity:0}.doc-row:hover .del{opacity:1}.grid{display:grid;grid-gap:16px;gap:16px}.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1100px){.grid.c3,.grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:minmax(0,1fr)}}.card,.kpi{min-width:0}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 18px}.kpi .l{font-size:12px;color:var(--text-2);font-weight:500}.kpi .v{font-size:26px;font-weight:600;margin-top:4px;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.2}.kpi .s{font-size:12px;color:var(--text-3);margin-top:4px}.kpi.alert .v{color:var(--danger)}.bars{display:flex;flex-direction:column;gap:8px}.bars .b{display:grid;grid-template-columns:150px 1fr 70px;align-items:center;grid-gap:10px;gap:10px;font-size:13px}.bars .b .n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bars .b .track{height:8px;background:var(--surface-3);border-radius:4px;overflow:hidden}.bars .b .fill{height:100%;border-radius:4px}.bars .b .val{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-2);font-size:12.5px}.list{display:flex;flex-direction:column}.list .li{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:13px}.list .li:first-child{border-top:0}.list .li .nm{flex:1 1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list .li .nm:hover{color:var(--gold-2)}.list .li .bd{font-size:11.5px;color:var(--text-3)}.list .li .dt{font-size:12px;white-space:nowrap;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.list .li .dt.overdue{color:var(--danger);font-weight:600}.list .li .dt.today{color:var(--warn);font-weight:600}.dot{width:9px;height:9px;border-radius:50%;flex:none}.budget-row{display:grid;grid-template-columns:1fr 110px 110px 80px;grid-gap:10px;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:13px}.budget-row:first-child{border-top:0;font-size:12px;color:var(--text-3);font-weight:600}.budget-row .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.budget-row .dev{text-align:right;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.budget-row .track{height:5px;background:var(--surface-3);border-radius:3px;margin-top:5px;overflow:hidden}.budget-row .track .fill{height:100%}.funnel{display:flex;flex-direction:column;gap:6px}.funnel .st{display:grid;grid-template-columns:150px 1fr;grid-gap:10px;gap:10px;align-items:center;font-size:13px}.funnel .st .bar{height:26px;border-radius:6px;padding:0 8px;color:#fff;font-size:12px;font-weight:600;min-width:36px;white-space:nowrap}.cal-head,.funnel .st .bar{display:flex;align-items:center}.cal-head{gap:8px;margin-bottom:14px;flex-wrap:wrap}.cal-head h2{min-width:170px;font-size:16px}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface)}.cal .wd{padding:8px;font-size:12px;font-weight:600;color:var(--text-2);text-align:center;background:var(--surface-2)}.cal .day,.cal .wd{border-bottom:1px solid var(--line)}.cal .day{min-height:110px;border-right:1px solid var(--line);padding:6px}.cal .day:nth-child(7n){border-right:0}.cal .day.other{background:var(--surface-2);color:var(--text-3)}.cal .day .dn{font-size:12px;font-weight:600;margin-bottom:4px;width:22px;height:22px;display:grid;place-items:center;border-radius:50%}.cal .day.today .dn{background:var(--gold);color:#fff}.cal .ev{--c:#579bfc;display:flex;align-items:center;gap:5px;font-size:11.5px;padding:2px 6px;border-radius:4px;background:color-mix(in srgb,var(--c) 14%,#fff);color:color-mix(in srgb,var(--c) 65%,#15192b);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.cal .ev:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c);flex:none}.cal .ev.done{opacity:.5;text-decoration:line-through}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2);margin-left:auto}.legend span{display:inline-flex;align-items:center;gap:6px}.gantt{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:auto}.gantt .hdr{display:grid;position:-webkit-sticky;position:sticky;top:0;background:var(--surface-2);z-index:2;border-bottom:1px solid var(--line)}.gantt .hdr .m{font-size:12px;font-weight:600;color:var(--text-2);padding:8px 6px}.gantt .hdr .m,.gantt .lbl{border-right:1px solid var(--line);white-space:nowrap;overflow:hidden}.gantt .lbl{position:-webkit-sticky;position:sticky;left:0;background:#fff;z-index:3;padding:0 10px;display:flex;align-items:center;font-size:13px;text-overflow:ellipsis}.gantt .hdr .lbl{background:var(--surface-2);font-weight:600;font-size:12px;color:var(--text-2)}.gantt .r{display:grid;border-bottom:1px solid var(--line);height:38px}.gantt .r,.gantt .r .track{position:relative}.gantt .r .bar{position:absolute;top:9px;height:20px;border-radius:5px;color:#fff;font-size:11.5px;display:flex;align-items:center;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.gantt .r .ms{position:absolute;top:12px;width:14px;height:14px;transform:translateX(-7px) rotate(45deg);border-radius:3px}.gantt .today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--gold);z-index:1}.gantt .grp{font-weight:600;font-size:12.5px;height:30px}.gantt .grp,.gantt .grp .lbl{background:var(--surface-2)}.bell{position:relative}.bell .badge{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:grid;place-items:center;padding:0 4px}.notif{display:flex;gap:10px;padding:10px;border-radius:8px;font-size:13px;line-height:1.4;color:var(--text)}.notif:hover{background:var(--surface-2)}.notif.unread{background:var(--gold-soft)}.notif .ni{display:inline-flex}.notif .ni,.notif .t{color:var(--text-3);margin-top:2px}.notif .t{font-size:11.5px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:var(--navy);padding:20px}.login{width:min(420px,100%);background:#fff;border-radius:16px;padding:32px;box-shadow:0 24px 70px rgba(0,0,0,.35)}.login .brand{padding:0 0 18px}.login p{color:var(--text-2);line-height:1.5}.login .ok{background:#e8f6ee;border:1px solid #bfe5cd;color:#1c6b3c;padding:10px 12px;border-radius:8px;font-size:13px;line-height:1.5}.login .dev{margin-top:10px;font-size:13px}.login .dev a{color:var(--gold-2);font-weight:600}.team-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.team-row:first-child{border-top:0}.team-row .n{font-weight:600}.team-row .e{font-size:12.5px;color:var(--text-2)}.team-row .x{margin-left:auto}.empty-state{padding:40px;text-align:center;color:var(--text-2)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--surface-3);padding:1px 5px;border-radius:4px}.readonly .cell,.readonly .gname,.readonly td.name .namecell input{pointer-events:none}.readonly .exp,.readonly .gmenu,.readonly .open,.readonly tr.addrow{display:none}.readonly .cell{cursor:default}.seg{display:inline-flex;background:var(--surface-3);border-radius:8px;padding:3px;gap:2px}.seg a{padding:5px 10px;border-radius:6px;font-size:12.5px;font-weight:500;color:var(--text-2);white-space:nowrap}.seg a.on,.seg a:hover{color:var(--text)}.seg a.on{background:#fff;box-shadow:var(--shadow-sm)}.kpi-mini{font-size:22px;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.1}.contractor-shell{min-height:100vh;background:var(--bg)}.contractor{max-width:720px;margin:0 auto}.contractor .chead{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:10}.contractor .chead .mark{width:32px;height:32px;border-radius:8px;background:var(--navy);color:var(--gold);display:grid;place-items:center;font-weight:700}.contractor .chead .name{font-weight:600;font-size:16px}.contractor .cbody{padding:16px;display:flex;flex-direction:column;gap:12px}.ocard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.ocard.open{border-color:var(--line-2);box-shadow:var(--shadow-sm)}.ocard .ohead{display:flex;gap:12px;width:100%;text-align:left;background:none;border:0;padding:14px 16px;align-items:flex-start}.ocard .otitle{font-size:16px;font-weight:600;letter-spacing:-.01em}.ocard .osub{font-size:13px;color:var(--text-2);margin-top:2px}.ocard .odue{font-size:13px;font-weight:600;white-space:nowrap}.ocard .odue.overdue{color:var(--danger)}.ocard .odue.today{color:var(--warn)}.ocard .obody{border-top:1px solid var(--line);padding:14px 16px 16px;display:flex;flex-direction:column;gap:14px}.ocard .odesc{margin:0;white-space:pre-wrap;line-height:1.55;font-size:14px}.ocard .oactions{display:flex;gap:8px;flex-wrap:wrap}.ocard .oactions .btn{height:40px;font-size:14px;padding:0 14px}.ocard .ocomments{border-top:1px solid var(--line);padding-top:10px}.ocard .comment{padding:8px 0}@media (max-width:600px){.ocard .oactions .btn{flex:1 1 45%;justify-content:center}.contractor .cbody{padding:12px}}.navbadge{margin-left:auto;background:var(--gold);color:#fff;font-size:10.5px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:inline-grid;place-items:center;padding:0 5px}@keyframes spin{to{transform:rotate(1turn)}}.spin{animation:spin 1s linear infinite}.toasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;width:min(460px,calc(100vw - 32px))}.toast{display:flex;align-items:flex-start;gap:10px;background:var(--navy);color:#fff;border-radius:10px;padding:11px 12px;box-shadow:var(--shadow);font-size:13px;line-height:1.4}.toast.error{background:#3a1b22;border:1px solid rgba(214,64,90,.5)}.toast.error svg{color:#ff8a9c}.toast.ok svg{color:#7ad7a0}.toast span{flex:1 1}.toast button{background:none;border:0;color:rgba(255,255,255,.7);padding:0;display:grid;place-items:center}.toast button:hover{color:#fff}@media (max-width:900px){.mobilebar{display:flex;align-items:center;gap:10px;position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--surface);border-bottom:1px solid var(--line);padding:8px 12px}.mobilebar .mark{width:26px;height:26px;border-radius:6px;background:var(--navy);color:var(--gold);display:grid;place-items:center;font-weight:700;font-size:12px}.mobilebar .name{font-weight:600;font-size:13.5px}.sidebar{position:fixed;left:0;top:0;bottom:0;height:100vh;transform:translateX(-100%);transition:transform .18s ease;z-index:60;box-shadow:var(--shadow)}.sidebar.open{transform:none}.sidebar-bg.open{display:block;position:fixed;inset:0;background:rgba(21,25,43,.35);z-index:55}.shell{flex-direction:column}.topbar{padding:10px 16px;min-height:50px}.content{padding:14px 16px 40px}.group-head{max-width:calc(100vw - 32px)}.panel{width:100vw}.panel .fields{grid-template-columns:1fr;gap:4px 0}.panel .fields .fl{margin-top:8px}.budget-row{grid-template-columns:1fr 90px 90px 60px}.bars .b{grid-template-columns:110px 1fr 60px}.cal .day{min-height:70px;padding:4px}.cal .ev{font-size:10.5px;padding:1px 4px}.board-tools .search{width:100%}}