:root{--forest:#202b28;--sage:#47655b;--sage-light:#e8efea;--paper:#f7f8f4;--white:#fff;--ink:#23332d;--muted:#6d7b73;--line:#dce2dc;--bronze:#96744e;--bronze-light:#f4ede1;--danger:#9d4d43;--holiday:#f3dfdc;--weekend:#e8ece6;--label:280px;--col:42px;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);font-size:13px;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #86aa96;outline-offset:3px}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-1.1px;font-weight:650;line-height:1.2}h2{font-size:17px;letter-spacing:-.35px;font-weight:650}h3{font-size:14px}p{line-height:1.6}.icon{height:19px;width:19px;flex-shrink:0;vertical-align:middle}.skip{position:fixed;top:-90px;left:12px;z-index:90;background:white;padding:12px}.skip:focus{top:8px}.shell{display:grid;grid-template-columns:218px minmax(0,1fr);min-height:100dvh}.sidebar{position:sticky;top:0;height:100dvh;background:var(--forest);color:#ecf2ec;display:flex;flex-direction:column;padding:28px 14px 18px;z-index:30}.brand{padding:0 12px;display:flex;align-items:center;gap:10px;font-size:24px;font-weight:700;letter-spacing:-1px;text-decoration:none}.brand-mark{color:#93b6a0}.brand sup{font-size:9px;align-self:flex-start;line-height:24px;letter-spacing:.2px}.workspace-tag{font-size:9px;letter-spacing:1.9px;color:#9fb5a7;margin:10px 12px 32px}.nav-label{color:#95aa9d;font-size:9px;letter-spacing:1.8px;margin:0 12px 12px}.nav{display:grid;gap:5px}.nav a{display:flex;gap:12px;align-items:center;text-decoration:none;padding:12px;border-radius:8px;color:#b9c9be;font-size:12px;transition:background .12s}.nav a:hover{background:#ffffff0a;color:white}.nav a.active{background:#40594f;color:white}.nav a.active:after{content:'';height:5px;width:5px;background:#b4cfbc;border-radius:50%;margin-left:auto}.nav small{margin-left:auto;color:#d5e2d8}.sidefoot{margin-top:auto;border-top:1px solid #ffffff20;padding:18px 12px 0;font-size:10px;color:#a8bcae;line-height:1.8}.sidefoot strong{display:block;color:#d2dfd5;font-weight:500}.main{min-width:0}.topbar{height:68px;background:#ffffffd9;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;gap:16px}.crumb{font-size:11px;color:var(--muted);display:flex;gap:9px;align-items:center}.crumb b{color:var(--ink);font-weight:550}.topright{margin-left:auto;display:flex;align-items:center;gap:15px}.demo{font-size:10px;color:var(--muted);white-space:nowrap}.demo i,.health-dot{width:6px;height:6px;background:#719b7e;border-radius:50%;display:inline-block;margin-right:5px}.avatar{height:30px;width:30px;background:var(--forest);color:white;display:grid;place-items:center;border-radius:50%;font-size:10px}.icon-btn.menu-toggle{display:none}.page{padding:28px 30px 32px;max-width:1900px;margin:auto}.project-line{display:flex;gap:12px;align-items:center;margin-bottom:23px;color:var(--muted);font-size:11px}.project-select{border:0;background:transparent;padding:3px 22px 3px 0;font-weight:650;font-size:13px;max-width:210px}.project-line .phase{border-left:1px solid var(--line);padding-left:12px}.heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:25px}.subtitle{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.6}.eyebrow{font-size:9px;letter-spacing:1.6px;text-transform:uppercase;color:var(--sage);font-weight:700;margin-bottom:7px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{min-height:36px;padding:8px 12px;border:1px solid var(--line);border-radius:7px;background:white;display:inline-flex;gap:7px;justify-content:center;align-items:center;text-decoration:none;font-size:11px;font-weight:600;white-space:nowrap}.btn:hover{background:#eff3ee}.btn.primary{background:var(--forest);color:white;border-color:var(--forest)}.btn.primary:hover{background:#3d564a}.btn.quiet{background:transparent;border-color:transparent;color:var(--muted)}.btn .icon{width:15px;height:15px}.icon-btn{padding:8px;background:transparent;border:0;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:34px}.icon-btn:hover{background:#e8eeea}.grid{display:grid;gap:18px}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:23px}.kpi{background:white;border:1px solid var(--line);border-radius:10px;padding:18px 20px;text-align:left;color:var(--ink);position:relative;min-width:0}.kpi-label{font-size:10px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.kpi-label .icon{width:17px;color:var(--sage)}.kpi-value{font-size:30px;font-weight:550;letter-spacing:-1px}.kpi-note{font-size:10px;color:var(--muted);margin-top:8px}.kpi .mini-bar{height:3px;background:#e9eee8;margin-top:15px;border-radius:3px}.kpi .mini-bar i{display:block;height:100%;background:#789b85;border-radius:3px}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);align-items:start}.card{border:1px solid var(--line);background:white;border-radius:10px;overflow:hidden;min-width:0}.cardhead{padding:19px 20px;display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.cardhead h2{font-size:14px}.cardbody{padding:19px 20px}.card-meta{font-size:10px;color:var(--muted);margin-top:5px}.badge{display:inline-flex;gap:5px;align-items:center;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:550;white-space:nowrap;line-height:1.2}.badge i{width:4px;height:4px;border-radius:50%;background:currentColor}.badge.success{background:#e8f0e8;color:#3d6249}.badge.warm{background:var(--bronze-light);color:#84643e}.badge.danger{background:#f4e4df;color:#954b40}.badge.neutral{background:#edf0ec;color:#64756a}.textlink{border:0;background:none;padding:0;color:var(--ink);font-weight:600;text-align:left;text-decoration:none;font-size:12px;line-height:1.5}.textlink:hover{color:var(--sage);text-decoration:underline}.meta{font-size:10px;color:var(--muted);margin-top:4px;font-weight:400;line-height:1.5}.listrow{display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid #edf0eb}.listrow:last-child{border-bottom:0}.listrow .grow{flex:1;min-width:0}.listrow .date{font-size:11px;white-space:nowrap;color:var(--muted)}.listicon{width:34px;height:34px;background:#f0f4ed;color:var(--sage);border-radius:8px;display:grid;place-items:center;flex-shrink:0}.milestone{display:flex;gap:13px;align-items:center;padding:15px 20px;position:relative}.milestone:not(:last-child):after{content:'';position:absolute;width:1px;background:var(--line);left:30px;top:37px;bottom:-10px}.mile-dot{width:21px;height:21px;border:1px solid #8da898;border-radius:50%;display:grid;place-items:center;z-index:1;background:#fff;flex-shrink:0}.mile-dot .icon{width:12px}.milestone b{font-size:12px;font-weight:550}.milestone .date{margin-left:auto;white-space:nowrap;color:var(--muted);font-size:11px}.responsibility{display:grid;grid-template-columns:1fr 1fr;gap:18px}.responsibility span{font-size:10px;color:var(--muted);display:block;margin-bottom:6px}.responsibility b{font-size:12px;font-weight:550}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.toolbar select,.toolbar input,.toolbar .search{height:36px;border:1px solid var(--line);border-radius:7px;background:white;font-size:11px}.toolbar select{padding:0 28px 0 10px;max-width:225px}.toolbar .search{display:flex;align-items:center;padding:0 11px;gap:8px;min-width:180px}.toolbar .search input{border:0;padding:0;height:auto;width:170px;outline-offset:5px}.search .icon{width:15px;color:var(--muted)}.toolbar .spacer{flex:1}.count{font-size:10px;color:var(--muted);white-space:nowrap}.table-scroll{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse;text-align:left;font-size:11px;white-space:nowrap}th{font-size:9px;letter-spacing:.65px;color:var(--muted);font-weight:600;background:#f7f9f5;padding:12px 17px;border-bottom:1px solid var(--line);text-transform:uppercase}td{padding:15px 17px;border-bottom:1px solid #edf0eb;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbf8}.row-id{font-size:9px;color:var(--muted);letter-spacing:.4px;margin-bottom:4px}.document-icon{display:flex;align-items:center;gap:12px}.format{display:grid;place-items:center;border:1px solid var(--line);background:#f5f8f2;min-width:32px;height:38px;border-radius:5px;color:var(--sage);font-size:8px;font-weight:700}.section-note{font-size:10px;color:var(--muted);line-height:1.7;margin-top:13px;display:flex;gap:7px}.section-note .icon{width:14px;height:14px;flex-shrink:0;margin-top:2px}.summary-strip{padding:15px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;background:#edf2e9;border:1px solid #dce5d7;border-radius:9px;font-size:11px}.summary-strip strong{font-weight:600}.summary-strip p{color:var(--muted);font-size:10px;margin-top:3px}.empty{padding:55px 20px;text-align:center}.empty>.icon{color:#90a596;width:32px;height:32px;margin-bottom:15px}.empty h3{font-size:15px}.empty p{max-width:390px;margin:9px auto 18px;font-size:12px;color:var(--muted)}.banner{background:#f6e9df;border:1px solid #e9d0bd;padding:12px 15px;border-radius:7px;font-size:11px;margin-bottom:18px;line-height:1.7}.banner.error{background:#f5e3e0;border-color:#eac8c2;color:#90483e}.banner .btn{margin-left:8px}.error-state{border:1px solid #e4c9bf;background:#fff9f5;border-radius:10px;padding:40px;text-align:center}.error-state p{margin:10px auto 20px;color:var(--muted)}.skeleton{background:linear-gradient(90deg,#e8ede6,#f4f7f0,#e8ede6);background-size:200%;animation:pulse 1.6s infinite;border-radius:8px;height:100px}.skeleton.tall{height:300px;margin-top:20px}@keyframes pulse{to{background-position:-200%}}.initial{display:grid;place-items:center;min-height:100vh;color:var(--sage)}.lab-tools{margin-top:22px;font-size:10px;color:var(--muted)}.lab-tools summary{cursor:pointer;padding:8px 0}.lab-tools .actions{margin:8px 0}.footer-note{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);padding-top:18px;border-top:1px solid var(--line);margin-top:25px;gap:10px}.overlay{position:fixed;inset:0;background:#14271e55;z-index:60;display:flex;justify-content:flex-end}.drawer{width:min(520px,100%);background:white;height:100dvh;display:flex;flex-direction:column;box-shadow:-10px 0 60px #162d2322}.drawerhead{padding:24px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:15px}.drawerhead h2{font-size:22px;line-height:1.35;overflow-wrap:anywhere}.drawerhead .icon-btn{margin-left:auto;flex-shrink:0}.drawerbody{padding:22px 24px;overflow:auto;flex:1;overscroll-behavior:contain}.drawerfoot{padding:16px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.kv{display:flex;justify-content:space-between;gap:18px;padding:11px 0;border-bottom:1px solid #edf0eb;font-size:11px}.kv span{color:var(--muted)}.kv b{font-weight:550;text-align:right;overflow-wrap:anywhere;max-width:65%}.panel-section{margin-top:24px}.panel-section h3{font-size:10px;text-transform:uppercase;letter-spacing:1px;margin-bottom:11px;color:var(--muted)}.relation{display:flex;align-items:center;gap:8px;padding:11px;border:1px solid var(--line);background:#fafcf8;border-radius:7px;width:100%;text-align:left;margin-bottom:7px;font-size:11px}.relation:hover{background:#eef4eb}.relation span{flex:1}.relation .icon{width:14px;height:14px;color:var(--sage)}.panel-note{font-size:11px;line-height:1.7;color:var(--muted);background:#f2f6ef;border-radius:7px;padding:13px}.field{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:550;margin-bottom:16px}.field input,.field select,.field textarea{border:1px solid #cdd7cf;background:#fff;border-radius:6px;padding:10px;font-size:12px;min-width:0;width:100%;font-weight:400}.field textarea{min-height:95px;resize:vertical}.field select[multiple]{padding:5px}.field select[multiple] option{padding:6px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.field.check{flex-direction:row;align-items:center;font-weight:400}.field.check input{width:auto}.form-error{padding:12px;background:#f5e1dc;color:#914338;border-radius:6px;font-size:11px;margin-bottom:16px;line-height:1.6}.revision{padding:12px 0;border-bottom:1px solid var(--line);font-size:11px}.revision strong{color:var(--sage)}.revision p{margin-top:5px;color:var(--muted)}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--forest);color:white;z-index:90;padding:12px 18px;border-radius:8px;box-shadow:0 6px 30px #182b2422;font-size:12px;display:none;max-width:calc(100% - 28px)}#toast.show{display:block}.model-preview{border:1px solid var(--line);border-radius:8px;background:linear-gradient(135deg,#eff3ed,#dfe8dc);height:150px;display:flex;align-items:center;justify-content:center;gap:20px;color:var(--sage);margin-bottom:18px}.model-preview svg{height:120px;width:200px}.model-preview p{font-size:10px;color:var(--muted);padding-right:15px;max-width:155px}
/* Gantt V8 retains the V7 single-scroll ownership and contiguous sticky header. */
.boardwrap{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:white}.gantt-scroll{overflow:auto;height:min(660px,calc(100dvh - 355px));min-height:290px;overscroll-behavior:contain;isolation:isolate;scrollbar-gutter:stable}.board{width:max-content;min-width:100%;position:relative}.calrow{display:grid;grid-template-columns:var(--label) repeat(35,var(--col));grid-template-rows:48px;min-height:0;position:relative}.calrow>*{min-width:0}.label{grid-column:1;grid-row:1;position:sticky;left:0;z-index:4;background:white;border-right:1px solid var(--line);border-bottom:1px solid #edf0eb;display:flex;flex-direction:column;justify-content:center;padding:5px 14px;text-align:left;overflow:hidden;font-size:11px;white-space:nowrap;text-decoration:none;color:var(--ink)}button.label{border-top:0;border-left:0;border-radius:0;font:inherit;font-size:11px;cursor:pointer}button.label:hover{background:#f3f7f0}.label b,.label small{overflow:hidden;text-overflow:ellipsis;max-width:100%;display:block}.label b{font-weight:550}.label small{font-size:9px;color:var(--muted);margin-top:4px}.cell{grid-row:1;border-right:1px solid #edf0eb;border-bottom:1px solid #edf0eb;background:white}.weekend{background:var(--weekend)}.holiday{background:var(--holiday);color:#923c36}.calendar-sticky-head{position:sticky;top:0;z-index:12;background:#f6f8f3;box-shadow:0 1px 0 var(--line)}.calhead{grid-template-rows:32px}.calhead:last-child{grid-template-rows:46px}.calhead .label{background:#f5f8f2;font-weight:600}.calhead .month,.calhead .week,.calhead .day{grid-row:1;border-bottom:1px solid var(--line);border-right:1px solid #e9eee7;background:#f5f8f2;font-size:10px;padding:8px 0}.calhead .month{background:#edf2e9;font-weight:600}.calhead .month span,.calhead .week span{display:inline-block;position:sticky;left:calc(var(--label) + 10px);margin:0 10px;white-space:nowrap}.calhead .day{padding:5px 0;text-align:center;font-size:9px;color:var(--muted)}.calhead .day b{display:block;margin-top:4px;font-size:11px;font-weight:600;color:var(--ink)}.calhead .weekend{background:#dfe6dc}.calhead .holiday{background:var(--holiday);color:#923c36}.group{grid-template-rows:36px}.group .label{background:#e8efea;flex-direction:row;align-items:center;justify-content:flex-start;gap:7px;font-weight:600;color:#365647}.group .label small{margin:0}.group .cell{background:#e8efea;border-color:#e8efea}.bar{grid-row:1;align-self:center;height:19px;background:var(--sage);z-index:3;border:0;border-radius:4px;color:white;font-size:9px;text-align:left;padding:2px 6px;margin:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;max-width:calc(100% - 6px)}.bar.external{background:#839c8c}.bar.complete{background:#5e7f68}.bar.blocked{background:#ac7962}.baseline{grid-row:1;align-self:end;height:3px;background:#b69c78;z-index:2;margin:0 3px 6px;border-radius:2px;pointer-events:none}.summary{grid-row:1;align-self:center;height:7px;background:#9cb5a3;z-index:3;margin:0 3px;border-radius:3px}.dependency-lines{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:visible}.dependency-lines path{fill:none;stroke:#9b855f;stroke-width:1.2}.gantt-legend{padding:12px 15px;display:flex;align-items:center;gap:15px;flex-wrap:wrap;font-size:9px;color:var(--muted);border-top:1px solid var(--line)}.dot{width:9px;height:9px;border-radius:2px;display:inline-block;vertical-align:-1px;margin-right:5px}.legend-line{width:14px;height:3px;background:#b69c78;display:inline-block;vertical-align:2px;margin-right:5px}.gantt-legend .last{margin-left:auto}.mobile-veil{display:none}
@media(min-width:1700px){:root{--col:46px;--label:300px}}
@media(max-width:1100px){.shell{grid-template-columns:184px minmax(0,1fr)}.page{padding:24px 22px}.topbar{padding:0 22px}.kpi{padding:16px}.kpi-value{font-size:27px}.dashboard-grid{grid-template-columns:1fr 1fr}.heading{align-items:flex-start}.gantt-scroll{height:52dvh}.kpis{gap:12px}.toolbar .spacer{display:none}}
@media(max-width:820px){.dashboard-grid{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.heading{flex-wrap:wrap}.crumb span{display:none}.crumb{font-size:10px}.topright{gap:8px}.demo{font-size:9px}.toolbar .search{flex:1}.toolbar .search input{width:100%;min-width:0}.sidebar{padding-left:9px;padding-right:9px}.nav a{font-size:11px}.brand{font-size:22px}.gantt-scroll{height:55dvh}}
@media(max-width:650px){:root{--label:172px;--col:38px}.shell{display:block}.sidebar{position:fixed;width:240px;left:-250px;transition:left .15s}.shell.nav-open .sidebar{left:0}.shell.nav-open .mobile-veil{display:block;position:fixed;inset:0;background:#11251c66;z-index:25}.icon-btn.menu-toggle{display:inline-flex}.topbar{height:58px;padding:0 12px;gap:10px}.crumb{gap:5px}.topright .demo{display:none}.avatar{width:27px;height:27px}.page{padding:19px 14px 24px}.project-line{margin-bottom:20px;gap:8px;flex-wrap:wrap}.project-select{font-size:12px;max-width:190px}.project-line .phase{font-size:10px}.heading{gap:15px;margin-bottom:20px}h1{font-size:27px}.subtitle{font-size:11px;margin-top:7px}.heading>.actions{width:100%}.kpis{gap:10px;margin-bottom:18px}.kpi{padding:14px}.kpi-value{font-size:27px}.kpi-label{font-size:9px;margin-bottom:9px;gap:6px}.kpi-note{font-size:9px;line-height:1.5}.dashboard-grid{gap:15px}.cardhead{padding:16px}.cardbody{padding:16px}.listrow,.milestone{padding:14px 16px}.milestone:after{left:26px!important}.listrow .date{font-size:10px}.toolbar{gap:7px}.toolbar select{flex:1 1 135px;max-width:100%;min-width:0;font-size:10px}.toolbar .search{min-width:100%;flex:1}.toolbar .btn{font-size:10px;padding:7px 10px}.gantt-scroll{height:58dvh;min-height:270px}.gantt-legend{gap:10px;padding:10px;font-size:9px}.gantt-legend .last{margin:0}.label{padding:5px 10px;font-size:10px}button.label{font-size:10px}.label small{font-size:8px}.group .label{gap:5px}.group .label small{font-size:8px}.calhead .label{font-size:10px}.calhead .month,.calhead .week{font-size:9px}.summary-strip{align-items:flex-start}.summary-strip .btn{white-space:normal}.drawerhead{padding:20px}.drawerbody{padding:18px 20px}.drawerfoot{padding:14px 20px}.drawerhead h2{font-size:20px}.responsibility{gap:14px}.footer-note{flex-wrap:wrap;line-height:1.6}.section-note{font-size:9px}.form-grid{gap:0 10px}td,th{padding-left:14px;padding-right:14px}.model-preview{height:135px}.model-preview p{font-size:9px}.empty{padding:40px 18px}.error-state{padding:25px 18px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

input[type=checkbox]{accent-color:var(--sage)}.toolbar>label:not(.search){display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--muted)}

@media(max-width:650px){.sidebar{visibility:hidden}.shell.nav-open .sidebar{visibility:visible}}
