:root{color-scheme:light dark;font-family:Inter,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;font-synthesis:none;--bg:#f5f8fc;--surface:#fff;--surface2:#eef3f9;--ink:#14243e;--muted:#667d9a;--line:#dde5ee;--blue:#076bff;--orange:#ff8100;--green:#118c37;--red:#d04a36;--shadow:0 8px 28px #1437630c}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--bg:#0c151e;--surface:#15212d;--surface2:#1d2d3e;--ink:#edf5ff;--muted:#a0b2c6;--line:#2a3c50;--blue:#2482ff;--orange:#ff850c;--green:#75e16f;--red:#ff8171;--shadow:0 8px 28px #0003}}
:root[data-theme="dark"]{color-scheme:dark;--bg:#0c151e;--surface:#15212d;--surface2:#1d2d3e;--ink:#edf5ff;--muted:#a0b2c6;--line:#2a3c50;--blue:#2482ff;--orange:#ff850c;--green:#75e16f;--red:#ff8171;--shadow:0 8px 28px #0003}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:calc(28px * var(--font-scale, 1))}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #70aafa;outline-offset:2px}#app{max-width:1050px;margin:auto;min-height:100dvh;padding-bottom:95px}.topbar{height:72px;padding:10px 18px;display:flex;align-items:center;gap:12px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{display:flex;gap:9px;align-items:center;margin-right:auto;font-size:calc(46px * var(--font-scale, 1));font-weight:900;letter-spacing:.4px;color:var(--blue)}.brand img{width:46px;height:46px;border-radius:12px}.brand small{display:block;letter-spacing:2px;font-size:calc(18px * var(--font-scale, 1));color:var(--muted)}.icon-button{border:0;background:var(--surface2);color:var(--ink);font-size:calc(46px * var(--font-scale, 1));width:42px;height:42px;border-radius:13px}.mobile-back{font-size:calc(60px * var(--font-scale, 1))}.bottom-nav{height:76px;position:fixed;bottom:0;left:50%;transform:translateX(-50%);max-width:1050px;width:100%;background:var(--surface);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-around;z-index:20;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{color:var(--muted);border:0;background:none;min-width:55px;font-size:calc(22px * var(--font-scale, 1));display:flex;align-items:center;flex-direction:column;gap:4px}.bottom-nav span{font-size:calc(48px * var(--font-scale, 1));line-height:1.2}.bottom-nav button.active{color:var(--orange)}.bottom-nav button.nav-add span{background:var(--blue);color:white;width:49px;height:49px;display:grid;place-items:center;border-radius:50%;box-shadow:var(--shadow);font-size:calc(68px * var(--font-scale, 1));margin-top:-20px}.page{padding:20px clamp(14px,3vw,30px)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.page h1{font-size:calc(44px * var(--font-scale, 1));margin:0;font-weight:750;letter-spacing:-.3px}.page h2{font-size:calc(34px * var(--font-scale, 1));margin:18px 0 12px}.sub{font-size:calc(24px * var(--font-scale, 1));color:var(--muted);margin-top:5px}.categories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tile,.card,.row-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:15px}.tile{min-width:0;text-align:left;overflow:hidden;padding:0;color:var(--ink)}.tile-hero{height:106px;background:linear-gradient(140deg,#d3ebff,#8dcafb);display:grid;place-items:center;font-size:calc(120px * var(--font-scale, 1))}.tile:nth-child(2) .tile-hero{background:linear-gradient(140deg,#cce3fb,#80b2e5)}.tile:nth-child(3) .tile-hero{background:linear-gradient(140deg,#e2effb,#b6d2e8)}.tile:nth-child(4) .tile-hero{background:linear-gradient(140deg,#d8ebf7,#84bdd6)}.tile-text{padding:12px;display:flex;justify-content:space-between;gap:5px;align-items:center}.tile-text b{font-size:calc(30px * var(--font-scale, 1))}.tile-text small{color:var(--muted);display:block;margin-top:5px;font-size:calc(22px * var(--font-scale, 1))}.blue-circle{border-radius:50%;border:1.5px solid var(--blue);color:var(--blue);padding:3px;font-weight:bold;font-size:calc(38px * var(--font-scale, 1))}.search{background:var(--surface2);border:1px solid var(--line);width:100%;padding:15px;border-radius:12px;color:var(--ink);margin:0 0 15px}.row-card{padding:13px;display:flex;align-items:center;gap:13px;margin-bottom:10px;min-width:0}.row-card[role=button]{cursor:pointer}.vehicle-mark{width:56px;height:52px;flex:none;border-radius:12px;display:grid;place-items:center;font-size:calc(68px * var(--font-scale, 1));background:var(--surface2)}.grow{flex:1;min-width:0}.grow strong{font-size:calc(34px * var(--font-scale, 1))}.grow p{margin:4px 0;color:var(--muted);font-size:calc(24px * var(--font-scale, 1));overflow-wrap:anywhere}.chevron{font-size:calc(52px * var(--font-scale, 1));color:var(--blue)}.pill{border-radius:20px;font-size:calc(22px * var(--font-scale, 1));padding:4px 9px;font-weight:650;background:#dff9e5;color:#137d37;white-space:nowrap}.badge-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card{padding:17px;margin-bottom:15px}.two-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.field{display:block;margin-bottom:13px}.field span{display:block;font-weight:600;color:var(--muted);font-size:calc(24px * var(--font-scale, 1));margin-bottom:6px}.field input,.field select,.field textarea{width:100%;min-width:0;padding:12px;border-radius:10px;background:var(--surface2);color:var(--ink);border:1px solid var(--line)}.field textarea{resize:vertical;min-height:75px}.btn{border:1px solid var(--line);color:var(--ink);background:var(--surface2);padding:12px 14px;border-radius:10px;font-weight:650;display:inline-flex;gap:8px;align-items:center;justify-content:center;text-align:center}.btn.primary{background:var(--blue);border-color:var(--blue);color:white}.btn.orange{background:var(--orange);border-color:var(--orange);color:#fff}.btn.outline{color:var(--blue);background:transparent;border-color:var(--blue)}.btn.block{width:100%;margin-top:8px}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions .btn{flex:1}.facts{margin:0}.facts>div{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);padding:12px 0}.facts dt{color:var(--muted);font-size:calc(24px * var(--font-scale, 1))}.facts dd{margin:0;text-align:right;overflow-wrap:anywhere;font-weight:600}.tabs{display:flex;background:var(--surface2);padding:5px;border-radius:11px;margin:15px 0}.tabs button{flex:1;padding:10px;border:0;border-radius:8px;background:transparent;color:var(--muted)}.tabs .selected{background:var(--blue);color:white}.measurements{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.measurements .field span{font-size:calc(22px * var(--font-scale, 1))}.measurements .field input{padding:9px 5px;text-align:center;font-size:calc(36px * var(--font-scale, 1));font-weight:700;color:var(--green)}.worklist label{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:calc(26px * var(--font-scale, 1))}.worklist input{accent-color:var(--blue);width:18px;height:18px}.muted{color:var(--muted)}.empty{text-align:center;padding:45px 15px;color:var(--muted)}.empty b{display:block;color:var(--ink);margin:10px}.small{font-size:calc(24px * var(--font-scale, 1))}#notice{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);background:#1b344e;color:white;padding:12px 18px;border-radius:12px;z-index:200;display:none;width:max-content;max-width:90vw}#notice.show{display:block}dialog{border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);width:min(95vw,460px);max-height:90dvh;box-shadow:0 15px 80px #0004}dialog::backdrop{background:#001c3a9c}dialog form{max-height:82dvh;overflow:auto;padding:8px}dialog h2{margin:5px 0 18px}.import-status{font-size:calc(24px * var(--font-scale, 1));line-height:1.6}.photo-preview{width:100%;max-height:190px;object-fit:contain;border-radius:12px;background:var(--surface2)}.setting-line{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:13px 0}.setting-line select{width:auto}.responsive-tabs{overflow-x:auto}.underline-link{color:var(--blue);text-decoration:underline;background:none;border:0}.row-card .pill{align-self:flex-start}.works-date{font-size:calc(26px * var(--font-scale, 1));color:var(--muted)}.work-summary{display:flex;gap:15px;flex-wrap:wrap;font-size:calc(24px * var(--font-scale, 1));color:var(--green);margin-top:6px}.red{color:var(--red)}@media(min-width:720px){.categories{grid-template-columns:repeat(4,1fr)}.tile-hero{height:160px;font-size:calc(160px * var(--font-scale, 1))}.bottom-nav{border-radius:20px 20px 0 0}.page{padding-top:30px}.page h1{font-size:calc(54px * var(--font-scale, 1))}}

/* Extra controls for completed vehicle and backup flows. */
.vehicle-row,.history-row{border:1px solid var(--line);cursor:pointer}.vehicle-banner{display:block;max-width:100%;max-height:225px;object-fit:cover;border-radius:16px;margin:0 auto 15px}.plate-heading{font-size:calc(48px * var(--font-scale, 1));font-weight:850;letter-spacing:1px;margin:3px 0 10px}.photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.photos img{width:100%;height:130px;object-fit:cover}.photos small{color:var(--muted)}#notice.error{background:#9c2e20}.form{margin-top:20px}.form .btn.block{margin-bottom:8px}@media(max-width:380px){.measurements{grid-template-columns:1fr 1fr 1fr;gap:4px}.measurements .field input{font-size:calc(30px * var(--font-scale, 1))}.topbar{height:64px;padding:8px 12px}.brand{font-size:calc(40px * var(--font-scale, 1))}.brand img{width:40px;height:40px}.row-card{gap:8px}.vehicle-mark{width:44px}.page{padding:13px}}

/* Stable compact buttons on narrow phones, no overlapping backup actions. */
.backup-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.backup-actions .btn{min-width:0;min-height:50px;padding:9px 4px;gap:4px;font-size:clamp(calc(20px * var(--font-scale, 1)),calc(5.4vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));white-space:nowrap}.compact-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.compact-actions .btn{min-width:0;min-height:50px;padding:8px 5px;font-size:clamp(calc(22px * var(--font-scale, 1)),calc(6vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)))}
@media(max-width:350px){.backup-actions{gap:5px}.backup-actions .btn{font-size:calc(20px * var(--font-scale, 1))}}

/* CP-07 unified vector icons, single bus tile and compact actions. */
.ui-icon{display:inline-block;flex:none;width:21px;height:21px;vertical-align:middle;stroke:currentColor;fill:none}
.icon-button .ui-icon{width:23px;height:23px}
.icon-button [data-icon]{display:grid;place-items:center;width:100%;height:100%}
.bottom-nav [data-icon]{display:grid;place-items:center;width:25px;height:25px}
.bottom-nav [data-icon] .ui-icon{width:23px;height:23px}
.bottom-nav .nav-add [data-icon]{display:grid;place-items:center;background:var(--blue);color:white;width:49px;height:49px;border-radius:50%;box-shadow:var(--shadow);margin-top:-20px}
.bottom-nav .nav-add [data-icon] .ui-icon{width:30px;height:30px}
.btn>.ui-icon{width:19px;height:19px}
.btn-label{min-width:0;white-space:normal;overflow-wrap:normal}
.heading-icon{display:flex;align-items:center;gap:8px}.heading-icon>.ui-icon{color:var(--blue)}
.categories-bus{grid-template-columns:minmax(0,1fr);max-width:470px;margin-inline:auto}
.categories-bus .tile-hero{height:150px;background:linear-gradient(135deg,#d9ebff,#86bdf8)}
.categories-bus .tile-text{display:block;padding:14px 17px 10px}
.categories-bus .tile-text b{font-size:calc(38px * var(--font-scale, 1))}
.categories-bus .tile-text small{font-size:calc(24px * var(--font-scale, 1))}
.category-mark{width:110px;height:110px;border-radius:25px;background:#ffffffbd;display:grid;place-items:center;color:#1254a5;box-shadow:0 10px 20px #0f4b8533}
.category-icon{width:76px;height:76px;stroke-width:1.55}
.tile-more{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 14px 14px;padding:10px 13px;border:1px solid color-mix(in srgb,var(--blue) 34%,var(--line));border-radius:11px;background:var(--surface2);color:var(--blue);font-size:calc(26px * var(--font-scale, 1));font-weight:700}
.tile-more-arrow{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff}
.tile-more-arrow .ui-icon{width:16px;height:16px}
.tile:active .tile-more-arrow{transform:translateX(2px)}
.vehicle-mark .ui-icon{width:30px;height:30px;color:var(--blue)}
.chevron{display:grid;place-items:center;color:var(--blue)}.chevron .ui-icon{width:20px;height:20px}
.setting-line .btn .ui-icon{width:17px;height:17px}
.backup-actions .btn{gap:4px}.backup-actions .btn>.ui-icon{width:16px;height:16px}

/* History: sort/filter, multi-select, swipe reveal and long-press menu. */
.history-panel{min-width:0}
.history-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:13px;background:var(--surface);border:1px solid var(--line);border-radius:13px;margin-bottom:12px}
.history-filter .field{margin:0;min-width:0}
.history-filter .field input,.history-filter .field select{min-width:0;font-size:calc(26px * var(--font-scale, 1));padding:11px 8px;min-height:45px}
.history-filter .history-sort{grid-column:1/-1}
.history-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:9px 0 12px}
.history-count{font-size:calc(24px * var(--font-scale, 1));color:var(--muted);font-weight:600}
.history-toolbar>.btn{padding:9px 12px;flex-shrink:0}
.history-select-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:13px}
.history-select-actions .btn{padding:11px 4px;font-size:calc(22px * var(--font-scale, 1));min-width:0;white-space:nowrap;gap:3px}
.history-select-actions .btn>.ui-icon{width:15px;height:15px}
.history-entry{position:relative;border-radius:14px;margin-bottom:10px;overflow:hidden;isolation:isolate;background:var(--surface2);border:1px solid var(--line)}
.history-front{display:flex;align-items:stretch;position:relative;z-index:2;background:var(--surface);width:100%;transition:transform .19s ease-out}
.history-entry.swiped .history-front{transform:translateX(-148px)}
.history-entry .history-row{background:var(--surface);border:0;box-shadow:none;border-radius:13px;flex:1;margin:0;min-width:0;padding:12px 10px;gap:8px;justify-content:flex-start;text-align:left;color:var(--ink)}
.history-entry .history-row .vehicle-mark{width:40px;height:43px;font-size:calc(40px * var(--font-scale, 1))}
.history-entry .history-row .grow strong{font-size:calc(30px * var(--font-scale, 1))}
.history-entry .history-row .grow p{font-size:calc(24px * var(--font-scale, 1));line-height:1.35}
.history-row-actions{display:flex;position:absolute;right:0;top:0;bottom:0;width:148px;align-items:stretch;justify-content:stretch;z-index:1}
.history-row-actions>button{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;font-size:calc(22px * var(--font-scale, 1));font-weight:650;border:none;background:var(--surface2);color:var(--blue)}
.history-row-actions>button.danger{background:#b93229;color:white}
.history-row-actions .ui-icon{width:20px;height:20px}
.history-entry.is-selected{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.history-checkbox{display:flex;align-items:center;justify-content:center;padding:0 6px 0 12px;min-width:42px}
.history-checkbox input{width:21px;height:21px;accent-color:var(--blue)}
.history-hint{margin:10px 1px 20px;text-align:center}
.danger-btn{color:#fff;background:#b93229;border-color:#b93229}
.modal-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}
.modal-actions .btn{min-width:0;padding:12px 6px}
@media(min-width:720px){.categories-bus{grid-template-columns:minmax(0,1fr)}.history-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.history-filter .history-sort{grid-column:auto}}
@media(max-width:365px){.history-select-actions .btn{font-size:calc(20px * var(--font-scale, 1));padding:9px 2px}.history-select-actions .btn>.ui-icon{width:14px}.history-entry .history-row .vehicle-mark{width:32px}.history-entry .history-row{padding:10px 6px}}

/* On Android WebView keep horizontal history gesture in JS without blocking vertical page scroll. */
.history-entry{touch-action:pan-y}
.history-entry .history-front{will-change:transform}

/* CP-08: a more substantial coach pictogram and uncluttered single fleet tile. */
.categories-bus .tile-hero{height:170px;background:linear-gradient(135deg,#0b2f59,#125a9b 70%,#1e77c9)}
.categories-bus .category-mark{width:136px;height:124px;border-radius:23px;background:linear-gradient(150deg,#f7fcff,#d5eafd);color:#0a4381;border:2px solid #ffffffba;box-shadow:0 11px 26px #001e3970,inset 0 1px 0 #fff}
.categories-bus .category-icon{width:100px;height:100px;stroke-width:1.5}
.categories-bus .tile-text b{font-size:calc(40px * var(--font-scale, 1))}
.fleet-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:13px;border-radius:14px;background:var(--surface);border:1px solid var(--line);margin-bottom:7px}
.fleet-filter .field{min-width:0;margin:0}
.fleet-filter .field input,.fleet-filter .field select{font-size:calc(26px * var(--font-scale, 1));min-width:0;min-height:45px;padding:10px 7px}
.fleet-filter-hint{margin:4px 0 13px}
.fleet-entry{position:relative;isolation:isolate;overflow:hidden;border:1px solid var(--line);border-radius:14px;margin:0 0 10px;background:var(--surface2);touch-action:pan-y}
.fleet-front{display:flex;position:relative;z-index:2;background:var(--surface);transition:transform .19s ease-out;will-change:transform}
.fleet-entry.swiped .fleet-front{transform:translateX(-148px)}
.fleet-entry.is-selected{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
.fleet-entry .row-card{background:var(--surface);border:0;border-radius:13px;box-shadow:none;min-width:0;margin:0;flex:1;color:var(--ink);text-align:left;width:100%;padding:12px 10px;gap:9px}
.fleet-entry .vehicle-mark{width:44px;height:48px}
.fleet-entry .vehicle-mark .ui-icon{width:35px;height:35px;stroke-width:1.65}
.fleet-checkbox{display:flex;align-items:center;justify-content:center;min-width:44px;padding:0 5px 0 12px}
.fleet-checkbox input{width:21px;height:21px;accent-color:var(--blue)}
.fleet-row-actions{position:absolute;right:0;top:0;bottom:0;width:148px;display:flex;z-index:1}
.fleet-row-actions>button{flex:1;border:0;min-width:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;color:var(--blue);font-size:calc(22px * var(--font-scale, 1));font-weight:650;background:var(--surface2)}
.fleet-row-actions>button.danger{background:#b93229;color:#fff}
.fleet-row-actions .ui-icon{width:20px;height:20px}
@media(min-width:720px){.fleet-filter{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:365px){.fleet-entry .row-card{padding:10px 6px;gap:6px}.fleet-entry .vehicle-mark{width:37px}.fleet-entry .vehicle-mark .ui-icon{width:29px;height:29px}}


/* CP-09: approximately 2x real-world reading sizes with mobile-first reflow.
   Let content grow vertically. Never shrink text or cut it off to fit old cards. */
body{line-height:1.42;overflow-wrap:break-word}
#app{padding-bottom:calc(120px + env(safe-area-inset-bottom))}
.topbar{height:auto;min-height:92px;padding:13px 14px;gap:10px}
.brand{font-size:clamp(calc(31px * var(--font-scale, 1)),calc(8vw * var(--font-scale, 1)),calc(46px * var(--font-scale, 1)));line-height:1.06;min-width:0;letter-spacing:0}
.brand img{width:58px;height:58px;flex:none}
.brand small{font-size:clamp(calc(15px * var(--font-scale, 1)),calc(4vw * var(--font-scale, 1)),calc(21px * var(--font-scale, 1)));letter-spacing:.7px;line-height:1.2;margin-top:4px}
.icon-button{width:51px;height:51px;flex:none}
.page{padding:23px 13px 28px}
.page h1{font-size:clamp(calc(33px * var(--font-scale, 1)),calc(9vw * var(--font-scale, 1)),calc(46px * var(--font-scale, 1)));line-height:1.15;overflow-wrap:break-word}
.page h2,dialog h2{font-size:clamp(calc(28px * var(--font-scale, 1)),calc(7.1vw * var(--font-scale, 1)),calc(37px * var(--font-scale, 1)));line-height:1.2}
.page-head{align-items:flex-start;flex-wrap:wrap;gap:15px}
.page-head .btn{max-width:100%}
.card{padding:18px;margin-bottom:19px}
.sub,.muted,.empty,.history-hint,.fleet-filter-hint{font-size:clamp(calc(20px * var(--font-scale, 1)),calc(5.5vw * var(--font-scale, 1)),calc(25px * var(--font-scale, 1)));line-height:1.4}
.btn{font-size:clamp(calc(23px * var(--font-scale, 1)),calc(6.3vw * var(--font-scale, 1)),calc(29px * var(--font-scale, 1)));min-height:65px;padding:14px 15px;line-height:1.2;white-space:normal;overflow-wrap:break-word}
.btn>.ui-icon{width:26px;height:26px}
.actions{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.actions .btn{width:100%;min-width:0;flex:auto}
.field{min-width:0}
.field span{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.5vw * var(--font-scale, 1)),calc(26px * var(--font-scale, 1)));line-height:1.25}
.field input,.field select,.field textarea,.search{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(6vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));min-height:66px;line-height:1.3;padding:13px 12px;max-width:100%}
.field textarea{min-height:120px}
.two-cols,.measurements{grid-template-columns:minmax(0,1fr);gap:12px}
.measurements .field span{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.5vw * var(--font-scale, 1)),calc(26px * var(--font-scale, 1)))}
.measurements .field input{font-size:clamp(calc(25px * var(--font-scale, 1)),calc(6.8vw * var(--font-scale, 1)),calc(30px * var(--font-scale, 1)));padding:13px}
.tile-text b,.categories-bus .tile-text b{font-size:clamp(calc(28px * var(--font-scale, 1)),calc(7.6vw * var(--font-scale, 1)),calc(39px * var(--font-scale, 1)));line-height:1.18}
.tile-text small{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.9vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));line-height:1.25}
.tile-more{font-size:clamp(calc(23px * var(--font-scale, 1)),calc(6.4vw * var(--font-scale, 1)),calc(29px * var(--font-scale, 1)));padding:13px 14px;gap:12px}
.tile-more-arrow{width:44px;height:44px;flex:none}
.tile-more-arrow .ui-icon{width:25px;height:25px}
.categories-bus .tile-text{padding:18px}
.row-card,.fleet-entry .row-card,.history-entry .history-row{padding:16px 12px;gap:12px;min-height:100px}
.grow strong,.history-entry .history-row .grow strong{font-size:clamp(calc(25px * var(--font-scale, 1)),calc(6.9vw * var(--font-scale, 1)),calc(32px * var(--font-scale, 1)));line-height:1.25;overflow-wrap:anywhere}
.grow p,.history-entry .history-row .grow p,.fleet-entry .row-card p{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));line-height:1.4;margin:6px 0}
.vehicle-mark,.fleet-entry .vehicle-mark,.history-entry .history-row .vehicle-mark{width:61px;height:65px;flex:none}
.vehicle-mark .ui-icon,.fleet-entry .vehicle-mark .ui-icon{width:45px;height:45px}
.chevron .ui-icon{width:29px;height:29px}
.facts{min-width:0}
.facts>div{flex-wrap:wrap;gap:6px 15px;line-height:1.4}
.facts dt,.facts dd{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)))}
.tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:8px}
.tabs button{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));min-height:59px;padding:10px 8px;overflow-wrap:break-word}
.worklist label{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));line-height:1.35;padding:11px 0}
.worklist input,.history-checkbox input,.fleet-checkbox input{width:26px;height:26px;flex:none}
.pill,.history-count{font-size:clamp(calc(20px * var(--font-scale, 1)),calc(5.5vw * var(--font-scale, 1)),calc(25px * var(--font-scale, 1)));line-height:1.3;white-space:normal}
.history-filter,.fleet-filter{grid-template-columns:minmax(0,1fr);gap:12px;padding:14px}
.history-filter .history-sort{grid-column:auto}
.history-filter .field input,.history-filter .field select,
.fleet-filter .field input,.fleet-filter .field select{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(6vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));min-height:60px;padding:12px 10px}
.history-toolbar{flex-wrap:wrap;align-items:center;gap:10px}
.history-toolbar>.btn{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));padding:11px 13px;flex-shrink:0}
.history-select-actions{grid-template-columns:minmax(0,1fr);gap:9px}
.history-select-actions .btn{width:100%;font-size:clamp(calc(22px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));padding:12px 14px;min-height:63px}
.history-select-actions .btn>.ui-icon{width:25px;height:25px}
.history-checkbox,.fleet-checkbox{min-width:49px;padding:0 7px}
.history-entry.swiped .history-front,.fleet-entry.swiped .fleet-front{transform:translateX(-min(51vw,208px))}
.history-row-actions,.fleet-row-actions{width:min(51vw,208px)}
.history-row-actions>button,.fleet-row-actions>button{font-size:clamp(calc(17px * var(--font-scale, 1)),calc(4.5vw * var(--font-scale, 1)),calc(22px * var(--font-scale, 1)));line-height:1.2;padding:6px 2px}
.history-row-actions .ui-icon,.fleet-row-actions .ui-icon{width:28px;height:28px}
.modal-actions{grid-template-columns:minmax(0,1fr);gap:9px}
.modal-actions .btn{width:100%}
.backup-actions,.compact-actions{grid-template-columns:minmax(0,1fr);gap:10px}
.backup-actions .btn,.compact-actions .btn{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(6vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));min-height:64px;padding:12px 13px;white-space:normal}
.backup-actions .btn>.ui-icon,.compact-actions .btn>.ui-icon{width:26px;height:26px}
.setting-line{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch}
.setting-line>select,.setting-line>button{width:100%;font-size:clamp(calc(22px * var(--font-scale, 1)),calc(6vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));min-height:60px}
.import-status,.works-date,.work-summary,.photos small,.small{font-size:clamp(calc(21px * var(--font-scale, 1)),calc(5.7vw * var(--font-scale, 1)),calc(27px * var(--font-scale, 1)));line-height:1.4}
dialog{width:min(96vw,660px);max-height:87dvh;padding:14px}
dialog form{max-height:78dvh;overflow:auto}
#notice{font-size:clamp(calc(22px * var(--font-scale, 1)),calc(5.8vw * var(--font-scale, 1)),calc(28px * var(--font-scale, 1)));bottom:calc(124px + env(safe-area-inset-bottom));padding:14px;white-space:normal}
/* Five short names keep navigation comfortably legible at 320–430px. */
.bottom-nav{height:108px;padding:10px 4px calc(9px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}
.bottom-nav button{min-width:0;width:100%;font-size:clamp(calc(17px * var(--font-scale, 1)),calc(4.5vw * var(--font-scale, 1)),calc(21px * var(--font-scale, 1)));line-height:1.15;gap:5px;padding:0 1px;white-space:nowrap}
.bottom-nav [data-icon]{width:29px;height:29px}
.bottom-nav [data-icon] .ui-icon{width:27px;height:27px}
.bottom-nav .nav-add [data-icon]{width:51px;height:51px;margin-top:-10px}
@media(min-width:720px){
 .page{padding:30px}.two-cols{grid-template-columns:repeat(2,minmax(0,1fr))}
 .history-filter{grid-template-columns:repeat(3,minmax(0,1fr))}
 .fleet-filter{grid-template-columns:repeat(3,minmax(0,1fr))}
 .history-select-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
 .backup-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
 .compact-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
 .actions{grid-template-columns:repeat(2,minmax(0,1fr))}
 .measurements{grid-template-columns:repeat(3,minmax(0,1fr))}
 .modal-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
 .bottom-nav button{font-size:calc(22px * var(--font-scale, 1))}
}

/* Accessibility typography — value is updated live without changing component sizes. */
.font-scale-widget{display:flex;flex-direction:column;gap:13px;margin:14px 0 6px;min-width:0}
.font-scale-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px}
.font-scale-heading output{font-weight:800;color:var(--blue);font-variant-numeric:tabular-nums}
.font-scale-controls{display:grid;grid-template-columns:minmax(58px,auto) minmax(0,1fr) minmax(58px,auto);align-items:center;gap:8px}
.font-scale-controls .btn{min-width:0;width:100%;min-height:60px;padding:8px;font-weight:800}
.font-scale-widget input[type="range"]{display:block;width:100%;min-width:0;height:44px;margin:0;accent-color:var(--blue);touch-action:pan-x;cursor:pointer}
.font-scale-widget .font-scale-range-labels{display:flex;justify-content:space-between;gap:8px;color:var(--muted)}
.font-scale-preview{background:var(--surface2);border-radius:13px;padding:13px;overflow-wrap:anywhere;line-height:1.45;border:1px solid var(--line)}
.font-scale-preview strong{display:block;margin-bottom:4px}
.font-scale-reset{align-self:stretch;white-space:normal}
@media(min-width:720px){.font-scale-widget{max-width:640px}.font-scale-reset{align-self:flex-start}}

/* CP-11: collapsed filter + sort toolbars in the fleet and history.
   Expanded fields remain readable at every user-controlled font scale. */
.compact-filter-panel{margin:10px 0 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);min-width:0;overflow:hidden}
.compact-filter-summary{list-style:none;cursor:pointer;min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:9px;padding:10px 13px;color:var(--ink);user-select:none}
.compact-filter-summary::-webkit-details-marker{display:none}
.compact-filter-summary::marker{content:''}
.compact-filter-summary:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;border-radius:14px}
.compact-filter-main{display:flex;align-items:center;gap:9px;min-width:0;flex:1;flex-wrap:wrap;font-size:clamp(calc(19px * var(--font-scale, 1)),calc(4.7vw * var(--font-scale, 1)),calc(24px * var(--font-scale, 1)));font-weight:700;line-height:1.23}
.compact-filter-main>.ui-icon{width:23px;height:23px;flex:none;color:var(--blue)}
.compact-filter-count{background:var(--blue);color:white;font-size:calc(16px * var(--font-scale, 1));border-radius:20px;padding:3px 8px;min-width:24px;text-align:center;flex:none}
.compact-filter-order{font-size:clamp(calc(16px * var(--font-scale, 1)),calc(4vw * var(--font-scale, 1)),calc(21px * var(--font-scale, 1)));color:var(--muted);text-align:right;line-height:1.2;min-width:0;overflow-wrap:break-word}
.compact-filter-chevron{color:var(--blue);flex:none;display:grid;place-items:center;transition:transform .17s ease}
.compact-filter-chevron .ui-icon{width:21px;height:21px}
.compact-filter-panel[open] .compact-filter-chevron{transform:rotate(90deg)}
.compact-filter-panel[open]>.compact-filter-summary{border-bottom:1px solid var(--line);background:var(--surface2)}
.compact-filter-body{padding:12px;min-width:0}
.compact-filter-body .history-filter,.compact-filter-body .fleet-filter{background:transparent;border:0;border-radius:0;margin:0;padding:0;gap:10px}
.compact-filter-body .history-filter,.compact-filter-body .fleet-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.compact-filter-body .field{min-width:0;margin:0}
.compact-filter-body .field span{font-size:clamp(calc(17px * var(--font-scale, 1)),calc(4.3vw * var(--font-scale, 1)),calc(22px * var(--font-scale, 1)))}
.compact-filter-body .field input,.compact-filter-body .field select{font-size:clamp(calc(18px * var(--font-scale, 1)),calc(4.8vw * var(--font-scale, 1)),calc(23px * var(--font-scale, 1)));width:100%;max-width:100%;min-width:0;min-height:52px;padding:9px 7px}
.compact-filter-body .fleet-filter>.field:last-child:nth-child(odd){grid-column:1/-1}
.compact-filter-footer{display:flex;justify-content:flex-end;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:11px;border-top:1px solid var(--line);color:var(--muted)}
.compact-filter-footer>span{font-size:clamp(calc(16px * var(--font-scale, 1)),calc(4vw * var(--font-scale, 1)),calc(20px * var(--font-scale, 1)));flex:1}
.compact-filter-footer .btn{min-height:45px;padding:9px 13px;font-size:clamp(calc(18px * var(--font-scale, 1)),calc(4.4vw * var(--font-scale, 1)),calc(23px * var(--font-scale, 1)))}
.compact-filter-panel+.history-toolbar{margin-top:9px}
/* Preserve two-column fields where possible, but avoid squashed date pickers on narrow phones. */
@media(max-width:380px){.compact-filter-body .history-filter,.compact-filter-body .fleet-filter{grid-template-columns:minmax(0,1fr)}.compact-filter-body .fleet-filter>.field:last-child:nth-child(odd){grid-column:auto}.compact-filter-summary{flex-wrap:wrap}.compact-filter-order{margin-left:auto}}
@media(min-width:720px){.compact-filter-body .fleet-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.compact-filter-body .history-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.compact-filter-body .fleet-filter>.field:last-child:nth-child(odd){grid-column:auto}}
@media (max-width:520px){
 /* Expanded state can be taller; the collapsed tool remains a single compact row. */
 .compact-filter-body .history-filter,.compact-filter-body .fleet-filter{grid-template-columns:minmax(0,1fr)}
 .compact-filter-body .fleet-filter>.field:last-child:nth-child(odd){grid-column:auto}
}

/* CP-12: the right-side sorting label overflows at enlarged Android fonts.
   Closed toolbar: a short left title, small right status/count and chevron ONLY.
   The selected sort stays available in the expanded select, and in its aria-label. */
.compact-filter-summary{flex-wrap:nowrap!important;min-width:0;gap:8px}
.compact-filter-main{flex:1 1 auto;min-width:0;flex-wrap:nowrap;gap:8px}
.compact-filter-title{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.2}
.compact-filter-end{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:none;margin-left:auto}
.compact-filter-count{flex:none;min-width:22px}
.compact-filter-chevron{flex:none}
/* Explicitly suppress any leftover ordering label from older markup/style. */
.compact-filter-summary .compact-filter-order{display:none!important}
@media(max-width:380px){.compact-filter-summary{flex-wrap:nowrap!important}}


/* CP-14: compact, separated navigation for both themes and mobile sizes.
   At large accessibility scale content may grow vertically without clipping. */
.topbar{
 height:auto;min-height:64px;padding:6px 9px;gap:0;
 box-shadow:0 2px 10px #08274b0b;
}
.topbar .icon-button{
 width:44px;height:44px;min-width:44px;min-height:44px;
 display:grid;place-items:center;border-radius:10px;
 background:transparent;color:var(--blue);
}
.topbar .icon-button[hidden]{display:none}
.topbar .icon-button .ui-icon{width:24px;height:24px}
.topbar #back{margin-right:7px}
.topbar #settingsButton{margin-left:7px}
.topbar .brand{
 flex:1;justify-content:center;margin:0;min-width:0;
 padding:3px 8px;gap:8px;
 border-right:1px solid var(--line);
 font-size:clamp(22px,calc(5.5vw * var(--font-scale, 1)),34px);
 line-height:1.05;
}
.topbar #back:not([hidden]) + .brand{border-left:1px solid var(--line)}
.topbar .brand img{width:38px;height:38px;flex:none;border-radius:10px}
.topbar .brand small{
 font-size:clamp(11px,calc(2.75vw * var(--font-scale, 1)),16px);
 letter-spacing:.5px;margin-top:3px;
}
#app{padding-bottom:calc(98px + env(safe-area-inset-bottom))}
.bottom-nav{
 height:auto;min-height:78px;padding:6px 6px calc(7px + env(safe-area-inset-bottom));
 align-items:stretch;gap:2px;
 border-top:1px solid var(--line);
 box-shadow:0 -5px 20px #071f3b12;
}
.bottom-nav button{
 min-height:64px;width:100%;min-width:0;
 display:flex;align-items:center;justify-content:center;
 gap:4px;padding:5px 1px;
 font-size:clamp(12px,calc(3.4vw * var(--font-scale, 1)),17px);
 font-weight:650;line-height:1.1;border-radius:10px;
 white-space:normal;overflow-wrap:normal;text-align:center;
}
.bottom-nav button.active{background:var(--surface2);color:var(--blue)}
.bottom-nav [data-icon]{width:25px;height:25px;flex:none}
.bottom-nav [data-icon] .ui-icon{width:24px;height:24px}
.bottom-nav .nav-add [data-icon]{
 width:40px;height:40px;margin-top:0;
 background:var(--blue);border-radius:12px;
 box-shadow:0 3px 8px #0f56a02c;
}
.bottom-nav .nav-add [data-icon] .ui-icon{width:25px;height:25px}
#notice{bottom:calc(96px + env(safe-area-inset-bottom))}
@media(max-width:365px){
 .topbar{padding:5px 6px}
 .topbar .brand{padding:2px 4px;gap:5px}
 .topbar .brand img{width:33px;height:33px}
 .topbar #back{margin-right:4px}
 .topbar #settingsButton{margin-left:4px}
}


/* CP-15: angle values and sign buttons are independent of the Android keyboard. */
.angle-field{min-width:0}
.angle-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}
.measurements .angle-control input{min-width:0;width:100%;text-align:left}
.angle-signs{display:flex;gap:5px}
.angle-signs button{
 min-width:45px;min-height:53px;padding:5px 9px;
 background:var(--surface2);border:1px solid var(--line);border-radius:10px;
 color:var(--blue);font-weight:850;font-size:clamp(24px,calc(6vw * var(--font-scale, 1)),33px)
}
.angle-signs button:active{background:var(--blue);color:#fff}
@media(max-width:380px){.angle-control{gap:5px}.angle-signs button{min-width:42px;padding:4px}}


/* CP-16: general vehicle pictures are deliberately separate from plate scans. */
.photo-mode-actions{margin:7px 0 10px}
.photos>div{min-width:0}
.photos img{object-fit:contain;background:var(--surface2);border-radius:10px}
.photos small{display:block;margin-top:5px;overflow-wrap:anywhere}


/* CP-18: no untrimmed gallery image is stored as a plate. */
.plate-crop-canvas{
 display:block;margin:9px auto;max-width:100%;height:auto;
 background:var(--surface2);border:2px solid var(--line);
 border-radius:10px;touch-action:none;cursor:crosshair;user-select:none;
}
#cropInstruction{margin:9px 0}

/* CP-22: no silent save of a conflicting region result. */
.region-review{margin:10px 0;padding:14px;background:var(--surface2);
 border:1px solid var(--line);border-radius:14px}
.region-review strong{font-size:1.03em}
.region-review p{margin:8px 0 12px}
.region-zoom{position:relative;width:min(100%,340px);height:150px;
 overflow:hidden;border:1px solid var(--line);border-radius:10px;
 background:var(--surface);margin:8px 0 12px}
.region-zoom img{display:block;position:absolute;width:330%;max-width:none;
 height:auto;right:0;top:50%;transform:translateY(-50%)}
.region-review .btn{width:100%}

/* CP-27: angular inputs must not overlap sign buttons at 50–200% font scaling.
   Keep controls in one column on a phone; desktop retains multi-column layout. */
.measurements{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:12px}
.measurements .angle-field{min-width:0}
.measurements .angle-control{grid-template-columns:minmax(0,1fr) auto;min-width:0}
.measurements .angle-control input{min-width:0;font-size:clamp(23px,calc(28px * var(--font-scale,1)),45px);text-align:left;padding:9px}
.measurements .angle-control .angle-signs{align-self:stretch}
.measurements .angle-control .angle-signs button{min-width:43px}
.page-head>*{min-width:0}
.page-head h1,.card h2{overflow-wrap:anywhere}
.modal-actions,.backup-actions{min-width:0}
.modal-actions>.btn,.backup-actions>.btn{min-width:0;white-space:normal;overflow-wrap:anywhere}
@media(max-width:400px){.page-head{flex-wrap:wrap}.page-head>.btn{max-width:100%}}

/* CP-34: fleet grid is license plates only; the tile sizes are uniform. */
.fleet-plate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,355px),1fr));align-items:stretch;gap:12px;margin:12px 0}
.fleet-plate-grid .fleet-entry{margin:0;min-width:0;min-height:126px}
.fleet-plate-grid .fleet-front{height:100%;min-height:126px;align-items:stretch}
.fleet-plate-grid .fleet-plate-card{margin:0;min-height:126px;min-width:0;width:100%;padding:16px 11px;justify-content:center;align-items:center;text-align:center;overflow:hidden}
.fleet-number{display:block;max-width:100%;min-width:0;border:3px solid var(--ink);border-radius:9px;padding:12px 7px;color:#16212c;background:#fff; border-color:#16212c;font-family:Arial,"Segoe UI",sans-serif;font-size:clamp(21px,calc(6.6vw * var(--font-scale,1)),36px);font-weight:850;letter-spacing:-.04em;line-height:1.05;white-space:nowrap;font-variant-numeric:tabular-nums}
.fleet-plate-grid .fleet-checkbox{flex:none;min-width:44px}
.fleet-plate-grid .fleet-entry.is-selected{outline:2px solid var(--blue);outline-offset:0}
@media(min-width:740px){.fleet-number{font-size:clamp(26px,calc(3vw * var(--font-scale,1)),38px)}}
/* Closed action drawers are truly hidden (no leaked labels under a plate or a journal card).
   Open drawers contain exactly two equally-sized, readable actions. */
.fleet-row-actions,.history-row-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(53%,192px);visibility:hidden;pointer-events:none}
.fleet-entry.swiped .fleet-row-actions,.history-entry.swiped .history-row-actions{visibility:visible;pointer-events:auto}
.fleet-row-actions>button,.history-row-actions>button{box-sizing:border-box;min-width:0;max-width:100%;overflow:hidden;gap:7px;white-space:nowrap;overflow-wrap:normal;font-size:clamp(12px,calc(3.9vw * var(--font-scale,1)),16px);padding:7px 3px}
.fleet-row-actions .ui-icon,.history-row-actions .ui-icon{width:24px;height:24px}
.fleet-entry.swiped .fleet-front,.history-entry.swiped .history-front{transform:translateX(calc(0px - var(--swipe-action-width)))}
.modal-dismiss{width:100%;margin-top:12px;min-height:48px}

/* Keep plates fully legible while the fleet multi-selection checkboxes are visible. */
.fleet-entry:has(.fleet-checkbox) .fleet-number{font-size:clamp(20px,calc(5.2vw * var(--font-scale,1)),30px);padding-inline:4px}

/* CP-35 Android swipe regression (physical-phone screenshot 26 Oct).
   Avoid mixing % sizing with transform percentages: a transform percentage is
   relative to the front's transform box, while action width is relative to the
   entry. Both MUST use one absolute CSS length in the same coordinate system.
   Otherwise the blue "Изменить" action stays partly under the front card. */
.fleet-entry,.history-entry{
 --swipe-action-width:min(216px,64vw);
}
.fleet-row-actions,.history-row-actions{
 width:var(--swipe-action-width);
 right:0;
 left:auto;
 display:grid;
 grid-template-columns:repeat(2,minmax(0,1fr));
 visibility:hidden;
 pointer-events:none;
}
.fleet-entry.swiped .fleet-row-actions,.history-entry.swiped .history-row-actions{
 visibility:visible;
 pointer-events:auto;
}
.fleet-entry .fleet-front,.history-entry .history-front{
 width:100%;
 max-width:100%;
 min-width:0;
}
.fleet-entry.swiped .fleet-front,.history-entry.swiped .history-front{
 transform:translateX(calc(0px - var(--swipe-action-width)));
}
.fleet-row-actions>button,.history-row-actions>button{
 display:flex;
 min-width:0;
 width:100%;
 padding:8px 4px;
 overflow:visible;
 white-space:normal;
 overflow-wrap:anywhere;
 word-break:normal;
 line-height:1.22;
 text-align:center;
 gap:6px;
 font-size:clamp(14px,calc(4vw * var(--font-scale,1)),calc(19px * var(--font-scale,1)));
}
.fleet-row-actions>button span,.history-row-actions>button span{
 display:block;
 max-width:100%;
 min-width:0;
}

/* CP36: compact responsive vehicle tiles. Two tiles normally fit on a
   360-430 CSS-px Android screen, three on broader layouts; avoid narrowing
   below 148px on very small devices. */
.fleet-plate-grid{
 display:grid;
 grid-template-columns:repeat(auto-fill,minmax(min(100%,148px),1fr));
 gap:10px;
 align-items:stretch;
}
.fleet-plate-grid .fleet-entry,
.fleet-plate-grid .fleet-front{min-width:0;min-height:132px}
.fleet-plate-grid .fleet-plate-card{
 width:100%;min-width:0;min-height:132px;
 padding:12px 7px;
 display:flex;align-items:center;justify-content:center;
 container-type:inline-size;
}
.fleet-plate-grid .fleet-number{
 width:100%;max-width:100%;min-width:0;
 padding:5px 4px;border-width:2px;border-radius:6px;
 display:flex;align-items:center;justify-content:center;
 gap:2px;letter-spacing:0;white-space:nowrap;
 font-size:clamp(13px,10cqw,25px);
 overflow:hidden;
}
.fleet-number-main{min-width:0;flex:1 1 auto;font-size:inherit;text-align:center}
.fleet-number-region{flex:0 0 auto;padding:1px 0 1px 3px;border-left:1.5px solid #16212c;font-size:.92em;font-weight:800}
.fleet-number-fallback{white-space:normal;overflow-wrap:anywhere;line-height:1.1}
.fleet-plate-grid .fleet-entry:has(.fleet-checkbox) .fleet-number{
 font-size:clamp(11px,8.2cqw,21px);
 padding:4px 2px;
}
.fleet-plate-grid .fleet-checkbox{min-width:32px;padding:0 3px}
.fleet-plate-grid .fleet-checkbox input{width:22px;height:22px}
/* Park cards are narrower than the 216px journal swipe tray. Show both
   whole action buttons without overflow; history keeps its own width. */
.fleet-plate-grid .fleet-entry{--swipe-action-width:100%}
.fleet-plate-grid .fleet-row-actions{width:100%}
.fleet-plate-grid .fleet-row-actions>button{
 padding:6px 2px;font-size:clamp(11px,3.3vw,15px);
 overflow-wrap:normal;word-break:normal;
}
.fleet-plate-grid .fleet-row-actions .ui-icon{width:22px;height:22px}
@media(min-width:650px){
 .fleet-plate-grid{gap:12px}
 .fleet-plate-grid .fleet-entry,.fleet-plate-grid .fleet-front,.fleet-plate-grid .fleet-plate-card{min-height:148px}
}
@supports not (font-size:1cqw){
 .fleet-plate-grid .fleet-number{font-size:clamp(13px,3.9vw,25px)}
 .fleet-plate-grid .fleet-entry:has(.fleet-checkbox) .fleet-number{font-size:clamp(11px,3vw,20px)}
}

/* auto-fill retains the 2-column proportions even when only one vehicle exists. */
