:root{
  --navy:#172033;--navy-2:#222c42;--orange:#e86f24;--orange-bg:#fff3eb;--bg:#f7f8fa;--surface:#fff;
  --line:#e4e8ee;--line-2:#eef1f4;--text:#172033;--muted:#667085;--subtle:#98a2b3;
  --danger:#b42318;--danger-bg:#fff2f0;--warning:#b54708;--warning-bg:#fff7e8;--info:#175cd3;--info-bg:#eef4ff;
  --success:#087443;--success-bg:#ecfdf3;--radius:10px;--nav:224px;--top:54px;
  --shadow:0 8px 28px rgba(23,32,51,.08)
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Ubuntu,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
body{font-size:12px;overflow-x:hidden}
button,input,select,textarea{font:inherit}
a{color:inherit}
button{cursor:pointer}
.app{min-height:100vh}
.rail{position:fixed;inset:0 auto 0 0;width:var(--nav);z-index:50;background:var(--navy);color:#fff;padding:12px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}
.brand{display:flex;align-items:center;gap:10px;padding:4px 6px 14px;border-bottom:1px solid rgba(255,255,255,.1);text-decoration:none}
.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:var(--orange);font-size:14px;font-weight:800;flex:none}
.brand-copy b{display:block;font-size:13px;letter-spacing:.02em}.brand-copy small{display:block;margin-top:2px;font-size:10.5px;letter-spacing:.14em;color:rgba(255,255,255,.52)}
.nav-group{margin-top:14px}.nav-group>small{display:block;padding:0 8px 5px;font-size:10.5px;letter-spacing:.14em;color:rgba(255,255,255,.42);font-weight:700}
.nav-link{display:flex;align-items:center;gap:9px;width:100%;padding:7px 8px;margin:1px 0;border:0;border-radius:7px;background:transparent;color:rgba(255,255,255,.72);text-decoration:none;text-align:left;font-size:10.5px}
.nav-link:hover{background:rgba(255,255,255,.07);color:#fff}.nav-link.active{background:#fff;color:var(--navy);font-weight:700}
.nav-icon{width:17px;text-align:center;font-size:13px;flex:none}.nav-link strong{white-space:normal;line-height:1.2}
.rail-foot{margin-top:auto;padding:12px 6px 2px;border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:8px;color:rgba(255,255,255,.7)}
.avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--navy);font-size:10.5px;font-weight:800;flex:none}
.rail-foot small{display:block;color:rgba(255,255,255,.44);font-size:10.5px;margin-top:2px}
.topbar{position:fixed;left:var(--nav);right:0;top:0;height:var(--top);z-index:45;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 24px}
.top-left,.top-actions{display:flex;align-items:center;gap:10px;min-width:0}.top-left b{font-size:11px}.top-left span{color:var(--muted);font-size:10.5px}.live-dot{width:7px;height:7px;border-radius:50%;background:#12b76a;display:inline-block}
.top-search{position:relative;width:min(360px,34vw)}.top-search input{width:100%;height:32px;border:1px solid var(--line);border-radius:7px;padding:0 34px 0 11px;background:#fbfcfd;color:var(--text);outline:none}.top-search input:focus{border-color:#b7c1cf;box-shadow:0 0 0 3px rgba(23,92,211,.08)}.top-search button{position:absolute;right:2px;top:2px;width:28px;height:28px;border:0;background:transparent;color:var(--muted)}
.icon-btn{width:32px;height:32px;border:1px solid var(--line);border-radius:7px;background:#fff;display:grid;place-items:center;color:var(--navy)}
.main{margin-left:var(--nav);width:calc(100% - var(--nav));max-width:none;padding-top:var(--top);min-width:0;box-sizing:border-box}.canvas{width:100%;max-width:none;margin:0;padding:18px 24px 36px;min-width:0;box-sizing:border-box}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;padding:4px 0 8px}.pagehead-copy{min-width:0}.eyebrow{display:block;font-size:10.5px;letter-spacing:.12em;font-weight:800;color:var(--orange);text-transform:uppercase}.pagehead h1{margin:3px 0 3px;font-size:26px;line-height:1.05;letter-spacing:-.03em}.pagehead p{margin:0;color:var(--muted);font-size:10.5px;max-width:760px;line-height:1.45}.page-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.btn{height:36px;border:1px solid #cfd6df;border-radius:7px;background:#fff;color:var(--navy);padding:0 12px;font-weight:700;font-size:10.5px;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}.btn:hover{background:#f8fafc}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.orange{background:var(--orange);border-color:var(--orange);color:#fff}.btn.success{background:var(--success);border-color:var(--success);color:#fff}.btn.danger{background:#fff;border-color:#f1b7b1;color:var(--danger)}.btn.ghost{border-color:transparent;background:transparent;padding-inline:5px}.btn.small{height:30px;padding:0 9px;font-size:10.5px}.btn:disabled{opacity:.48;cursor:not-allowed}
.context-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 10px;padding:8px 10px;background:#fff;border:1px solid var(--line);border-radius:8px}.crumb{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted)}.crumb b{color:var(--text)}.context-divider{width:1px;height:18px;background:var(--line);margin:0 2px}.tag{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:10.5px;font-weight:700;white-space:nowrap}.tag.orange{background:var(--orange-bg);color:var(--warning);border-color:#fed7aa}.tag.info{background:var(--info-bg);color:var(--info);border-color:#c7d7fe}.tag.success{background:var(--success-bg);color:var(--success);border-color:#abefc6}.tag.danger{background:var(--danger-bg);color:var(--danger);border-color:#fecdca}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.metric{display:block;text-decoration:none;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-height:76px;position:relative}.metric:hover{border-color:#cdd5df;box-shadow:0 5px 18px rgba(23,32,51,.05)}.metric small{font-size:10.5px;letter-spacing:.08em;color:var(--muted);font-weight:700}.metric strong{display:block;font-size:23px;line-height:1;margin-top:6px}.metric em{display:block;margin-top:5px;font-size:10.5px;color:var(--subtle);font-style:normal}.metric .trend{position:absolute;right:12px;top:12px}
.grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:10px;align-items:start}.stack{display:grid;gap:10px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px;min-width:0}.card.attention{border-top:3px solid var(--orange)}.card.navy{border-top:3px solid var(--navy)}.card h2{font-size:15px;margin:2px 0 2px}.card h3{font-size:12px;margin:0 0 4px}.card p{font-size:10.5px;color:var(--muted);margin:0 0 10px;line-height:1.45}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:7px}.card-head .btn{flex:none}
.row{display:grid;grid-template-columns:7px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 2px;border-top:1px solid var(--line-2);text-decoration:none;color:inherit}.row:hover{background:#fbfcfd}.row-signal{width:6px;height:6px;border-radius:50%;background:var(--danger)}.row b{display:block;font-size:10.5px}.row small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px;line-height:1.35}.row-end{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10.5px}.pill{font-size:10.5px;font-weight:800;border-radius:999px;padding:3px 7px;background:#f7f8fa;color:var(--muted);border:1px solid var(--line);white-space:nowrap}.pill.high,.pill.overdue,.pill.rejected{background:var(--danger-bg);color:var(--danger);border-color:#fecdca}.pill.decision,.pill.warning{background:var(--warning-bg);color:var(--warning);border-color:#fedf89}.pill.verify,.pill.info{background:var(--info-bg);color:var(--info);border-color:#c7d7fe}.pill.approved,.pill.complete{background:var(--success-bg);color:var(--success);border-color:#abefc6}
.workflow{display:grid;grid-template-columns:repeat(var(--steps,6),minmax(0,1fr));border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:8px}.step{padding:10px;border-right:1px solid var(--line);font-size:10.5px;min-width:0;background:#fff}.step:last-child{border-right:0}.step strong{display:block;font-size:10.5px}.step small{display:block;color:var(--subtle);font-size:10.5px;margin-top:3px}.step.complete{background:#fbfdfc}.step.complete strong:before{content:'✓ ';color:var(--success)}.step.active{background:var(--orange-bg);box-shadow:inset 0 -2px 0 var(--orange)}.step.blocked{background:var(--danger-bg)}
.module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.module{display:block;text-decoration:none;border:1px solid var(--line);border-radius:8px;padding:11px;background:#fff;min-width:0}.module:hover{border-color:#cfd6df;box-shadow:0 4px 15px rgba(23,32,51,.04)}.module small{font-size:10.5px;letter-spacing:.1em;color:var(--subtle);font-weight:800}.module b{display:block;margin:2px 0;font-size:11px}.module p{margin:0;color:var(--muted);font-size:10.5px}.module em{display:block;margin-top:8px;color:var(--orange);font-size:10.5px;font-style:normal;font-weight:800}.module-metrics{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.module-metrics span{font-size:10.5px;color:var(--muted)}.module-metrics b{display:inline;margin-right:2px;font-size:10.5px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field{display:grid;gap:4px;min-width:0}.field.full{grid-column:1/-1}.field label{font-size:10.5px;font-weight:800;color:#344054}.field label .req{color:var(--danger);margin-left:2px}.control{width:100%;height:38px;border:1px solid #d0d5dd;border-radius:7px;background:#fff;color:var(--text);padding:0 10px;outline:none}.control:focus{border-color:#9ab3dd;box-shadow:0 0 0 3px rgba(23,92,211,.08)}textarea.control{height:auto;min-height:90px;padding:9px 10px;resize:vertical}.field-help{font-size:10.5px;color:var(--subtle)}.check{display:flex;align-items:flex-start;gap:8px;font-size:10.5px;color:#344054}.check input{width:16px;height:16px;margin:0;accent-color:var(--navy)}.radio-row{display:flex;gap:12px;flex-wrap:wrap}.section-title{margin:15px 0 8px;padding-top:12px;border-top:1px solid var(--line);font-size:11px}.form-actions{display:flex;justify-content:flex-end;gap:7px;padding-top:12px;margin-top:12px;border-top:1px solid var(--line)}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.toolbar .control{height:32px;font-size:10.5px}.search-field{width:240px}.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:9px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:850px}.data-table th{position:sticky;top:0;z-index:2;background:#f9fafb;border-bottom:1px solid var(--line);padding:8px 9px;text-align:left;font-size:10.5px;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;white-space:nowrap}.data-table td{padding:8px 9px;border-bottom:1px solid var(--line-2);font-size:10.5px;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfcfd}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.data-table .action-cell{width:90px;text-align:right;white-space:nowrap}.table-link{font-weight:800;text-decoration:none}.table-link:hover{color:var(--orange)}
.tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin:8px 0 12px;flex-wrap:wrap}.tab{border:0;background:transparent;padding:8px 0 7px;font-size:10.5px;font-weight:800;color:var(--muted);border-bottom:2px solid transparent}.tab.active{color:var(--navy);border-bottom-color:var(--navy)}
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:10px}.kv{display:grid;grid-template-columns:150px 1fr;gap:8px;padding:7px 0;border-bottom:1px solid var(--line-2);font-size:10.5px}.kv span{color:var(--muted)}.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;padding:0 0 13px 20px}.timeline li:before{content:'';position:absolute;left:4px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--orange)}.timeline li:after{content:'';position:absolute;left:7px;top:11px;bottom:-2px;width:1px;background:var(--line)}.timeline li:last-child:after{display:none}.timeline b{display:block;font-size:10.5px}.timeline small{display:block;color:var(--muted);font-size:10.5px;margin-top:2px}
.empty{padding:28px;text-align:center;border:1px dashed #d5dbe3;border-radius:9px;background:#fbfcfd}.empty-icon{width:38px;height:38px;border-radius:10px;background:#eef2f6;display:grid;place-items:center;margin:0 auto 8px;font-size:18px}.empty h3{margin:0 0 4px}.empty p{max-width:500px;margin:0 auto 10px}.notice{padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:#fff;font-size:10.5px;line-height:1.45}.notice.warning{background:var(--warning-bg);border-color:#fedf89;color:#7a2e0e}.notice.info{background:var(--info-bg);border-color:#c7d7fe;color:#174a9c}.notice.success{background:var(--success-bg);border-color:#abefc6;color:#05603a}.notice.danger{background:var(--danger-bg);border-color:#fecdca;color:#912018}
.gantt{position:relative;overflow:auto;border:1px solid var(--line);border-radius:9px;background:#fff}.gantt-inner{min-width:1100px}.gantt-head,.gantt-row{display:grid;grid-template-columns:220px 1fr;min-height:40px;border-bottom:1px solid var(--line-2)}.gantt-head{background:#f9fafb;font-size:10.5px;font-weight:800}.gantt-name{padding:9px;border-right:1px solid var(--line)}.gantt-time{position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(12.5% - 1px),var(--line-2) calc(12.5% - 1px),var(--line-2) 12.5%)}.bar{position:absolute;top:10px;height:18px;border-radius:4px;background:#d8e4f7;border:1px solid #a8c0e9;color:#174a9c;font-size:10.5px;padding:3px 6px;white-space:nowrap;overflow:hidden}.bar.delay{background:#fee4e2;border-color:#fda29b;color:#912018}.bar.done{background:#d1fadf;border-color:#75e0a7;color:#05603a}
.bim-shell{display:grid;grid-template-columns:230px minmax(0,1fr) 280px;min-height:580px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.bim-pane{padding:10px;background:#fbfcfd;border-right:1px solid var(--line)}.bim-right{border-left:1px solid var(--line);border-right:0}.bim-view{position:relative;min-height:580px;background:linear-gradient(150deg,#e6ebf1,#cfd8e2);overflow:hidden}.building-svg{position:absolute;inset:40px;display:grid;place-items:center}.bim-toolbar{position:absolute;left:10px;top:10px;display:flex;gap:5px;z-index:2}.bim-toolbar .icon-btn{background:rgba(255,255,255,.92)}.model-label{position:absolute;left:12px;bottom:12px;background:rgba(23,32,51,.88);color:#fff;border-radius:6px;padding:7px 9px;font-size:10.5px}.tree{display:grid;gap:3px}.tree button{border:0;background:transparent;text-align:left;padding:6px;border-radius:5px;font-size:10.5px;color:var(--text)}.tree button:hover{background:#eef2f6}.tree .indent{padding-left:18px}.prop-list{display:grid}.prop-list .kv{grid-template-columns:100px 1fr;font-size:10.5px}
.report-chart{height:210px;display:flex;align-items:flex-end;gap:9px;padding:18px 8px 8px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(#fff,#fbfcfd)}.chart-bar{flex:1;background:#d8e4f7;border-radius:4px 4px 0 0;min-width:18px;position:relative}.chart-bar.warn{background:#fedf89}.chart-bar.good{background:#abefc6}.chart-bar span{position:absolute;left:50%;transform:translateX(-50%);bottom:-17px;font-size:10.5px;color:var(--muted)}.chart-bar b{position:absolute;left:50%;transform:translateX(-50%);top:-14px;font-size:10.5px}
.search-results{display:grid;gap:7px}.search-result{padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff;text-decoration:none}.search-result small{font-size:10.5px;color:var(--orange);font-weight:800}.search-result b{display:block;margin:2px 0;font-size:10.5px}.search-result p{margin:0;font-size:10.5px;color:var(--muted)}
.drawer-backdrop,.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.32);z-index:80;display:none}.drawer-backdrop.open,.modal-backdrop.open{display:block}.drawer{position:absolute;right:0;top:0;bottom:0;width:min(460px,92vw);background:#fff;padding:18px;overflow:auto;box-shadow:-14px 0 38px rgba(15,23,42,.16)}.drawer-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:2px 0;font-size:17px}.modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(720px,92vw);max-height:88vh;overflow:auto;background:#fff;border-radius:11px;padding:18px;box-shadow:var(--shadow)}
.toast-stack{position:fixed;right:16px;bottom:16px;z-index:120;display:grid;gap:7px}.toast{width:min(340px,90vw);padding:10px 12px;background:var(--navy);color:#fff;border-radius:8px;box-shadow:var(--shadow);font-size:10.5px}.toast small{display:block;color:rgba(255,255,255,.65);margin-top:2px}
.command-palette{position:fixed;inset:0;display:none;place-items:start center;padding-top:11vh;background:rgba(15,23,42,.38);z-index:100}.command-palette.open{display:grid}.command-box{width:min(680px,92vw);background:#fff;border-radius:12px;box-shadow:0 24px 80px rgba(15,23,42,.24);overflow:hidden}.command-box input{width:100%;height:48px;border:0;border-bottom:1px solid var(--line);padding:0 15px;outline:none}.command-results{max-height:55vh;overflow:auto;padding:7px}.command-item{width:100%;border:0;background:#fff;text-align:left;padding:9px;border-radius:7px}.command-item:hover{background:#f5f7fa}.command-item b{display:block;font-size:10.5px}.command-item small{font-size:10.5px;color:var(--muted)}
.mobile-menu{display:none}
.demo-badge{position:fixed;right:10px;top:64px;z-index:40;padding:5px 8px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:10.5px;font-weight:800;color:var(--muted);box-shadow:0 3px 10px rgba(23,32,51,.05)}
@media(max-width:1180px){:root{--nav:70px}.brand-copy,.nav-group>small,.nav-link strong,.rail-foot>div{display:none}.brand{justify-content:center}.nav-link{justify-content:center}.rail-foot{justify-content:center}.grid,.detail-grid{grid-template-columns:minmax(0,1fr) 280px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.three-col{grid-template-columns:1fr 1fr}.bim-shell{grid-template-columns:190px minmax(0,1fr)}.bim-right{display:none}}
@media(max-width:900px){.grid,.detail-grid{grid-template-columns:1fr}.two-col,.three-col{grid-template-columns:1fr}.form-grid.three{grid-template-columns:1fr 1fr}.bim-shell{grid-template-columns:1fr}.bim-pane{display:none}.top-search{display:none}}
@media(max-width:640px){:root{--nav:0px}.rail{width:280px;transform:translateX(-103%);transition:transform .18s ease}.app.nav-open .rail{transform:translateX(0)}.brand-copy,.nav-group>small,.nav-link strong,.rail-foot>div{display:block}.brand{justify-content:flex-start}.nav-link{justify-content:flex-start}.rail-foot{justify-content:flex-start}.topbar{left:0;padding:0 10px}.mobile-menu{display:grid}.canvas{padding:12px 10px 28px}.pagehead{align-items:flex-start;flex-direction:column}.page-actions{justify-content:flex-start}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.module-grid{grid-template-columns:1fr}.form-grid,.form-grid.three{grid-template-columns:1fr}.workflow{grid-template-columns:1fr}.step{border-right:0;border-bottom:1px solid var(--line)}.context-strip{align-items:flex-start}.demo-badge{display:none}.kv{grid-template-columns:110px 1fr}.toolbar{align-items:flex-start;flex-direction:column}.toolbar-left,.toolbar-right{width:100%}.search-field{width:100%}.bim-view{min-height:480px}}
