/* Dispatch / Tech / Status app styles: same neon brand as the site */
:root{
  --bg:#07000c;--bg2:#0f0018;--panel:#12001d;--panel2:#1a0629;--line:rgba(255,43,214,.22);--line2:rgba(255,43,214,.5);
  --ink:#f4ecff;--muted:#bfaed6;--dim:#8a7aa0;--mag:#ff2bd6;--mag2:#ff4fe0;--pur:#9b30ff;
  --chrome:linear-gradient(180deg,#fff 0%,#e6e6f2 38%,#8e8ea6 52%,#d8d8e8 64%,#fff 100%);
  --font-display:'Permanent Marker',cursive;--font-body:'Montserrat',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --r:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:radial-gradient(ellipse at 50% -10%,#2a003c 0%,var(--bg) 55%) fixed,var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
/* Public status, policy, and 404 pages only. Staff apps keep the rule above. */
body.site-sky{background:transparent;position:relative;z-index:0}
body.site-sky::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background-color:#07000c;background-image:url("img/bg-option-a.jpg");background-image:image-set(url("img/bg-option-a.webp") type("image/webp"),url("img/bg-option-a.jpg") type("image/jpeg"));background-repeat:no-repeat;background-position:center 30%;background-size:cover}
body.site-sky::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(7,0,12,.5) 0%,rgba(7,0,12,.28) 18%,rgba(7,0,12,.48) 46%,rgba(7,0,12,.76) 100%)}
body.site-sky .legal-card,body.site-sky .status-card{background:linear-gradient(180deg,rgba(18,0,28,.92),rgba(7,0,12,.94))}
@media (max-width:760px){
  body.site-sky::before{height:min(68vh,96vw);bottom:auto;background-position:center 34%;-webkit-mask-image:linear-gradient(#000 76%,transparent);mask-image:linear-gradient(#000 76%,transparent)}
}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--mag2);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:999px;border:0;cursor:pointer;font-weight:800;font-size:.9rem;text-decoration:none;white-space:nowrap;transition:filter .15s,transform .1s,box-shadow .2s;letter-spacing:.01em}
.btn svg{width:18px;height:18px;flex:none}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.5;cursor:default}
.btn-pri{background:linear-gradient(135deg,var(--mag),var(--pur));color:#fff;box-shadow:0 0 16px rgba(255,43,214,.45)}
.btn-pri:hover{filter:brightness(1.1)}
.btn-ghost{background:rgba(255,255,255,.04);border:1.5px solid var(--line2);color:#fff}
.btn-ghost:hover{border-color:var(--mag2);box-shadow:0 0 12px rgba(255,43,214,.3)}
.btn-danger{background:rgba(255,60,100,.12);border:1.5px solid rgba(255,90,120,.6);color:#ffb3c4}
.btn-sm{padding:7px 12px;font-size:.8rem}
.btn-block{width:100%}
.btn-lg{padding:14px 20px;font-size:1rem}

/* Inputs */
.field{display:flex;flex-direction:column;gap:5px}
.field label,.lbl{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
input:not([type]),input[type=number],input[type=text],input[type=password],input[type=tel],select,textarea{width:100%;background:rgba(255,255,255,.05);border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;font-size:16px;color:#fff;min-width:0}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#ff4fe0 50%),linear-gradient(135deg,#ff4fe0 50%,transparent 50%);background-position:calc(100% - 18px) 55%,calc(100% - 12px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:34px}
select option{background:#14001f}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--mag2);box-shadow:0 0 0 3px rgba(255,43,214,.2)}
textarea{resize:vertical;min-height:70px}

/* Top bar */
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:10px 16px;background:rgba(7,0,12,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-width:0}
.brand-mark{width:34px;height:34px;flex:none;filter:drop-shadow(0 0 6px rgba(255,43,214,.6))}
.brand-txt{display:flex;flex-direction:column;line-height:1.05;min-width:0}
.brand-name{font-family:var(--font-display);font-size:1.05rem;background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}
.brand-app{font-size:.66rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--mag2)}
.spacer{flex:1}
.live{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.live i{width:8px;height:8px;border-radius:50%;background:#666}
.live.on{color:#7dffb7}.live.on i{background:#3dff9a;box-shadow:0 0 8px #3dff9a;animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.35}}
.who{font-size:.8rem;color:var(--muted);text-align:right;line-height:1.2}
.who b{display:block;color:#fff;font-size:.85rem}
.tabs{display:flex;gap:6px;padding:10px 16px 0;max-width:1400px;margin:0 auto}
.tab{padding:9px 16px;border-radius:999px;border:1.5px solid transparent;background:none;cursor:pointer;font-weight:800;color:var(--muted)}
.tab.on{border-color:var(--line2);color:#fff;background:rgba(255,43,214,.12);box-shadow:0 0 12px rgba(255,43,214,.25)}

/* Login */
.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px}
.login{width:min(400px,100%);padding:32px 26px;border-radius:22px;background:linear-gradient(180deg,rgba(40,0,60,.6),rgba(7,0,12,.9));border:1px solid var(--line2);box-shadow:0 0 40px rgba(255,43,214,.2);display:flex;flex-direction:column;gap:16px}
.login .brand{justify-content:center;margin-bottom:6px}
.login h1{font-family:var(--font-display);font-weight:400;font-size:1.8rem;text-align:center;background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(255,43,214,.5))}
.err{color:#ff9bb8;font-weight:700;font-size:.88rem}
.err:empty{display:none}
.muted{color:var(--muted)}.dim{color:var(--dim)}
.small{font-size:.8rem}

/* Pills */
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border:1px solid}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}
.st-received{color:#ff6ae6;border-color:rgba(255,106,230,.5);background:rgba(255,43,214,.12)}
.st-assigned{color:#c99bff;border-color:rgba(185,130,255,.5);background:rgba(155,48,255,.14)}
.st-en_route{color:#ffc35a;border-color:rgba(255,195,90,.5);background:rgba(255,170,0,.1)}
.st-on_scene{color:#5ae8ff;border-color:rgba(90,232,255,.5);background:rgba(0,200,255,.1)}
.st-completed{color:#5dffa6;border-color:rgba(93,255,166,.45);background:rgba(0,255,120,.08)}
.st-awaiting_deposit{color:#ffd166;border-color:rgba(255,209,102,.55);background:rgba(255,196,0,.1);border-style:dashed}
.st-cancelled{color:#a9a0b5;border-color:rgba(169,160,181,.4);background:rgba(255,255,255,.04)}
.demo{display:inline-block;padding:2px 7px;border-radius:6px;font-size:.65rem;font-weight:900;letter-spacing:.12em;background:#ffe14d;color:#1a0020}

/* Dispatch board */
.board{max-width:1400px;margin:0 auto;padding:14px 16px 40px}
.filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;border:1.5px solid var(--line);background:rgba(255,255,255,.03);cursor:pointer;font-weight:700;font-size:.82rem;color:var(--muted)}
.chip b{font-size:.75rem;min-width:20px;padding:1px 6px;border-radius:999px;background:rgba(255,255,255,.08);color:#fff}
.chip.on{border-color:var(--mag2);color:#fff;background:rgba(255,43,214,.14);box-shadow:0 0 10px rgba(255,43,214,.3)}
.split{display:grid;grid-template-columns:minmax(320px,420px) 1fr;gap:16px;margin-top:12px;align-items:start}
.list{display:flex;flex-direction:column;gap:10px}
.rq{display:block;width:100%;text-align:left;padding:14px;border-radius:var(--r);background:var(--panel);border:1.5px solid var(--line);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.rq:hover{border-color:var(--line2)}
.rq.sel{border-color:var(--mag2);box-shadow:0 0 18px rgba(255,43,214,.3);background:var(--panel2)}
.rq.new{animation:newflash 1.2s 3}
@keyframes newflash{50%{box-shadow:0 0 0 3px var(--mag2),0 0 24px var(--mag)}}
.rq-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rq-code{font-weight:900;letter-spacing:.04em}
.rq-time{margin-left:auto;font-size:.75rem;color:var(--dim)}
.rq-svc{font-family:var(--font-display);font-size:1.15rem;margin-top:6px}
.rq-line{font-size:.85rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rq-tech{font-size:.78rem;margin-top:6px;color:#d9c9ff}
.rq-tech.none{color:#ff8fd9;font-weight:700}
.empty{padding:40px 20px;text-align:center;color:var(--dim);border:1.5px dashed var(--line);border-radius:var(--r)}

.detail{position:sticky;top:76px;max-height:calc(100vh - 92px);overflow:auto;border-radius:18px;background:var(--panel);border:1.5px solid var(--line2);box-shadow:0 0 30px rgba(255,43,214,.12)}
.detail-empty{padding:60px 20px;text-align:center;color:var(--dim)}
.dh{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 18px;background:linear-gradient(180deg,var(--panel2),var(--panel));border-bottom:1px solid var(--line)}
.dh h2{font-size:1.25rem;font-weight:900;letter-spacing:.03em}
.back{display:none}
.dbody{padding:16px 18px 22px;display:grid;gap:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.box{padding:14px;border-radius:12px;background:rgba(0,0,0,.3);border:1px solid var(--line)}
.box h3{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--mag2);margin-bottom:8px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:.92rem}
.kv dt{color:var(--dim)}
.kv dd{color:#fff;word-break:break-word}
.big{font-size:1.1rem;font-weight:800}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row > select{flex:1;min-width:160px}
.stbtns{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stbtn{padding:10px 6px;border-radius:10px;border:1.5px solid;cursor:pointer;font-weight:800;font-size:.8rem;background:transparent}
.stbtn.cur{box-shadow:0 0 0 2px currentColor inset,0 0 14px currentColor}
.notes-q{white-space:pre-wrap;color:#fff}
.log{display:flex;flex-direction:column;gap:0}
.log li{list-style:none;display:grid;grid-template-columns:14px 1fr;gap:10px;padding:8px 0;position:relative}
.log li::before{content:"";width:10px;height:10px;border-radius:50%;margin-top:4px;background:var(--pur);box-shadow:0 0 6px var(--pur)}
.log li:not(:last-child)::after{content:"";position:absolute;left:4.5px;top:20px;bottom:-6px;width:1px;background:var(--line)}
.log li.note::before{background:#ffc35a;box-shadow:0 0 6px #ffc35a}
.log li.created::before{background:var(--mag)}
.log .m{font-size:.9rem}
.log .meta{font-size:.74rem;color:var(--dim)}
.log li.note .m{background:rgba(255,195,90,.08);border:1px solid rgba(255,195,90,.25);border-radius:8px;padding:6px 10px;white-space:pre-wrap}
.copyrow{display:flex;gap:8px}
.copyrow input{font-size:.8rem;padding:8px 10px}

/* Team admin */
.team{max-width:1100px;margin:0 auto;padding:16px 16px 60px;display:grid;gap:16px}
.team-head{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.team-head h2{font-family:var(--font-display);font-weight:400;font-size:1.6rem}
.ulist{display:grid;gap:10px}
.urow{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:12px;align-items:center;padding:12px 14px;border-radius:12px;background:var(--panel);border:1.5px solid var(--line)}
.urow.off{opacity:.55}
.urow .nm{font-weight:800}
.urow .act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.role{font-size:.68rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;padding:2px 8px;border-radius:6px;border:1px solid var(--line2);color:var(--mag2)}
.sec-title{font-size:.75rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:8px}
.addform{display:grid;grid-template-columns:repeat(5,1fr) auto;gap:10px;align-items:end;padding:14px;border-radius:12px;background:rgba(0,0,0,.3);border:1.5px dashed var(--line2)}

/* Modal */
.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:manipulation}
.modal-card{width:100%;max-width:460px;margin:auto;max-height:none;overflow:auto;padding:22px;border-radius:18px;background:var(--panel2);border:1.5px solid var(--line2);box-shadow:0 0 40px rgba(255,43,214,.3);display:grid;gap:14px}
.modal-card h3{font-family:var(--font-display);font-weight:400;font-size:1.4rem}
.pw{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.1rem;padding:12px;border-radius:10px;background:#000;border:1px solid var(--line2);word-break:break-all;user-select:all}

/* Toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;z-index:80;padding:12px 18px;border-radius:12px;background:#1d0a2b;border:1.5px solid var(--mag2);box-shadow:0 0 20px rgba(255,43,214,.4);font-weight:700;transition:all .25s;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{border-color:#ff5a7a}

/* Tech view */
.tech{max-width:640px;margin:0 auto;padding:14px 14px 50px;display:grid;gap:14px}
.tech-hello{font-family:var(--font-display);font-size:1.5rem}
.job{border-radius:18px;background:var(--panel);border:1.5px solid var(--line2);box-shadow:0 0 22px rgba(255,43,214,.15);overflow:hidden}
.job.closed{opacity:.6;border-color:var(--line);box-shadow:none}
.job-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 16px;background:linear-gradient(180deg,var(--panel2),var(--panel));border-bottom:1px solid var(--line)}
.job-svc{font-family:var(--font-display);font-size:1.4rem;width:100%}
.job-b{padding:14px 16px;display:grid;gap:12px}
.job-loc{font-size:1rem;color:#fff;font-weight:600}
.job-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.job-acts .btn{padding:13px 10px;font-size:.95rem}
.tstat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tstat button{padding:14px 4px;border-radius:12px;font-weight:900;font-size:.85rem;cursor:pointer;border:1.5px solid;background:transparent}
.tstat button.cur{box-shadow:0 0 0 2px currentColor inset,0 0 16px currentColor}
.tstat button.next{background:currentColor}
.tstat button.next span{color:#0b0012}
.tstat button.done{opacity:.4}

/* Status page */
.status-wrap{max-width:560px;margin:0 auto;padding:22px 16px 60px;display:grid;gap:16px}
.status-card{padding:24px 20px;border-radius:22px;background:linear-gradient(180deg,rgba(40,0,60,.55),rgba(7,0,12,.9));border:1.5px solid var(--line2);box-shadow:0 0 34px rgba(255,43,214,.2);text-align:center}
.status-code{font-family:var(--font-display);font-size:2rem;background:var(--chrome);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(255,43,214,.6))}
.status-big{font-size:1.6rem;font-weight:900;margin-top:10px}
.steps{list-style:none;display:grid;gap:0;text-align:left;margin-top:8px}
.steps li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:10px 0;position:relative;color:var(--dim)}
.steps li .dot{width:26px;height:26px;border-radius:50%;border:2px solid #3a2a4a;display:grid;place-items:center;font-size:.8rem;font-weight:900;background:#0b0012;z-index:1}
.steps li:not(:last-child)::after{content:"";position:absolute;left:12.5px;top:36px;bottom:-10px;width:2px;background:#2a1a3a}
.steps li.done{color:#fff}
.steps li.done .dot{border-color:var(--mag);background:linear-gradient(135deg,var(--mag),var(--pur));box-shadow:0 0 10px rgba(255,43,214,.6)}
.steps li.done:not(:last-child)::after{background:var(--mag)}
.steps li.cur .dot{animation:steppulse 1.6s infinite}
.steps li.cur:not(:last-child)::after{background:#2a1a3a}
.steps li.cur b{color:#ff7bea;text-shadow:0 0 10px rgba(255,43,214,.6)}
@keyframes steppulse{0%,100%{box-shadow:0 0 6px rgba(255,43,214,.6)}50%{box-shadow:0 0 0 6px rgba(255,43,214,.18),0 0 18px rgba(255,43,214,.9)}}
.steps li b{display:block;font-size:1rem}
.steps li small{font-size:.78rem;color:var(--dim)}
.steps li.done small{color:var(--muted)}

@media (max-width:980px){
  .split{grid-template-columns:1fr}
  .detail{position:fixed;inset:0;top:0;max-height:none;border-radius:0;z-index:40;display:none;border:0}
  .detail.open{display:block}
  .back{display:inline-flex}
  .addform{grid-template-columns:1fr 1fr}
  .urow{grid-template-columns:1fr auto}
  .urow .c2,.urow .c3{display:none}
  .urow .act{grid-column:1/-1;justify-content:flex-start}
}
@media (max-width:600px){
  .grid2{grid-template-columns:1fr}
  .who{display:none}
  .brand-name{font-size:.95rem}
  .topbar{gap:8px;padding:10px 12px}
  .live span{display:none}
  #alerts-btn span{display:none}
  #alerts-btn{padding:8px 10px}
  .brand{flex:1 1 auto;overflow:hidden}
  .brand-txt{overflow:hidden}
  .brand-name,.brand-app{overflow:hidden;text-overflow:ellipsis}
}

/* Account menu, change-password, one-time secret */
html.modal-open,html.modal-open body{overflow:hidden}
.modal-card form{display:grid;gap:14px}
.modal-acts .btn{flex:1 1 auto;min-height:46px}
.menu-list{display:grid;gap:10px}
.menu-list .btn{min-height:48px;width:100%}
.pw-box{display:flex;gap:10px;align-items:center}
.pw-box .pw{flex:1;min-width:0;-webkit-user-select:all;user-select:all}
.pw-box .btn{min-height:44px;flex:none}
.chk{display:flex;align-items:center;gap:8px;font-size:.88rem;color:var(--muted);cursor:pointer}
.chk input{width:20px;height:20px;accent-color:var(--mag2)}
.linkbtn{background:none;border:0;padding:0;color:var(--mag2);font-weight:800;text-decoration:underline;cursor:pointer;font-size:inherit}
#pw-btn .lbl-acct{font-weight:800}
.urow .act .btn{min-height:40px}
@media (max-width:600px){
  .modal{align-items:flex-start}
  .modal-card{padding:18px}
  #pw-btn .lbl-acct{display:none}
}
.job-acts .job-call{grid-column:1/-1}
/* Hold harmless agreement summary in dispatch */
.wbadge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px;font-weight:800;font-size:.85rem}
.wbadge svg{width:16px;height:16px}
.wbadge.ok{background:rgba(61,220,132,.14);color:#6ff0a6;border:1px solid rgba(61,220,132,.5)}
.wbadge.no{background:rgba(255,209,102,.1);color:#ffd166;border:1px solid rgba(255,209,102,.45)}
.sigimg{background:#fff;border-radius:10px;padding:6px;max-width:420px}
.sigimg img{display:block;width:100%;height:auto}

/* deposits */
.dep-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:.7rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border:1px solid}
.dep-paid-b{color:#5dffa6;border-color:rgba(93,255,166,.5);background:rgba(0,255,120,.08)}
.dep-wait-b{color:#ffd166;border-color:rgba(255,209,102,.55);background:rgba(255,196,0,.1)}
.dep-waived-b{color:#c99bff;border-color:rgba(185,130,255,.5);background:rgba(155,48,255,.12)}
.dep-off-b{color:#a9a0b5;border-color:rgba(169,160,181,.4);background:rgba(255,255,255,.04)}
.dep-box{border:1.5px solid rgba(255,209,102,.45);border-radius:14px;padding:12px 14px;background:rgba(255,196,0,.05)}
.dep-box dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:.88rem;margin-top:8px}
.dep-box dt{color:var(--muted,#a99db8)}.dep-box dd{margin:0;word-break:break-all}
.dep-box .dep-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.awaiting-note{margin-top:8px;padding:8px 10px;border-radius:10px;background:rgba(255,196,0,.1);border:1px dashed rgba(255,209,102,.6);color:#ffe7a3;font-weight:700;font-size:.88rem}
#status-pay h2{font-size:1.15rem;margin-bottom:4px}
/* ---- Tech earnings ---- */
.earn{max-width:1400px;margin:0 auto;padding:16px 16px 90px;display:grid;gap:14px}
.earn[hidden],.tech[hidden]{display:none}
.earn-head{display:flex;gap:6px 12px;flex-wrap:wrap;align-items:baseline}
.earn-head h2{font-family:var(--font-display);font-weight:400;font-size:1.6rem}
.earn-filters{display:grid;gap:10px}
.earn-filters .chips{display:flex;gap:6px;flex-wrap:wrap}
.earn-frow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.earn-frow select{width:auto;min-width:180px;flex:1 1 180px;max-width:320px}
.earn-dates{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.earn-dates[hidden]{display:none}
input[type=date]{background:rgba(255,255,255,.05);border:1.5px solid var(--line);border-radius:10px;padding:9px 10px;font-size:16px;color:#fff;color-scheme:dark;min-width:0}
.earn-range{margin-top:-2px}
.earn-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.ecard{padding:12px 14px;border-radius:12px;background:var(--panel);border:1.5px solid var(--line)}
.ecard.hi{border-color:var(--mag2);box-shadow:0 0 14px rgba(255,43,214,.25)}
.ecard .k{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ecard .v{font-size:1.45rem;font-weight:800;margin-top:2px}
.ecard .s{font-size:.78rem;color:var(--dim)}
.earn h3{font-size:.8rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.etwrap{overflow-x:auto}
.etab{width:100%;border-collapse:collapse;font-size:.86rem}
.etab th{text-align:left;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.etab td{padding:8px;border-bottom:1px solid rgba(255,43,214,.1);vertical-align:top}
.etab tr.need td{background:rgba(255,209,102,.05)}
.etab tr.etot td{font-weight:800;border-top:1px solid var(--line2)}
.etab .ck{width:34px}.etab .ck input{width:20px;height:20px;accent-color:var(--mag)}
.etab a{color:#fff}
.e-tech{color:#5dffa6}
.e-warn{color:#ffd166;font-weight:700}
.ebadge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:800;letter-spacing:.04em;white-space:nowrap;border:1px solid}
.e-need{color:#ffd166;border-color:#ffd166;background:rgba(255,209,102,.1)}
.e-unpaid{color:#ff9bd8;border-color:var(--mag2);background:rgba(255,43,214,.1)}
.e-paid{color:#5dffa6;border-color:#5dffa6;background:rgba(93,255,166,.1)}
.e-unl{color:#9fd3ff;border-color:#9fd3ff;background:rgba(159,211,255,.1)}
.ecl{list-style:none;display:grid;gap:8px;font-size:.88rem}
.ecl li{padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,43,214,.12)}
.earn-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:rgba(18,0,29,.96);border-top:1.5px solid var(--mag2);box-shadow:0 -6px 24px rgba(255,43,214,.25)}
.earn-bar[hidden]{display:none}
.ee-form{display:grid;gap:10px;margin-top:10px}
.ee-calc{font-size:.9rem;padding:8px 10px;border-radius:10px;background:rgba(93,255,166,.06);border:1px solid rgba(93,255,166,.3)}
.ee-h{margin-top:14px;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
@media (max-width:760px){
  .etab thead{display:none}
  .etab,.etab tbody,.etab tr,.etab td{display:block;width:100%}
  .etab tr{position:relative;margin-bottom:10px;padding:10px 12px;border-radius:12px;background:var(--panel);border:1.5px solid var(--line)}
  .etab tr.need{border-color:rgba(255,209,102,.5)}
  .etab td{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border:0;text-align:right}
  .etab td::before{content:attr(data-l);color:var(--dim);font-size:.75rem;text-align:left;flex:none}
  .etab td>div{text-align:right}
  .etab-jobs td[data-l]{flex-wrap:wrap}
  .etab-jobs td[data-l] .dim.small{flex-basis:100%}
  .etab td.ck{position:absolute;top:8px;right:10px;width:auto;padding:0}
  .etab td.ck::before,.etab td.act::before{content:none}
  .etab td.act{justify-content:flex-end;padding-top:6px}
  .etab td.act .btn{width:100%}
  .etab tr.etot{border-color:var(--line2)}
  .etab-jobs td[data-l="Date"]{padding-right:34px}
}
/* tech completion form + my earnings */
.tech .tabs,#ttabs{padding:10px 14px 0;max-width:640px}
.cf{display:grid;gap:12px;margin-top:10px}
.cf-exp{padding:10px 12px;border-radius:12px;background:#3d300f;border:1px solid #ffd166}
.cf-exp .lbl{color:#ffd166}
.cf-tot{font-size:1.6rem;font-weight:800;color:#ffd166}
.cf-full{color:#5dffa6;font-weight:700}
.flabel{display:block;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.cf-meth{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cf-m{padding:12px 8px;border-radius:10px;border:1.5px solid var(--line2);background:rgba(255,255,255,.04);color:#fff;font-weight:700;cursor:pointer;font-size:.92rem}
.cf-m.on{border-color:#5dffa6;background:rgba(93,255,166,.14);color:#5dffa6;box-shadow:0 0 10px rgba(93,255,166,.3)}
.ejob{padding:12px;border-radius:12px;background:var(--panel);border:1.5px solid var(--line);display:grid;gap:4px}
.ejob-h{display:flex;gap:8px;align-items:center}
.ejob-h .spacer{flex:1}
.ejob-n{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.82rem;color:var(--muted)}
.ejob-me{font-size:.95rem}.ejob-me b{color:#5dffa6}
.tech .earn-sum .ecard.hi{grid-column:1/-1}

/* customer support email line */
.support-line{color:var(--muted);font-size:.92rem;line-height:1.5;text-align:center;margin:10px 0 0;overflow-wrap:anywhere}
.support-line a{color:#fff;font-weight:800;text-decoration:none;border-bottom:2px solid var(--mag);text-shadow:0 0 10px rgba(255,43,214,.55)}
.support-line a:hover,.support-line a:focus-visible{color:var(--mag2)}
.status-wrap>.support-line{margin:4px 0 0}

/* ---------- Job message threads (dispatch + tech) ---------- */
.thread-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:10px}
.thread-head h3{margin:0}
.thread-list{list-style:none;display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;padding:2px 2px 6px;overscroll-behavior:contain}
.tm{display:flex}
.tm-bubble{max-width:88%;border-radius:12px;padding:8px 11px;border:1px solid var(--line);background:rgba(255,255,255,.04)}
.tm-mine{justify-content:flex-end}
.tm-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:.8rem;margin-bottom:3px}
.tm-body{white-space:normal;word-break:break-word}
.tm-meta{display:block;font-size:.72rem;color:var(--dim);margin-top:3px}
.tm-tag{font-size:.64rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:1px 7px;border-radius:999px;border:1px solid;white-space:nowrap}
.tm-tag-int{color:#ffd166;border-color:rgba(255,209,102,.55);background:rgba(255,209,102,.1)}
.tm-tag-pub{color:#ff7be8;border-color:rgba(255,43,214,.6);background:rgba(255,43,214,.12)}
.tm-tag-cust{color:#7fdcff;border-color:rgba(90,200,255,.6);background:rgba(90,200,255,.12)}
.tm-int .tm-bubble{border:1.5px dashed rgba(255,209,102,.55);background:repeating-linear-gradient(135deg,rgba(255,209,102,.06) 0 10px,rgba(255,209,102,.02) 10px 20px)}
.tm-pub .tm-bubble{border-color:rgba(255,43,214,.55);background:linear-gradient(135deg,rgba(255,43,214,.16),rgba(155,48,255,.12));box-shadow:0 0 10px rgba(255,43,214,.15)}
.tm-cust .tm-bubble{border-color:rgba(90,200,255,.5);background:rgba(90,200,255,.08)}
.tm-status{align-items:flex-start;gap:8px;font-size:.82rem;color:var(--muted);padding:2px 4px}
.tm-status b{color:#fff;font-weight:700}
.tm-st-dot{flex:none;width:9px;height:9px;border-radius:50%;margin-top:5px;background:var(--mag);box-shadow:0 0 6px var(--mag)}
.thread-form{margin-top:10px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.thread-form textarea{border-color:rgba(255,209,102,.45);border-style:dashed}
.thread-form.is-pub textarea{border-color:var(--line2);border-style:solid;box-shadow:0 0 10px rgba(255,43,214,.2)}
.thread-acts{display:flex;align-items:center;justify-content:space-between;gap:8px}
.thread-form .thread-hint{color:#ffd166}
.thread-form.is-pub .thread-hint{color:#ff7be8}
.vis-toggle{display:inline-flex;border:1.5px solid var(--line);border-radius:999px;padding:3px;gap:3px;align-self:flex-start;max-width:100%}
.vis-toggle button{border:0;background:transparent;color:var(--muted);font-weight:800;font-size:.8rem;padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap}
.vis-toggle button[data-vis=internal].on{background:rgba(255,209,102,.16);color:#ffd166;box-shadow:inset 0 0 0 1px rgba(255,209,102,.5)}
.vis-toggle button[data-vis=public].on{background:linear-gradient(135deg,var(--mag),var(--pur));color:#fff;box-shadow:0 0 10px rgba(255,43,214,.4)}
.unread-b{display:inline-flex;align-items:center;gap:3px;padding:1px 8px;border-radius:999px;font-size:.72rem;font-weight:800;background:linear-gradient(135deg,var(--mag),var(--pur));color:#fff;box-shadow:0 0 8px rgba(255,43,214,.55);white-space:nowrap}
.msg-btn{width:100%}
.modal-card.modal-thread{max-width:620px}
.modal-thread .thread-list{max-height:min(55vh,460px)}
@media (max-width:520px){.tm-bubble{max-width:96%}.vis-toggle{width:100%}.vis-toggle button{flex:1;padding:8px 6px}}

/* ---------- Customer status page: updates + lookup ---------- */
.updates .upd-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px;margin-bottom:10px}
.updates h2{font-size:1.15rem}
.upd-list{list-style:none;display:flex;flex-direction:column;gap:8px;text-align:left}
.upd{border-radius:12px;padding:9px 12px;border:1px solid var(--line);background:rgba(255,255,255,.03)}
.upd-who{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 10px;font-size:.82rem;margin-bottom:2px}
.upd-text{word-break:break-word}
.upd-status{border-left:3px solid var(--mag)}
.upd-team{border-color:rgba(255,43,214,.55);background:linear-gradient(135deg,rgba(255,43,214,.16),rgba(155,48,255,.12))}
.upd-you{border-color:rgba(90,200,255,.45);background:rgba(90,200,255,.07);margin-left:12%}
.upd-form{display:flex;flex-direction:column;gap:6px;margin:4px 0 14px;text-align:left}
.upd-acts{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lookup{display:flex;flex-direction:column;gap:12px;text-align:left}
.lk-err{color:#ffb3c4}
/* customer chat closed note */
.upd-closed{margin-top:14px;padding:12px 14px;border:1px dashed rgba(255,79,216,.45);border-radius:12px;background:rgba(255,79,216,.06);color:#e9d8ff;font-size:.95rem;text-align:center}
.upd-closed a{color:#ff7be5;font-weight:700;text-decoration:underline}
.upd-closed a{overflow-wrap:break-word}
/* ---------- Dispatcher tools: Home dashboard, Follow-ups, Settings ---------- */
.tabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tabs::-webkit-scrollbar{display:none}
.tab{flex:none;display:inline-flex;align-items:center;gap:6px}
.tab-n{font-size:.72rem;min-width:20px;padding:1px 7px;border-radius:999px;background:linear-gradient(135deg,var(--mag),var(--pur));color:#fff;box-shadow:0 0 8px rgba(255,43,214,.5)}
.dhome,.fu{max-width:1400px;margin:0 auto;padding:16px 16px 90px;display:grid;gap:16px;align-content:start}
.dhome .team-head h2,.fu .team-head h2{font-family:var(--font-display);font-weight:400;font-size:1.6rem}
.duties{padding:16px 18px;border-radius:var(--r);background:linear-gradient(135deg,rgba(255,43,214,.14),rgba(155,48,255,.12));border:1.5px solid var(--line2);box-shadow:0 0 22px rgba(255,43,214,.18)}
.duties h3{font-size:.75rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--mag2);margin-bottom:8px}
.duties ol{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 22px;list-style:none;padding:0;counter-reset:d}
.duties li{counter-increment:d;position:relative;padding-left:30px}
.duties li::before{content:counter(d);position:absolute;left:0;top:1px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.75rem;font-weight:900;color:#fff;background:linear-gradient(135deg,var(--mag),var(--pur))}
.duties li{color:var(--muted);font-size:.92rem}.duties li b{color:#fff}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px;border-radius:var(--r);background:var(--panel);border:1.5px solid var(--line);cursor:pointer;text-align:left;color:var(--muted)}
.stat:hover{border-color:var(--mag2);box-shadow:0 0 14px rgba(255,43,214,.3)}
.stat b{font-size:1.9rem;line-height:1;color:#fff;text-shadow:0 0 12px rgba(255,43,214,.6)}
.stat span{font-size:.75rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.stat.warn{border-color:rgba(255,209,102,.6)}.stat.warn b{color:#ffd166;text-shadow:0 0 12px rgba(255,209,102,.5)}
.hgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.hrow{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--line)}
.hrow:first-of-type{border-top:0}
.hrow .nm{font-weight:800;margin-top:3px}
.hacts{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.hacts select{flex:1;min-width:140px;padding:8px 10px}
.techs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.tchip{padding:4px 10px;border-radius:999px;border:1px solid rgba(61,220,132,.5);color:#6ff0a6;font-size:.8rem;font-weight:700}
.tchip b{color:#fff;margin-left:2px}.tchip.busy{border-color:var(--line2);color:var(--muted)}
.tchip.off{border-color:rgba(255,209,102,.7);color:#ffd166}
.script{padding:10px 12px;border-radius:10px;border:1px dashed var(--line2);background:rgba(155,48,255,.08);font-size:.9rem;color:var(--muted)}
.script .lbl{display:block;margin-bottom:4px}.script b{color:#fff}
.seg{display:inline-flex;flex-wrap:wrap;gap:6px}
.seg button{min-height:40px;padding:6px 14px;border-radius:999px;border:1.5px solid var(--line2);background:rgba(255,255,255,.04);color:#fff;font-weight:800;cursor:pointer}
.seg button.on{background:linear-gradient(135deg,var(--mag),var(--pur));border-color:transparent;box-shadow:0 0 12px rgba(255,43,214,.45)}
.fu-filters{display:flex;gap:6px;flex-wrap:wrap}
.fu-note{padding:10px 14px;border-radius:12px;border:1px solid rgba(255,209,102,.45);background:rgba(255,209,102,.08);color:#ffd166;font-size:.9rem}
.fu-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;align-items:start}
.fu-card{display:grid;gap:12px;padding:16px;border-radius:var(--r);background:var(--panel);border:1.5px solid var(--line)}
.fu-card.fu-open{border-color:var(--line2)}
.fu-card.fu-flag{border-color:rgba(255,209,102,.7);box-shadow:0 0 16px rgba(255,209,102,.18)}
.fu-card.new{animation:newflash 1s ease 2}
.fu-top{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fu-cust{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.fu-st{display:inline-flex;padding:2px 9px;border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border:1px solid}
.fu-st-open{color:#ff7be8;border-color:rgba(255,43,214,.6);background:rgba(255,43,214,.12)}
.fu-st-done{color:#6ff0a6;border-color:rgba(61,220,132,.5);background:rgba(61,220,132,.1)}
.fu-st-unreachable{color:var(--muted);border-color:var(--line);background:rgba(255,255,255,.04)}
.fu-st-flag{color:#ffd166;border-color:rgba(255,209,102,.6);background:rgba(255,209,102,.1)}
.fu-form{display:grid;gap:10px}
.fu-q{display:grid;gap:6px}
.fu-hist summary{cursor:pointer;color:var(--muted);font-size:.85rem;font-weight:700}
.fu-hist ul{list-style:none;display:grid;gap:6px;margin-top:6px;font-size:.85rem}
.set-form{max-width:720px;display:grid;gap:12px}
input[type=email]{width:100%;background:rgba(255,255,255,.05);border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;font-size:16px;color:#fff;min-width:0}
@media (max-width:980px){.hgrid{grid-template-columns:1fr}.duties ol{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.fu-list{grid-template-columns:1fr}.dhome,.fu{padding:12px 12px 90px}}

/* Tech: role & required tools */
.role-card{max-width:640px;margin:12px auto 0;padding:0 14px}
.role-card details{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line2);border-radius:var(--r);box-shadow:0 0 18px rgba(255,43,214,.15);padding:12px 14px}
.role-card summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px}
.role-card summary::-webkit-details-marker{display:none}
.role-card summary::after{content:'\25BE';color:var(--mag);transition:transform .2s}
.role-card details:not([open]) summary::after{transform:rotate(-90deg)}
.role-card h2{margin:0;font-family:var(--font-display);font-weight:400;font-size:1.25rem;color:var(--mag2);text-shadow:0 0 10px rgba(255,43,214,.6)}
.role-card h3{margin:12px 0 6px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.role-grid{display:grid;gap:4px 18px}
@media(min-width:600px){.role-grid{grid-template-columns:1fr 1fr}}
.role-steps,.role-tools{margin:0;padding-left:1.2em;color:var(--ink);font-size:.92rem;line-height:1.45}
.role-steps li,.role-tools li{margin:4px 0}
.role-steps li::marker{color:var(--mag);font-weight:800}
.role-tools li::marker{color:var(--pur)}
.role-steps b{color:var(--mag2)}

.avail-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px auto;padding:10px 16px;max-width:1100px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03)}
.avail-lbl{font-weight:800;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.avail-bar.off .seg button.on{background:#3a3a4a;box-shadow:none}
#earn:not([hidden]) ~ .avail-bar{}

.brand-logo{display:block;height:44px;width:auto;flex:none;filter:drop-shadow(0 0 6px rgba(255,43,214,.45))}
@media(max-width:600px){.brand-logo{height:36px}}
/* Live location indicator (tech) */
.loc-ind{display:block;width:100%;margin-top:6px;padding:6px 10px;border-radius:8px;font-size:.85rem;font-weight:700;line-height:1.35}
.loc-on{background:#0f3d26;border:1px solid #5dffa6;color:#5dffa6}
.loc-warn{background:#3d300f;border:1px solid #ffd166;color:#ffd166}
.loc-off{background:#3d0f1a;border:1px solid #ff8fb3;color:#ffb3c8}
.avail-bar{flex-wrap:wrap}
/* Dispatch live map */
.mapv{display:flex;flex-direction:column;gap:10px;padding:12px;height:calc(100vh - 120px);min-height:420px}
.mapv-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.mapv-head h2{margin:0;font-size:1.1rem}
#dmap{flex:1;min-height:360px;border-radius:12px;border:1px solid rgba(255,255,255,.15)}
.mapv-list{display:flex;flex-wrap:wrap;gap:6px}
.mchip{padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.2);font-size:.8rem;cursor:pointer;background:transparent;color:inherit}
.mchip.live{border-color:#5dffa6;color:#5dffa6}.mchip.stale{border-color:#ffd166;color:#ffd166}.mchip.none{opacity:.6;cursor:default}
.tpin{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:12px;color:#07000c;border:2px solid #fff;box-shadow:0 0 0 3px rgba(93,255,166,.35)}
.tpin.live{background:#5dffa6}.tpin.stale{background:#ffd166;box-shadow:none;opacity:.85}
.jpin{width:22px;height:22px;border-radius:4px;transform:rotate(45deg);border:2px solid #fff;background:#ff2bd6}
.jpin.received{background:#ff2bd6}.jpin.assigned{background:#8a5cff}.jpin.en_route{background:#3aa0ff}.jpin.on_scene{background:#ff9d2b}
.leaflet-popup-content{color:#111;font-size:13px;line-height:1.4}
