:root{--green:#149e66;--green-ink:#0c7c4e;--green-bg:#e0f5ea;--blue:#2b78e4;--blue-ink:#1a5ec2;--blue-bg:#e7f0fd;--red:#c22f2f;--red-ink:#a02222;--red-bg:#fbe9e9;--warn-ink:#8f6b12;--warn-bg:#f7edd8;--orange-ink:#a04a12;--orange-bg:#f9e6d8;--bg:#f4f8f5;--card:#fff;--border:#e1eae3;--text:#13241c;--muted:#5e7268;--error:var(--red-ink);--radius:18px;--radius-btn:10px;--shadow:0 1px 3px #13241c12}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Outfit,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--green-ink)}h1{letter-spacing:-.01em;margin:18px 0 12px;font-size:24px}h2{margin:18px 0 10px;font-size:16px}.muted{color:var(--muted)}.container{max-width:720px;margin:0 auto;padding:4px 14px 96px}.container:has(.admin){max-width:1100px}.admin{max-width:1100px}.center{text-align:center;max-width:420px;margin:15vh auto}.signin-mark{justify-content:center;margin-bottom:10px;display:flex}.signin-mark .brandmark{width:46px;height:46px}.signin-mark .brandmark svg{width:20px;height:20px}.nav{border-bottom:1px solid var(--border);z-index:20;background:linear-gradient(135deg,#e9f2ff 0%,#e2f5ea 100%);justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;display:flex;position:sticky;top:0}.nav a,.nav .link{color:var(--text);margin-left:12px;font-size:14px;font-weight:500;text-decoration:none}.nav .brand{align-items:center;gap:8px;margin-left:0;font-size:17px;font-weight:700;display:inline-flex}.brandmark{background:linear-gradient(135deg, var(--green), var(--blue));border-radius:50% 50% 50% 4px;flex:none;place-items:center;width:30px;height:30px;display:grid}.links{flex-wrap:wrap;align-items:center;display:flex}.tabbar{z-index:20;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--border);gap:6px;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{background:var(--card);border:1px solid var(--border);min-height:44px;color:var(--muted);border-radius:12px;flex:1;place-items:center;font-size:13px;font-weight:500;text-decoration:none;display:grid}.tabbar a.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}@media (width>=800px){.tabbar{display:none}.container{padding-bottom:32px}}@media (width<=799px){.nav .hide-mobile{display:none}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:12px 0;padding:16px}.card h2{margin-top:0}.section{margin:20px 0}.ffs-note{color:var(--muted);margin:-4px 0 10px;font-size:12.5px}.slots{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.slot{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;display:flex}.slot .when{flex:1;min-width:140px;font-size:14.5px;font-weight:600}.slot .spot{color:var(--muted);font-size:12.5px;font-weight:500}.tag,.chip{background:var(--blue-bg);color:var(--blue-ink);border-radius:999px;align-items:center;gap:5px;padding:5px 9px;font-size:11px;font-weight:600;display:inline-flex}.chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.chip.morning{background:var(--green-bg);color:var(--green-ink)}.chip.evening{background:var(--blue-bg);color:var(--blue-ink)}.horizon{color:var(--muted);align-items:center;gap:6px;margin:4px 0 14px;font-size:14px;display:inline-flex}details.week{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 12px;overflow:hidden}details.week summary{cursor:pointer;align-items:center;gap:8px;min-height:54px;padding:12px 16px;font-size:14px;font-weight:700;list-style:none;display:flex}details.week summary::-webkit-details-marker{display:none}details.week summary:before{content:"▸";color:var(--text);width:18px;font-size:20px;font-weight:700;line-height:1}details.week[open] summary:before{content:"▾"}details.week summary .range{color:var(--muted);font-size:12px;font-weight:400}details.week summary .count{color:var(--green-ink);background:var(--green-bg);border-radius:999px;margin-left:auto;padding:4px 8px;font-size:11px;font-weight:600}details.week .slots{gap:0}details.week .slot{box-shadow:none;border-top:1px solid var(--border);border-radius:0}input,select,textarea,button{color:var(--text);border-radius:var(--radius-btn);border:1px solid var(--border);background:var(--card);padding:10px 12px;font-family:inherit;font-size:16px}button{cursor:pointer;font-weight:600}button.primary{background:var(--green);color:#fff;border:none;min-height:44px;padding:0 18px}button.primary:hover{background:var(--green-ink)}button.primary:disabled{opacity:.5;cursor:not-allowed}button.link{color:var(--green-ink);background:0 0;border:none;padding:4px}.banner{background:var(--blue-bg);color:var(--blue-ink);border-radius:12px;margin:10px 0;padding:12px 14px;font-size:14px;line-height:1.5}.banner a{color:inherit;font-weight:600}.banner.ok{background:var(--green);color:#fff;font-weight:600;box-shadow:0 8px 20px #149e6640}.banner.ok:before{content:"✓";margin-right:8px;font-weight:700}.banner.error{background:var(--red-bg);color:var(--red-ink)}.banner.suspension{background:var(--red);color:#fff;font-weight:500;box-shadow:0 8px 20px #c22f2f40}.banner.suspension strong{font-weight:700}.form{flex-direction:column;gap:14px;display:flex}.form label{color:var(--text);flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;display:flex}.form input,.form select,.form textarea{font-weight:400}.row2{gap:10px;display:flex}.row2 label{flex:1}.hint{color:var(--muted);margin-top:4px;font-size:12px;font-weight:400;display:block}.footer{border-top:1px solid var(--border);text-align:center;margin-top:32px;padding-top:14px}.footer a{color:var(--muted);font-size:12.5px;text-decoration:none}.footer a:hover{text-decoration:underline}.bookings{flex-direction:column;gap:10px;margin:12px 0;padding:0;list-style:none;display:flex}.booking{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;display:flex}.booking .who{flex:1;min-width:150px}.booking .date{font-size:14.5px;font-weight:600}.booking .meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.booking .plate,.booking .spot{color:var(--muted);font-size:12.5px;font-weight:500}.booking.past{opacity:.55}.status{background:var(--green-bg);color:var(--green-ink);text-transform:capitalize;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:600}.status.inactive{background:var(--bg);color:var(--muted)}button.cancel{background:var(--card);min-height:44px;color:var(--muted);border:1px solid var(--border);padding:0 16px;font-size:13px}button.cancel:hover{color:var(--red-ink);border-color:var(--red);background:var(--red-bg)}.confirm-dialog{background:var(--red-bg);border-radius:10px;flex-wrap:wrap;flex-basis:100%;align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.confirm-dialog p{flex-basis:100%;margin:0;font-weight:600}.vehicles{flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.vehicles li{background:var(--card);box-shadow:var(--shadow);border-radius:12px;padding:12px 14px;font-size:14px}.callout{background:var(--green-bg);color:var(--green-ink);border-radius:12px;margin:10px 0;padding:12px 14px;font-weight:600;line-height:1.45}.card ul{padding-left:20px}.card li{margin:6px 0;font-size:14px;line-height:1.55}.card li::marker{color:var(--green)}.ladder{flex-direction:column;gap:10px;margin:12px 0;padding:0;list-style:none;display:flex}.ladder .rung{border-radius:12px;align-items:center;gap:12px;margin:0;padding:11px 14px;display:flex}.rung .badge{background:#fff;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:13px;font-weight:800;display:grid}.rung strong{font-size:13.5px;display:block}.rung small{color:var(--muted);font-size:12px}.rung.warn{background:var(--warn-bg)}.rung.warn .badge,.rung.warn strong{color:var(--warn-ink)}.rung.suspend{background:var(--orange-bg)}.rung.suspend .badge,.rung.suspend strong{color:var(--orange-ink)}.rung.repeat{background:var(--red-bg)}.rung.repeat .badge,.rung.repeat strong{color:var(--red-ink)}.rung.hr{background:var(--red)}.rung.hr .badge{color:var(--red-ink)}.rung.hr strong,.rung.hr small{color:#fff}.table{border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.table th{text-align:left;background:var(--bg);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:9px 10px;font-size:11.5px}.table td{text-align:left;border-bottom:1px solid var(--border);padding:9px 10px;font-size:14px}.table tr:last-child td{border-bottom:none}.row-clickable{cursor:pointer}.row-clickable:hover td{background:var(--bg)}.user-detail{padding:6px 4px 4px}.user-detail h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:12px 0 6px;font-size:12.5px}.user-detail h4:first-child{margin-top:0}.admin-layout{align-items:flex-start;gap:24px;margin:12px 0 16px;display:flex}.admin-sidebar{border-right:1px solid var(--border);flex-direction:column;flex:0 0 180px;gap:16px;width:180px;padding-right:16px;display:flex}.admin-sidebar-heading{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px 14px;font-size:11.5px;font-weight:700}.admin-content{flex:auto;min-width:0}.tab{text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-left:2.5px solid #0000;border-radius:0;padding:8px 14px;font-size:13.5px;font-weight:600;display:block}.tab.active{color:var(--text);border-left:2.5px solid var(--green);background:0 0}.slot.locked{opacity:.62}.slot.locked .reason{color:#5b6b7a;text-align:right;max-width:40%;font-size:.82em}.slot.full .reason{color:#5b6b7a;font-size:.82em}.allowance{flex-wrap:wrap;gap:8px;margin:10px 0 16px;display:flex}.week-chip{background:#f0f7f2;border:1px solid #d7e9dc;border-radius:12px;flex-direction:column;align-items:center;gap:1px;min-width:74px;padding:8px 12px;font-size:.8em;display:flex}.week-chip.used-1{background:#eef4fb;border-color:#d3e3f5}.week-chip.used-2{opacity:.8;background:#f3f4f6;border-color:#e2e4e8}.week-chip .wk-used{font-size:1.15em;font-weight:700}.week-chip .wk-note{color:#5b6b7a}.ffa-badge{color:var(--green-ink);background:var(--green-bg);white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:.72em}.quota-line{color:#40525f;margin:-6px 0 14px;font-size:.92em}.waitlist-toggle{color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:none;margin:2px 0 14px;padding:0;font-size:12.5px;font-weight:500;display:block}.waitlist-toggle:hover{color:var(--green-ink)}.waitlist-panel{margin:0 0 16px}.evidence{border-radius:8px;max-width:120px;max-height:90px;margin-top:4px;display:block}.toast{z-index:40;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));border-radius:12px;padding:12px 16px;position:fixed;box-shadow:0 4px 18px #14281e2e}.toast.ok{background:var(--green-bg);color:var(--green-ink)}.toast.error{color:#b91c1c;background:#fde8e8}@media (width>=800px){.toast{max-width:420px;bottom:24px;left:auto;right:24px}}.container{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.center.card{max-width:420px;margin:12vh auto 0}.cancel.confirm{color:#fff;background:#b91c1c}@media (width<=799px){.nav,.links{flex-wrap:nowrap}.nav a,.nav .link{white-space:nowrap;margin-left:2px;padding:12px 5px;font-size:13px}.nav .brand{padding:12px 0;font-size:15px}.allowance{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:300px;margin:10px auto 16px;display:grid}.week-chip{min-width:0;padding:8px 6px}.tabbar a{padding:0 2px;font-size:12.5px;overflow:hidden}.cancel.confirm{min-width:96px}.slot{grid-template-columns:1fr auto;row-gap:6px;display:grid}.slot .when{grid-column:1;min-width:0}.slot .chip{grid-column:2;justify-self:end}.slot .spot{grid-column:1;align-self:center}.slot .primary,.slot .cancel,.slot.locked .reason{grid-column:2;justify-self:end}.slot.locked .reason,.slot.full .reason{text-align:right;max-width:none}.slot .ffa-badge{grid-column:1/-1;justify-self:start}}.dup-flag{color:#b45309;background:#fef3c7;border-radius:999px;margin-left:6px;padding:2px 7px;font-size:.72em}.table-wrap,.admin{overflow-x:auto}.stat-grid{flex-wrap:wrap;gap:10px;margin:10px 0 20px;display:flex}.stat-tile{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-btn);flex:1;min-width:120px;padding:12px 16px}.stat-value{color:var(--green-ink);font-size:1.6em;font-weight:700}.stat-label{color:var(--muted);margin-top:2px;font-size:.85em}.stat-sub{color:var(--muted);margin-top:4px;font-size:.78em}.stat-tile.warn .stat-value{color:var(--warn-ink)}.signin-page{background:linear-gradient(160deg,#eaf3fb 0%,#f2f9f4 55%,#e3f4e9 100%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.signin-page .leaf{pointer-events:none;position:absolute}.leaf-a{width:360px;fill:var(--green);opacity:.08;top:-70px;right:-90px;transform:rotate(18deg)}.leaf-b{width:210px;fill:var(--blue);opacity:.07;top:110px;right:40px;transform:rotate(-28deg)}.leaf-c{width:320px;fill:var(--green);opacity:.06;bottom:-90px;left:-70px;transform:rotate(155deg)}.signin-inner{text-align:center;max-width:420px;position:relative}.signin-inner .signin-mark{justify-content:center;margin-bottom:18px;display:flex}.signin-inner p{color:#40525f;margin:0 0 22px}.signin-inner .primary{padding:14px 26px;font-size:16px}.handoff{color:#40525f;background:#f0f7f2;border-radius:10px;flex-basis:100%;margin-top:6px;padding:8px 10px;font-size:12.5px}.plan-ahead{margin-top:14px}.plan-ahead a{color:var(--green-ink);font-weight:600;text-decoration:none}.form input,.form select,.form textarea{width:100%;min-width:0}.row2 label{min-width:0}.vehicles li{padding:0}.vehicle-row{text-align:left;width:100%;min-height:48px;color:var(--text);background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;font-size:14px;display:flex}.vehicle-row .edit-hint{color:var(--green-ink);font-size:13px;font-weight:600}button.danger{background:var(--red-bg);color:var(--red-ink);border:1px solid var(--red);min-height:44px}.row2 button{flex:1}.vehicle-row.shared{color:var(--muted)}.co-drivers{padding:0 14px 12px}.co-driver-list{margin:0 0 8px;padding:0;list-style:none}.co-driver-list li{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 0;font-size:13px;display:flex}.co-driver-add{margin:0}.co-driver-add input{font-size:14px}.cfg{max-width:760px}.cfg-summary{background:var(--green-bg);color:var(--text);border-radius:12px;margin:10px 0 16px;padding:14px 16px;font-size:14px;line-height:1.65}.cfg-summary b{color:var(--green-ink)}.cfg-section h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 4px;font-size:13px}.cfg-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.cfg-row:last-child{border-bottom:none;padding-bottom:2px}.cfg-info{flex:1;min-width:0}.cfg-info strong{align-items:center;gap:7px;font-size:14.5px;display:inline-flex}.cfg-info small{color:var(--muted);margin-top:2px;font-size:12.5px;line-height:1.45;display:block}.cfg-info .cfg-invalid{color:var(--red-ink);font-weight:600}.cfg-dot{background:var(--blue);border-radius:50%;width:8px;height:8px;display:inline-block}.cfg-input{flex:none;align-items:center;gap:8px;display:inline-flex}.cfg-input input{text-align:right;width:88px;font-weight:600}.cfg-row.dirty .cfg-input input{border-color:var(--blue);background:var(--blue-bg)}.cfg-input .unit{color:var(--muted);min-width:72px;font-size:12.5px}.cfg-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}
