:root{--brand:#0b3d77;--brand-dark:#032b5f;--brand-soft:#e9f5fc;--brand-sky:#6cc3e8;--bg:#f3f5f8;--surface:#fff;--surface-2:#f8fafc;--border:#e3e8ef;--border-strong:#cbd2d9;--text:#1f2933;--text-2:#4b5563;--text-3:#7b8794;--danger:#b42318;--danger-bg:#fef3f2;--danger-border:#fecdca;--danger-bar:#e0483d;--warn:#93370d;--warn-bg:#fffaeb;--warn-border:#fedf89;--warn-bar:#f79009;--suggest-bar:#fdb022;--ok:#067647;--ok-bg:#ecfdf3;--ok-border:#abefc6;--info:#175cd3;--info-bg:#eff8ff;--info-border:#b2ddff;--muted-bg:#f2f4f7;--muted-border:#e4e7ec;--radius:8px;--radius-lg:12px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}a{color:var(--brand)}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;width:100%;max-width:380px;padding:32px 28px;display:flex}.login-card h1{color:var(--brand);margin:0;font-size:1.4rem}.subtitle{color:var(--text-2);margin:4px 0 24px}.login-card label{margin-bottom:6px;font-size:.9rem;font-weight:600}.login-card input{border:1px solid var(--border-strong);border-radius:var(--radius);margin-bottom:16px;padding:10px 12px;font-size:1rem}.login-card input:focus{outline:2px solid var(--brand);border-color:#0000}.login-card button{border-radius:var(--radius);background:var(--brand);color:#fff;cursor:pointer;border:none;padding:11px;font-size:1rem;font-weight:600}.login-card button:hover{background:var(--brand-dark)}.login-card button:disabled{opacity:.6;cursor:wait}.login-card .link-button.forgot{color:var(--brand);background:0 0;align-self:flex-start;margin-top:14px;padding:0;font-weight:400}.login-card .link-button.forgot:hover{background:0 0;text-decoration:underline}.login-card .success+.hint,.login-card .notice+.link-button{margin-top:14px}.notice,.success{border-radius:var(--radius);border:1px solid;margin:12px 0;padding:10px 14px;font-size:.9rem}.notice{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.success{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.hint{color:var(--text-3);margin:16px 0 0;font-size:.85rem}.hint+button{margin-top:16px}.hint.first{margin:0 0 16px}.hint.tight{margin:2px 0 0;font-size:.8rem}.muted{color:var(--text-3)}.warn-text{color:var(--warn)}.strong{font-weight:600}.nowrap{white-space:nowrap}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.app-header{background:var(--surface);color:var(--text);border-bottom:1px solid var(--border);box-shadow:inset 0 3px 0 var(--brand-sky);z-index:10;position:sticky;top:0}.app-header-inner{align-items:center;gap:8px 24px;max-width:1280px;min-height:56px;margin:0 auto;padding:0 20px;display:flex}.brand{flex:none;align-items:center;padding:6px 0;display:flex}.brand img{width:auto;height:40px;display:block}.login-logo{margin:0 0 4px}.login-logo img{width:220px;max-width:100%;height:auto;display:block}.app-nav{scrollbar-width:none;flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}.app-nav::-webkit-scrollbar{display:none}.app-nav a{color:var(--text-2);border-radius:var(--radius);white-space:nowrap;padding:7px 12px;font-size:.92rem;text-decoration:none}.app-nav a:hover{background:var(--surface-2);color:var(--brand)}.app-nav a.active{background:var(--brand-soft);color:var(--brand-dark);font-weight:600}.app-user{white-space:nowrap;align-items:center;gap:12px;padding:8px 0;font-size:.88rem;display:flex}.app-user-role{background:var(--brand-soft);color:var(--brand-dark);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.78rem}.button-secondary{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;padding:5px 12px;font-size:.85rem}.button-secondary:hover{border-color:var(--brand);color:var(--brand)}.app-main{max-width:1280px;margin:0 auto;padding:28px 20px 56px}.page h1{letter-spacing:-.01em;margin:0 0 4px;font-size:1.6rem;line-height:1.25}.page>h1+p,.page>h1+.hint{max-width:820px;color:var(--text-2);margin:0 0 20px;font-size:.92rem}.page h2{margin:0;font-size:1.05rem}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-top:16px;padding:18px 20px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;margin-bottom:14px;display:flex}.panel-head a{color:var(--brand);font-size:.88rem;font-weight:500;text-decoration:none}.panel-head a:hover{text-decoration:underline}.panel-head .hint{margin:0}details.panel summary{cursor:pointer}details.panel[open] summary{margin-bottom:12px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.tabs a{color:var(--text-2);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;text-decoration:none}.tabs a:hover{color:var(--brand)}.tabs a.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.filters{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0 0 14px;padding:10px 12px;display:flex}.filters input,.filters select{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);height:36px;color:var(--text);padding:0 10px;font-size:.9rem}.filters input[type=search]{min-width:180px}.filters input[type=checkbox]{height:auto}.filters .hint{margin:0 0 0 auto}.filters label.inline{color:var(--text-2);margin-right:4px}.summary{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.badge{border:1px solid var(--muted-border);background:var(--muted-bg);color:var(--text-2);white-space:nowrap;vertical-align:middle;border-radius:999px;align-items:center;gap:5px;padding:1px 9px;font-size:.78rem;font-weight:500;line-height:1.6;display:inline-flex}.badge+.badge{margin-left:4px}.badge-ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.badge-info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.badge-warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.badge-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.badge-muted{background:var(--muted-bg);border-color:var(--muted-border);color:var(--text-2)}.badge-button{cursor:pointer;font:inherit;font-size:.8rem}.button-primary,.button-small{border-radius:var(--radius);cursor:pointer;white-space:nowrap;height:34px;padding:0 14px;font-size:.88rem}.button-primary{background:var(--brand);color:#fff;border:none;font-weight:600}.button-primary:hover{background:var(--brand-dark)}.button-small{border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.button-small:hover{border-color:var(--brand);color:var(--brand)}.button-primary:disabled,.button-small:disabled{opacity:.6;cursor:wait}.link-button{color:var(--brand);cursor:pointer;background:0 0;border:none;padding:0;font-size:.85rem}.link-button:hover{text-decoration:underline}.load-more{margin:16px auto 4px;display:block}.help{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:12px;padding:10px 16px;font-size:.9rem}.help summary{cursor:pointer;color:var(--brand);font-weight:600}.help ol{margin:8px 0 0;padding-left:20px}.edit-form p{margin:0 0 12px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.form-grid label{color:var(--text-2);flex-direction:column;gap:4px;font-size:.8rem;font-weight:600;display:flex}.form-grid input,.form-grid select{border:1px solid var(--border-strong);border-radius:var(--radius);height:36px;color:var(--text);background:var(--surface);padding:0 10px;font-size:.9rem;font-weight:400}.scope{border:1px solid var(--border);border-radius:var(--radius);margin:12px 0 0;padding:8px 12px}.scope legend{color:var(--text-2);font-size:.8rem;font-weight:600}label.inline{align-items:center;gap:6px;margin-right:16px;font-size:.9rem;display:inline-flex}.pool-checks{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}.form-actions{gap:8px;margin-top:12px;display:flex}.table-scroll{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto}.panel .table-scroll{border-radius:var(--radius)}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:10px 14px}.data-table tbody tr:last-child>td{border-bottom:none}.data-table th{color:var(--text-3);background:var(--surface-2);white-space:nowrap;font-size:.78rem;font-weight:600}.data-table tbody tr:hover{background:#f9fbfd}.data-table tr.clickable{cursor:pointer}.data-table tr.editing,.data-table tr.editing:hover{background:var(--surface-2)}.data-table tr.editing>td{box-shadow:inset 3px 0 0 var(--brand);padding:16px 18px 18px}.data-table .note{color:var(--text-2);min-width:200px;font-size:.85rem}.data-table.inner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);border-collapse:separate;border-spacing:0;margin-top:8px;overflow:hidden}.sort-button{font:inherit;color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:inline-flex}.sort-button:hover{color:var(--brand)}.sort-icon{color:#9aa5b1;font-size:.7rem}.sort-icon.active{color:var(--brand)}.access-table th:not(:first-child),.access-table .flag{text-align:center;color:var(--brand)}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px 32px;font-size:.9rem;display:grid}.facts{grid-template-columns:max-content 1fr;gap:6px 16px;margin:0;display:grid}.facts dt{color:var(--text-3)}.facts dd{margin:0}.facts .raw{font-family:ui-monospace,Consolas,monospace;font-size:.8rem}ul.plain{margin:4px 0 12px;padding:0;list-style:none}ul.plain li{padding:3px 0}ul.plain.columns{columns:4 160px}ul.history li.current{background:var(--warn-bg);border-radius:4px;padding:3px 6px}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 16px;display:grid}.stat{text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;color:var(--text);font:inherit;padding:12px 16px;display:block}button.stat{cursor:pointer}button.stat:hover{border-color:var(--border-strong)}.stat.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);background:var(--surface)}.stat-label{color:var(--text-2);font-size:.82rem;display:block}.stat-value{font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:650;line-height:1.2;display:block}.stat-sub{color:var(--text-3);font-size:.78rem;display:block}.stat.danger .stat-value{color:var(--danger)}.stat.warn .stat-value{color:var(--warn-bar)}.stat.suggest .stat-value{color:#b54708}.stat.ok .stat-value{color:var(--ok)}.group-title{color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:8px;margin:18px 0 4px;font-size:.8rem;font-weight:600;display:flex}.group-title:first-child{margin-top:0}.group-title .count{color:var(--text-3);font-weight:500}.unit-list{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);margin:0;padding:0;list-style:none;overflow:hidden}.unit-list>li+li{border-top:1px solid var(--border)}.unit{text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:none;grid-template-columns:4px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 16px 12px 0;display:grid}button.unit{cursor:pointer}button.unit:hover{background:#f9fbfd}.unit-bar{background:var(--muted-border);align-self:stretch}.unit-bar.overdue{background:var(--danger-bar)}.unit-bar.soon{background:var(--warn-bar)}.unit-bar.suggest{background:var(--suggest-bar)}.unit-bar.ok{background:#47cd89}.unit-plate{flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;font-size:1rem;font-weight:650;display:flex}.unit-items{color:var(--text-2);margin:2px 0 0;font-size:.86rem}.unit-items .more{color:var(--text-3)}.unit-right{text-align:right;color:var(--text-3);white-space:nowrap;font-size:.82rem}.unit-right strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:.98rem;font-weight:650;display:block}.unit-right strong.late{color:var(--danger)}.unit-detail{background:var(--surface-2);border-top:1px dashed var(--border);padding:4px 16px 16px 18px}.unit-meta{color:var(--text-2);flex-wrap:wrap;gap:4px 20px;margin:10px 0 0;font-size:.84rem;display:flex}.unit-meta b{color:var(--text);font-weight:600}.empty{text-align:center;color:var(--text-3);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);margin:0;padding:24px 16px;font-size:.9rem}.audit-list{margin:0;padding:0;list-style:none}.audit-list li{border-bottom:1px solid var(--border);padding:10px 0}.audit-list li:last-child{border-bottom:none}.audit-line{align-items:baseline;gap:16px;display:flex}.audit-when{color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums;flex:0 0 150px;font-size:.84rem}.audit-text{flex:1}.audit-detail{margin:8px 0 4px 166px;font-size:.85rem}.audit-detail p{margin:0 0 6px}.audit-detail .raw{word-break:break-all;max-width:360px;font-family:ui-monospace,Consolas,monospace;font-size:.75rem}.audit-scroll{max-height:70vh;overflow-y:auto}.audit-table th,.audit-table td{font-size:.8rem;text-align:left!important}.audit-table .value{text-overflow:ellipsis;max-width:160px;overflow:hidden}.fleet-table .count,.fleet-table th:not(:first-child){text-align:center}.fleet-table tr.total td{background:var(--surface-2);font-weight:600}.count-button{cursor:pointer;font-variant-numeric:tabular-nums;border:1px solid #0000;border-radius:999px;min-width:44px;padding:3px 10px;font-weight:600}.count-button.inPool{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.count-button.out{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.count-button.stale{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.fleet-list{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);margin-top:12px;padding:12px 14px}.crash pre{white-space:pre-wrap;background:var(--surface);border-radius:6px;padding:8px;font-size:.8rem}.status{color:#9aa5b1;margin:8px 0 0;font-size:.8rem}@media (width<=900px){.app-header-inner{flex-wrap:wrap;gap:4px 12px;padding:8px 14px 0}.brand{flex:1}.brand img{height:28px}.app-user{padding:0}.app-user-name{text-overflow:ellipsis;max-width:140px;overflow:hidden}.app-user-role{display:none}.app-nav{flex-basis:100%;order:3;margin:0 -14px;padding:2px 10px 6px}.app-main{padding:20px 14px 48px}}@media (width<=640px){body{font-size:14.5px}.page h1{font-size:1.35rem}.panel{padding:14px}.filters{gap:8px}.filters input:not([type=checkbox]),.filters select{flex:40%;min-width:0}.filters input[type=search]{flex-basis:100%}.filters label.inline{flex:40%;margin:0}.filters label.inline input[type=date]{flex:1}.data-table td,.data-table th{white-space:nowrap;padding:9px 12px}.data-table tr.editing>td,.data-table .note{white-space:normal}.filters .hint{flex-basis:100%;margin:0}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stat{padding:10px 12px}.stat-value{font-size:1.4rem}.unit{grid-template-columns:4px minmax(0,1fr);gap:4px 12px}.unit-bar{grid-row:span 2}.stat-sub{display:none}.unit-right{text-align:left;grid-column:2;align-items:baseline;gap:8px;display:flex}.unit-right strong{display:inline}.audit-line{flex-wrap:wrap;gap:2px 12px}.audit-when{flex-basis:100%}.audit-detail{margin-left:0}.facts{grid-template-columns:1fr;gap:0}.facts dd{margin-bottom:8px}}.dash-grid{grid-template-columns:minmax(0,1fr);align-items:start;gap:16px;display:grid}.dash-grid>*{margin-top:0}.dash-col{gap:16px;min-width:0;display:grid}.dash-col>.panel{margin-top:0}@media (width>=1100px){.dash-grid{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}section+section{margin-top:20px}.dash-col .audit-line{flex-wrap:wrap;gap:0 12px}.dash-col .audit-when{flex-basis:100%;font-size:.78rem}.unit-list+.hint.tight{margin-top:6px}.form-grid label.wide{grid-column:1/-1}.form-grid textarea{border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);background:var(--surface);resize:vertical;padding:8px 10px;font-size:.9rem;font-weight:400}.form-grid select:disabled{background:var(--surface-2);color:var(--text-2)}.field-hint{color:var(--text-3);font-size:.78rem;font-weight:400}.field-hint.warn-text{color:var(--warn)}.notice.danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.page-actions{justify-content:flex-end;margin:-8px 0 12px;display:flex}.fsr-actions{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:-4px 0 16px;padding:12px 14px}.fsr-actions .form-actions{flex-wrap:wrap}.timeline{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:0;margin:0 0 18px;padding:0;list-style:none;display:grid}.timeline-step{color:var(--text-3);flex-direction:column;gap:1px;padding:0 10px 0 0;font-size:.82rem;display:flex;position:relative}.timeline-step:before{content:"";background:var(--border);height:2px;position:absolute;top:13px;left:28px;right:0}.timeline-step:last-child:before{display:none}.timeline-step.done:before{background:var(--ok)}.timeline-dot{z-index:1;border:2px solid var(--border-strong);background:var(--surface);width:26px;height:26px;color:var(--text-3);border-radius:50%;justify-content:center;align-items:center;margin-bottom:6px;font-size:.75rem;font-weight:700;display:inline-flex;position:relative}.timeline-step.done .timeline-dot{background:var(--ok);border-color:var(--ok);color:#fff}.timeline-step.current .timeline-dot{border-color:var(--brand);color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.timeline-step.cancelled .timeline-dot{background:var(--danger);border-color:var(--danger);color:#fff}.timeline-step.skipped .timeline-dot{border-style:dashed}.timeline-label{color:var(--text);font-size:.88rem;font-weight:600}.timeline-step.todo .timeline-label,.timeline-step.skipped .timeline-label{color:var(--text-3)}.timeline-step.cancelled .timeline-label{color:var(--danger)}.timeline-who{color:var(--text-2)}.timeline-note{color:var(--text-3);font-style:italic}.timeline-now{color:var(--brand);font-weight:600}@media (width<=640px){.timeline{grid-template-columns:1fr;gap:10px}.timeline-step{padding-left:38px}.timeline-step:before{display:none}.timeline-dot{position:absolute;top:0;left:0}}.danger-link{color:var(--danger)}.segmented{border:1px solid var(--border-strong);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented button{background:var(--surface);color:var(--text-2);cursor:pointer;border:none;padding:5px 12px;font-size:.84rem}.segmented button+button{border-left:1px solid var(--border-strong)}.segmented button.on.replace{background:var(--brand);color:#fff;font-weight:600}.segmented button.on.check{background:var(--info-bg);color:var(--info);font-weight:600}.finish-items td{vertical-align:middle}.finish-items input{border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;min-width:120px;height:32px;padding:0 8px;font-size:.86rem}.finish-items input.qty{width:70px;min-width:70px}.finish-items tr.picked{background:var(--brand-soft)}.confirm-box{border:1px solid var(--brand);border-radius:var(--radius);background:var(--brand-soft);margin:14px 0 0;padding:12px 16px;font-size:.9rem}.confirm-box ul{margin:6px 0 0;padding-left:18px}.export{order:99;align-items:center;gap:8px;margin-left:auto;display:inline-flex}.filters .hint+.export{margin-left:0}.date-compact{border:1px solid var(--border-strong);border-radius:var(--radius);height:32px;padding:0 8px;font-size:.85rem}.alloc-list li{border-bottom:1px solid var(--border);padding:5px 0}.alloc-list li:last-child{border-bottom:none}.alloc-ok summary{cursor:pointer;margin-top:8px}.booking-list>li+li{border-top:1px solid var(--border)}.booking{padding:12px 0}.booking-main{grid-template-columns:64px minmax(0,1fr);align-items:start;gap:14px;display:grid}.booking-date{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text-3);flex-direction:column;align-items:center;padding:6px 4px;font-size:.75rem;display:flex}.booking-date b{color:var(--text);font-size:.95rem}.booking-body p{margin:0}.booking-form,.booking-history{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);margin:10px 0 0 78px;padding:12px 14px}.ok-text{color:var(--ok);font-weight:600}.capacity-strip{gap:6px;margin:12px 0 0;padding-bottom:4px;display:flex;overflow-x:auto}.cap-day{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);min-width:64px;color:var(--text-2);cursor:pointer;flex-direction:column;flex:none;align-items:center;padding:5px 6px;font-size:.72rem;display:flex}.cap-day b{color:var(--text);font-size:.85rem}.cap-day.full{background:var(--danger-bg);border-color:var(--danger-border);cursor:not-allowed}.cap-day.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.item-checks{flex-wrap:wrap;gap:6px 4px;display:flex}@media (width<=640px){.booking-form,.booking-history{margin-left:0}}
