/* Servano app. Dark navy + red is the main look (JeyJey's choice), light is an option in More. */
:root,:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0a0f18; --glow1:rgba(190,16,32,.26); --glow2:rgba(190,16,32,.1);
  --card:#162030; --card2:#1f2b3d; --field:#0e1520; --nav:#0b111b; --top:rgba(10,15,24,.86);
  --line:rgba(255,255,255,.1); --line2:rgba(255,255,255,.24);
  --ink:#f5f7fa; --ink2:#bcc5d2; --ink3:#8f99a9; --off:#566072;
  --inv:#ffffff; --invink:#0a0f18; --redt:#ff5262; --link:#7db3ff; --shadow:rgba(0,0,0,.45);
  --okbg:rgba(21,128,61,.24); --okink:#7ee2a2; --warnbg:rgba(239,143,18,.22); --warnink:#ffc56e;
  --errbg:rgba(232,25,44,.2); --errink:#ff8b96; --infobg:rgba(31,110,230,.22); --infoink:#9cc3ff;
  --carcard:#1a2638;
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#eef1f6; --glow1:rgba(232,25,44,.08); --glow2:rgba(232,25,44,.04);
  --card:#ffffff; --card2:#f3f5f9; --field:#f2f4f8; --nav:#ffffff; --top:rgba(255,255,255,.92);
  --line:rgba(15,25,40,.13); --line2:rgba(15,25,40,.3);
  --ink:#111826; --ink2:#4a5566; --ink3:#5f6a7b; --off:#a2abb9;
  --inv:#111826; --invink:#ffffff; --redt:#c40f20; --link:#0f5bd0; --shadow:rgba(15,25,40,.14);
  --okbg:#dcf3e4; --okink:#0f6630; --warnbg:#fff1d6; --warnink:#8a5300;
  --errbg:#fde3e6; --errink:#a30d20; --infobg:#e3edfd; --infoink:#0b4aa8;
  --carcard:#f3f5f9;
}
:root{--red:#e8192c; --redd:#ad0e1d; --green:#15803d; --blue:#1f6ee6; --amber:#ef8f12; --gold:#ffc400;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(70% 45% at 0% 100%,var(--glow1),transparent 70%),radial-gradient(60% 40% at 100% 0%,var(--glow2),transparent 70%),var(--bg);background-attachment:fixed;
  font:17px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;overscroll-behavior-y:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
a{color:var(--link)}
svg.i{width:1em;height:1em;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
[hidden]{display:none!important}

/* frame */
#app{max-width:720px;margin:0 auto;min-height:100vh;padding-bottom:calc(84px + var(--safe-b))}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;min-height:56px;padding:calc(6px + var(--safe-t)) 10px 6px;background:var(--top);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.topbar h1{flex:1;margin:0;font-size:19px;line-height:1.2;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar .side{width:48px;display:flex;justify-content:center}
.iconbtn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:12px;font-size:22px;color:var(--ink)}
.iconbtn:active{background:var(--card2)}
.page{padding:12px 14px 24px}
.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--nav);border-top:1px solid var(--line);padding-bottom:var(--safe-b)}
.nav .in{max-width:720px;margin:0 auto;display:flex}
.nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px 9px;color:var(--ink3);text-decoration:none;font-size:12px;font-weight:600;position:relative}
.nav a svg{font-size:24px}
.nav a.on{color:var(--redt)}
.nav .dot{position:absolute;top:4px;left:calc(50% + 8px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center}

/* blocks */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin:10px 0}
.card.tap{cursor:pointer}.card.tap:active{background:var(--card2)}
.sec{margin:18px 2px 6px;font-size:14px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:var(--ink3);display:flex;align-items:center;gap:8px}
.sec .grow{flex:1}
.muted{color:var(--ink2)}.small{font-size:14px}.tiny{font-size:12.5px;color:var(--ink3)}
.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}
.between{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.big{font-size:28px;font-weight:800;line-height:1.1}
.center{text-align:center}
hr{border:0;border-top:1px solid var(--line);margin:12px 0}

/* buttons */
.btn{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:52px;padding:12px 16px;border-radius:14px;font-weight:800;font-size:17px;text-decoration:none;color:var(--ink);background:var(--card2);border:1px solid var(--line2)}
.btn svg{font-size:22px}
.btn.red{background:linear-gradient(180deg,#f02a3c,#c8101f);border-color:transparent;color:#fff;box-shadow:0 6px 18px rgba(232,25,44,.28)}
.btn.green{background:var(--green);border-color:transparent;color:#fff}
.btn.blue{background:var(--blue);border-color:transparent;color:#fff}
.btn.wa{background:#1f9d55;border-color:transparent;color:#fff}
.btn.ghost{background:transparent}
.btn.small{min-height:42px;font-size:15px;padding:8px 12px;border-radius:12px;width:auto}
.btn:disabled{opacity:.45}
.btn:active{transform:scale(.985)}
.btns{display:flex;gap:10px;margin-top:10px}.btns>*{flex:1}
.link{color:var(--link);font-weight:700;font-size:15px}

/* chips */
.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 1px 8px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{flex:none;padding:8px 14px;border-radius:20px;border:1px solid var(--line2);font-size:15px;font-weight:700;color:var(--ink2);white-space:nowrap}
.chip.on{background:var(--red);border-color:var(--red);color:#fff}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:800;padding:3px 10px;border-radius:20px;white-space:nowrap}
.tag.received{background:var(--infobg);color:var(--infoink)}.tag.working{background:rgba(31,110,230,.85);color:#fff}
.tag.parts,.tag.approval,.tag.new{background:var(--warnbg);color:var(--warnink)}.tag.done,.tag.ok,.tag.confirmed{background:var(--okbg);color:var(--okink)}
.tag.picked,.tag.cancelled,.tag.noshow,.tag.gray{background:var(--card2);color:var(--ink3)}.tag.quote{background:var(--infobg);color:var(--infoink)}
.tag.red{background:var(--errbg);color:var(--errink)}.tag.yellow{background:var(--warnbg);color:var(--warnink)}.tag.green{background:var(--okbg);color:var(--okink)}
.badge{min-width:22px;height:22px;padding:0 7px;border-radius:11px;background:var(--red);color:#fff;font-size:12.5px;font-weight:800;line-height:22px;text-align:center}

/* home tiles */
.hello{display:flex;align-items:center;gap:12px;margin:6px 2px 4px}
.hello img{width:46px;height:46px;border-radius:12px;object-fit:contain;background:#fff}
.hello b{font-size:21px;display:block;line-height:1.2}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.tile{position:relative;min-height:112px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;font-weight:700}
.tile svg{font-size:28px;color:var(--ink2)}
.tile .n{font-size:30px;font-weight:800;line-height:1}
.tile .badge{position:absolute;top:10px;right:10px}
.tile:active{background:var(--card2)}
.banner{border-radius:14px;padding:12px 14px;margin:10px 0;font-weight:700;display:flex;gap:10px;align-items:center}
.banner.ok{background:var(--okbg);color:var(--okink)}.banner.warn{background:var(--warnbg);color:var(--warnink)}
.banner.err{background:var(--errbg);color:var(--errink)}.banner.info{background:var(--infobg);color:var(--infoink)}

/* cars */
.carpic{position:relative;width:112px;flex:none;aspect-ratio:369/158}
.carpic img,.carpic i{position:absolute;inset:0;width:100%;height:100%}
.carpic i{background:var(--c,transparent);-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;mix-blend-mode:multiply;pointer-events:none}
.carpic.lg{width:min(320px,80%);margin:0 auto}
.carrow{display:flex;align-items:center;gap:12px}
.plate{display:inline-block;font-weight:800;font-size:19px;letter-spacing:.6px}
.platebox{display:inline-flex;align-items:center;border:2px solid var(--ink);border-radius:7px;padding:1px 9px 1px 0;font-weight:800;letter-spacing:.6px;font-size:21px;background:var(--card)}
.platebox:before{content:attr(data-c);background:#1f4fd0;color:#fff;font-size:11px;font-weight:800;align-self:stretch;display:flex;align-items:flex-end;padding:0 4px 3px;margin-right:8px;border-radius:4px 0 0 4px}
.swatches{display:flex;flex-wrap:wrap;gap:10px}
.sw{width:40px;height:40px;border-radius:50%;border:2px solid var(--line2)}
.sw.on{outline:3px solid var(--red);outline-offset:2px}
.bodies{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.bodies button{background:var(--carcard);border:2px solid transparent;border-radius:12px;padding:6px 4px;font-size:12px;font-weight:700;color:var(--ink2)}
.bodies button.on{border-color:var(--red);color:var(--ink)}
.bodies .carpic{width:100%}

/* forms */
label.f{display:block;font-weight:700;font-size:15px;margin:14px 0 6px;color:var(--ink2)}
input,textarea,select{width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--field);border:1.5px solid var(--line2);border-radius:12px;padding:12px 13px;min-height:50px;-webkit-appearance:none;appearance:none}
textarea{min-height:92px;resize:vertical}
input:focus,textarea:focus,select:focus{border-color:var(--red);outline:none}
input[type=checkbox]{width:26px;height:26px;min-height:0;padding:0;border-radius:7px;flex:none;accent-color:var(--red);-webkit-appearance:checkbox;appearance:auto}
.check{display:flex;gap:12px;align-items:center;margin:12px 0;font-weight:600}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.two label.f{margin-top:10px}
.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.suggest{border:1px solid var(--line2);border-radius:12px;margin-top:6px;overflow:hidden}
.suggest button{display:block;width:100%;text-align:left;padding:11px 13px;border-bottom:1px solid var(--line)}
.suggest button:last-child{border-bottom:0}
.hint{font-size:13.5px;color:var(--ink3);margin-top:5px}

/* lists */
.item{padding:12px 0;border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
.item .price{font-weight:800;white-space:nowrap}
.photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.photos .ph{position:relative;width:78px;height:78px;border-radius:10px;overflow:hidden;background:var(--card2)}
.photos .ph img,.photos .ph video{width:100%;height:100%;object-fit:cover}
.photos .ph .x{position:absolute;top:3px;right:3px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:14px;display:flex;align-items:center;justify-content:center}
.photos .add{width:78px;height:78px;border-radius:10px;border:2px dashed var(--line2);display:flex;align-items:center;justify-content:center;font-size:28px;color:var(--ink3)}
.total{display:flex;justify-content:space-between;font-size:19px;font-weight:800;margin-top:8px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:15.5px}.kv dt{color:var(--ink3)}.kv dd{margin:0;font-weight:600;text-align:right}
.steps{display:flex;flex-wrap:wrap;gap:6px}.steps::-webkit-scrollbar{display:none}
.steps button{flex:1 1 auto;padding:10px 12px;border-radius:12px;background:var(--card2);border:1px solid var(--line);font-size:14px;font-weight:800;color:var(--ink2)}
.steps button.on{background:var(--red);color:#fff;border-color:var(--red)}
.timer{display:flex;align-items:center;gap:10px}
.timer .clock{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800}
.logline{font-size:13.5px;color:var(--ink2);padding:5px 0;border-bottom:1px solid var(--line)}

/* inspection */
.insp{padding:10px 0;border-bottom:1px solid var(--line)}
.lights{display:flex;gap:8px;margin-top:8px}
.lights button{flex:1;min-height:44px;border-radius:12px;border:1.5px solid var(--line2);font-weight:800;font-size:14px;color:var(--ink2)}
.lights button.on.green{background:var(--green);color:#fff;border-color:var(--green)}
.lights button.on.yellow{background:var(--amber);color:#1b1200;border-color:var(--amber)}
.lights button.on.red{background:var(--red);color:#fff;border-color:var(--red)}

/* calendar and plan */
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:6px 0 10px}
.week button{border-radius:12px;padding:8px 0;background:var(--card);border:1px solid var(--line);font-size:13px;font-weight:700;color:var(--ink2);display:flex;flex-direction:column;align-items:center;gap:2px}
.week button b{font-size:18px;color:var(--ink)}
.week button.on{background:var(--red);border-color:var(--red);color:#fff}.week button.on b{color:#fff}
.week button i{width:6px;height:6px;border-radius:50%;background:var(--redt);font-style:normal}
.week button.on i{background:#fff}
.appt{display:flex;gap:12px;align-items:flex-start}
.appt .time{font-weight:800;font-size:18px;min-width:54px;font-variant-numeric:tabular-nums}
.plan{position:relative;overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.plan .grid{position:relative;display:grid}
.plan .hcell{font-size:12px;color:var(--ink3);border-top:1px solid var(--line);padding:2px 4px;height:44px}
.plan .colhead{position:sticky;top:0;font-size:13px;font-weight:800;text-align:center;padding:8px 4px;background:var(--card2);border-left:1px solid var(--line);z-index:2}
.plan .col{position:relative;border-left:1px solid var(--line)}
.plan .slot{position:absolute;left:3px;right:3px;border-radius:9px;padding:4px 6px;font-size:12.5px;font-weight:700;overflow:hidden;color:#fff;background:#3a4f6b;border-left:4px solid var(--c,#e8192c);cursor:pointer}
.plan .slot small{display:block;font-weight:600;opacity:.85}
.plan .line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.plan .now{position:absolute;left:0;right:0;border-top:2px solid var(--red);z-index:3}

/* sheet (bottom dialog) */
.shade{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}
.sheet{width:100%;max-width:720px;max-height:92vh;overflow:auto;background:var(--card);border-radius:22px 22px 0 0;padding:10px 16px calc(18px + var(--safe-b));box-shadow:0 -10px 40px var(--shadow);animation:up .2s ease-out}
.sheet .grab{width:44px;height:5px;border-radius:3px;background:var(--line2);margin:2px auto 10px}
.sheet h2{font-size:21px;margin:4px 0 10px}
.msgbox{background:var(--field);border:1px solid var(--line2);border-radius:14px;padding:12px;white-space:pre-wrap;font-size:15.5px;margin:8px 0 12px}
@keyframes up{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.toast{position:fixed;left:50%;bottom:calc(96px + var(--safe-b));transform:translateX(-50%);z-index:60;background:var(--inv);color:var(--invink);padding:12px 18px;border-radius:14px;font-weight:700;font-size:15px;box-shadow:0 8px 24px var(--shadow);max-width:calc(100% - 32px);text-align:center}

/* login */
.login{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:calc(24px + var(--safe-t)) 18px calc(24px + var(--safe-b));max-width:460px;margin:0 auto}
.login .logo{width:180px;margin:0 auto 18px;display:block}
.login h2{text-align:center;margin:0 0 4px;font-size:24px}
.people{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.people button{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 8px;font-weight:800;display:flex;flex-direction:column;align-items:center;gap:8px}
.avatar{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:#fff;background:var(--c,#3a4f6b)}
.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;margin:14px auto}
.pinpad button{height:64px;border-radius:16px;background:var(--card);border:1px solid var(--line);font-size:26px;font-weight:700}
.pindots{display:flex;gap:14px;justify-content:center;margin:12px 0}
.pindots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--ink2)}
.pindots i.on{background:var(--ink);border-color:var(--ink)}

/* signature */
.signpad{width:100%;height:200px;border-radius:14px;background:#fff;border:1.5px solid var(--line2);touch-action:none;display:block}

/* overview */
.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px}
.stat b{display:block;font-size:26px;line-height:1.1;margin-top:4px}
.stat small{color:var(--ink3);font-size:13px;font-weight:700}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hero{background:linear-gradient(135deg,#0b1f3a,#1a3663);color:#fff;border-radius:18px;padding:18px;margin:10px 0}
.hero b{font-size:36px;display:block;line-height:1.1;margin:4px 0}
table.t{width:100%;border-collapse:collapse;font-size:15px}table.t td,table.t th{padding:8px 4px;border-bottom:1px solid var(--line);text-align:left}
table.t th{font-size:12.5px;color:var(--ink3);text-transform:uppercase}table.t .r{text-align:right}

@media (min-width:760px){.tiles{grid-template-columns:repeat(3,1fr)}.page{padding:16px 20px 28px}}
@media print{.nav,.topbar{display:none}}
.boot{min-height:100vh;display:grid;place-items:center}.boot img{border-radius:18px;opacity:.9}
.hoursrow{display:grid;grid-template-columns:auto 72px minmax(0,1fr) auto minmax(0,1fr);gap:6px;align-items:center}
.hoursrow input[type=time]{min-width:0;width:100%;min-height:42px;padding:0 6px;font-size:15px}
.hoursrow b{font-size:14px}
