:root{--bg: #0f1115;--panel: #1a1d24;--panel-2: #232730;--text: #e8eaed;--muted: #9aa0a6;--accent: #d72e2e;--accent-2: #f4a300;--ok: #2e7d32;--warn: #c97a00;--open: #2b6cb0;--border: #2b2f38}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}header.app{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;background:var(--panel);border-bottom:1px solid var(--border)}header.app h1{margin:0;font-size:18px;letter-spacing:.5px}header.app h1.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:600}header.app h1.brand .brand-logo{filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}header.app h1 .accent{color:var(--accent)}.login-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:18px}.login-brand h2{margin:0;font-size:22px;letter-spacing:.3px}.user{display:flex;gap:12px;align-items:center;font-size:14px;color:var(--muted)}.user-skills{display:inline-flex;gap:4px}button{background:var(--accent);color:#fff;border:0;padding:8px 14px;border-radius:6px;cursor:pointer;font-weight:600}button.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}button:disabled{opacity:.5;cursor:not-allowed}main{padding:22px;max-width:1400px;margin:0 auto}.legend{display:flex;gap:14px;margin-bottom:16px;font-size:13px;color:var(--muted)}.legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}.day{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:14px;overflow:hidden}.day-header{padding:10px 14px;background:var(--panel-2);border-bottom:1px solid var(--border);font-weight:600}.blocks{display:grid;grid-template-columns:100px 1fr;gap:0}.vehicle-section{border-top:1px solid var(--border)}.vehicle-section:first-child{border-top:0}.vehicle-header{display:flex;align-items:center;gap:12px;width:100%;background:var(--panel-2);border:0;border-left:4px solid transparent;color:var(--text);text-align:left;padding:10px 14px;font-weight:600;font-size:15px;cursor:pointer;border-radius:0}.vehicle-header:hover{background:#2a2f3a}.vehicle-section.understaffed .vehicle-header{border-left-color:var(--warn)}.vehicle-section.empty .vehicle-header{border-left-color:var(--accent)}.vehicle-section.ok .vehicle-header{border-left-color:var(--ok)}.caret{display:inline-block;width:14px;color:var(--muted);font-size:12px}.vehicle-code{font-weight:700;font-size:16px;letter-spacing:.4px}.vehicle-summary{margin-left:auto;font-weight:400;color:var(--muted);font-size:13px;display:flex;align-items:center;gap:10px}.open-pill{background:#2b6cb040;color:#c8e1ff;border:1px solid var(--open);padding:1px 8px;border-radius:10px;font-size:12px;font-weight:600}.open-skills{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:4px}.open-skills .skill-badge{background:#2b6cb02e;border-color:var(--open);color:#c8e1ff}.open-skills .skill-badge.optional{background:#f4a3001f;border-color:var(--accent-2);color:var(--accent-2)}.interval-list{display:flex;flex-direction:column;padding:6px 0}.interval{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:8px 14px 8px 28px;border-left:3px solid transparent;align-items:start}.interval.understaffed{border-left-color:var(--warn);background:#c97a000d}.interval.empty{border-left-color:var(--accent);background:#d72e2e0f}.interval.ok{border-left-color:var(--ok)}.interval-time{font-variant-numeric:tabular-nums;color:var(--muted);display:flex;flex-direction:column;gap:4px;font-size:13px;padding-top:4px}.interval-time .time-text{color:var(--text);font-weight:500}.interval-time .count{display:inline-block;font-size:11px;font-weight:600;color:var(--text);background:var(--panel-2);padding:1px 6px;border-radius:8px;width:fit-content}.link-btn{background:none;border:0;color:var(--muted);padding:0;font-size:12px;text-decoration:underline;cursor:pointer;font-weight:400;width:fit-content}.link-btn:hover{color:var(--text)}.muted-small{color:var(--muted);font-size:12px;font-style:italic}.interval-people{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0}.skill-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.4px;background:var(--bg);color:var(--text);padding:2px 6px;border-radius:4px;border:1px solid var(--border);text-transform:uppercase}.skill-badge.optional{border-color:var(--accent-2);color:var(--accent-2);background:#f4a30014}.skill-badge.sb-bv{background:#d72e2e2e;border-color:#d72e2e;color:#ffb1b1}.skill-badge.sb-ch{background:#2ea0432e;border-color:#2ea043;color:#b6f0c2}.skill-badge.sb-ms{background:#2b6cb038;border-color:#2b6cb0;color:#c8e1ff}.skill-badge.sb-asp{background:#f4a3002e;border-color:#f4a300;color:#ffd591}.open-skills .skill-badge.sb-bv{background:#d72e2e2e;border-color:#d72e2e;color:#ffb1b1}.open-skills .skill-badge.sb-ch{background:#2ea0432e;border-color:#2ea043;color:#b6f0c2}.open-skills .skill-badge.sb-ms{background:#2b6cb038;border-color:#2b6cb0;color:#c8e1ff}.open-skills .skill-badge.sb-asp{background:#f4a3002e;border-color:#f4a300;color:#ffd591}.slot{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;font-size:13px;background:var(--panel-2);border:1px solid var(--border);white-space:nowrap}.slot.open{background:#2b6cb026;border-color:var(--open);cursor:pointer;color:#c8e1ff}.slot.open:hover{background:#2b6cb04d}.slot.open.optional{background:#f4a3001a;border-color:var(--accent-2);color:var(--accent-2)}.slot.open.optional:hover{background:#f4a30033}.slot.open.disabled{background:var(--panel-2);border-color:var(--border);color:var(--muted);cursor:not-allowed;opacity:.55}.slot.open.disabled:hover{background:var(--panel-2)}.login{max-width:360px;margin:80px auto;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:24px}.login h2{margin-top:0}.login label{display:block;margin:12px 0 4px;font-size:13px;color:var(--muted)}.login input{width:100%;padding:8px 10px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px}.login .error{color:#ff7676;margin-top:10px;font-size:13px}.banner{background:#c97a0026;border:1px solid var(--warn);padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:22px;width:min(440px,92vw)}.modal h3{margin:0 0 8px}.modal .muted{color:var(--muted);font-size:13px;margin:4px 0 14px}.modal label{display:block;margin:10px 0 4px;font-size:12px;color:var(--muted)}.modal input{width:100%;padding:8px 10px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;font-size:14px}.modal .error{color:#ff7676;margin-top:10px;font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
