:root{--ink:#263238;--paper:#f0f4f8;--green:#00a676;--yellow:#ffcf56;--white:#fff;--line:#cbd5dc;--muted:#68757d;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--sans)}
button,input,textarea{font:inherit}
button{color:inherit}
.app-shell{min-height:100vh;display:grid;grid-template-columns:210px minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;background:var(--ink);color:var(--paper);padding:24px 18px;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.brand img{border:1px solid #506068;border-radius:10px}.brand strong{display:block;letter-spacing:.12em;font-size:15px}.brand small{font:10px var(--mono);color:#aebbc1}
.nav{display:grid;gap:5px;margin-top:54px}.nav-item{border:0;background:transparent;color:#aebbc1;display:grid;grid-template-columns:27px 1fr auto;align-items:center;gap:7px;text-align:left;padding:12px 9px;border-left:2px solid transparent;cursor:pointer}.nav-item span{font:10px var(--mono)}.nav-item b{font-size:13px}.nav-item i{font:10px var(--mono);font-style:normal;background:var(--yellow);color:var(--ink);padding:2px 6px;border-radius:10px}.nav-item:hover,.nav-item.active{color:#fff;border-color:var(--green);background:#314047}
.side-foot{margin-top:auto;font:11px/1.7 var(--mono);color:#b8c3c8}.side-foot small{color:#7f919a}.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #00a67625}
.workspace{min-width:0;padding:0 38px 50px}.topbar{height:104px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px}.topbar h1{font-size:24px;margin:5px 0 0}.eyebrow{font:10px/1.4 var(--mono);letter-spacing:.1em;margin:0;color:var(--muted)}.top-actions{display:flex;align-items:center;gap:12px}.version,.badge{font:10px var(--mono);padding:5px 8px;background:#dce4e8;border-radius:3px;white-space:nowrap}.badge.warning{background:var(--yellow)}
.icon-btn{width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:4px;font-size:22px;cursor:pointer}.icon-btn:hover{border-color:var(--green);color:var(--green)}
.view{display:none;animation:enter .24s ease}.view.active{display:block}@keyframes enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.case-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:32px}.case-main{min-width:0}.workflow{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}.step{border:0;border-right:1px solid var(--line);background:transparent;padding:20px 12px;text-align:left;font-size:12px;color:var(--muted)}.step span{font:10px var(--mono);margin-right:8px}.step.done{color:var(--green)}.step.current{background:var(--yellow);color:var(--ink);font-weight:700}
.brief{display:grid;grid-template-columns:82px 1fr;gap:22px;padding:42px 0;border-bottom:1px solid var(--line)}.margin-note{font:10px/1.7 var(--mono);color:var(--muted);border-right:1px solid var(--line)}.status-line{display:flex;align-items:center;gap:10px;font:11px var(--mono);color:var(--muted)}.brief h2{font-size:clamp(24px,3vw,40px);line-height:1.07;max-width:780px;margin:18px 0}.brief p{font-size:14px;line-height:1.65;max-width:680px;color:#56656d}
.decision,.resource-strip{padding:28px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.section-heading h3{margin:5px 0 0;font-size:18px}.section-heading>span{font:11px var(--mono);color:var(--muted)}.vote-line{height:7px;background:#d7e0e4;margin:22px 0 17px}.vote-line i{display:block;height:100%;width:80%;background:var(--green);transition:width .3s}.people{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.person{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#fff;font:10px var(--mono)}.person.yes{background:var(--green);color:#fff;border-color:var(--green)}.person.pending{background:var(--yellow);border-color:var(--yellow)}
.primary-action,.secondary-action{border:0;border-radius:3px;padding:11px 15px;font-weight:700;font-size:12px;cursor:pointer}.primary-action{background:var(--green);color:#fff}.primary-action:hover{background:#008d65}.primary-action:disabled{background:#87949a;cursor:default}.secondary-action{background:transparent;border:1px solid var(--ink)}.secondary-action:hover{border-color:var(--green);color:var(--green)}.text-link{border:0;background:transparent;color:var(--green);font-size:12px;font-weight:700;cursor:pointer}
.lane-preview{position:relative;height:92px;margin-top:20px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(20% - 1px),#d4dde1 calc(20% - 1px),#d4dde1 20%);display:flex;justify-content:space-between;padding-top:4px;font:9px var(--mono);color:var(--muted)}.booking{position:absolute;top:29px;padding:7px 10px;font:10px var(--mono);white-space:nowrap}.booking.lift{left:10%;width:40%;background:var(--green);color:#fff}.booking.conflict{top:60px;left:50%;width:30%;background:var(--yellow)}
.inspector{border-left:1px solid var(--line);padding:29px 0 0 28px}.metric{display:flex;align-items:flex-end;gap:12px;margin:18px 0 12px}.metric strong{font:58px/1 var(--mono)}.metric span{font:11px/1.35 var(--mono);color:var(--muted);padding-bottom:6px}.meter{height:5px;background:#d5dfe3}.meter i{display:block;width:60%;height:100%;background:var(--green)}.inspector dl{margin:30px 0}.inspector dl div{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;font:11px var(--mono)}.inspector dt{color:var(--muted)}.inspector dd{margin:0;font-weight:700}.contractor{border-top:3px solid var(--ink);padding-top:17px}.contractor>div{min-height:80px;display:flex;align-items:center;gap:12px}.contractor p{font-size:12px}.empty-mark{width:36px;height:36px;border:1px dashed var(--line);display:grid;place-items:center}.contractor .secondary-action{width:100%}
.calendar-head{display:flex;justify-content:space-between;align-items:end;padding:35px 0 22px}.calendar-head h2,.report-layout h2{margin:6px 0 0;font-size:28px}.legend{display:flex;gap:15px;font:10px var(--mono)}.legend i{display:inline-block;width:9px;height:9px;margin-right:5px}.legend .ok{background:var(--green)}.legend .warn{background:var(--yellow)}
.calendar-board{background:#fff;border-top:3px solid var(--ink)}.time-row,.cal-lane{display:grid;grid-template-columns:150px repeat(6,1fr);min-height:84px;border-bottom:1px solid var(--line);position:relative}.time-row{min-height:39px;align-items:center;font:9px var(--mono);color:var(--muted)}.time-row>*{padding-left:14px}.cal-lane>b{padding:20px 14px;font:10px/1.45 var(--mono);border-right:1px solid var(--line)}.cal-lane:after{content:"";position:absolute;left:150px;right:0;top:0;bottom:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(16.666% - 1px),#e1e7ea calc(16.666% - 1px),#e1e7ea 16.666%);pointer-events:none}.slot{grid-column:calc(var(--start) + 1)/span var(--span);z-index:1;margin:17px 5px;padding:10px 11px;font:10px var(--mono);font-weight:700}.slot small{display:block;margin-top:5px;font-weight:400}.slot.green{background:var(--green);color:#fff}.slot.yellow{background:var(--yellow)}.slot.dark{background:var(--ink);color:#fff}.empty-lane p{grid-column:2/-1;margin:auto;font:11px var(--mono);color:var(--muted);z-index:1}.conflict-panel{margin-top:20px;border-left:5px solid var(--yellow);background:#fff;padding:20px;display:flex;justify-content:space-between;align-items:center;gap:20px}.conflict-panel h3{margin:9px 0 5px}.conflict-panel p{margin:0;color:var(--muted);font-size:13px}
.report-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:45px;padding-top:38px}.timeline{margin-top:36px}.timeline article{display:grid;grid-template-columns:90px 1fr;gap:25px;position:relative}.timeline article:not(:last-child):before{content:"";position:absolute;left:90px;top:20px;bottom:-20px;width:1px;background:var(--line)}.timeline time{font:10px/1.5 var(--mono);color:var(--muted)}.timeline article>div{position:relative;padding:0 0 38px 25px}.timeline article>div:before{content:"";position:absolute;left:-5px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 5px var(--paper)}.timeline h3{margin:10px 0 6px;font-size:16px}.timeline p{font-size:13px;color:var(--muted);margin:0}.report-summary{border-left:1px solid var(--line);padding-left:28px}.report-summary>strong{display:block;font:54px var(--mono);margin:18px 0 10px}.report-meter i{width:68%}.report-summary ul{list-style:none;padding:15px 0;margin:0 0 20px;font:11px/2.3 var(--mono)}.report-summary li:before{content:"○";margin-right:8px}.report-summary li.checked:before{content:"●";color:var(--green)}
dialog{width:min(480px,calc(100% - 30px));border:0;border-top:5px solid var(--green);padding:24px;box-shadow:0 18px 60px #17212655}dialog::backdrop{background:#263238aa}.dialog-head,.dialog-actions{display:flex;justify-content:space-between;gap:12px;align-items:center}.dialog-head h2{margin:4px 0 22px}.dialog-head .icon-btn{border:0}.dialog-actions{justify-content:flex-end;margin-top:18px}label{display:block;font:10px/1.4 var(--mono);color:var(--muted);margin-top:14px}input,textarea{display:block;width:100%;border:1px solid var(--line);padding:11px;margin-top:6px;color:var(--ink);background:var(--paper)}textarea{resize:vertical;min-height:90px}.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:#fff;padding:12px 16px;font:11px var(--mono);transform:translateY(80px);opacity:0;transition:.25s;z-index:5}.toast.show{transform:none;opacity:1}
@media (max-width:900px){.app-shell{grid-template-columns:170px minmax(0,1fr)}.workspace{padding:0 22px 40px}.case-layout,.report-layout{grid-template-columns:1fr}.inspector,.report-summary{border-left:0;border-top:1px solid var(--line);padding:25px 0}.inspector{display:grid;grid-template-columns:1fr 1fr;gap:20px}.inspector dl{margin:0}.contractor{grid-column:1/-1}.calendar-board{overflow:hidden}.time-row,.cal-lane{grid-template-columns:115px repeat(6,1fr)}.cal-lane:after{left:115px}}
@media (max-width:720px){body{padding-bottom:68px}.app-shell{display:block}.sidebar{position:fixed;z-index:4;top:auto;bottom:0;left:0;right:0;height:68px;padding:7px 12px;display:block}.brand,.side-foot{display:none}.nav{margin:0;grid-template-columns:repeat(3,1fr);gap:3px}.nav-item{grid-template-columns:18px 1fr auto;padding:10px 8px;border-left:0;border-top:2px solid transparent}.workspace{padding:0 16px 35px}.topbar{height:88px}.topbar h1{font-size:18px}.version{display:none}.case-layout{display:block}.workflow{overflow:hidden}.step{padding:15px 6px;font-size:0}.step span{font-size:10px}.brief{grid-template-columns:1fr;padding:28px 0}.margin-note{border-right:0;border-bottom:1px solid var(--line);padding-bottom:8px}.brief h2{font-size:28px}.section-heading{align-items:flex-start}.lane-preview{margin-inline:-4px}.booking{font-size:9px;overflow:hidden}.inspector{display:block}.inspector dl{margin:25px 0}.calendar-head{align-items:flex-start}.calendar-head .legend{display:grid}.calendar-board{background:transparent;border-top:0;display:grid;gap:12px}.time-row{display:none}.cal-lane{display:block;min-height:108px;background:#fff;border-top:3px solid var(--ink);padding:12px}.cal-lane>b{display:block;border:0;padding:0 0 12px}.cal-lane:after{display:none}.slot{display:block;margin:0;padding:12px}.empty-lane p{margin:12px 0;font-size:10px}.conflict-panel{align-items:stretch;flex-direction:column}.report-layout{padding-top:28px}.report-summary{padding-left:0}.toast{left:16px;right:16px;bottom:82px;text-align:center}}
@media (max-width:390px){.workspace{padding-inline:12px}.topbar{gap:8px}.top-actions{gap:6px}.brief h2{font-size:25px}.status-line{align-items:flex-start;flex-direction:column}.section-heading h3{font-size:16px}.text-link{max-width:110px;text-align:right}.booking.lift{width:47%}.booking.conflict{left:48%;width:47%}.calendar-head h2,.report-layout h2{font-size:24px}.inspector{padding-top:20px}.dialog-actions{align-items:stretch;flex-direction:column-reverse}.dialog-actions button{width:100%}}
@media (min-width:1200px){.workspace{padding-inline:48px}.case-layout{grid-template-columns:minmax(0,1fr) 290px;gap:44px}.brief{grid-template-columns:100px minmax(0,1fr)}.case-main{max-width:960px}.calendar-board,.conflict-panel{max-width:1180px}.report-layout{grid-template-columns:minmax(0,850px) 300px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
