@font-face{font-family:Archivo;src:url('/archivo.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{font-family:Archivo,system-ui,sans-serif;color:#0f2a33;background:#f1f4f3;font-size:16px;line-height:1.5;--ink:#0f2a33;--muted:#41565e;--line:#c5d2cf;--accent:#08604d}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}button,.button{min-height:44px;padding:10px 16px;border:1px solid #6f858c;border-radius:8px;background:#fff;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;color:var(--ink)}
button:hover,.button:hover{background:#e7eeeb}button.primary{background:var(--accent);border-color:var(--accent);color:white}button:disabled{cursor:not-allowed;opacity:.65}
a{color:var(--accent)}:focus-visible{outline:3px solid #b45c00;outline-offset:3px}
.skip{position:fixed;top:10px;left:16px;z-index:100;background:white;padding:12px;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.skip:focus{clip-path:none;width:auto;height:auto;overflow:visible}
.hall-legend{display:grid;gap:8px;margin-top:16px}.hall-legend button{text-align:left;white-space:normal;overflow-wrap:anywhere}.hall-legend p{margin:0;padding:8px}
h1,h2,h3,p{margin:0 0 16px}h1{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.15;letter-spacing:-.04em}h2{font-size:1.35rem;line-height:1.3}h3{font-size:1.05rem}
.muted,small{color:var(--muted)}small{font-size:.875rem}.eyebrow{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--accent)}
.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
aside{background:#082435;color:white;padding:28px 18px;display:flex;flex-direction:column;gap:24px}
.brand{width:100px;max-height:56px;object-fit:contain}.brand-title{font-size:1rem;letter-spacing:.02em;margin:8px 0 0}
nav{display:grid;gap:6px}nav a{min-height:44px;padding:11px 12px;color:#d7e6e5;text-decoration:none;border-radius:7px}nav a:hover,nav a[aria-current=page]{background:#21434c;color:white}aside small{color:#d7e6e5}.aside-foot{margin-top:auto}
.workspace{min-width:0}.topbar{padding:18px 32px;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;background:white}.topbar p{margin:0;overflow-wrap:anywhere;min-width:0}.test-label{border:1px solid #a16d26;color:#704500;padding:4px 8px;border-radius:5px;font-size:.75rem;font-weight:700}
main{max-width:1500px;padding:32px;margin:auto;min-width:0}.heading{display:flex;gap:20px;align-items:start;justify-content:space-between;margin-bottom:24px}.heading p{max-width:65ch;margin-bottom:0}
.tabs,.actions{display:flex;gap:8px;flex-wrap:wrap}.tabs{margin:24px 0}.tabs button[aria-pressed=true]{background:var(--ink);color:white}
.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:20px;min-width:0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:20px}.grid .panel{margin:0}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:16px;margin:24px 0}.metric{padding:20px;background:white;border:1px solid var(--line);border-radius:10px}.metric strong{display:block;font-size:2rem;letter-spacing:-.04em}.metric span{color:var(--muted)}
.empty{padding:48px 24px;text-align:center}.empty p{max-width:60ch;margin:0 auto 20px}
.record{border-top:1px solid var(--line);padding:20px 0;display:flex;gap:20px;align-items:start;justify-content:space-between;min-width:0}.record:first-child{border:0;padding-top:0}.record:last-child{padding-bottom:0}.record>div{min-width:0}.record p,.record h3{margin-bottom:6px;overflow-wrap:anywhere}
.badge{display:inline-flex;border:1px solid var(--line);border-radius:5px;padding:3px 8px;font-size:.8rem;margin:3px 4px 3px 0;color:var(--muted)}
label{display:block;font-weight:600;margin-bottom:16px;min-width:0}input,select,textarea{display:block;width:100%;min-width:0;min-height:44px;padding:11px 12px;border:1px solid #6f858c;border-radius:7px;background:white;margin-top:6px;font-size:1rem}select{appearance:none;overflow:hidden;text-overflow:ellipsis;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;background-size:6px 6px;background-repeat:no-repeat}
textarea{min-height:110px;resize:vertical}input[type=checkbox]{display:inline-block;width:22px;min-height:22px;vertical-align:middle;margin-right:10px}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.fields .wide{grid-column:1/-1}
dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 40px);color:var(--ink);box-shadow:0 20px 80px #08243533}dialog::backdrop{background:#08243580}dialog form,dialog .detail{padding:28px}dialog header{display:flex;justify-content:space-between;gap:20px;margin-bottom:20px}dialog header h2{margin:8px 0}
.error{color:#8f2317;background:#fff0ed;padding:12px;border-left:3px solid #a33b2c;margin-bottom:16px}.error:empty{display:none}.warning{background:#fff4df;color:#603600;padding:16px;border-left:3px solid #a16d26}
.auth{max-width:540px;padding:24px;margin:6vh auto}.auth .panel{padding:32px}.auth .brand{filter:brightness(0);margin-bottom:24px}.auth h1{font-size:2rem}.auth code{display:block;overflow-wrap:anywhere;background:#f1f4f3;padding:12px}
.hall{position:relative;width:100%;aspect-ratio:1.6;background:repeating-linear-gradient(0deg,transparent,transparent 19px,#d9e4df 20px),repeating-linear-gradient(90deg,#f7faf8,#f7faf8 19px,#d9e4df 20px);border:2px solid #6f858c;border-radius:8px;min-height:280px;margin-top:16px;overflow:hidden}
.slot{position:absolute;overflow:hidden;padding:6px;border:1px solid #477469;background:#e2f0e9;border-radius:5px;font-size:.85rem}.slot span{display:block;font-weight:700}.slot.occupied{background:#bde1d3}
.progress{height:10px;background:#dce6e1;border-radius:5px;overflow:hidden;margin:12px 0}.progress span{display:block;height:100%;background:#08604d}
.keyvalues{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin-bottom:24px}.keyvalues div{border-bottom:1px solid var(--line);padding:8px 0;overflow-wrap:anywhere}.keyvalues dt{font-size:.8rem;color:var(--muted)}.keyvalues dd{margin:4px 0 0}
.customer-logo{display:block;width:auto;max-width:min(240px,100%);height:64px;object-fit:contain;object-position:left center;margin-bottom:16px}.week-scroll{overflow:auto;max-width:100%}.week-scroll table{border-collapse:collapse;min-width:900px;width:100%}.week-scroll th,.week-scroll td{border:1px solid var(--line);padding:12px;text-align:left;vertical-align:top;max-width:160px;overflow-wrap:anywhere}.week-scroll th{background:#f1f4f3}
#notice:not(:empty){position:fixed;bottom:20px;right:20px;max-width:calc(100vw - 40px);padding:14px 20px;background:#082435;color:white;border-radius:8px;z-index:10}
@media(max-width:1000px){.shell{grid-template-columns:200px minmax(0,1fr)}main{padding:24px}.topbar{padding:16px 24px}}
@media(max-width:760px){.shell{display:block}aside{padding:16px;gap:12px}.brand{width:72px}.brand-title,.aside-foot{display:none}nav{display:flex;flex-wrap:wrap;gap:4px}nav a{padding:10px;font-size:.875rem}.topbar{padding:12px 18px}.topbar small{display:none}main{padding:24px 18px}.heading{flex-direction:column}.fields{grid-template-columns:1fr}.panel{padding:20px}.record{flex-direction:column}.record .actions{width:100%}.auth{margin:24px auto;padding:16px}.auth .panel{padding:24px}dialog form,dialog .detail{padding:20px}.hall{min-height:240px}.keyvalues{grid-template-columns:1fr}}
@media print{body{background:white}#app,.skip,#notice{display:none}dialog{display:block;position:static;max-height:none;width:100%;border:0;box-shadow:none}dialog::backdrop,dialog button{display:none}.detail{padding:0!important}.panel{break-inside:avoid}}

/* Access terminal: no remote assets, decorative metrics or hover-only controls. */
.auth-terminal{max-width:none;margin:0;padding:0;min-height:100vh;min-height:100svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(440px,1fr)}
.auth-story{background:#082435;color:#fff;padding:clamp(28px,4.5vw,80px);display:flex;flex-direction:column;gap:48px;min-width:0;position:relative}
.auth-brand-row{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.auth-logo{background:transparent;border:0;padding:8px 0;min-width:120px;min-height:56px;justify-content:start;border-radius:4px}
.auth-logo:hover{background:#173a47}.auth-logo img{width:120px;height:50px;object-fit:contain}.auth-logo:focus-visible{outline-color:#83e4ce}
.auth-static-logo{width:120px;height:50px;object-fit:contain}
.auth-edition{font-size:.65rem;letter-spacing:.14em;font-weight:700;color:#b7cecf}
.auth-story-copy{margin-top:auto;padding-top:20px}.auth-kicker{font-size:.7rem;letter-spacing:.16em;color:#83e4ce;font-weight:700}
.auth-story h2{font-size:clamp(2.5rem,4.1vw,4.8rem);line-height:1.04;letter-spacing:-.045em;margin-bottom:24px;text-wrap:balance}
.auth-story-copy>p:last-child{color:#b7cecf;max-width:35ch;font-size:1.05rem;line-height:1.7;margin:0}
.auth-flow{border-top:1px solid #44616d;border-bottom:1px solid #44616d;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:26px 0;gap:16px}
.auth-flow>div{display:grid;gap:8px;min-width:0}.auth-flow span{color:#83e4ce;font-variant-numeric:tabular-nums;font-size:.8rem}.auth-flow strong{font-size:1.05rem}.auth-flow small{color:#b7cecf;font-size:.75rem;line-height:1.5}
.auth-story-foot{font-size:.75rem;color:#b7cecf;margin:auto 0 0;padding-top:12px}
.auth-access{background:#f5f7f6;padding:clamp(24px,4vw,64px);display:flex;flex-direction:column;min-width:0;gap:36px}
.auth-access-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.auth-security{font-size:.75rem;font-weight:600;color:#08604d;display:flex;align-items:center;gap:8px}
.auth-security:before{content:"";width:8px;height:8px;background:#08604d;border-radius:50%;flex:none}
.auth-card{width:100%;max-width:460px;margin:auto;min-width:0;background:transparent;padding:24px 0}
.auth-card h1{font-size:clamp(1.85rem,2.7vw,2.65rem);letter-spacing:-.035em;line-height:1.12;text-wrap:balance;margin-bottom:16px}
.auth-intro{color:#41565e;line-height:1.65;margin-bottom:32px;overflow-wrap:anywhere}
.auth-card label{font-size:.875rem;margin-bottom:8px}.auth-card input{min-height:54px;padding:14px;background:white;border-color:#80938e;border-radius:8px}
.auth-card label:has(input){margin-bottom:22px}.password-field{display:flex;gap:0;position:relative;margin:0 0 24px;border:1px solid #80938e;border-radius:8px;background:white}
.password-field input{margin:0;border:0;background:transparent;min-width:0;flex:1;border-radius:8px 0 0 8px}
.password-field button{border:0;background:transparent;font-size:.75rem;padding:8px 12px;min-width:82px;min-height:52px;border-radius:0 8px 8px 0}
.password-field button:hover{background:#e7eeeb}.factor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.factor-heading label{margin:0}.factor-heading span{font-size:.65rem;letter-spacing:.08em;color:#08604d;font-weight:700}
.auth-code{letter-spacing:.25em;font-variant-numeric:tabular-nums}
.field-help{font-size:.75rem;color:#41565e;margin:8px 0 24px;line-height:1.6}
.auth-submit{width:100%;min-height:56px!important;justify-content:space-between;padding:14px 20px;border-radius:8px}
.auth-help{font-size:.8rem;color:#41565e;line-height:1.6;border-top:1px solid #c5d2cf;padding-top:22px;margin:26px 0 0}
.auth-footer{font-size:.75rem;color:#41565e;line-height:1.7;max-width:460px;width:100%;margin:0 auto}
.auth-connection:not(:empty){color:#603600;background:#fff4df;border-left:3px solid #a16d26;padding:12px;font-size:.875rem}
.auth-connection:empty{display:none}.auth-back{margin-top:20px;width:100%;background:transparent}
.setup-secret{display:block;padding:16px;background:#e7eeeb;overflow-wrap:anywhere;user-select:all;margin-bottom:24px;font-size:1rem}
@media(min-width:1000px) and (max-width:1200px){.auth-story{padding:36px}.auth-access{padding:32px}}
@media(max-width:999px){.auth-terminal{grid-template-columns:minmax(0,1fr)}.auth-story{padding:24px 32px;gap:0}.auth-story-copy,.auth-flow,.auth-story-foot{display:none}.auth-brand-row{flex-wrap:nowrap}.auth-access{padding:28px 32px;gap:24px}.auth-card{padding:8px 0}.auth-access-top{max-width:460px;width:100%;margin:0 auto}.auth-footer{margin-top:8px}}
@media(max-width:480px){.auth-story{padding:16px 24px}.auth-logo{min-width:100px}.auth-logo img{width:100px;height:44px}.auth-edition{font-size:.58rem;letter-spacing:.06em}.auth-brand-row{gap:16px}.auth-access{padding:24px;gap:20px}.auth-access-top{gap:10px}.auth-security{font-size:.7rem}.auth-card h1{font-size:1.9rem}.auth-card .eyebrow{font-size:.65rem;letter-spacing:.1em}.auth-intro{font-size:.9rem;margin-bottom:26px}.auth-footer{font-size:.7rem}}
@media(pointer:coarse){button,.button,nav a,input,select{min-height:48px}input[type=checkbox]{min-height:24px;width:24px}label:has(input[type=checkbox]){min-height:48px;display:flex;align-items:center}.slot{touch-action:pan-y}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Document-complete planning views: native meters, responsive comparisons. */
.production-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,2fr) minmax(130px,.6fr);gap:24px}
.stage-meters{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px}
.progress-cell{min-width:0;overflow-wrap:anywhere;margin-block:8px}
.progress-cell span{display:flex;justify-content:space-between;gap:12px}
progress{display:block;width:100%;height:14px;margin-top:8px;accent-color:#08604d}
.budget-over{border-left:5px solid #a62828;padding-left:12px;color:#8c2020}
.budget-over progress{accent-color:#a62828}
.status-risk progress{accent-color:#9b6500}.status-late progress{accent-color:#a62828}.status-completed progress{accent-color:#08604d}
.slot.foreign{background:#59676d;color:#fff;border:2px solid #33434a}
.slot.free{background:#edf1f2;color:#263f49;border:2px dashed #627881}
.report-bars{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}
.report-table{overflow:auto;max-width:100%}
.report-table th,.report-table td{padding:12px;text-align:left;vertical-align:top}
.record{flex-wrap:wrap}.record>div:first-child{flex:1 1 280px}.record .actions{flex:0 1 auto;max-width:100%}.badge{max-width:100%}
@media(max-width:760px){.record>div:first-child{flex:auto}}
.dashboard-notices{border-left:5px solid #08604d}
.dashboard-notices p{white-space:pre-wrap}
@media(max-width:800px){.production-row{grid-template-columns:1fr}.stage-meters{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.stage-meters{grid-template-columns:1fr}}
@media(pointer:coarse){button,input,select,.button{min-height:48px}}
@media print{aside,.topbar,.tabs,button,.fields{display:none!important}.production-row{break-inside:avoid}.workspace,main{padding:0!important}.shell{display:block!important}}
@media print{body:not(:has(dialog[open])) #app{display:block}dialog:not([open]){display:none}body:has(dialog[open]) #app{display:none}}
