/* Layout: dark ink rail on the left (bottom tab bar on phones), cool canvas, white working surfaces, one cobalt signal accent. Detail opens in drawers from the right. */
:root{
  --rail:#0B1E38;--rail-2:#15304F;--rail-text:#A9B8CC;
  --canvas:#F3F5F9;--surface:#FFFFFF;--sunk:#F7F9FC;--line:#E3E8F0;--line-2:#EDF1F6;
  --text:#0B1E38;--mut:#5C687C;--faint:#8D97A8;
  --acc:#0F6F93;--acc-hover:#0B5A78;--acc-soft:#E4F2F7;--brand-green:#4F8A35;--brand-lime:#8DB23A;
  --ok:#3F8A2F;--warn:#B76B00;--err:#CF3340;
  --font:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --r-lg:14px;--r:10px;
  --sh:0 1px 2px rgba(14,26,44,.05);
  --sh-lg:0 30px 80px -20px rgba(14,26,44,.35);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --rail:#070E1A;--rail-2:#111C2E;--rail-text:#8E9AB0;--canvas:#0B1220;--surface:#111A2A;--sunk:#0E1625;--line:#1F2B40;--line-2:#182337;
  --text:#E7ECF4;--mut:#9AA6BA;--faint:#6F7B91;--acc:#3BA9D3;--acc-hover:#5DBCE0;--acc-soft:rgba(59,169,211,.15);--ok:#2FC28E;--warn:#E9A23B;--err:#F06571;
  --sh:0 1px 2px rgba(0,0,0,.3);--sh-lg:0 30px 80px -20px rgba(0,0,0,.7);color-scheme:dark}}
:root[data-theme="dark"]{
  --rail:#070E1A;--rail-2:#111C2E;--rail-text:#8E9AB0;--canvas:#0B1220;--surface:#111A2A;--sunk:#0E1625;--line:#1F2B40;--line-2:#182337;
  --text:#E7ECF4;--mut:#9AA6BA;--faint:#6F7B91;--acc:#3BA9D3;--acc-hover:#5DBCE0;--acc-soft:rgba(59,169,211,.15);--ok:#2FC28E;--warn:#E9A23B;--err:#F06571;
  --sh:0 1px 2px rgba(0,0,0,.3);--sh-lg:0 30px 80px -20px rgba(0,0,0,.7);color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--canvas);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100%}
.rail{background:var(--rail);color:var(--rail-text);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:18px 12px;gap:20px}
.logo{display:flex;align-items:center;gap:10px;padding:2px 8px 6px;color:#fff;font-weight:650;letter-spacing:-.01em;line-height:1.15}
.logo small{display:block;color:var(--rail-text);font-weight:450;font-size:12px;letter-spacing:0}
.logo svg{flex:none}
nav{display:flex;flex-direction:column;gap:2px}
nav a{position:relative;display:flex;align-items:center;gap:11px;color:var(--rail-text);text-decoration:none;padding:9px 10px;border-radius:9px;font-weight:500;font-size:13.5px;transition:background .12s,color .12s}
nav a svg{width:18px;height:18px;flex:none;opacity:.85}
nav a:hover{background:var(--rail-2);color:#fff}
nav a.on{background:var(--rail-2);color:#fff;box-shadow:inset 2px 0 0 #8DB23A}
nav a .ct{margin-left:auto;font-size:11px;font-weight:600;background:#8DB23A;color:#0B1E38;border-radius:99px;padding:0 7px;line-height:18px;font-variant-numeric:tabular-nums}
nav a .ct[hidden]{display:none}
.railfoot{margin-top:auto;padding:10px;border-top:1px solid rgba(255,255,255,.07);font-size:12px}
.conn{display:flex;align-items:center;gap:8px}
.conn i{width:8px;height:8px;border-radius:50%;background:#64748B;flex:none}
.conn.live i{background:#34D399;animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(52,211,153,.55)}70%{box-shadow:0 0 0 7px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}
.content{min-width:0;display:flex;flex-direction:column}
main{padding:28px 32px 48px;width:100%;max-width:1440px;margin:0 auto;min-width:0}
#banner:empty{display:none}
#banner{padding:10px 32px;font-size:13px;font-weight:500}
#banner.warn{background:#FFF4DC;color:#7A4A00}#banner.err{background:#FDE8EA;color:#8A1C25}
.phead{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.phead>div:first-child{flex:1;min-width:220px}
.phead h1{font-size:26px;line-height:1.15;font-weight:650;letter-spacing:-.025em;margin:0;text-wrap:balance}
.phead p{margin:4px 0 0;color:var(--mut)}
h1{font-size:22px;font-weight:650;letter-spacing:-.02em;margin:0 0 14px}
h2{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 12px}
h3{font-size:13px;font-weight:600;margin:22px 0 10px;color:var(--text);display:flex;align-items:center;gap:10px}
h3::after{content:"";flex:1;height:1px;background:var(--line-2)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;box-shadow:var(--sh)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sp{flex:1}
.mut{color:var(--mut)}.sm{font-size:12.5px}.faint{color:var(--faint)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:0 14px;cursor:pointer;font-weight:550;font-size:13.5px;white-space:nowrap;box-shadow:var(--sh);transition:background .12s,border-color .12s,transform .06s}
.btn:hover{border-color:var(--faint)}
.btn:active{transform:translateY(1px)}
.btn.sm{height:30px;padding:0 10px;font-size:12.5px}
.btn.p{background:var(--acc);border-color:var(--acc);color:#fff;box-shadow:0 1px 2px rgba(15,111,147,.3),inset 0 1px 0 rgba(255,255,255,.15)}
.btn.p:hover{background:var(--acc-hover);border-color:var(--acc-hover)}
.btn.g{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.d{color:var(--err)}
.btn.big{height:54px;font-size:15.5px;border-radius:12px;width:100%;font-weight:600}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.seg{display:inline-flex;background:var(--sunk);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;padding:5px 12px;border-radius:7px;cursor:pointer;font-weight:500;font-size:13px;color:var(--mut)}
.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px rgba(14,26,44,.12)}
input[type=text],input[type=number],input[type=date],input[type=time],input[type=email],input[type=tel],input[type=password],input[type=search],input:not([type]),select,textarea{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 11px;background:var(--surface);min-width:0;transition:border-color .12s,box-shadow .12s}
textarea{width:100%;height:auto;min-height:80px;padding:9px 11px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--acc)}
input[type=color]{height:32px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
label.f{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--mut);font-weight:500}
label.f input,label.f select,label.f textarea{font-size:14px;color:var(--text);width:100%}
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.chk{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;cursor:pointer;border:1px solid var(--line-2);border-radius:9px;background:var(--sunk)}
.chk:has(input:checked){border-color:var(--acc);background:var(--acc-soft)}
.chk input{margin-top:2px}
table{width:100%;border-collapse:separate;border-spacing:0}
th{text-align:left;font-size:12px;color:var(--mut);font-weight:500;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--sunk)}
td{padding:12px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tr.click{cursor:pointer}tr.click:hover td{background:var(--sunk)}
.tw{overflow-x:auto}
.card>.tw{margin:0 -18px -18px;border-top:1px solid var(--line)}
.card>.tw th:first-child,.card>.tw td:first-child{padding-left:18px}
.card>.tw th:last-child,.card>.tw td:last-child{padding-right:18px}
.card>.tw th{border-top:0}
.num{text-align:right;font-variant-numeric:tabular-nums}
.tab{font-variant-numeric:tabular-nums}
.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px 2px 8px;border-radius:99px;font-size:12px;font-weight:550;white-space:nowrap;color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;vertical-align:middle}
.av{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c);font-size:10.5px;font-weight:650;flex:none;vertical-align:middle;letter-spacing:.02em}
.who{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.code{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{font-size:11px;font-weight:550;padding:1px 7px;border-radius:6px;background:var(--sunk);border:1px solid var(--line-2);color:var(--mut)}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);margin-bottom:20px;overflow:hidden}
.kpi{padding:16px 20px;border-right:1px solid var(--line-2)}
.kpi:last-child{border-right:0}
.kpi .k{font-size:12.5px;color:var(--mut);font-weight:500}
.kpi .v{font-size:26px;font-weight:650;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:2px}
.kpi .s{font-size:12px;color:var(--faint)}
.cal{display:grid;gap:10px}
.calcol{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);min-height:220px;display:flex;flex-direction:column;box-shadow:var(--sh)}
.calcol.today{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.calhd{padding:12px 12px 10px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line-2);gap:8px}
.calhd .dw{font-size:12px;color:var(--mut);font-weight:500;display:block}
.calhd .dn{font-size:20px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.calcol.today .dn{color:var(--acc)}
.calhd .cnt{font-size:11.5px;color:var(--mut);background:var(--sunk);border-radius:99px;padding:1px 8px;font-variant-numeric:tabular-nums;white-space:nowrap}
.calbd{padding:8px;display:flex;flex-direction:column;gap:8px;flex:1}
.job{position:relative;border:1px solid var(--line);border-radius:10px;padding:9px 10px 9px 13px;cursor:pointer;background:var(--surface);font-size:12.5px;display:flex;flex-direction:column;gap:3px;transition:border-color .12s,box-shadow .12s}
.job::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--c,#94A3B8)}
.job:hover{border-color:var(--faint);box-shadow:0 4px 14px -6px rgba(14,26,44,.18)}
.job .top{display:flex;align-items:center;gap:4px 6px;flex-wrap:wrap}
.job .tm{font-weight:650;font-variant-numeric:tabular-nums;font-size:13px}
.job .shop{font-weight:600;font-size:13px}
.job .pill{font-size:10.5px;padding:0 7px 0 6px;gap:5px}
.add{border:1px dashed var(--line);background:none;border-radius:9px;padding:6px;color:var(--faint);cursor:pointer;font-size:12.5px;font-weight:500;margin-top:auto}
.add:hover{border-color:var(--acc);color:var(--acc);background:var(--acc-soft)}
.wkwrap{overflow-x:auto;padding-bottom:4px}
.wk{grid-template-columns:repeat(7,minmax(148px,1fr));min-width:1060px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px}
.layout>*{min-width:0}
.queue{position:sticky;top:20px;align-self:start}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--sh)}
.tile .v{font-size:24px;font-weight:650;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.tile .k{font-size:12.5px;color:var(--mut);font-weight:500}
.tile .v+.k{color:var(--faint);font-size:12px}
.tech{max-width:620px;margin:0 auto}
.state{border-radius:18px;padding:22px;color:#fff;margin-bottom:14px;background:radial-gradient(120% 140% at 100% 0%,color-mix(in srgb,var(--c) 45%,#0B1E38) 0%,#0B1E38 62%)}
.state .t{font-size:13px;color:#B6C1D3}
.state .s{font-size:28px;font-weight:650;letter-spacing:-.03em;margin:6px 0 2px;display:flex;align-items:center;gap:12px}
.state .s i{width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 30%,transparent)}
.state .el{font-variant-numeric:tabular-nums;color:#fff;font-weight:600}
.steps{display:flex;gap:6px;margin-top:18px}
.steps span{flex:1;height:4px;border-radius:99px;background:rgba(255,255,255,.14)}
.steps span.on{background:var(--c)}
.steplbl{display:grid;grid-template-columns:repeat(3,1fr);margin-top:7px;font-size:11.5px;color:#8E9AB0}
.tl{list-style:none;margin:0;padding:0}
.tl li{display:flex;gap:14px;padding:8px 0;font-size:13px;position:relative;border-bottom:1px solid var(--line-2)}
.tl li:last-child{border-bottom:0}
.tl li .tm{width:66px;color:var(--mut);font-variant-numeric:tabular-nums;flex:none}
.jobbox{border:1px solid var(--line);border-radius:12px;padding:12px 14px 12px 16px;margin-bottom:10px;position:relative;background:var(--surface)}
.jobbox::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--c)}
.modal{position:fixed;inset:0;background:rgba(9,16,28,.42);backdrop-filter:blur(2px);z-index:50;display:flex;justify-content:flex-end}
.modal.hidden{display:none}
.mbox{background:var(--surface);width:100%;max-width:760px;height:100%;display:flex;flex-direction:column;box-shadow:var(--sh-lg);animation:slide .22s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
.mhd{padding:18px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.mhd h2{margin:0;font-size:18px;letter-spacing:-.02em}
.mbd{padding:20px 24px 28px;overflow-y:auto;flex:1}
.mft{padding:14px 24px;border-top:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap;background:var(--sunk)}
.x{margin-left:auto;border:1px solid var(--line);background:var(--surface);width:32px;height:32px;border-radius:8px;font-size:18px;cursor:pointer;color:var(--mut);line-height:1;display:grid;place-items:center}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:6px;background:var(--sunk)}
.facts>div{padding:12px 14px;border-right:1px solid var(--line-2);font-size:13px}
.facts>div:last-child{border-right:0}
.facts .mut{font-size:12px}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,8px);background:#0B1E38;color:#fff;padding:11px 16px;border-radius:11px;font-size:13px;font-weight:500;z-index:60;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;max-width:90vw;box-shadow:var(--sh-lg);display:flex;gap:9px;align-items:center}
#toast::before{content:"";width:8px;height:8px;border-radius:50%;background:#34D399;flex:none}
#toast.on{opacity:1;transform:translate(-50%,0)}
.empty{padding:36px 20px;text-align:center;color:var(--mut)}
.note{background:var(--acc-soft);border:1px solid color-mix(in srgb,var(--acc) 25%,transparent);color:var(--text);border-radius:10px;padding:11px 14px;font-size:13px}
.warnbox{background:color-mix(in srgb,var(--warn) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);color:var(--text);border-radius:10px;padding:11px 14px;font-size:13px}
.svcres{display:grid;grid-template-columns:1fr 170px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-2)}
.lines input{width:100%}
.lines td{padding:6px}
.sect{margin-bottom:20px}
.savebar{position:sticky;bottom:0;background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:blur(8px);padding:12px 0;border-top:1px solid var(--line)}
.mtop{display:none;align-items:center;gap:10px;padding:12px 16px;background:var(--rail);color:#fff;font-weight:650}
.mtop .conn{margin-left:auto;font-weight:500;font-size:12px;color:var(--rail-text)}
@media(max-width:1600px){.layout{grid-template-columns:1fr}.queue{position:static;order:-1}.queue .grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}}
@media(max-width:860px){
  .shell{grid-template-columns:1fr}
  .rail{position:fixed;bottom:0;top:auto;left:0;right:0;height:auto;flex-direction:row;padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:30;gap:0;border-top:1px solid rgba(255,255,255,.06)}
  .rail .logo,.railfoot{display:none}
  nav{flex-direction:row;overflow-x:auto;width:100%;scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav a{flex-direction:column;gap:3px;font-size:9.5px;letter-spacing:-.1px;line-height:1.15;padding:6px 0;min-width:0;flex:1 1 0;text-align:center;justify-content:flex-start}
  nav a span{overflow-wrap:normal;word-break:keep-all}
  nav a.on{box-shadow:none}
  nav a .ct{position:absolute;top:2px;left:calc(50% + 6px);margin:0;font-size:9.5px;padding:0 5px;line-height:15px}
  main{padding:20px 16px 100px}
  #banner{padding:10px 16px}
  .mtop{display:flex}
  .kpis{grid-template-columns:1fr 1fr}.kpi:nth-child(2){border-right:0}.kpi:nth-child(-n+2){border-bottom:1px solid var(--line-2)}
  .kpi{padding:14px 16px}.kpi .v{font-size:22px}
  .g3,.g4{grid-template-columns:1fr 1fr}
  .facts{grid-template-columns:1fr}.facts>div{border-right:0;border-bottom:1px solid var(--line-2)}
  .mbox{max-width:none}
  .phead h1{font-size:22px}
  .tech .tiles{grid-template-columns:1fr 1fr!important}
}
@media(max-width:460px){.g2,.g3,.g4{grid-template-columns:1fr}}
.daystrip{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:thin}
.day{flex:none;min-width:78px;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:9px 8px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:1px;transition:border-color .12s,background .12s}
.day:hover{border-color:var(--faint)}
.day .w{font-size:12px;color:var(--mut);font-weight:500}
.day .n{font-size:20px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.2}
.day small{font-size:11px;color:var(--ok);font-weight:550}
.day.full small{color:var(--faint)}
.day.full{opacity:.6}
.day.on{border-color:var(--acc);background:var(--acc-soft);box-shadow:0 0 0 3px var(--acc-soft)}
.slotgrp{margin-top:14px}
.slotgrp .lbl{font-size:12.5px;color:var(--mut);font-weight:500;margin-bottom:8px}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.slot{height:42px;border:1px solid var(--line);background:var(--surface);border-radius:10px;font-weight:550;font-size:13.5px;cursor:pointer;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15;transition:border-color .12s,background .12s}
.slot:hover:not(:disabled){border-color:var(--acc);color:var(--acc)}
.slot small{font-size:10.5px;font-weight:500;color:var(--faint)}
.slot.on{background:var(--acc);border-color:var(--acc);color:#fff}
.slot.on small{color:rgba(255,255,255,.8)}
.slot:disabled{cursor:not-allowed;color:var(--faint);background:var(--sunk);text-decoration:line-through}
.slot.flex{grid-column:span 2}
.slotsum{margin-top:14px;display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:10px;background:var(--sunk);border:1px solid var(--line-2);font-size:13px}
.slotsum.ok{background:var(--acc-soft);border-color:color-mix(in srgb,var(--acc) 25%,transparent)}
.mslots{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.mslots .slot{height:34px;padding:0 10px;flex-direction:row;gap:6px;font-size:12.5px}
.job.tint{background:color-mix(in srgb,var(--c) 8%,var(--surface));border-color:color-mix(in srgb,var(--c) 35%,var(--line))}
.job.live::after,.jobbox.live::after{content:"";position:absolute;top:-4px;right:-4px;width:10px;height:10px;border:2px solid var(--surface);border-radius:50%;background:var(--c);animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
.jobbox.tint{background:color-mix(in srgb,var(--c) 8%,var(--surface));border-color:color-mix(in srgb,var(--c) 40%,var(--line))}
.jobbox.cur{box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 25%,transparent)}
.legend{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 12px}
.legend .pill{font-size:11px}
.svcgrp{grid-column:1/-1;font-size:12px;font-weight:600;color:var(--mut);margin-top:6px}
.svcgrp:first-child{margin-top:0}
.modal.center{justify-content:center;align-items:center;padding:16px}
.mbox.mpin{max-width:360px;height:auto;border-radius:20px;overflow:hidden;animation:none}
.pinpad{display:flex;flex-direction:column;align-items:center;gap:14px;padding:22px 24px 26px}
.pindots{display:flex;gap:14px}
.pindots i{width:14px;height:14px;border-radius:50%;border:2px solid var(--faint)}
.pindots i.on{background:var(--acc);border-color:var(--acc)}
.pinerr{min-height:18px;font-size:13px;color:var(--err);font-weight:550}
.pinpad.shake .pindots{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-8px)}50%{transform:translateX(7px)}75%{transform:translateX(-4px)}}
.keys{display:grid;grid-template-columns:repeat(3,72px);gap:12px}
.keys button{height:60px;border-radius:16px;border:1px solid var(--line);background:var(--sunk);font-size:22px;font-weight:600;cursor:pointer;font-variant-numeric:tabular-nums}
.keys button:hover{border-color:var(--acc)}
.keys button:active{background:var(--acc-soft)}
.keys button.ghost{background:none;border-color:transparent;font-size:15px;color:var(--mut)}
.signin{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.signin button{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surface);cursor:pointer;font-weight:600;box-shadow:var(--sh)}
.signin button:hover{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.signin .av{width:52px;height:52px;font-size:18px}
.whoami{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.whoami b{display:block;color:#fff;font-size:13px;font-weight:600;line-height:1.2}
.whoami span:not(.av){font-size:11.5px;color:var(--rail-text)}
.whoami .so{margin-left:auto;background:var(--rail-2);border:0;color:#fff;border-radius:7px;padding:5px 9px;font-size:12px;cursor:pointer}
.whoami .so:hover{background:#22344F}
#whoami2 .whoami{margin:0 0 0 10px}#whoami2 .whoami>div,#whoami2 .whoami .av{display:none}
.daycard{padding:18px 18px 8px}
.hrow{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;border-top:1px solid var(--line-2);padding:10px 0;min-height:52px}
.hlab{font-size:12.5px;color:var(--mut);font-weight:550;font-variant-numeric:tabular-nums;padding-top:4px}
.hrow.now .hlab{color:var(--acc)}
.hrow.now{box-shadow:inset 3px 0 0 var(--acc);padding-left:8px;margin-left:-8px}
.hjobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;align-items:start}
.add.slim{border-color:transparent;text-align:left;padding:4px 8px;opacity:0;justify-self:start}
.hrow:hover .add.slim,.add.slim:focus-visible{opacity:1}
@media (hover:none){.add.slim{opacity:.6}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- platform: auth, public booking, install ---------- */
body.authmode .shell{display:none}
#authRoot:empty{display:none}
.authwrap{min-height:100vh;display:grid;grid-template-columns:minmax(320px,440px) 1fr;background:var(--canvas)}
.aside{background:var(--rail);color:#fff;padding:36px 40px;display:flex;flex-direction:column;gap:40px;position:relative;overflow:hidden}
.aside::after{content:"";position:absolute;right:-120px;bottom:-120px;width:360px;height:360px;border-radius:50%;border:1px solid rgba(141,178,58,.25);box-shadow:0 0 0 60px rgba(141,178,58,.06),0 0 0 120px rgba(141,178,58,.04)}
.abrand{display:flex;align-items:center;gap:12px;font-weight:650;font-size:18px;letter-spacing:-.01em}
.apitch h2{font-size:30px;line-height:1.15;letter-spacing:-.03em;margin:0 0 20px;font-weight:650;text-wrap:balance}
.apitch ul{list-style:none;margin:0;padding:0;display:grid;gap:12px;color:var(--rail-text)}
.apitch li{display:flex;gap:10px;align-items:baseline}
.apitch li::before{content:"";width:7px;height:7px;border-radius:50%;background:#8DB23A;flex:none;transform:translateY(-2px)}
.afine{margin-top:auto;font-size:12px;color:var(--faint)}
.amain{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.acard{width:100%;max-width:440px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:var(--sh)}
.acard h1{font-size:24px;margin:0 0 6px;letter-spacing:-.025em}
.acard>p{margin:0 0 16px}
.aform{display:grid;gap:14px;margin-top:18px}
.afoot{margin-top:20px;padding-top:16px;border-top:1px solid var(--line-2);display:grid;gap:6px}
.afoot p{margin:0}
.alink{background:none;border:0;padding:0;color:var(--acc);font-weight:550;cursor:pointer;font-size:inherit}
.alink:hover{text-decoration:underline}
.aerr{background:color-mix(in srgb,var(--err) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--err) 30%,transparent);color:var(--text);border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:14px}
.pw{position:relative;display:block}
.pw input{width:100%;padding-right:64px}
.pwt{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:var(--sunk);border-radius:7px;padding:4px 9px;font-size:12px;cursor:pointer;color:var(--mut)}
.slugrow{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:9px;padding-left:11px;background:var(--sunk);font-size:13px}
.slugrow input{border:0!important;box-shadow:none!important;flex:1;min-width:80px;border-radius:0 9px 9px 0!important}
.choice{display:grid;gap:12px;margin-top:16px}
.choice>div{border:1px solid var(--line);border-radius:12px;padding:14px}
.choice p{margin:4px 0 10px}
.aload{display:flex;flex-direction:column;align-items:center;gap:12px;padding:30px 0}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--acc);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.pubwrap{max-width:760px;margin:0 auto;padding:24px 16px 40px;display:grid;gap:18px}
.pubwrap .acard{max-width:none}
.pubhead{display:flex;align-items:center;gap:12px}
.pubhead b{display:block;font-size:17px;letter-spacing:-.01em}
.pubhead span{font-size:12.5px;color:var(--mut)}
.linkbox{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;padding:14px;border-radius:12px;background:var(--sunk);border:1px solid var(--line-2)}
.linkbox>div{flex:1;min-width:220px}
.linkbox code{font-size:12.5px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 9px;word-break:break-all}
.installbtn{width:100%;margin-bottom:10px;background:#8DB23A;color:#0B1E38;border:0;border-radius:9px;padding:8px;font-weight:600;cursor:pointer}
.orgsw{width:100%;margin-bottom:10px;background:var(--rail-2);color:#fff;border:1px solid rgba(255,255,255,.08)}
@media(max-width:860px){.authwrap{grid-template-columns:1fr}.aside{padding:22px 20px;gap:14px}.apitch ul,.afine,.aside::after{display:none}.apitch h2{font-size:20px;margin:0}.amain{align-items:flex-start;padding:20px 14px}.acard{padding:22px}}

.slot.on:hover:not(:disabled){color:#fff}
.pubwrap{grid-template-columns:minmax(0,1fr)}
.acard,.pubform{min-width:0}

.brandlogo{display:block;width:100%;max-width:300px;height:auto;margin:0 0 18px}
.state{background:radial-gradient(120% 140% at 100% 0%,color-mix(in srgb,var(--c) 45%,#0B1E38) 0%,#0B1E38 62%)}

.qrwrap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:20px;align-items:start}
.qrbox{background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px;line-height:0}
.qrlink{display:block;font-size:12.5px;background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:7px 9px;word-break:break-all}
.posterprev{display:flex;justify-content:center;background:var(--sunk);border:1px solid var(--line-2);border-radius:12px;padding:16px;min-height:120px;align-items:center}
.posterprev img{width:100%;max-width:320px;box-shadow:0 10px 30px -10px rgba(11,30,56,.35);border-radius:6px}
.forshop{display:flex;flex-direction:column;gap:2px;background:var(--acc-soft);border:1px solid color-mix(in srgb,var(--acc) 25%,transparent);border-radius:12px;padding:12px 14px;margin-bottom:16px}
.forshop span{font-size:12.5px;color:var(--mut)}.forshop b{font-size:17px}
@media(max-width:600px){.qrwrap{grid-template-columns:1fr;justify-items:center}}

.qrthumb{border:1px solid var(--line);background:#fff;border-radius:8px;padding:2px;cursor:pointer;line-height:0;vertical-align:middle}
.qrthumb:hover{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
.qrthumb svg{width:40px;height:40px}
#toast.act.on{pointer-events:auto}
#toast .tbtn{margin-left:10px;background:#fff;color:#0B1E38;border:0;border-radius:7px;padding:4px 10px;font-weight:600;cursor:pointer}

.photocats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.photobtn{cursor:pointer}
.photogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.ph{margin:0;position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--sunk)}
.phimg{display:grid;place-items:center;width:100%;aspect-ratio:4/3;border:0;padding:0;background:var(--sunk);cursor:zoom-in}
.phimg img{width:100%;height:100%;object-fit:cover;display:block}
.ph figcaption{padding:6px 8px;font-size:12px;display:flex;flex-direction:column;gap:1px}
.ph figcaption span{color:var(--mut);font-size:11px}
.phdel{position:absolute;top:6px;right:6px;border:0;border-radius:7px;background:rgba(11,30,56,.7);color:#fff;font-size:12px;padding:3px 7px;cursor:pointer}
.phdel.sure{background:var(--err)}
.ph.busy{opacity:.7}
#lightbox{position:fixed;inset:0;z-index:80;background:rgba(5,12,24,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px;cursor:zoom-out}
#lightbox img{max-width:100%;max-height:88vh;border-radius:8px}
#lightbox span{color:#A9B8CC;font-size:12px}

/* diagnostic assist */
.diagbd{display:flex;flex-direction:column;gap:14px;background:var(--sunk)}
.diaghead{display:flex;align-items:center;gap:12px}
.diaghead>div{flex:1;display:flex;flex-direction:column}
.diaghead span{color:var(--mut);font-size:12.5px}
.diagreps h2{font-size:14px}
.rep{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line-2);flex-wrap:wrap}
.rep:first-child{border-top:0}
.rep>div{flex:1;min-width:160px;display:flex;flex-direction:column}
.rep>div span{font-size:12px;color:var(--mut)}
.rep select{max-width:260px}
.rtag{font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--acc-soft);color:var(--acc)}
.rtag.em{background:color-mix(in srgb,var(--brand-green,#4F8A35) 14%,transparent);color:var(--brand-green,#4F8A35)}
.rep.busy{color:var(--mut);font-size:13px}
.spin.sm{width:16px;height:16px;border-width:2px}
.diaglog{display:flex;flex-direction:column;gap:10px}
.msg{max-width:92%;border-radius:14px;padding:10px 13px;font-size:14px;line-height:1.5}
.msg.user{align-self:flex-end;background:var(--acc);color:#fff;border-bottom-right-radius:4px}
.msg.assistant{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:4px}
.who2{font-size:11px;font-weight:600;opacity:.75;margin-bottom:3px}
.md p{margin:0 0 8px}.md p:last-child{margin-bottom:0}
.md ol,.md ul{margin:0 0 8px;padding-left:20px}.md li{margin:3px 0}
.md code{background:var(--sunk);padding:1px 5px;border-radius:5px;font-size:12.5px}
.diagempty{text-align:center;padding:14px 10px}.diagempty p{margin:4px 0 0}
.chips2{display:flex;flex-wrap:wrap;gap:6px}
.chip2{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:6px 12px;font-size:12.5px;cursor:pointer;font-weight:500}
.chip2:hover{border-color:var(--acc);color:var(--acc)}
.diagft{flex-direction:column;align-items:stretch;gap:8px}
.diagft textarea{min-height:52px}
.dots{display:inline-flex;gap:3px;margin-right:6px;vertical-align:middle}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--faint);animation:blink 1.2s infinite}
.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
[hidden]{display:none!important}

/* guided fix */
.diagtabs{align-self:center}
.diagflow{display:flex;flex-direction:column;gap:12px}
.codebar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--mut)}
.codebar code{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-weight:600;color:var(--text);font-size:12px}
.crumbs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.crumbs button{width:100%;display:flex;justify-content:space-between;gap:10px;text-align:left;border:0;background:none;padding:6px 10px;border-radius:8px;cursor:pointer;font-size:12.5px;color:var(--mut)}
.crumbs button:hover{background:var(--surface)}
.crumbs b{color:var(--text);font-weight:600;white-space:nowrap}
.crumbs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fq,.fsol{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--sh)}
.fstep{font-size:12px;font-weight:600;color:var(--acc)}
.ftitle{font-size:20px;line-height:1.25;letter-spacing:-.02em;margin:4px 0 6px;display:block}
.ftitle::after{display:none}
.fhint{margin:0 0 12px;color:var(--mut);font-size:13.5px}
.fopts{display:grid;gap:10px;margin-top:12px}
.fopt{position:relative;text-align:left;min-height:56px;padding:12px 16px 12px 18px;border-radius:12px;border:1px solid var(--line);background:var(--sunk);font-size:16px;font-weight:600;cursor:pointer;transition:border-color .12s,background .12s}
.fopt::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:var(--line)}
.fopt.good::before{background:var(--ok)}.fopt.bad::before{background:var(--err)}.fopt.warn::before{background:var(--warn)}
.fopt:hover,.fopt:focus-visible{border-color:var(--acc);background:var(--acc-soft)}
.fopt:active{transform:scale(.99)}
.fhelp{display:block;margin:14px auto 0;font-size:13px}
.fchecks{display:grid;gap:8px;margin:10px 0 14px}
.fsol{border-width:2px}
.fsol.good{border-color:var(--ok)}.fsol.bad{border-color:var(--err)}.fsol.warn{border-color:var(--warn)}
.fsol.good .fstep{color:var(--ok)}.fsol.bad .fstep{color:var(--err)}.fsol.warn .fstep{color:var(--warn)}
.fsteps{margin:8px 0 16px;padding-left:22px;display:grid;gap:8px;font-size:15px}
.fact{display:grid;gap:10px}

/* OEM library */
.libdrop{display:flex;align-items:center;gap:16px;border:1.5px dashed color-mix(in srgb,var(--acc) 45%,var(--line));background:color-mix(in srgb,var(--acc) 4%,var(--surface));border-radius:var(--r-lg);padding:18px 20px;margin-bottom:16px;transition:.15s}
.libdrop svg{width:30px;height:30px;color:var(--acc);flex:none}
.libdrop>div{flex:1;display:flex;flex-direction:column;gap:3px}.libdrop>div span{font-size:13px;color:var(--mut)}
.libdrop.over{background:color-mix(in srgb,var(--acc) 12%,var(--surface));border-color:var(--acc)}
.libfilters{margin:4px 0 16px;gap:8px}.libfilters input[type=search]{flex:1;min-width:200px}.libfilters select{max-width:220px}
.librow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line-2);padding:11px 2px;cursor:pointer;font:inherit;color:inherit}
.librow:first-of-type{border-top:0}.librow:hover{background:var(--sunk)}
.libico{flex:none;width:38px;height:44px;border-radius:7px;display:grid;place-items:center;font-size:10.5px;font-weight:700;letter-spacing:.04em;background:#FDECEC;color:#B42318}
.libico.img{background:var(--acc-soft);color:var(--acc)}
.libmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.libmain>b{font-weight:600}.libmain>span{font-size:12.5px;color:var(--mut)}
.libtags{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.libtags i{font-style:normal;font-size:11px;font-weight:500;padding:2px 7px;border-radius:6px;background:var(--sunk);border:1px solid var(--line-2);color:var(--text)}
.libtags i.t{background:var(--acc-soft);border-color:transparent;color:var(--acc)}.libtags i.m{background:color-mix(in srgb,var(--ok) 12%,transparent);border-color:transparent;color:var(--ok)}
.gaps{display:flex;flex-wrap:wrap;gap:8px}.gap{display:flex;flex-direction:column;padding:8px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--sunk)}.gap span{font-size:12px;color:var(--mut)}
.spec{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0 0 8px;font-size:13.5px}.spec dt{color:var(--mut)}.spec dd{margin:0;font-weight:500}
.specl{font-size:13.5px;margin-top:8px}.specl ul{margin:4px 0 0;padding-left:18px}.specl li{margin:2px 0}
.syschk{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;margin-top:6px}
#libF .f{margin-bottom:10px}#libF .f>span{font-size:12.5px;color:var(--mut);font-weight:500}.libh{margin:16px 0 8px;font-size:14px}
#libF .warnbox,#libF .note{margin-bottom:10px}
.diaglib{margin-top:12px}.diaglib #diagLib{margin-top:8px}
.libdet{border-top:1px solid var(--line-2);padding:8px 0}.libdet:first-child{border-top:0}
.libdet summary{cursor:pointer;display:flex;flex-direction:column;gap:2px;list-style:none}.libdet summary::-webkit-details-marker{display:none}
.libdet summary b{font-weight:600}.libdet summary span{font-size:12px;color:var(--mut)}.libdet[open] summary{margin-bottom:8px}
@media (max-width:700px){.libdrop{padding:14px}.libdrop label.btn{display:none}.libfilters{flex-wrap:wrap}.libfilters input[type=search]{flex:1 1 100%}.libfilters select{max-width:none;flex:1 1 30%;min-width:0}}

/* Team help */
.helpbar{background:color-mix(in srgb,var(--warn) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:var(--r-lg);padding:12px 16px;margin-bottom:16px}
.hbhead{display:flex;align-items:center;gap:8px}.hbdot{width:9px;height:9px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 0 color-mix(in srgb,var(--warn) 60%,transparent);animation:hbp 1.6s infinite}
@keyframes hbp{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--warn) 55%,transparent)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
.hbrow{display:flex;align-items:center;gap:12px;padding:9px 0 0;margin-top:9px;border-top:1px solid color-mix(in srgb,var(--warn) 20%,transparent)}
.hbrow>div{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13.5px}.hbrow>div span{font-size:12.5px;color:var(--mut)}
.helpcard{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface)}
.helpcard.on{border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:color-mix(in srgb,var(--warn) 7%,var(--surface))}
.helpcard.min{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:9px 12px}
.helpcard textarea{width:100%}
.msg.event{align-self:center;max-width:96%;background:none;border:1px dashed var(--line);color:var(--mut);font-size:12.5px;text-align:center;padding:7px 12px}
.msg.event span{display:block;font-size:11px;font-weight:600;margin-bottom:2px}
.msg.team{align-self:flex-start;background:color-mix(in srgb,var(--brand-green,#4F8A35) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--brand-green,#4F8A35) 35%,transparent);border-bottom-left-radius:4px}
.msg.team.mine{align-self:flex-end;border-bottom-left-radius:14px;border-bottom-right-radius:4px}
.msg.user.other{align-self:flex-start;background:var(--acc-soft);color:var(--text);border-bottom-right-radius:14px;border-bottom-left-radius:4px}
.hbl{margin:0}

/* Calibration specs */
.libtabs{margin:0 0 16px}
.calsrc{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:14px}
.srcbox{display:flex;flex-direction:column;gap:6px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--sh)}
.srcbox span{font-size:12.5px;color:var(--mut);flex:1}.srcbox .btn{margin-top:4px}.btn.dis{opacity:.5;pointer-events:none}
.kitcard{margin-bottom:14px}
.tw0{padding:0;overflow:hidden}.tw0>.tw{margin:0;border-top:0}
.caltab td{vertical-align:top}.caltab .d{display:block;margin-top:2px}.caltab tr.click{cursor:pointer}.caltab tr.click:hover td{background:var(--sunk)}
.caltab code,.calline code{font-size:12.5px;background:var(--sunk);border:1px solid var(--line-2);border-radius:5px;padding:1px 5px}
.mpill{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--sunk);color:var(--mut);white-space:nowrap}
.mpill.static{background:#E6F1FB;color:#0F5E9C}.mpill.dynamic{background:#EAF6EC;color:#2E7D32}.mpill.static_then_dynamic{background:#F3EAFB;color:#6B2FA3}.mpill.either{background:#FFF4DC;color:#7A4A00}
.calline{border-top:1px solid var(--line-2);padding:8px 0}.calline:first-child{border-top:0;padding-top:0}
.cl1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cl2{font-size:13px;margin-top:4px}.cl3{font-size:12px;color:var(--mut);margin-top:3px}
.srcl{margin:0;padding-left:18px;font-size:13px}.srcl li{margin:3px 0}
#calF .f{margin-bottom:10px}#calF .chk{margin-top:6px}.cfl{margin-bottom:8px}
#kitF .f{margin-bottom:10px}
@media (max-width:700px){.caltab th:nth-child(5),.caltab td:nth-child(5){display:none}}
.findcar{margin-bottom:14px}.findcar h2{margin-bottom:10px}.smartframe{width:100%;height:620px;border:1px solid var(--line);border-radius:10px;background:#fff}.smartlive{margin-top:14px}

/* Setup photos */
.calphotos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.calph{position:relative;margin:0;width:150px;display:flex;flex-direction:column;gap:4px}
.calimg{display:grid;place-items:center;width:150px;height:105px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0;overflow:hidden;cursor:zoom-in}
.calimg img{width:100%;height:100%;object-fit:contain}
.calph figcaption{font-size:11.5px;line-height:1.3}.calph figcaption span{display:block;color:var(--mut);font-size:10.5px}
.calphx{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(11,30,56,.75);color:#fff;cursor:pointer;line-height:1}
.calph.add{height:105px;border:1.5px dashed var(--line);border-radius:9px;display:grid;place-items:center;cursor:pointer;color:var(--acc);font-weight:600;font-size:13px}
#lightbox img{background:#fff}
.calimg em{display:none;font-style:normal;font-size:12px;color:var(--acc);font-weight:600;padding:8px;text-align:center}.calimg.broken img{display:none}.calimg.broken em{display:block}

/* Notifications */
.bell{position:relative;margin-left:auto;width:34px;height:34px;border-radius:9px;border:0;background:rgba(255,255,255,.06);color:var(--rail-text);display:grid;place-items:center;cursor:pointer;flex:none}
.bell:hover{background:var(--rail-2);color:#fff}.bell svg{width:18px;height:18px}
.bell .bct{position:absolute;top:-4px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:#E5484D;color:#fff;font-size:10.5px;font-weight:700;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--rail)}
.mtop .bell{margin-left:0}.mtop .conn{margin-left:auto}
.notifbd{padding-top:12px}
.notif{display:flex;gap:11px;align-items:flex-start;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line-2);padding:11px 4px;cursor:pointer;font:inherit;color:inherit}
.notif:first-child{border-top:0}.notif:hover{background:var(--sunk)}
.nico{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--sunk);color:var(--mut);font-weight:700;font-size:14px}
.notif.k-job_assigned .nico,.notif.k-booking_request .nico{background:var(--acc-soft);color:var(--acc)}
.notif.k-help_request .nico,.notif.k-cal_failed .nico,.notif.k-job_cancelled .nico{background:#FDECEC;color:#B42318}
.notif.k-job_completed .nico{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.notif.k-team_reply .nico{background:color-mix(in srgb,var(--brand-green,#4F8A35) 14%,transparent);color:var(--brand-green,#4F8A35)}
.nmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.nmain b{font-weight:600;font-size:14px}.nmain span{font-size:13px;color:var(--mut);overflow-wrap:anywhere}.nmain i{font-style:normal;font-size:11.5px;color:var(--mut)}
.notif.unread .nmain b{color:var(--text)}.notif:not(.unread) .nmain b{font-weight:500;color:var(--mut)}
.ndot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--acc);margin-top:6px}
.notifempty{display:flex;flex-direction:column;gap:4px;align-items:center;text-align:center;padding:28px 10px}
.pushcard{margin-top:16px}.pushkinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px}
#toast b{font-weight:700}
#toast b{white-space:nowrap}

/* Team chat */
.chatwrap{display:grid;grid-template-columns:270px 1fr;gap:16px;height:calc(100vh - 120px);min-height:480px}
.rooms{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:10px;overflow:auto;box-shadow:var(--sh)}
.rhead{padding:4px 6px 10px}.rhead h2{margin:0}
.room{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-radius:10px;padding:9px 8px;cursor:pointer;font:inherit;color:inherit}
.room:hover{background:var(--sunk)}.room.on{background:var(--acc-soft)}.room.arch{opacity:.55}
.ric{flex:none;width:30px;height:30px;border-radius:8px;background:var(--sunk);display:grid;place-items:center;font-weight:700;color:var(--mut)}
.room.on .ric{background:var(--surface);color:var(--acc)}
.rname{flex:1;min-width:0;display:flex;flex-direction:column;font-weight:600;font-size:14px}.rname small{font-weight:400;font-size:11.5px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.room .ct{font-size:11px;font-weight:700;background:var(--acc);color:#fff;border-radius:99px;padding:0 7px;line-height:19px}
.roompane{display:flex;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);overflow:hidden}
.rp-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-2)}.rp-head>div{display:flex;flex-direction:column}.rp-back{display:none}
.chatlog{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px;background:var(--bg)}
.chatempty{display:grid;place-items:center;flex:1;padding:30px}
.daysep{display:flex;justify-content:center;margin:6px 0}.daysep span{font-size:11.5px;color:var(--mut);background:var(--surface);border:1px solid var(--line-2);border-radius:99px;padding:2px 10px}
.cmsg{display:flex;gap:8px;align-items:flex-end;max-width:78%}.cmsg.mine{align-self:flex-end;flex-direction:row-reverse}
.cb{background:var(--surface);border:1px solid var(--line);border-radius:14px;border-bottom-left-radius:4px;padding:8px 12px}
.cmsg.mine .cb{background:var(--acc);border-color:var(--acc);color:#fff;border-bottom-left-radius:14px;border-bottom-right-radius:4px}
.cwho{font-size:11.5px;font-weight:600;opacity:.8;margin-bottom:2px}.cwho span{font-weight:400;opacity:.8;margin-left:4px}
.ctext{font-size:14px;line-height:1.45;overflow-wrap:anywhere}.mention{font-weight:700}
.cmsg.mine .mention{color:#fff;text-decoration:underline}
.cact{display:none;gap:8px;margin-top:4px;font-size:12px}.cb:hover .cact{display:flex}.cmsg.mine .cact .alink{color:#fff}
.cmsg.del i{font-size:12.5px;color:var(--mut);padding:4px 8px}
.chatcompose{display:flex;gap:8px;align-items:flex-end;padding:10px 12px;border-top:1px solid var(--line-2);background:var(--surface)}
.chatcompose textarea{flex:1;resize:none;min-height:40px;max-height:140px;padding:9px 12px;border-radius:12px}
.notices{gap:12px}.noticecompose textarea{width:100%}
.notice{border-left:4px solid var(--line)}.notice.pinned{border-left-color:#D69E2E;background:color-mix(in srgb,#F6E05E 7%,var(--surface))}
.nhead{display:flex;align-items:center;gap:10px}.nhead>div{display:flex;flex-direction:column}
.nbody{margin:10px 0;font-size:14.5px;line-height:1.55;overflow-wrap:anywhere}
.nfoot{gap:10px;flex-wrap:wrap;align-items:center}
.seen summary{cursor:pointer;font-size:12.5px;color:var(--mut)}.seen div{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px}.seen .ok{color:var(--ok)}.seen .no{color:var(--mut)}
@media(max-width:860px){
  .chatwrap{grid-template-columns:1fr;height:calc(100vh - 170px)}
  .chatwrap.hasroom .rooms{display:none}.chatwrap:not(.hasroom) .roompane{display:none}
  .rp-back{display:inline-flex}.cmsg{max-width:92%}.cact{display:flex}
}
#toast .tmsg{flex:1;min-width:0;line-height:1.35}#toast .tmsg b{white-space:normal}@media(max-width:600px){#toast{left:12px;right:12px;transform:translate(0,8px);max-width:none}#toast.on{transform:translate(0,0)}#toast .tbtn{margin-left:4px;flex:none}}
.tierpill{display:inline-block;font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:99px;background:var(--sunk);color:var(--mut);margin-left:4px;vertical-align:1px}.tierpill.t-fixed{background:#E6F1FB;color:#0F5E9C}.tierpill.t-rebate{background:#FFF4DC;color:#7A4A00}

/* Per-job steps */
.jtabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px}
.jtab{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 6px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);color:var(--mut);font:inherit;font-weight:600;font-size:13.5px;cursor:pointer;min-height:46px}
.jtab .jn{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;background:var(--sunk);color:var(--mut);flex:none}
.jtab:disabled{cursor:default;opacity:.55}
.jtab.next:not(:disabled){border-color:var(--c);color:var(--c);opacity:1}
.jtab.next:not(:disabled) .jn{background:var(--c);color:#fff}
.jtab.next:not(:disabled):hover{background:color-mix(in srgb,var(--c) 8%,var(--surface))}
.jtab.cur{background:color-mix(in srgb,var(--c) 12%,var(--surface));border-color:var(--c);color:var(--c);opacity:1}
.jtab.done{background:var(--c);border-color:var(--c);color:#fff;opacity:1}.jtab.done .jn{background:rgba(255,255,255,.25);color:#fff}
.jhint{font-size:12.5px;color:var(--mut);margin-top:6px}
.nextjob{border:1.5px solid var(--acc);border-radius:14px;padding:16px;background:var(--acc-soft)}
.nextjob.none{border-color:var(--line);background:var(--sunk);text-align:center}
.nj-k{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--acc)}.nextjob.none .nj-k{color:var(--text);text-transform:none;letter-spacing:0;font-size:16px}
.nj-t{font-size:19px;font-weight:700;margin-top:4px}.nj-a{margin-top:4px}.nj-v{margin-top:4px;color:var(--mut)}
.nj-act{flex-wrap:wrap}.nj-act .btn.big{flex:1 1 140px;width:auto}
@media(max-width:480px){.jtab{font-size:12.5px;gap:5px;padding:9px 4px}.jtab .jn{width:19px;height:19px;font-size:11px}}
.jundo{margin-top:6px;text-align:right}.jundo .alink{font-size:13px}
.jtab.done:disabled{opacity:1}
.jtab.done:not(:disabled){cursor:pointer}.jtab.done:not(:disabled):hover{filter:brightness(1.08)}
.jtab.rev{background:color-mix(in srgb,var(--c) 14%,var(--surface));border:1.5px dashed var(--c);color:color-mix(in srgb,var(--c) 85%,#000);opacity:1}
.jtab.rev .jn{background:color-mix(in srgb,var(--c) 30%,var(--surface));color:color-mix(in srgb,var(--c) 85%,#000)}
.jtab.rev:disabled{opacity:.8}
.jtab small{display:block;font-size:10px;font-weight:600;opacity:.8;line-height:1}
.jtab span:last-child{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}

/* In-app question box */
.askwrap{position:fixed;inset:0;z-index:90;background:rgba(11,30,56,.45);display:grid;place-items:center;padding:20px;animation:askin .12s ease-out}
@keyframes askin{from{opacity:0}to{opacity:1}}
.askcard{background:var(--surface);border-radius:16px;box-shadow:var(--sh-lg);padding:20px;width:min(420px,100%)}
.askq{margin:0 0 16px;font-size:16px;font-weight:600;line-height:1.4}
.askcard input,.askcard textarea{width:100%;margin-bottom:14px}
.askbtns{display:flex;gap:10px;justify-content:flex-end}.askbtns .btn{min-width:96px;height:44px}
.btn.dd{background:var(--err);border-color:var(--err);color:#fff}

/* Add a job on site */
.addhere{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;margin-top:14px;height:auto;padding:12px;border:1.5px dashed var(--acc);color:var(--acc);background:var(--surface);font-weight:700;font-size:15px}
.addhere span{font-weight:400;font-size:12px;color:var(--mut)}
.qjgrp{margin-top:8px}.qjchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.qjchip{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:var(--surface);cursor:pointer;font-size:13px}
.qjchip input{margin:0}.qjchip:has(input:checked){border-color:var(--acc);background:var(--acc-soft)}
@media(max-width:600px){#qj .g4{grid-template-columns:1fr 1fr}}

/* rego → VIN lookup */
.regolook{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.regolook select{width:auto;height:30px;padding:0 6px}
.regolook [data-regomsg]{flex:1 1 200px;min-width:0}

/* directions while travelling */
.jaddr{display:flex;align-items:center;gap:8px;margin:2px 0}
.jaddr .mut{flex:1;min-width:0}
.dirbtn.on{background:var(--acc);border-color:var(--acc);color:#fff}
.dirbtn{text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.dirbtn::before{content:"➜";font-size:12px}

/* job card: required items not done */
#jc .chk.miss{background:#FEF2F2;border-radius:8px;outline:1.5px solid #F87171}
#jc .chk.miss span{color:#B91C1C}
#jcPhotoMsg.miss{color:#B91C1C;font-weight:600}

/* jobs on hold (parts / diagnosis / rebook) */
.holdbtn{color:#B45309;border-color:#F3C98B}
.holdbtn.on{background:#B45309;border-color:#B45309;color:#fff}
.holdopts{display:grid;gap:8px}
.holdopt{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer}
.holdopt input{margin-top:3px}
.holdopt .hi{font-size:18px;line-height:1.2}
.holdopt small{display:block;color:var(--mut);font-size:12.5px;margin-top:2px}
.holdopt:has(input:checked){border-color:#B45309;background:#FFF7ED}
.holdnote{font-size:12px;color:#92400E;background:#FFF7ED;border-radius:6px;padding:4px 7px;margin-top:4px}
.holdbox{background:#FFF7ED;border-color:#F3C98B;color:#7C2D12}

/* ---------- calibration report ---------- */
#report{position:fixed;inset:0;z-index:300;background:#E9EEF4;overflow:auto;-webkit-overflow-scrolling:touch}
#report .rbar{position:sticky;top:0;display:flex;gap:8px;align-items:center;padding:10px 14px;background:#fff;border-bottom:1px solid var(--line);z-index:2}
#report .rwrap{padding:18px 10px 40px}
.rpt{max-width:800px;margin:0 auto;background:#fff;color:#0B1E38;padding:34px 38px;border-radius:6px;box-shadow:0 2px 16px rgba(11,30,56,.12);font-size:13px;line-height:1.45}
.rpt h1{font-size:22px;margin:0 0 4px;letter-spacing:-.01em}
.rpt h2{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:#0F6F93;margin:0 0 8px}
.rpt section{margin-top:18px;break-inside:avoid}
.rhd{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:3px solid #0B1E38;padding-bottom:14px}
.rlogo{height:46px;width:auto}
.rttl{text-align:right;color:#475569}.rttl h1{color:#0B1E38}
.rverdict{margin-top:16px;padding:10px 14px;border-radius:8px;font-weight:700;font-size:15px}
.rverdict.ok{background:#ECFDF3;color:#166534;border:1px solid #A7E3BC}.rverdict.bad{background:#FEF2F2;color:#B91C1C;border:1px solid #F8B4B4}
.rverdict.warn,.rverdict.draft{background:#FFF7ED;color:#9A3412;border:1px solid #F3C98B}
.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rbox{border:1px solid #DCE3EC;border-radius:8px;padding:12px 14px}
.kv{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border-bottom:1px dashed #E6EBF1}.kv:last-child{border-bottom:0}
.kv span{color:#64748B}.kv b{text-align:right;font-weight:600;word-break:break-all}
.rtab{width:100%;border-collapse:collapse}.rtab th{text-align:left;font-size:11px;color:#64748B;font-weight:600;border-bottom:1.5px solid #0B1E38;padding:6px 6px}
.rtab td{padding:7px 6px;border-bottom:1px solid #E6EBF1;vertical-align:top}.rtab .mono{font-family:ui-monospace,monospace;color:#475569}
.rspec{margin-top:12px}.rspec th{border-bottom-color:#94A3B8}
.rb{display:inline-block;padding:2px 9px;border-radius:99px;font-weight:700;font-size:11.5px}
.rb.ok{background:#DCFCE7;color:#166534}.rb.bad{background:#FEE2E2;color:#B91C1C}.rb.na{background:#F1F5F9;color:#475569}.rb.pend{background:#FFF7ED;color:#9A3412}
.rmut{color:#64748B;font-size:12px;margin:6px 0 0}
.rchk{font-weight:600}.rchk.y{color:#166534}.rchk.n{color:#B91C1C}
.rdtc{margin-top:6px;white-space:pre-wrap;color:#334155;font-size:12.5px}
.rlist{list-style:none;padding:0;margin:0;columns:2;column-gap:18px}.rlist li{padding:3px 0;break-inside:avoid}.rlist li.y{color:#0B1E38}.rlist li.n{color:#B91C1C}
.rphg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.rphg figure{margin:0;break-inside:avoid}
.rphg img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;background:#EEF2F6;display:block}
.rphg figcaption{font-size:11px;color:#64748B;margin-top:3px}
.rsign{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;border-top:1px solid #DCE3EC;padding-top:12px}
.rsign span{display:block;font-size:11px;color:#64748B}.rsign b{font-size:13.5px}
.rfoot{margin-top:18px;font-size:10.5px;color:#94A3B8;border-top:1px solid #E6EBF1;padding-top:8px}
@media (max-width:640px){.rpt{padding:20px 16px}.rgrid,.rsign{grid-template-columns:1fr}.rlist{columns:1}.rphg{grid-template-columns:repeat(2,1fr)}.rhd{flex-direction:column}.rttl{text-align:left}}
@media print{
  html:has(body.rptopen),body.rptopen{background:#fff!important}
  body.rptopen>*:not(#report){display:none!important}
  body.rptopen #report{position:static;background:#fff;overflow:visible}
  #report .rbar{display:none}#report .rwrap{padding:0}
  .rpt{box-shadow:none;max-width:none;padding:0;border-radius:0}
  @page{size:A4;margin:12mm}
}

/* one A4 page: compact layout used while printing (body.rptprint is set just before print) */
body.rptprint .rpt{font-size:10.5px;line-height:1.35}
body.rptprint .rpt h1{font-size:17px;margin:0 0 2px}body.rptprint .rpt h2{font-size:9px;margin:0 0 4px}
body.rptprint .rpt section{margin-top:9px}
body.rptprint .rhd{padding-bottom:8px;border-bottom-width:2px}body.rptprint .rlogo{height:34px}
body.rptprint .rverdict{margin-top:9px;padding:6px 10px;font-size:12.5px}
body.rptprint .rgrid{gap:9px}body.rptprint .rbox{padding:7px 10px}body.rptprint .kv{padding:1px 0}
body.rptprint .rtab th{padding:3px 5px;font-size:9.5px}body.rptprint .rtab td{padding:3px 5px}body.rptprint .rspec{margin-top:6px}body.rptprint .rmut{font-size:9.5px;margin-top:3px}
body.rptprint .rb{font-size:9.5px;padding:1px 7px}body.rptprint .rdtc{margin-top:3px;font-size:10px}
body.rptprint .rlist{columns:2;column-gap:14px}body.rptprint .rlist li{padding:1px 0}
body.rptprint .rphg{grid-template-columns:repeat(5,1fr);gap:5px}body.rptprint .rphg figcaption{font-size:8.5px;margin-top:1px}body.rptprint .rphg img{border-radius:4px}
body.rptprint .rsign{gap:9px;padding-top:7px}body.rptprint .rsign span{font-size:8.5px}body.rptprint .rsign b{font-size:11px}
body.rptprint .rfoot{margin-top:8px;padding-top:5px;font-size:8px}
body.rptprint .rpt section,body.rptprint .rgrid,body.rptprint .rbox{break-inside:avoid}
body.rptprint .rpt{padding:0;max-width:none;box-shadow:none}
body.rptprint .rphg.few{grid-template-columns:repeat(4,1fr);gap:7px}

/* technician schedule */
.msdays{display:grid;gap:10px}
.msday{padding:12px 14px}
.msday.today{border-color:var(--acc);box-shadow:0 0 0 1.5px var(--acc) inset}
.msday.past{opacity:.72}
.msdh{display:flex;align-items:center;gap:8px;margin-bottom:6px}.msdh span{color:var(--mut)}
.msnone{padding:2px 0}
.msjob{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.msjob:first-of-type{border-top:0}
.msjob.done{opacity:.7}
.mst{width:62px;flex:none;display:flex;flex-direction:column}.mst span{font-size:12px;color:var(--mut)}
.msb{flex:1;min-width:0}

/* team schedule */
.schtabs{margin-bottom:10px}
.tmrow{padding:8px 0;border-top:1px solid var(--line)}.tmrow:first-of-type{border-top:0}
.tmrow.me .tmhd b{color:var(--acc)}
.tmhd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tmload{width:64px;height:6px;border-radius:9px;background:#E8EDF3;overflow:hidden;display:inline-block}
.tmload i{display:block;height:100%;border-radius:9px;background:#0F6F93}
.tmload.free i,.tmload.light i{background:#3F8A2F}.tmload.full i{background:#B45309}
.tmjob{display:flex;align-items:center;gap:10px;margin:6px 0 0 34px;font-size:13px}
.tmjob.done{opacity:.6}
.tmt{width:56px;flex:none;font-weight:600}
.tmb{flex:1;min-width:0}

/* services grouped by category; tick a group to open it */
.sgrp{grid-column:1/-1;border:1.5px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.sghd{display:flex;align-items:center;gap:10px;padding:11px 12px;cursor:pointer;font-weight:600;user-select:none}
.sghd .sgname{flex:1}
.sgcnt{font-size:12px;color:var(--mut);font-weight:500}
.sgn{font-size:11.5px;font-weight:700;color:#fff;background:var(--acc);padding:2px 8px;border-radius:99px}
.sgarr{color:var(--mut);transition:transform .15s;font-size:18px;line-height:1}
.sgrp.open{border-color:var(--acc)}
.sgrp.open .sghd{background:var(--acc-soft)}
.sgrp.open .sgarr{transform:rotate(90deg)}
.sgbody{display:none;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:4px 12px;padding:2px 12px 12px}
.sgrp.open .sgbody{display:grid}

/* customer region tag on jobs */
.rgtag{display:block;width:fit-content;font-size:10.5px;font-weight:600;color:#5B4B8A;background:#F0ECFA;border-radius:5px;padding:1px 6px;margin-top:3px}

/* drive time between jobs */
.leg{font-size:12px;color:#475569;background:#F1F5F9;border-radius:8px;padding:5px 9px;margin:6px 0;border-left:3px solid #94A3B8}
.leg.pend{color:var(--mut);border-left-color:#CBD5E1;background:transparent}
.leg.tight{color:#9A3412;background:#FFF7ED;border-left-color:#EA580C}
.leg i{color:var(--mut)}

/* schedule header stats + needs-scheduling count */
.calstat{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:99px;padding:4px 11px;white-space:nowrap}
.calstat b{font-size:14px}
.calstat.clk i{width:8px;height:8px;border-radius:50%;background:#CBD5E1}
.calstat.clk.on i{background:#16A34A;box-shadow:0 0 0 3px #DCFCE7}
.qcount{font-size:28px;font-weight:800;line-height:1;color:#fff;background:#C27803;border-radius:12px;padding:6px 14px;min-width:48px;text-align:center}
.qcount.zero{background:#E2E8F0;color:#64748B}

/* My day as a calendar */
.daycal{position:relative}
.daycal .hrow{position:relative;grid-template-columns:58px minmax(0,1fr);gap:10px;min-height:44px;padding:8px 0}
.daycal .hrow.free{min-height:36px}
.daycal .hjobs.one{grid-template-columns:minmax(0,1fr);gap:8px}
.daycal .hrow.now{box-shadow:none;padding-left:0;margin-left:0}
.calslot .cst{font-size:12px;font-weight:700;color:var(--acc);margin:0 0 4px 2px}
.hcont{height:100%;min-height:20px;border-left:3px solid #CBD5E1;margin-left:8px;border-radius:2px}
.nowline{position:absolute;left:0;right:0;height:0;border-top:2px solid #EF4444;z-index:0;pointer-events:none}
.daycal .calslot,.daycal .leg{position:relative;z-index:1}
.nowline span{z-index:3}
.nowline span{position:absolute;left:0;top:-10px;font-size:10.5px;font-weight:700;color:#fff;background:#EF4444;border-radius:5px;padding:1px 5px}

/* My day: tomorrow count */
.nextday{display:flex;align-items:center;gap:12px}
.nextday .k{font-size:12.5px;color:var(--mut);font-weight:600}
.nextday .v{font-size:22px;font-weight:800;letter-spacing:-.01em;margin-top:2px}

/* phone setup pop-up */
.phonesetup .card{box-shadow:none;border:1px solid var(--line);margin-bottom:12px}
.phonesetup a.btn{text-decoration:none;color:var(--ink)}

/* 2-step sign-in */
.mfasteps{margin:0 0 14px;padding-left:20px;color:var(--ink)}.mfasteps li{margin:6px 0}
.mfaqr{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:6px 0 16px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fff}
.mfaqr img{width:180px;height:180px;background:#fff;border-radius:6px}
.mfaqr>div{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.mfakey{font-family:ui-monospace,monospace;font-size:14px;letter-spacing:.04em;word-break:break-all;background:#F1F5F9;border-radius:6px;padding:6px 8px}
.codein{font-size:24px!important;letter-spacing:.2em;text-align:center;font-variant-numeric:tabular-nums}

/* My colour picker */
.swatches{display:flex;flex-wrap:wrap;gap:10px}
.sw{width:36px;height:36px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line,#d0d7e2);cursor:pointer;padding:0}
.sw.on{box-shadow:0 0 0 3px var(--ink,#0b1e38)}
.sw.taken{opacity:.35}
.sw.custom{position:relative;overflow:hidden;background:conic-gradient(red,yellow,lime,cyan,blue,magenta,red)}
.sw.custom input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}

/* Required fields and address suggestions */
.f .req{color:#B91C1C;font-weight:700;margin-left:2px}
.need-miss{outline:2px solid #F87171!important;background:#FEF2F2!important}
#addrSug{position:fixed;z-index:9999;display:none;background:#fff;border:1px solid var(--line,#d0d7e2);border-radius:10px;box-shadow:0 10px 30px rgba(11,30,56,.18);overflow:hidden;max-height:320px;overflow-y:auto}
#addrSug button{display:block;width:100%;text-align:left;padding:10px 12px;border:0;background:none;font:inherit;font-size:14px;cursor:pointer;border-bottom:1px solid var(--line-2,#eef1f5)}
#addrSug button:hover,#addrSug button.on{background:#EEF6FB}
#addrSug small{display:block;padding:6px 12px;color:var(--mut,#64748b);font-size:11px}
