@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Geist:wght@300;400;500;600;700&family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg-0: #0E1014;--bg-1: #161920;--bg-grad: radial-gradient(1200px 720px at 78% -10%, #1E222B 0%, #161920 40%, #0E1014 72%);--glass: #161920;--glass-2: #1E222B;--glass-3: #252A35;--stroke: #252A35;--stroke-2: #2F3543;--ink: #EDE8DD;--muted: #9CA0A8;--mute-2: #5F646E;--accent: #A8D5A8;--accent-2: #7FC4A8;--accent-3: #8FB8D4;--warn: #E8B888;--danger: #D88585;--muted-bar: #7BA87B;--fund-private: #B8D8A8;--fund-thirdparty: #7FC4A8;--fund-ncc: #8FB8D4;--fund-newport: #E8B888;--fund-cardiff: #E89B8E;--fund-vacant: #3A3E48;--ok: #A8D5A8;--warn-2: #E8B888;--crit: #D88585;--aria-navy: #0F2A3D;--aria-ivory: #F6F2EB;--radius: 18px;--radius-sm: 12px;--density-pad: 20px;--density-gap: 16px;--f-display: "Outfit", -apple-system, system-ui, sans-serif;--f-body: "Outfit", -apple-system, system-ui, sans-serif;--f-mono: "DM Mono", "JetBrains Mono", monospace}*{box-sizing:border-box}html{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0;padding:0;color:var(--ink);font-family:var(--f-body);font-size:14px;letter-spacing:-.005em;background:var(--bg-0);min-height:100vh}body{background:var(--bg-grad),var(--bg-0);overflow-x:hidden;overscroll-behavior-y:contain;-webkit-tap-highlight-color:transparent}button{font-family:inherit;color:inherit;border:none;background:none;cursor:pointer;letter-spacing:inherit}a{color:inherit;text-decoration:none}.display{font-family:var(--f-display);font-weight:600;letter-spacing:-.025em;line-height:1}.label{font-family:var(--f-body);font-size:11px;letter-spacing:.02em;color:var(--muted);font-weight:400}.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.serif-num{font-family:var(--f-display);font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.03em}.card{background:var(--glass);border:1px solid var(--stroke);border-radius:var(--radius);padding:var(--density-pad);position:relative}.card.raised{background:var(--glass-2);border-color:var(--stroke-2);box-shadow:0 24px 50px #00000059,inset 0 1px #ffffff0a}.card.flat{background:transparent;border-color:var(--stroke)}.card.inset{background:#0e1014;border-color:var(--stroke)}.card.accent{background:var(--accent);color:#0e1014;border-color:transparent}.card.accent .label{color:#0e1014a6}.rule{height:1px;background:var(--stroke);border:0;margin:14px 0}.rule.soft{background:var(--stroke)}.hstack{display:flex;align-items:center;gap:10px}.vstack{display:flex;flex-direction:column;gap:10px}.spread{display:flex;align-items:center;justify-content:space-between}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--stroke);border-radius:999px;font-size:11px;color:var(--muted);background:var(--glass-2);font-weight:500}.chip.ok{color:#0e1014;background:var(--accent);border-color:transparent}.chip.ongoing{color:#0e1014;background:var(--accent-3);border-color:transparent}.chip.warn{color:#0e1014;background:var(--warn);border-color:transparent}.chip.danger{color:#0e1014;background:var(--danger);border-color:transparent}.chip.accent{color:#0e1014;background:var(--accent);border-color:transparent}.chip.ghost{background:transparent;color:var(--ink);border-color:var(--stroke-2)}.dot{width:7px;height:7px;border-radius:50%;background:var(--muted);display:inline-block}.dot.ok{background:var(--accent-2)}.dot.warn{background:var(--warn)}.dot.danger{background:var(--danger)}.dot.accent{background:var(--accent)}.app{display:grid;grid-template-columns:72px 1fr;min-height:100vh;min-width:0}.sidebar{padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;align-items:center;gap:10px;z-index:40}.mobile-menu-btn{display:none;width:40px;height:40px;border-radius:10px;border:1px solid var(--stroke-2);background:var(--glass-2);color:var(--ink);align-items:center;justify-content:center;cursor:pointer}.mobile-menu-btn:hover{background:var(--glass-3)}.mobile-menu-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:60;animation:fade .18s ease}.side-rail{background:var(--glass);border:1px solid var(--stroke);border-radius:28px;padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.rail-logo{width:40px;height:40px;border-radius:14px;background:transparent;display:grid;place-items:center;margin-bottom:4px;overflow:hidden}.rail-logo img{width:32px;height:auto}.nav-ico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:all .15s}.nav-ico:hover{color:var(--ink);background:var(--glass-2)}.nav-ico.active{color:#0e1014;background:var(--accent)}.nav-ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6}.main{padding:22px 28px 60px;max-width:1640px;min-width:0}.topbar{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px}.topbar h1{font-family:var(--f-display);font-size:40px;font-weight:600;line-height:1;margin:0;letter-spacing:-.03em}.topbar .sub{font-size:12.5px;color:var(--muted);margin-top:6px}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;border:1px solid var(--stroke-2);background:var(--glass-2);font-size:12.5px;color:var(--ink);cursor:pointer;transition:all .15s}.btn:hover{background:var(--glass-3)}.btn.primary{background:var(--accent);color:#0e1014;border-color:var(--accent);font-weight:500}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{background:transparent}body[data-density=sparse]{--density-pad:28px;--density-gap:22px }body[data-density=dense]{--density-pad:14px;--density-gap:10px;font-size:13px}body[data-card=sharp]{--radius:6px;--radius-sm:4px}body[data-card=soft]{--radius:24px;--radius-sm:16px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--stroke-2);border-radius:10px}::-webkit-scrollbar-track{background:transparent}.tweaks{position:fixed;bottom:22px;right:22px;z-index:90;width:280px;background:var(--glass-2);border:1px solid var(--stroke-2);border-radius:18px;padding:16px;box-shadow:0 30px 60px #00000080}.tweaks h4{margin:0 0 2px;font-family:var(--f-display);font-weight:600;font-size:18px}.tweaks .muted{font-size:11px;color:var(--muted);margin-bottom:14px}.tweak-row{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.tweak-row .t-label{font-size:10.5px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}.tweak-opts{display:flex;gap:4px;flex-wrap:wrap}.tweak-opts button{flex:1;min-width:0;padding:7px 8px;border:1px solid var(--stroke);border-radius:8px;background:transparent;font-size:11px;color:var(--ink);font-family:var(--f-mono);letter-spacing:.02em}.tweak-opts button.on{background:var(--accent);color:#0e1014;border-color:var(--accent)}.swatch-row{display:flex;gap:6px}.swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .15s}.swatch.on{border-color:var(--ink);transform:scale(1.1)}.grow{flex:1}.mono{font-family:var(--f-mono)}.muted{color:var(--muted)}.tiny{font-size:10.5px}.uc{text-transform:uppercase;letter-spacing:.08em}.pulse{box-shadow:0 0 0 0 var(--accent);animation:pulse 2.2s infinite}@keyframes pulse{70%{box-shadow:0 0 0 10px #a8d5a800}to{box-shadow:0 0 #a8d5a800}}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#050a0f99;z-index:50;animation:fade .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drawer{position:fixed;top:10px;right:10px;bottom:10px;width:min(640px,92vw);background:#0f1821f5;z-index:51;border-radius:22px;border:1px solid var(--stroke-2);box-shadow:-30px 0 60px #00000080;overflow-y:auto;animation:slide .25s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.pill-bars{display:flex;align-items:flex-end;gap:6px;height:100%}.pill-bar{flex:1;background:#ffffff1f;border-radius:999px;min-height:14px;position:relative;display:flex;align-items:flex-start;justify-content:center;padding-top:6px}.pill-bar.hi{background:linear-gradient(180deg,#eafbb3,#c6f25a)}.g-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--density-gap)}.g-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--density-gap)}.g-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--density-gap)}.g-hero{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--density-gap)}.g-16-1{display:grid;grid-template-columns:1.6fr 1fr;gap:var(--density-gap)}.g-145-1{display:grid;grid-template-columns:1.45fr 1fr;gap:var(--density-gap)}.g-14-1{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--density-gap)}.g-12-1{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--density-gap)}.g-1-1{display:grid;grid-template-columns:1fr 1fr;gap:var(--density-gap)}.g-mb{margin-bottom:var(--density-gap)}.bed-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:8px}.g-1-narrow-1{display:grid;grid-template-columns:1fr 210px 1fr;gap:var(--density-gap)}.bed-grid.f1{grid-template-columns:repeat(13,1fr)}.bed-grid.f2{grid-template-columns:repeat(15,1fr)}.milestones-h{display:grid;grid-template-columns:repeat(7,1fr);gap:16px;position:relative;padding:24px 6px 4px}.milestones-line{position:absolute;top:50px;left:6%;right:6%;height:1px;background:linear-gradient(90deg,#7fc4a8,#e89b8e);opacity:.35;z-index:0}.milestone-node{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;position:relative;z-index:1}.milestone-icon{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#7fc4a8,#e89b8e);display:grid;place-items:center;color:var(--ink);box-shadow:0 0 0 5px var(--bg-1)}.milestone-icon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.milestone-year{background:#e8b88826;color:#e89b8e;padding:2px 10px;border-radius:10px;font-family:var(--f-mono);font-size:11px;font-weight:600}.milestone-title{font-family:var(--f-body);font-weight:600;font-size:13px;color:var(--ink);line-height:1.25}.milestone-body{font-size:11px;color:var(--muted);line-height:1.5;max-width:170px}.topbar-overflow{position:relative;display:none}.topbar-overflow>button{padding:8px;border-radius:10px;border:1px solid var(--stroke-2);background:var(--glass-2);color:var(--ink);cursor:pointer}.topbar-overflow-menu{position:absolute;top:46px;right:0;background:var(--glass-2);border:1px solid var(--stroke-2);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px;min-width:220px;z-index:30;box-shadow:0 20px 40px #00000073}.topbar-overflow-menu .chip{align-self:stretch;justify-content:center}.topbar-overflow-menu .btn{justify-content:center}.kpi-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.dropbox-folder-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:end}.dbx-header{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.dbx-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}@media (max-width: 640px){.dbx-header{flex-direction:column;align-items:stretch;gap:12px}.dbx-header-actions{width:100%}.dbx-header-actions .btn{flex:1;justify-content:center}.dbx-header-actions .chip{align-self:flex-start}}.scroll-x{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-color:var(--stroke-2) transparent;margin:0 calc(var(--density-pad) * -1);padding:0 var(--density-pad) 8px}.scroll-x>*{min-width:560px}.scroll-x::-webkit-scrollbar{height:8px}.scroll-x::-webkit-scrollbar-thumb{background:var(--stroke-2);border-radius:999px}.bottom-tabs{display:none}@media (max-width: 1024px){.app{grid-template-columns:1fr}.sidebar,.scrim,.mobile-menu-btn{display:none!important}.main{padding:max(14px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) calc(84px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.topbar{flex-wrap:wrap;gap:8px;margin-bottom:14px;align-items:flex-start}.topbar h1{font-size:clamp(22px,6vw,30px)}.topbar .right,.topbar-overflow{display:none}.g-4,.g-hero{grid-template-columns:repeat(2,1fr)}.g-hero>.card:first-child{grid-column:span 2;grid-row:auto}.g-3{grid-template-columns:1fr 1fr}.g-16-1,.g-145-1,.g-14-1,.g-12-1,.g-1-1,.g-1-narrow-1{grid-template-columns:1fr}.bed-grid{grid-template-columns:repeat(6,1fr);gap:6px}.bed-grid.f1{grid-template-columns:repeat(7,1fr)}.bed-grid.f2{grid-template-columns:repeat(8,1fr)}.milestones-h{grid-template-columns:repeat(2,1fr);gap:20px;padding-top:10px}.milestones-line{display:none}.milestone-body{max-width:none}.kpi-strip{grid-template-columns:repeat(4,1fr);gap:14px}.dropbox-folder-row{grid-template-columns:1fr;gap:8px}.dropbox-folder-row .btn{width:100%;justify-content:center}.bottom-tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:80;padding:8px max(6px,env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-right));background:#0e1014e0;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid var(--stroke-2)}.bottom-tabs-inner{display:flex;flex:1;gap:2px;align-items:stretch;justify-content:space-between}.bt-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;flex:1;min-width:0;padding:7px 2px 5px;color:var(--muted);border-radius:12px;cursor:pointer;transition:color .15s,background .15s;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.bt-item svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}.bt-item .bt-label{font-size:10px;line-height:1;letter-spacing:.01em;font-family:var(--f-body)}.bt-item.active{color:#0e1014;background:var(--accent)}.bt-item:active{transform:scale(.96)}.display{letter-spacing:-.025em}}@media (max-width: 640px){.topbar{gap:6px;margin-bottom:12px}.topbar h1{font-size:clamp(20px,6.4vw,26px);margin-top:4px!important}.topbar .sub{font-size:11.5px;margin-top:3px}.g-4,.g-hero,.g-3{grid-template-columns:1fr}.g-hero>.card:first-child{grid-column:auto}.bed-grid{grid-template-columns:repeat(4,1fr);gap:6px}.bed-grid.f1,.bed-grid.f2{grid-template-columns:repeat(4,1fr)}.milestones-h{grid-template-columns:1fr;gap:16px}:root{--density-pad: 14px;--density-gap: 12px}.display{font-size:clamp(1.5rem,9vw,3rem)!important}.card .display[style*="110"],.card .display[style*="44"],.card .display[style*="40"],.card .display[style*="38"],.card .display[style*="36"]{font-size:clamp(1.6rem,9vw,2.6rem)!important}.kpi-strip{grid-template-columns:repeat(2,1fr);gap:16px}.bt-item .bt-label{font-size:9.5px}.tweaks{right:10px;left:10px;bottom:calc(84px + env(safe-area-inset-bottom));width:auto}.btn,.chip{min-height:40px}.chip{padding:8px 12px}}.aria-tip{position:fixed;pointer-events:none;z-index:200;background:#1e222b;border:1px solid #252A35;border-radius:7px;padding:9px 12px;font-family:var(--f-body);font-size:12.5px;color:var(--ink);box-shadow:0 10px 28px #00000080;opacity:0;transform:translateY(-2px);transition:opacity .1s ease,transform .1s ease;min-width:max-content;max-width:260px}.aria-tip.on{opacity:1;transform:translateY(0)}.aria-tip .t-k{color:#9ca0a8;font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;display:block;margin-bottom:3px}.aria-tip .t-v{color:#ede8dd;font-size:13px;font-family:var(--f-mono);font-variant-numeric:tabular-nums}.aria-tip .t-sub{color:#9ca0a8;font-size:11px;margin-top:3px;font-family:var(--f-mono)}.aria-tip .t-row{display:flex;gap:10px;justify-content:space-between;align-items:center}.aria-tip .t-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}.hoverable{transition:filter .12s ease,outline-color .12s ease;outline:1px solid transparent;outline-offset:2px}.hoverable:hover,.hoverable:focus-visible{filter:brightness(1.15);outline-color:var(--accent)}.hoverable:focus-visible{outline-width:2px}svg .svg-hoverable{transition:filter .12s ease,stroke .12s ease}svg .svg-hoverable:hover{filter:brightness(1.2)}.pill-bar .v{font-size:10px;color:#0f1821;font-weight:600;opacity:0;transition:opacity .2s}.pill-bar.hi .v{opacity:1}.pill-bar.dim{background:#ffffff14}
