/* Midway Auto: admin/host styles. Mobile first; >=860px adds the desktop layout. Theme tokens below (A default, B = body.theme-b). */
/* Midway Auto: theme tokens. Option A (default): ink + electric blue. Option B: add class "theme-b" to <body> (deep navy + teal). Fonts self-hosted (static/fonts, OFL), needs font-src 'self'. */
@font-face{font-family:"Inter Variable";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/Inter-Variable-latin.woff2") format("woff2")}
@font-face{font-family:"Sora Variable";font-style:normal;font-weight:100 800;font-display:swap;src:url("fonts/Sora-Variable-latin.woff2") format("woff2")}
:root{--ink:#0A0A0F;--muted:#5B6270;--bg:#F4F5F7;--card:#fff;--line:#E2E4E9;--line2:#CDD1D9;
--pri:#0A0A0F;--pri-d:#000;--pri-t:#B9C0D4;--acc-dk:#8EA2FF;
--acc:#2347F5;--acc-d:#1A38D1;--on-acc:#fff;--acc-text:#2347F5;--tint:#EEF2FF;--today:#2347F5;--on-today:#fff;--wk:#ECEEF2;--rowline:#EDEFF3;
--ph1:#2A2D36;--ph2:#4A4F5C;--ph3:#3A3F4B;--ph4:#5B6270;
--ok:#1F7A55;--bad:#B3261E;--warnbg:#FEF3C7;--r:16px;--rc:12px;--sh:0 1px 2px rgba(10,10,15,.05);--sh2:0 10px 30px rgba(10,10,15,.08);
--sans:"Inter Variable",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--display:"Sora Variable","Inter Variable",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
body.theme-b{--ink:#0B1F3A;--muted:#4F5F78;--bg:#F5F8FB;--line:#DCE3EC;--line2:#C4CEDB;
--pri:#0B1F3A;--pri-d:#06142A;--pri-t:#C8D2E6;--acc-dk:#19C3B0;
--acc:#19C3B0;--acc-d:#12A898;--on-acc:#0B1F3A;--acc-text:#0B7A70;--tint:#E6F7F5;--today:#19C3B0;--on-today:#0B1F3A;--wk:#EAF0F6;--rowline:#E6ECF3;
--ph1:#12294A;--ph2:#2D4A73;--ph3:#1B3A63;--ph4:#3E5F8C;--sh:0 1px 2px rgba(11,31,58,.05);--sh2:0 10px 30px rgba(11,31,58,.09)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{font:16px/1.5 var(--sans);margin:0;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
body.has-tabs{padding-bottom:84px}
h1,h2,h3{font-family:var(--display);line-height:1.15;margin:0 0 .5em;letter-spacing:-.025em;font-weight:700}
h1{font-size:28px;margin-top:8px}h2{font-size:20px;margin-top:1.4em}h3{font-size:17px;margin-top:1.2em}
a{color:var(--acc-text)}a:hover{color:var(--ink)}
p{margin:.6em 0}small{color:var(--muted);font-size:14px}
hr{border:0;border-top:1px solid var(--line);margin:24px 0}
:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
main{padding:16px;max-width:1180px;margin:0 auto}
main>p:first-of-type{color:var(--muted)}

/* ---------- top bar (desktop) + tab bar (phone) ---------- */
.topbar{background:var(--pri);color:#fff;display:flex;align-items:center;gap:12px;padding:10px 16px;position:sticky;top:0;z-index:40}
.brand{min-height:44px;color:#fff;text-decoration:none;font:700 17px/1 var(--display);display:flex;align-items:center;gap:10px;white-space:nowrap}
.brand small{color:var(--pri-t);font:600 11px/1 var(--sans);text-transform:uppercase;letter-spacing:.08em;margin-left:-4px}
.brand .mark{width:22px;height:22px;border-radius:50%;background:linear-gradient(var(--acc) 0 44%,transparent 44% 56%,var(--acc) 56%)}
.brand .wm{letter-spacing:.01em}.brand .wm b{font-weight:800}
.topbar .brand .wm{text-transform:uppercase;letter-spacing:.16em;font:700 15px/1 var(--display)}.topbar .brand .wm b{font-weight:800}
.topnav{display:none}
.addbtn{margin-left:auto;background:var(--acc);color:var(--on-acc);text-decoration:none;font-weight:700;border-radius:999px;padding:9px 16px;min-height:40px;display:inline-flex;align-items:center}
.addbtn:hover{background:var(--acc-d);color:var(--on-acc)}
.logout{display:none;margin:0}
.logout button,.topbar .topnav a{color:var(--pri-t);background:none;border:0;font:inherit;cursor:pointer}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;background:var(--card);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:4px 4px calc(4px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(10,10,15,.06)}
.tabbar>a,.tabbar summary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;font-size:12px;font-weight:600;color:var(--muted);text-decoration:none;border-radius:12px;list-style:none;cursor:pointer}
.tabbar summary::-webkit-details-marker{display:none}
.tabbar .on,.tabbar details[open]>summary{color:var(--acc-text);background:var(--tint)}
.ic{font-style:normal;font-size:20px;line-height:1}
.ic-cal:before{content:"\25A6"}.ic-check:before{content:"\2713"}.ic-inbox:before{content:"\2709"}.ic-car:before{content:"\25C9"}.ic-more:before{content:"\22EF"}
.more{position:relative;display:block}
.more .menu{position:absolute;right:0;bottom:64px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);min-width:210px;padding:8px;display:flex;flex-direction:column}
.more .menu a,.more .menu button{display:block;width:100%;text-align:left;padding:13px 14px;border-radius:10px;color:var(--ink);text-decoration:none;font:600 16px var(--sans);background:none;border:0;cursor:pointer;min-height:46px}
.more .menu a:hover,.more .menu button:hover{background:var(--tint)}
.more .menu form{margin:0;border-top:1px solid var(--line);margin-top:6px;padding-top:6px}

/* ---------- messages ---------- */
.flash,.err,.warn,.errs,.notice{padding:12px 14px;margin:12px 0;border-radius:var(--rc);border:1px solid var(--line);border-left-width:4px;background:var(--card)}
.flash{border-left-color:var(--ok);background:#EEF8F3}
.err,.errs{border-left-color:var(--bad);background:#FDF0EE;color:#5c1612}
.warn{border-left-color:#D97706;background:var(--warnbg)}
.notice{border-left-color:var(--acc);background:var(--tint)}
.errs ul{margin:0;padding-left:20px}
.demo-banner{position:sticky;top:0;z-index:60;background:#b91c1c;color:#fff;text-align:center;font:600 14px/1.4 var(--sans);padding:6px 10px}
.demo-box{background:var(--warnbg);border:2px solid #d97706;padding:12px 14px;margin:12px 0;border-radius:var(--rc);font-size:15px}

/* ---------- buttons ---------- */
button.btn,a.btn,.btn{background:var(--acc);color:var(--on-acc);border:0;padding:12px 18px;min-height:46px;border-radius:var(--rc);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;font:600 16px var(--sans);gap:6px}
button.btn:hover,a.btn:hover{background:var(--acc-d);color:var(--on-acc)}
button.danger,.btn.danger{background:var(--bad);color:#fff}button.ok,.btn.ok{background:var(--ok);color:#fff}button.danger:hover,.btn.danger:hover,button.ok:hover,.btn.ok:hover{color:#fff;filter:brightness(.92)}
button.btn[disabled]{opacity:.45;cursor:not-allowed}
h1 .btn{font-size:15px;min-height:44px;padding:8px 14px;vertical-align:middle;margin-left:8px}

/* ---------- forms ---------- */
label{font-weight:600}
form.stack label,.grid2 label{display:block;margin:14px 0 6px}
input,select,textarea{font:16px var(--sans);color:var(--ink);padding:11px 12px;min-height:46px;border:1px solid var(--line2);border-radius:var(--rc);background:var(--card);max-width:100%}input:focus,select:focus,textarea:focus{border-color:var(--acc);outline:3px solid var(--tint);outline-offset:0}
input[type=checkbox],input[type=radio]{min-height:0;width:22px;height:22px;accent-color:var(--acc);vertical-align:middle}
form.stack input:not([type=checkbox]),form.stack select,form.stack textarea,.grid2 input,.grid2 select,.grid2 textarea{width:100%;min-width:0}
form.stack input[size]{width:auto}
form.stack input[type=date],form.stack input[type=time]{width:auto;min-width:0;display:inline-block;margin-right:6px}
form.stack,.grid2~*{max-width:640px}
form.stack{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px 18px 18px;box-shadow:var(--sh)}
fieldset{border:1px solid var(--line);border-radius:var(--rc);margin:14px 0;padding:10px 14px}legend{font-weight:700;padding:0 6px}
.grid2{display:grid;grid-template-columns:1fr;gap:0 16px;max-width:760px}
details{margin:10px 0}summary{cursor:pointer;font-weight:600;padding:8px 0;min-height:40px}
form.inline{display:inline}
code{background:var(--card);padding:2px 6px;border-radius:6px;border:1px solid var(--line)}

/* ---------- generic tables: scroll on phones, cards via .cards-m ---------- */
table{border-collapse:collapse;background:var(--card);border-radius:var(--rc);overflow:hidden;box-shadow:var(--sh)}
main>table,main>form>table{display:block;overflow-x:auto;max-width:100%}
th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--bg)}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
.badge{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;color:#fff;display:inline-block;line-height:1.3;vertical-align:middle}
.badge.Listed{background:var(--ok)}.badge.Unlisted{background:#646b75}.badge.Not-on-Turo{background:#7c3aed}.badge.archived{background:#6b7280}
.thumb{width:72px;height:48px;object-fit:cover;border-radius:8px;vertical-align:middle;background:linear-gradient(135deg,var(--ph2),var(--ph1))}
.photos{display:flex;flex-wrap:wrap;gap:12px}.photos figure{margin:0;width:180px}.photos img{width:180px;height:120px;object-fit:cover;border-radius:var(--rc)}
.todo-overdue{color:var(--bad);font-weight:700}
table.quote{display:block;overflow-x:auto}table.quote td,table.quote th{padding:8px 10px}

/* ---------- fleet grid ---------- */
.statrow{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:12px 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;box-shadow:var(--sh)}
.stat b{display:block;font:700 26px/1.1 var(--display);letter-spacing:-.03em;color:var(--ink)}.stat span{color:var(--muted);font-size:13px;line-height:1.2;display:block}
.stat.hot b{color:var(--acc-text)}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}
.toolbar a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);text-decoration:none;font-weight:600;color:var(--ink)}
.toolbar a.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.toolbar .gap{flex:1}
.legend{display:flex;flex-wrap:wrap;gap:8px 10px;margin:8px 0;color:var(--muted);font-size:13px}
.legend span{display:inline-flex;align-items:center;padding:3px 10px;color:#fff;border-radius:999px;font-size:12px;font-weight:600}
.legend.note{font-size:13px}
.gridwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card);box-shadow:var(--sh);-webkit-overflow-scrolling:touch}
.grid{border-collapse:separate;border-spacing:0;box-shadow:none;border-radius:0;overflow:visible;min-width:100%}
.grid th,.grid td{border-bottom:1px solid var(--rowline);border-right:1px solid var(--rowline);padding:0}
.grid th{text-align:center;font-size:11px;padding:6px 0;line-height:1.25;min-width:42px;text-transform:none;letter-spacing:0}
.grid th:first-child{position:sticky;left:0;z-index:3;text-align:left;padding-left:12px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;min-width:124px}
.grid td.day{width:42px;min-width:42px;height:44px;text-align:center}
.grid td.day a.add{color:#667085;font-weight:400;font-size:16px}
.grid td.day a{display:flex;align-items:center;justify-content:center;height:44px;color:#fff;text-decoration:none;font-weight:700;font-size:13px}
.grid td.req{background:repeating-linear-gradient(45deg,#fef3c7,#fef3c7 4px,#fff 4px,#fff 8px);outline:1px dashed #d97706;outline-offset:-2px}
.grid td.hold{background:repeating-linear-gradient(135deg,#bfdbfe,#bfdbfe 4px,#fff 4px,#fff 8px);outline:1px solid #2563eb;outline-offset:-2px}
.grid th.today,.mcal th.today{background:var(--today);color:var(--on-today)}
.mcal td>b.today{background:var(--today);color:var(--on-today)}
.grid th.wk{background:var(--wk)}
.grid td.carname{position:sticky;left:0;z-index:2;background:var(--card);min-width:124px;max-width:140px;padding:5px 8px 5px 12px;border-right:2px solid var(--line);white-space:normal;line-height:1.25}
.grid td.carname a{font-weight:700;font-size:14px;color:var(--ink);text-decoration:none;display:block}
.grid td.carname .badge{display:none;margin-top:3px;font-size:12px;padding:1px 8px}
.grid td.carname.Listed{box-shadow:inset 5px 0 var(--ok)}.grid td.carname.Unlisted{box-shadow:inset 5px 0 #b8bcbf}.grid td.carname.Not-on-Turo{box-shadow:inset 5px 0 #7c3aed}
.grid td.carname a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px}
.grid tr:hover td.day:not(.req):not(.hold){background-color:var(--bg)}
.legend span.holdkey{background:repeating-linear-gradient(135deg,#bfdbfe,#bfdbfe 4px,#fff 4px,#fff 8px);color:#1e3a8a;border:1px solid #2563eb}

/* ---------- month calendar ---------- */
.mcal{width:100%;table-layout:fixed;border-radius:var(--r)}
.mcal th{text-align:center;padding:8px 2px;font-size:11px}
.mcal td{vertical-align:top;height:78px;padding:3px;border-right:1px solid var(--rowline);overflow:hidden}
.mcal td.other{background:var(--bg);color:#5f6672}
.mcal td>b{font-size:13px;display:inline-block;min-width:22px;text-align:center;border-radius:999px}
.chip{display:block;color:#fff;padding:2px 4px;margin:2px 0;border-radius:6px;font-size:12px;line-height:1.25;text-decoration:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.chip.requested{background:var(--card)!important;color:#92400e;border:1px dashed #d97706}
.chip.hold{background:repeating-linear-gradient(135deg,#bfdbfe,#bfdbfe 6px,#fff 6px,#fff 12px)!important;color:#1e3a8a;border:1px solid #2563eb}

/* ---------- to-dos ---------- */
.todo-list{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:10px}
.todo{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px 10px 10px;box-shadow:var(--sh)}
.todo form{margin:0;flex:none}
.todo .tick{width:52px;height:52px;min-height:0;border-radius:50%;border:2px solid var(--pri);background:var(--card);color:var(--pri);font-size:24px;line-height:1;cursor:pointer;padding:0}
.todo.done{opacity:.65}.todo.done .tick{background:var(--ok);border-color:var(--ok);color:#fff}.todo.done .ttl{text-decoration:line-through}
.todo.overdue{border-left:5px solid var(--bad)}
.todo .ttl{font-weight:600;display:block;line-height:1.35}
.todo .meta{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:4px;font-size:14px;color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:4px;background:var(--tint);color:var(--acc-text);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700;text-decoration:none}
.pill.hot{background:#FDE7E4;color:#8f1d16}
.count{display:inline-block;background:var(--pri);color:#fff;border-radius:999px;font:700 14px var(--sans);padding:2px 10px;vertical-align:middle;margin-left:6px}
.empty{color:var(--muted);background:var(--card);border:1px dashed var(--line2);border-radius:var(--r);padding:14px;text-align:center}

/* ---------- requests ---------- */
.reqlist{display:grid;gap:12px;margin:12px 0}
.req-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh)}
.req-card.pending{border-left:6px solid var(--acc)}
.req-card .top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.req-card h3{margin:0;font-size:19px}
.req-card .when{font-weight:600;margin:6px 0 2px}
.req-card .who{color:var(--muted);font-size:15px;overflow-wrap:anywhere}
.req-card .acts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.req-card .acts form{margin:0}.req-card .acts .btn{width:100%}
.st{display:inline-block;border-radius:999px;padding:3px 12px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#e5e7eb;color:#374151}
.st.requested{background:#FEF0D0;color:#7a4a05}.st.approved,.st.confirmed{background:#D8F0E4;color:#17523a}.st.cancelled,.st.declined,.st.expired{background:#f1d9d6;color:#7a1d17}.st.held{background:#dbeafe;color:#1e3a8a}

/* ---------- cars / add-ons list as cards on phones ---------- */
.cards-m{display:block;background:transparent;box-shadow:none;overflow:visible}
.cards-m tr:first-child{display:none}
.cards-m,.cards-m tbody{display:block}
.cards-m tr{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-bottom:12px;box-shadow:var(--sh)}
.cards-m td{display:block;border:0;padding:0}
.cards-m td[data-label]:before{content:attr(data-label);display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.cards-m td.wide{grid-column:1/-1}

/* ---------- login ---------- */
.login{max-width:420px;margin:32px auto}
.login h1{font-size:34px}

/* ---------- agreement/holds misc ---------- */
.pol{white-space:pre-wrap}
td form.inline{margin:2px 4px 2px 0}

@media(min-width:620px){.grid2{grid-template-columns:1fr 1fr}.statrow{grid-template-columns:repeat(4,1fr)}}
@media(min-width:860px){
 .grid td.carname .badge{display:inline-block}.grid td.carname a{font-size:14px;-webkit-line-clamp:3}
 body.has-tabs{padding-bottom:0}
 main{padding:24px}
 h1{font-size:40px}
 .tabbar{display:none}
 .topnav{display:flex;gap:2px;margin-left:8px;flex-wrap:wrap}
 .topnav a{padding:8px 12px;border-radius:10px;text-decoration:none;font-weight:600;font-size:15px}
 .topnav a:hover{background:rgba(255,255,255,.12);color:#fff}
 .topnav a.on{background:rgba(255,255,255,.2);color:#fff}
 .logout{display:block}
 .logout button{padding:8px 12px;border-radius:10px}
 .logout button:hover{background:rgba(255,255,255,.12);color:#fff}
 .cards-m{display:table;background:var(--card);box-shadow:var(--sh);overflow:hidden}
 .cards-m tbody{display:table-row-group}
 .cards-m tr:first-child{display:table-row}
 .cards-m tr{display:table-row;background:none;border:0;border-radius:0;padding:0;margin:0;box-shadow:none}
 .cards-m td{display:table-cell;border-bottom:1px solid var(--line);padding:10px 12px}
 .cards-m td[data-label]:before{display:none}
 .reqlist{grid-template-columns:repeat(2,1fr)}
 .todo-list{grid-template-columns:1fr 1fr}
 .mcal td{height:100px}.chip{font-size:12px}
}
@media(min-width:1100px){.reqlist{grid-template-columns:repeat(3,1fr)}}
@media print{.topbar,.tabbar,.demo-banner{display:none}}
.btnrow{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.btnrow form{margin:0}
td .btn,.btn+.btn{margin:2px 0}
h1 small{font:500 16px var(--sans);letter-spacing:0;color:var(--muted)}
@media(max-width:859px){.toolbar{gap:6px}.toolbar a{padding:0 11px;font-size:15px}}
form.stack input[type=date]{width:58%}form.stack input[type=time]{width:auto;min-width:9.5em}
@media(min-width:620px){form.stack input[type=date],form.stack input[type=time]{width:auto}}
main>table.mcal{display:table;overflow:hidden;width:100%}
.dot{display:none}
@media(max-width:859px){.mcal td{height:70px;padding:2px}.mcal td>b{font-size:12px}
 .mcal .chip{display:none}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:3px 2px 0 0}}   /* phone: a colour bar per booking; the list below has the readable text */
.bklist{margin-top:8px}.bklist ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.bklist a{display:flex;flex-wrap:wrap;gap:2px 10px;align-items:center;min-height:48px;padding:8px 12px;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--ink);border-radius:10px;color:var(--ink);text-decoration:none;font-size:15px}
.bklist a span{color:var(--muted);font-size:14px}
@media(min-width:860px){.bklist ul{grid-template-columns:repeat(2,minmax(0,1fr))}}   /* desktop shows the readable list too: the cell chips are short */
.editlink,.crumbs a,.land-brand{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}

/* ---------- landing / sign-in (front door) ---------- */
body.no-tabs:has(.landing){background:var(--ink)}
.landing{box-shadow:0 0 0 100vmax var(--ink);clip-path:inset(0 -100vmax);min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:28px;max-width:520px;margin:0 auto;padding:28px 18px 40px;color:#fff}
.land-brand{display:inline-flex;align-items:center;gap:10px;color:#fff;text-decoration:none}
.land-brand .mark{width:26px;height:26px;border-radius:50%;background:linear-gradient(var(--acc) 0 44%,transparent 44% 56%,var(--acc) 56%)}
.land-brand .wm{text-transform:uppercase;letter-spacing:.16em;font:700 16px/1 var(--display)}.land-brand .wm b{font-weight:800}
.land-hero h1{font-size:clamp(34px,9vw,52px);margin:26px 0 12px;color:#fff}
.land-hero h1 span{color:var(--acc-dk)}
.land-sub{color:var(--pri-t);font-size:18px;margin:0;max-width:30em}
.land-card{background:var(--card);color:var(--ink);border-radius:var(--r);padding:22px 20px 18px;box-shadow:var(--sh2)}
.land-card h2{font-size:22px;margin:0 0 10px}
.land-form label{display:block;margin:12px 0 6px}
.land-form input[type=password]{width:100%;min-height:50px;font-size:18px}
.land-form .land-keep{display:flex;gap:10px;align-items:center;font-weight:500;color:var(--muted);margin:14px 0 4px}
.land-go{width:100%;margin-top:14px;min-height:52px;font-size:17px}
.land-fine{color:var(--muted);font-size:13px;margin:14px 0 0;text-align:center}
@media(min-width:900px){.landing{max-width:980px;flex-direction:row;align-items:center;gap:56px}.land-hero{flex:1.2}.land-card{flex:1;max-width:400px}}
/* ====================== design3: Today row + 17-car home (fleet.html) ====================== */
.today{margin:6px 0 4px}
.tstats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tstat{display:block;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--sh);text-decoration:none;color:var(--ink);min-height:84px}
.tstat b{display:block;font:700 30px/1.05 var(--display);letter-spacing:-.03em}
.tstat span{display:block;color:var(--muted);font-size:13px;line-height:1.25;margin-top:2px}
.tstat em{display:block;font-style:normal;font-size:12px;font-weight:600;color:var(--ink);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tstat.hot{border-color:var(--acc);box-shadow:0 0 0 2px var(--tint)}.tstat.hot b{color:var(--acc-text)}.tstat.hot em{color:var(--acc-text)}
.tstat:hover{border-color:var(--line2)}
.qactions{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:8px;margin:12px 0 0}
.qactions .btn{padding:10px 8px;font-size:15px;white-space:nowrap}
.btn.alt,a.btn.alt{background:var(--card);color:var(--ink);border:1.5px solid var(--ink)}
.btn.alt:hover,a.btn.alt:hover{background:var(--ink);color:#fff}
h2 .count+small{font:500 14px var(--sans);letter-spacing:0;color:var(--muted);margin-left:6px}
.carcards{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:1fr;gap:12px}
.carcard{--ca:#2347F5;--cb:#B9C8FF;position:relative;overflow:hidden;isolation:isolate;border-radius:var(--r);padding:16px 18px 14px;min-height:190px;color:#fff;background:linear-gradient(135deg,var(--ca) 0%,#0A0A0F 118%);box-shadow:var(--sh);display:flex;flex-direction:column}
.carcard:after{content:"";position:absolute;right:10px;top:46px;width:46%;aspect-ratio:244/100;background:url("silhouettes/sedan.svg") no-repeat center/contain;opacity:.2;z-index:-1;pointer-events:none}
.carcard.body-suv:after{background-image:url("silhouettes/suv.svg")}.carcard.body-coupe:after{background-image:url("silhouettes/coupe.svg")}.carcard.body-truck:after{background-image:url("silhouettes/truck.svg")}.carcard.body-hatch:after{background-image:url("silhouettes/hatch.svg")}
.carcard.body-crossover:after{background-image:url("silhouettes/crossover.svg")}.carcard.body-offroad:after{background-image:url("silhouettes/offroad.svg")}.carcard.body-ev:after{background-image:url("silhouettes/ev.svg")}
/* the same accent + silhouette on the /cars list thumbnails (no photo yet) */
.carthumb{--ca:#2347F5;position:relative;isolation:isolate;overflow:hidden;display:block;border-radius:10px;background:linear-gradient(135deg,var(--ca) 0%,#0A0A0F 118%)}
.carthumb:after{content:"";position:absolute;inset:6px;background:url("silhouettes/sedan.svg") no-repeat center/contain;opacity:.55;z-index:-1}
.carthumb.body-suv:after{background-image:url("silhouettes/suv.svg")}.carthumb.body-coupe:after{background-image:url("silhouettes/coupe.svg")}.carthumb.body-truck:after{background-image:url("silhouettes/truck.svg")}.carthumb.body-hatch:after{background-image:url("silhouettes/hatch.svg")}
.carthumb.body-crossover:after{background-image:url("silhouettes/crossover.svg")}.carthumb.body-offroad:after{background-image:url("silhouettes/offroad.svg")}.carthumb.body-ev:after{background-image:url("silhouettes/ev.svg")}
.carthumb.accent-2{--ca:#1B2A6B}.carthumb.accent-3{--ca:#3D5AFE}.carthumb.accent-4{--ca:#0F172A}.carthumb.accent-5{--ca:#334155}.carthumb.accent-6{--ca:#1E3A8A}.carthumb.accent-7{--ca:#4A5CE0}.carthumb.accent-8{--ca:#475569}
.accent-1{--ca:#2347F5;--cb:#C4D0FF}.accent-2{--ca:#1B2A6B;--cb:#A9B8F5}.accent-3{--ca:#3D5AFE;--cb:#D0D8FF}.accent-4{--ca:#0F172A;--cb:#94A3B8}
.accent-5{--ca:#334155;--cb:#CBD5E1}.accent-6{--ca:#1E3A8A;--cb:#9DB4FF}.accent-7{--ca:#4A5CE0;--cb:#C9D0FF}.accent-8{--ca:#475569;--cb:#E2E8F0}
.cc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.cc-year{font:600 14px var(--sans);color:var(--cb)}
.cc-name{margin:14px 0 0;display:flex;flex-direction:column;line-height:1.05}
.cc-make{font:300 20px var(--display);letter-spacing:-.01em;color:var(--cb)}
.cc-model{font:700 26px var(--display);letter-spacing:-.03em;color:#fff;text-decoration:none;display:inline-block;min-height:44px;padding-top:2px;overflow-wrap:anywhere}
.cc-model:hover{color:var(--cb)}
.cc-trim{margin:0;color:var(--cb);font-size:14px}
.cc-price{margin:8px 0 0;font-size:14px;color:rgba(255,255,255,.88)}.cc-price b{font:700 21px var(--display);color:#fff;letter-spacing:-.02em}
.cc-price small{display:block;width:max-content;margin:4px 0 0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--warnbg);color:#7a4a05;border-radius:6px;padding:2px 8px}
.cc-unk{font-weight:600;color:#fff}
.cc-lbl{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--cb)}.cc-floor{font-weight:600;color:#fff;font-size:14px}
.cc-when{margin:8px 0 0;font-size:15px;line-height:1.4;font-weight:600;color:#fff}.cc-next{font-weight:400;color:rgba(255,255,255,.82);font-size:14px}
.cc-open{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;min-height:44px;padding:0 4px;color:#fff;font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.carcard.st-paused{filter:saturate(.35)}
.stb{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:700;line-height:1.3}
.stb:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.stb.available{background:#E3F4EB;color:#14573D}.stb.booked{background:var(--tint);color:#1A38D1}.stb.trip{background:var(--ink);color:#fff}.stb.paused{background:#E5E7EB;color:#374151}
@media(min-width:720px){
 .tstats{grid-template-columns:repeat(4,minmax(0,1fr))}
 .qactions{display:flex;gap:10px}.qactions .btn{padding:10px 18px}
 .carcards{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
 .carcard{min-height:230px}
}

.addbtn,.logout button{white-space:nowrap}
@media(min-width:860px) and (max-width:1399px){.topnav a{padding:8px 8px;font-size:14px}.topnav{gap:0}}
.tempty{margin:12px 0 0;padding:12px 14px;border-radius:var(--rc);background:var(--tint);color:var(--ink);font-size:15px}.tempty b{font-family:var(--display)}.tempty a{font-weight:700;margin-left:4px}
.bigempty{margin:14px 0;padding:28px 20px;text-align:center;background:var(--card);border:1px dashed var(--line2);border-radius:var(--r)}
.bigempty b{display:block;font:700 20px var(--display);letter-spacing:-.02em;margin-bottom:6px}.bigempty p{margin:0 auto 16px;max-width:30em;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-family:var(--display)}.empty span{display:block;font-size:14px}
.cc-price small{display:block;width:max-content;margin:4px 0 0}
/* tap targets + text floor (design3 audit) */
.addbtn{min-height:44px}
.brand small{font-size:12px}
.tabbar>a,.tabbar summary{font-size:14px}
.stb{font-size:14px}
.tstat span,.tstat em{font-size:14px}
.grid th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;min-width:44px}
.grid td.day{width:44px;min-width:44px}
.grid td.day a{font-size:14px}
.grid td.carname a.cn,.grid td.carname a{font-size:14px;min-height:44px;align-content:center;box-sizing:border-box;padding:6px 0}
.mcal th{font-size:12px;text-transform:uppercase}
.legend span,.legend span.holdkey{font-size:14px}
em{font-size:inherit}
summary{min-height:44px;display:flex;align-items:center}
.grid td.day{width:45px;min-width:45px}.grid th{min-width:45px}

/* ---------- tap targets (44px) + file input as a button ---------- */
@media(min-width:860px){.topnav a{display:inline-flex;align-items:center;min-height:44px}}
@media(max-width:859px){
 .cards-m a:not(.btn){display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 6px}
 .cards-m .btn,.cards-m button{min-height:44px}
 .cards-m input:not([type=checkbox]):not([type=hidden]){min-height:44px}
 .cards-m input[type=checkbox]{width:24px;height:24px;margin:10px}
 .cards-m td[data-label="Public"]{display:flex;align-items:center;min-height:44px}
 input[type=checkbox],input[type=radio]{width:22px;height:22px}
 label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:flex;align-items:center;gap:10px;min-height:44px}
}
input[type=file]{font:inherit;color:var(--muted);max-width:100%}
input[type=file]::file-selector-button{font:600 15px var(--sans);min-height:44px;padding:0 18px;margin-right:12px;border:1.5px solid #2347F5;border-radius:10px;background:#2347F5;color:#fff;cursor:pointer}
input[type=file]::file-selector-button:hover{background:#1A38D1;border-color:#1A38D1}
input[type=checkbox],input[type=radio]{width:26px!important;height:26px!important;min-width:26px}
label:has(input[type=checkbox]),label:has(input[type=radio]){display:flex;align-items:center;gap:10px;min-height:44px}

/* round 4: desktop booking chips wrap (no clipped 'Turo …–… Turo guest'), cells grow with their chips */
@media(min-width:860px){
 .mcal td{overflow:visible;height:auto;min-height:100px}
 .mcal .chip{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;padding:3px 5px;line-height:1.3}
}
/* round 4: fleet calendar car-name column shows the WHOLE name (no clamped, half-cut third line); stat tiles wrap instead of truncating */
.grid td.carname a,.grid td.carname a.cn{display:block;-webkit-line-clamp:unset;-webkit-box-orient:unset;overflow:visible;min-height:0;padding:2px 0;line-height:1.3;overflow-wrap:anywhere}
.grid td.carname{padding-top:6px;padding-bottom:6px}
.tstat em{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.3}
/* round 4: the error page's single button sits evenly inside its card */
.land-card>.land-go:only-child{margin-top:0}
.land-card:has(>.land-go:only-child){padding:20px}
/* round 4: every checkbox has a real 44x44 hit area (the box you SEE stays ~26px: a transparent 9px border around it) */
input[type=checkbox]{-webkit-appearance:none;appearance:none;box-sizing:border-box;width:44px!important;height:44px!important;min-width:44px;min-height:44px!important;margin:0!important;padding:0;
 border:9px solid transparent;background:var(--card);background-clip:padding-box;box-shadow:inset 0 0 0 2px var(--muted);border-radius:14px;cursor:pointer;flex:none;vertical-align:middle;
 background-repeat:no-repeat;background-position:center;background-size:100% 100%}
input[type=checkbox]:checked{background-color:var(--acc);box-shadow:inset 0 0 0 2px var(--acc);background-image:url("check.svg")}
input[type=checkbox]:focus-visible{outline:3px solid var(--acc);outline-offset:-3px}
input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}
.cards-m input[type=checkbox]{margin:0!important}
/* round 4: desktop /cars links (car name, Edit) are 44px tall hit areas */
table.cards-m td>a:not(.btn),table.cards-m td>form+a{display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
/* round 4: chips spell out the whole range (e.g. "Oct 17 17:30 → Oct 22 11:00"), wrapping instead of clipping */
.chip .cw{display:block}.chip .cg{display:block;opacity:.9;font-size:12px}
.grid td.carname a{display:flex;align-items:center;min-height:44px}
.carcard .cc-model,.carcard .cc-open{display:inline-flex;align-items:center;min-height:44px}
.topbar form button,form.logout button{min-height:44px}
table.cards-m td>a:not(.btn),table.cards-m td>form+a{min-width:44px;justify-content:center}

/* round 5 QA: equal-height fleet cards (every row the height of the tallest card, "Calendar ->" pinned to the bottom); "Not listed" badge never wraps; 44px tap height for the inline Pricing link on /extras */
@media(min-width:720px){.carcards{grid-auto-rows:1fr}}
.carcard>.cc-open{margin-top:auto}
.pv-head>div{min-width:0}.pv-head .badge{white-space:nowrap;flex:none}
.tap-link{display:inline-block;min-height:44px;line-height:44px;padding:0;margin:-12px 0;vertical-align:middle}
/* run10 polish: "Add a booking" in the quiet-day banner is a 44px tap target; accountant badges never wrap inside labels/headings */
.tempty a{display:inline-flex;align-items:center;min-height:44px;padding:0 6px}
label .badge,h2 .badge{white-space:nowrap}

/* run16 mobile nits: checkbox labels that carry a badge keep a readable text column (the badge wraps UNDER the text, indented to it) at 360px; the quiet-day link starts flush with the sentence when it wraps */
label:has(.lbl){flex-wrap:wrap}
label .lbl{flex:1 1 12em;min-width:0}
label:has(.lbl) .badge{flex:none}
@media(max-width:480px){label:has(.lbl) .badge{margin-left:54px}}
.tempty a{margin-left:-6px}
