/* ============================================================
   TREEGO — Panel del restaurante (dark mode)
   ============================================================ */
:root{
  /* Color primario de marca — fuente única de verdad (los --g* son alias). */
  --color-primary:#0D9488;
  --color-primary-dark:#0F766E;
  --color-primary-light:#2DD4BF;
  --color-primary-mid:#14B8A6;
  --color-primary-deep:#115E59;
  --color-primary-subtle:#CCFBF1;
  --color-primary-rgb:13,148,136;
  --color-primary-dark-rgb:15,118,110;
  --color-primary-light-rgb:45,212,191;
  --color-primary-shadow:rgba(var(--color-primary-rgb),.2);
  --g1:var(--color-primary-light); --g2:var(--color-primary); --g3:var(--color-primary-dark);
  --grad:linear-gradient(118deg,var(--g1) 0%,var(--g2) 46%,var(--g3) 100%);
  --grad-soft:linear-gradient(118deg,rgba(var(--color-primary-rgb),.16),rgba(var(--color-primary-dark-rgb),.16));

  --bg:#100e0c;
  --panel:#1a1613;
  --panel-2:#211b17;
  --panel-3:#272019;
  --rail:#161210;
  --line:#2c2520;
  --line-2:#372e27;
  --ink:#F7F1E9;
  --ink-2:#b3a699;
  --ink-3:#84786c;
  --green:#5bbf73;
  --green-bg:rgba(91,191,115,.12);
  --red:#ef6b5a;
  --red-bg:rgba(239,107,90,.13);
  --amber:#f3b14e;

  --font-display:'Space Grotesk',system-ui,sans-serif;
  --font-body:'DM Sans',system-ui,sans-serif;
  --font-mono:'DM Mono',ui-monospace,monospace;

  --r-sm:9px; --r:13px; --r-lg:18px; --r-xl:24px;
  --shadow:0 2px 8px rgba(0,0,0,.3), 0 18px 44px -20px rgba(0,0,0,.6);
  --sidebar:248px;
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
body{
  font-family:var(--font-body);background:var(--bg);color:var(--ink);
  -webkit-font-smoothing:antialiased;line-height:1.5;
}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;margin:0;line-height:1.1;}
p{margin:0;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
input,select,textarea{font-family:inherit;}
::selection{background:var(--g2);color:#fff;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px;border:2px solid var(--bg);}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;}
.mono{font-family:var(--font-mono);}

/* ---------------- LOGIN ---------------- */
.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;}
.login-aside{position:relative;overflow:hidden;background:var(--rail);display:flex;flex-direction:column;justify-content:space-between;padding:54px;}
.login-aside .lglow{position:absolute;width:560px;height:560px;border-radius:50%;background:radial-gradient(circle,var(--g3),transparent 66%);filter:blur(60px);opacity:.5;bottom:-240px;left:-120px;}
.login-brand{display:flex;align-items:center;gap:13px;position:relative;}
.login-brand img{height:40px;}
.login-aside h2{position:relative;font-size:clamp(30px,3.4vw,46px);max-width:14ch;}
.login-aside .lead{position:relative;color:var(--ink-2);margin-top:18px;max-width:42ch;font-size:16px;}
.login-points{position:relative;display:flex;flex-direction:column;gap:14px;margin-top:32px;}
.login-points .lp{display:flex;align-items:center;gap:12px;color:var(--ink-2);font-size:14.5px;}
.login-points .lp .ck{width:26px;height:26px;border-radius:8px;background:var(--grad);display:grid;place-items:center;flex:none;}
.login-points .lp .ck svg{width:14px;height:14px;color:#fff;}
.login-aside .lfoot{position:relative;color:var(--ink-3);font-size:13px;}
.login-main{display:grid;place-items:center;padding:40px;background:var(--bg);}
.login-card{width:min(380px,100%);}
.login-card .eyebrow{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--g2);}
.login-card h1{font-size:30px;margin:14px 0 6px;}
.login-card .sub{color:var(--ink-2);font-size:15px;margin-bottom:30px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:8px;}
.field .inp{display:flex;align-items:center;gap:10px;background:var(--panel);border:1.5px solid var(--line-2);border-radius:var(--r);padding:0 14px;transition:border-color .2s, box-shadow .2s;}
.field .inp:focus-within{border-color:var(--g2);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.15);}
.field .inp svg{width:17px;height:17px;color:var(--ink-3);flex:none;}
.field input{flex:1;background:none;border:none;outline:none;color:var(--ink);font-size:15px;padding:13px 0;}
.field .eye{color:var(--ink-3);display:grid;}
.login-err{background:var(--red-bg);border:1px solid rgba(239,107,90,.35);color:var(--red);font-size:13.5px;padding:11px 14px;border-radius:var(--r-sm);margin-bottom:16px;display:flex;align-items:center;gap:9px;}
.login-row{display:flex;align-items:center;justify-content:space-between;margin:6px 0 22px;font-size:13.5px;}
.login-row a{color:var(--g2);font-weight:600;}
/* hCaptcha: contenedor alineado con los inputs (mismo borde/radio/fondo que
   .field .inp y mismo margen que .field). El theme del widget lo sincroniza
   HCaptchaBox según el modo claro/oscuro de la página. */
.h-captcha-box{display:flex;justify-content:center;margin:0 0 16px;padding:12px;background:var(--panel);border:1.5px solid var(--line-2);border-radius:var(--r);}
.h-captcha-box iframe{max-width:100%;}
.login-hint{margin-top:24px;text-align:center;font-size:13px;color:var(--ink-3);}
.login-hint b{color:var(--ink-2);font-family:var(--font-mono);}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;font-size:15px;border-radius:999px;padding:14px 22px;line-height:1;transition:transform .2s, box-shadow .2s, background .2s, border-color .2s;}
.btn svg{width:17px;height:17px;}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 8px 22px -8px rgba(var(--color-primary-dark-rgb),.7);}
.btn-primary:hover{transform:translateY(-2px);}
.btn-primary.full{width:100%;}
.btn-ghost{background:var(--panel-2);color:var(--ink);border:1px solid var(--line-2);}
.btn-ghost:hover{border-color:var(--ink-3);}
@media(max-width:880px){.login{grid-template-columns:1fr;}.login-aside{display:none;}}

/* ---------------- SHELL ---------------- */
.shell{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100vh;}
.sidebar{background:var(--rail);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;}
.sidebar::-webkit-scrollbar{width:6px;}
.sidebar::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px;}
.sidebar::-webkit-scrollbar-track{background:transparent;}
.sidebar>*{flex-shrink:0;} /* sin esto, los items se comprimen en vez de generar scroll */
.sb-head{display:flex;align-items:center;gap:11px;padding:22px 22px 18px;}
.sb-logo-full{height:30px;width:auto;}
.sb-logo-mini{display:none;height:32px;width:32px;object-fit:contain;}
.sb-section{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding:14px 22px 8px;}
.sb-nav{display:flex;flex-direction:column;gap:3px;padding:6px 14px;}
.sb-link{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--r);color:var(--ink-2);font-weight:500;font-size:14.5px;transition:background .2s, color .2s;position:relative;white-space:nowrap;}
.sb-link svg{width:19px;height:19px;flex:none;}
.sb-link:hover{background:var(--panel);color:var(--ink);}
.sb-link.on{background:var(--grad-soft);color:var(--ink);}
.sb-link.on::before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--grad);}
.sb-link .badge{margin-left:auto;background:var(--red);color:#fff;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:999px;display:grid;place-items:center;padding:0 5px;}
.sb-foot{margin-top:auto;padding:14px;border-top:1px solid var(--line);}
.sb-rest{display:flex;align-items:center;gap:11px;padding:10px;border-radius:var(--r);transition:background .2s;cursor:pointer;}
.sb-rest:hover{background:var(--panel);}
.sb-rest .av{width:38px;height:38px;border-radius:11px;overflow:hidden;flex:none;}
.sb-rest .nm{font-weight:600;font-size:13.5px;line-height:1.2;}
.sb-rest .pl{font-size:11.5px;color:var(--ink-3);}
.sb-rest .lo{margin-left:auto;color:var(--ink-3);display:grid;}
.sb-rest .lo:hover{color:var(--red);}

.main{display:flex;flex-direction:column;min-width:0;}
.topbar{display:flex;align-items:center;gap:20px;padding:18px 32px;border-bottom:1px solid var(--line);position:sticky;top:0;background:color-mix(in oklab,var(--bg) 86%,transparent);backdrop-filter:blur(12px);z-index:20;}
.topbar .tt h1{font-size:22px;}
.topbar .tt p{font-size:13px;color:var(--ink-3);margin-top:3px;}
.topbar .spacer{flex:1;}
.search{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line-2);border-radius:999px;padding:9px 15px;min-width:230px;color:var(--ink-3);}
.search svg{width:16px;height:16px;}
.search input{background:none;border:none;outline:none;color:var(--ink);font-size:14px;width:100%;}
.icon-btn{width:40px;height:40px;border-radius:11px;background:var(--panel);border:1px solid var(--line-2);display:grid;place-items:center;color:var(--ink-2);transition:.2s;position:relative;}
.icon-btn:hover{color:var(--ink);border-color:var(--ink-3);}
.icon-btn svg{width:18px;height:18px;}
.icon-btn .dot{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--red);border:2px solid var(--bg);}
.icon-btn .badge{position:absolute;top:-5px;right:-5px;background:var(--red);color:#fff;font-size:10px;font-weight:700;min-width:17px;height:17px;border-radius:999px;display:grid;place-items:center;padding:0 4px;border:2px solid var(--bg);}
.content{padding:30px 32px 60px;max-width:1320px;width:100%;}
@media(max-width:1040px){
  :root{--sidebar:76px;}
  .sb-section,.sb-link span,.sb-rest .nm,.sb-rest .pl,.sb-rest .lo{display:none;}
  .sb-logo-full{display:none;} .sb-logo-mini{display:block;}
  .sb-link{justify-content:center;} .sb-link.on::before{left:-14px;}
  .sb-head{justify-content:center;padding:20px 0;} .sb-rest{justify-content:center;padding:8px;}
}
@media(max-width:720px){.search{display:none;}.content{padding:22px 18px 50px;}.topbar{padding:16px 18px;}}

/* ---------------- helpers ---------------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);}
.card-pad{padding:22px;}
.row{display:flex;align-items:center;gap:12px;}
.between{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.muted{color:var(--ink-3);}
.eyebrow-s{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;}
.pill-ok{background:var(--green-bg);color:var(--green);}
.pill-warn{background:var(--red-bg);color:var(--red);}
.pill-brand{background:var(--grad-soft);color:var(--g1);}
.pill-mut{background:var(--panel-2);color:var(--ink-2);border:1px solid var(--line-2);}

/* alert multa */
.malert{display:flex;align-items:center;gap:16px;background:linear-gradient(100deg,var(--red-bg),transparent);border:1px solid rgba(239,107,90,.3);border-radius:var(--r-lg);padding:16px 20px;margin-bottom:24px;}
.malert .ico{width:42px;height:42px;border-radius:12px;background:var(--red-bg);color:var(--red);display:grid;place-items:center;flex:none;}
.malert .ico svg{width:21px;height:21px;}
.malert h4{font-size:15.5px;}
.malert p{font-size:13.5px;color:var(--ink-2);margin-top:2px;}
.malert .x{margin-left:auto;color:var(--ink-3);width:30px;height:30px;border-radius:8px;display:grid;place-items:center;}
.malert .x:hover{background:var(--panel-2);color:var(--ink);}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:26px;}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;}
.kpi .top{display:flex;align-items:center;justify-content:space-between;}
.kpi .ic{width:34px;height:34px;border-radius:10px;background:var(--grad-soft);color:var(--g1);display:grid;place-items:center;}
.kpi .ic svg{width:17px;height:17px;}
.kpi .n{font-family:var(--font-display);font-weight:600;font-size:30px;margin-top:14px;line-height:1;}
.kpi .l{font-size:12.5px;color:var(--ink-3);margin-top:7px;}
.kpi .delta{font-size:11.5px;font-weight:600;}
.kpi .delta.up{color:var(--green);} .kpi .delta.down{color:var(--red);}
@media(max-width:1180px){.kpis{grid-template-columns:repeat(3,1fr);}}
@media(max-width:640px){.kpis{grid-template-columns:repeat(2,1fr);}}

/* dashboard grid */
.dash{display:grid;grid-template-columns:1.5fr 1fr;gap:20px;align-items:start;}
@media(max-width:1040px){.dash{grid-template-columns:1fr;}}
.sec-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.sec-title h3{font-size:18px;}
.sec-title a{font-size:13px;color:var(--g2);font-weight:600;}

/* order card / row */
.olist{display:flex;flex-direction:column;gap:12px;}
.ocard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;cursor:pointer;transition:border-color .2s, background .2s, transform .15s;}
.ocard:hover{border-color:var(--line-2);transform:translateY(-1px);}
.ocard.sel{border-color:var(--g2);background:linear-gradient(100deg,var(--grad-soft),transparent);}
.ocard .oh{display:flex;align-items:center;gap:12px;}
.ocard .oid{font-family:var(--font-mono);font-size:13px;color:var(--ink-3);}
.ocard .oclient{font-weight:600;font-size:15px;}
.ocard .ozone{font-size:12.5px;color:var(--ink-3);}
.ocard .ostage{margin-left:auto;}
.mini-stages{display:flex;align-items:center;gap:5px;margin-top:14px;}
.mini-stages .ms{height:5px;border-radius:3px;flex:1;background:var(--line-2);overflow:hidden;}
.mini-stages .ms.done{background:var(--grad);}
.mini-stages .ms.cur{background:linear-gradient(90deg,var(--g2),var(--line-2));}
.ocard .ometa{display:flex;align-items:center;gap:14px;margin-top:12px;font-size:12.5px;color:var(--ink-2);}
.ocard .ometa .dvr{display:flex;align-items:center;gap:7px;}
.ocard .ometa .dvr .av{width:22px;height:22px;border-radius:50%;overflow:hidden;}

/* tracking detail */
.track{position:sticky;top:92px;}
.track-map2{height:300px;border-radius:var(--r);overflow:hidden;position:relative;border:1px solid var(--line);
  background:radial-gradient(120% 100% at 80% 0%, rgba(var(--color-primary-rgb),.10), var(--panel-2) 60%),
  repeating-linear-gradient(125deg,var(--panel-2) 0 13px,var(--panel) 13px 14px);}
.track-coord{position:absolute;left:10px;top:10px;font-family:var(--font-mono);font-size:10px;color:var(--ink-3);background:rgba(0,0,0,.4);border:1px solid var(--line-2);padding:4px 9px;border-radius:999px;}
.track-truck{position:absolute;width:30px;height:30px;margin:-15px;border-radius:50%;background:var(--grad);display:grid;place-items:center;color:#fff;box-shadow:0 6px 16px -3px rgba(var(--color-primary-dark-rgb),.7);z-index:3;transition:left 1s ease, top 1s ease;}
.track-truck svg{width:15px;height:15px;}
.vstages{display:flex;flex-direction:column;margin-top:8px;}
.vstage{display:flex;align-items:center;gap:13px;padding:10px 2px;position:relative;}
.vstage .vr{width:24px;height:24px;min-width:24px;border-radius:50%;background:var(--panel-2);box-shadow:inset 0 0 0 2px var(--line-2);display:grid;place-items:center;overflow:hidden;flex:0 0 auto;transition:.3s;color:var(--ink-3);}
.vstage .vr svg{width:12px;height:12px;}
.vstage.done .vr{background:var(--grad);box-shadow:none;color:#fff;}
.vstage.cur .vr{box-shadow:inset 0 0 0 2px var(--g2),0 0 0 4px rgba(var(--color-primary-rgb),.18);color:var(--g1);animation:vpulse 2s ease-in-out infinite;}
@keyframes vpulse{
  0%,100%{box-shadow:inset 0 0 0 2px var(--g2),0 0 0 4px rgba(var(--color-primary-rgb),.18);}
  50%{box-shadow:inset 0 0 0 2px var(--g2),0 0 0 9px rgba(var(--color-primary-rgb),.04);}
}
.vstage .vl{font-size:14px;color:var(--ink-2);transition:color .3s;}
.vstage.done .vl,.vstage.cur .vl{color:var(--ink);font-weight:600;}
.vstage .vt{margin-left:auto;font-size:12px;color:var(--ink-3);font-family:var(--font-mono);transition:color .3s;}
.vstage.done .vt,.vstage.cur .vt{color:var(--ink-2);}

/* timeline con iconos personalizados (assets/tracking/opt/) */
.vstages.vpic .vstage .vr{width:36px;height:36px;min-width:36px;background:#efece6;box-shadow:inset 0 0 0 2px var(--line-2);}
.vstages.vpic .vstage .vr img{width:76%;height:76%;object-fit:contain;display:block;transition:filter .35s,opacity .35s,transform .35s;}
.vstages.vpic .vstage .vr svg{width:14px;height:14px;}
.vstages.vpic .vstage:not(.done):not(.cur) .vr img{filter:grayscale(1);opacity:.42;}
/* completada → se llena de naranja con check blanco (igual que antes) */
.vstages.vpic .vstage.done .vr{background:var(--grad);box-shadow:none;color:#fff;}
.vstages.vpic .vstage.cur .vr{box-shadow:0 0 0 2px var(--g2),0 0 0 6px rgba(var(--color-primary-rgb),.16);animation:vpulse-pic 2s ease-in-out infinite;}
@keyframes vpulse-pic{
  0%,100%{box-shadow:0 0 0 2px var(--g2),0 0 0 6px rgba(var(--color-primary-rgb),.16);}
  50%{box-shadow:0 0 0 2px var(--g2),0 0 0 11px rgba(var(--color-primary-rgb),.04);}
}
.vstages.vpic .vstage.cur .vr img{transform:scale(1.06);}
.vstages.vpic .vstage .vln{left:18px;top:46px;bottom:-8px;}
.vstage .vln{position:absolute;left:12px;top:34px;bottom:-10px;width:2px;border-radius:2px;background:var(--line-2);transform:translateX(-50%);}
.vstage.done .vln{background:var(--grad);}
.vstage:last-child .vln{display:none;}

/* plan usage ring */
.usage{display:flex;align-items:center;gap:20px;}
.ring-wrap{position:relative;width:104px;height:104px;flex:none;}
.ring-wrap svg{transform:rotate(-90deg);}
.ring-wrap .rc{position:absolute;inset:0;display:grid;place-items:center;text-align:center;}
.ring-wrap .rc .n{font-family:var(--font-display);font-weight:600;font-size:24px;line-height:1;}
.ring-wrap .rc .l{font-size:10.5px;color:var(--ink-3);}
.usage .ud b{font-family:var(--font-display);font-size:17px;}
.usage .ud p{font-size:13px;color:var(--ink-2);margin-top:4px;}

/* tables */
.tbl{width:100%;border-collapse:collapse;}
.tbl th{text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:0 16px 12px;border-bottom:1px solid var(--line);}
.tbl td{padding:15px 16px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle;}
.tbl tr:last-child td{border-bottom:none;}
.tbl tbody tr{transition:background .15s;}
.tbl tbody tr:hover{background:var(--panel-2);}
.tbl .id{font-family:var(--font-mono);color:var(--ink-3);font-size:13px;}
.tbl .dvrcell{display:flex;align-items:center;gap:9px;}
.tbl .dvrcell .av{width:28px;height:28px;border-radius:50%;overflow:hidden;}

/* tabs */
.tabs{display:inline-flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px;margin-bottom:20px;}
.tabs button{padding:9px 18px;border-radius:999px;font-weight:600;font-size:13.5px;color:var(--ink-2);transition:.2s;}
.tabs button.on{background:var(--grad-soft);color:var(--ink);}
.tabs button .c{font-size:11px;opacity:.7;margin-left:5px;}

/* driver cards (panel) */
.dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
@media(max-width:1040px){.dgrid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:640px){.dgrid{grid-template-columns:1fr;}}
.dcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;cursor:pointer;transition:border-color .2s, transform .2s;}
.dcard:hover{border-color:var(--g2);transform:translateY(-3px);}
.dcard .dtop{display:flex;align-items:center;gap:14px;padding:20px;}
.dcard .dav{width:58px;height:58px;border-radius:15px;overflow:hidden;flex:none;}
.dcard .dnm{font-size:17px;}
.dcard .drt{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--ink-2);margin-top:3px;}
.dcard .drt svg{width:13px;height:13px;color:var(--g2);}
.dbar{display:flex;}
.dcard .dbar{border-top:1px solid var(--line);}
.dbar .db{flex:1;padding:13px;text-align:center;border-left:1px solid var(--line);}
.dbar .db:first-child{border-left:none;}
.dbar .db .n{font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--g1);}
.dbar .db .l{font-size:11px;color:var(--ink-3);margin-top:3px;}

/* drawer (driver / order detail) */
.drawer-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);z-index:60;animation:fade .2s;}
@keyframes fade{from{opacity:0;}to{opacity:1;}}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--panel);border-left:1px solid var(--line);z-index:61;overflow-y:auto;animation:slide .3s cubic-bezier(.2,.7,.3,1);padding:26px;}
@keyframes slide{from{transform:translateX(40px);opacity:.4;}to{transform:none;opacity:1;}}
.drawer .dx{position:absolute;top:20px;right:20px;width:34px;height:34px;border-radius:9px;background:var(--panel-2);display:grid;place-items:center;color:var(--ink-2);}
.drawer .dx:hover{color:var(--ink);}

/* plan view */
.plan-hero{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;}
@media(max-width:880px){.plan-hero{grid-template-columns:1fr;}}
.plan-current{background:linear-gradient(120deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);border-radius:var(--r-xl);padding:28px;position:relative;overflow:hidden;}
.plan-current .pglow{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,var(--g3),transparent 65%);filter:blur(50px);opacity:.35;top:-160px;right:-100px;}
.feat-list{display:flex;flex-direction:column;gap:12px;margin-top:20px;}
.feat-list .fi{display:flex;gap:11px;align-items:flex-start;font-size:14px;color:var(--ink-2);}
.feat-list .fi .ck{width:19px;height:19px;border-radius:6px;background:var(--grad-soft);display:grid;place-items:center;flex:none;margin-top:1px;}
.feat-list .fi .ck svg{width:11px;height:11px;color:var(--g1);}
.bigbar{height:12px;border-radius:999px;background:var(--panel-3);overflow:hidden;margin:10px 0;}
.bigbar .f{height:100%;border-radius:999px;background:var(--grad);}

/* settings */
.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
@media(max-width:880px){.set-grid{grid-template-columns:1fr;}}
.set-field{margin-bottom:16px;}
.set-field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:7px;}
.set-field input,.set-field select,.set-field textarea{width:100%;background:var(--panel-2);border:1.5px solid var(--line-2);border-radius:var(--r-sm);padding:11px 13px;color:var(--ink);font-size:14px;outline:none;transition:border-color .2s;}
.set-field input:focus,.set-field select:focus,.set-field textarea:focus{border-color:var(--g2);}
.toggle{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);}
.toggle:last-child{border-bottom:none;}
.toggle .tl b{font-size:14.5px;} .toggle .tl p{font-size:12.5px;color:var(--ink-3);margin-top:2px;}
.sw{width:44px;height:25px;border-radius:999px;background:var(--panel-3);border:1px solid var(--line-2);position:relative;transition:.25s;flex:none;}
.sw.on{background:var(--grad);border-color:transparent;}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;transition:.25s;}
.sw.on::after{left:21px;}

.fade-in{animation:fadein .35s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}

/* ---------------- login: cuentas demo ---------------- */
.login-accts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;}
.acct-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 12px;border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--line-2);transition:border-color .2s, background .2s;text-align:left;}
.acct-chip:hover{border-color:var(--g2);background:var(--panel-2);}
.acct-chip b{font-family:var(--font-mono);font-size:13px;color:var(--ink);}
.acct-chip span{font-size:11px;color:var(--ink-3);}

/* nav lock badge */
.sb-link .badge.badge-lock{background:var(--panel-3);color:var(--g1);}

/* ---------------- ANALÍTICA AVANZADA ---------------- */
.an-page{display:flex;flex-direction:column;gap:20px;}
.an-card{padding:22px 24px;}
.an-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;}
.an-head h3{font-size:18px;margin-top:5px;}
.an-grid2{display:grid;grid-template-columns:1.55fr 1fr;gap:20px;align-items:stretch;}
@media(max-width:1040px){.an-grid2{grid-template-columns:1fr;}}
.an-legend{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-3);}
.an-grad{width:88px;height:9px;border-radius:999px;background:linear-gradient(90deg,rgba(var(--color-primary-rgb),.1),rgba(var(--color-primary-rgb),.55),var(--g3));}
.an-legend2{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-2);}
.an-legend2 span{display:flex;align-items:center;gap:7px;}
.an-legend2 i{width:14px;height:3px;border-radius:2px;display:inline-block;}

/* charts */
.an-chart{width:100%;}
.an-svg{width:100%;height:auto;display:block;overflow:visible;}

/* tooltips interactivos */
.an-plot{position:relative;width:100%;cursor:crosshair;}
.an-guide{position:absolute;top:6%;bottom:14%;width:1.5px;background:var(--line-2);transform:translateX(-50%);pointer-events:none;z-index:1;}
.an-marker{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--g2);border:2.5px solid var(--panel);box-shadow:0 0 0 2px var(--g2);transform:translate(-50%,-50%);pointer-events:none;z-index:2;transition:left .07s linear,top .07s linear;}
.an-marker.g{background:var(--green);box-shadow:0 0 0 2px var(--green);}
.an-tip{position:absolute;transform:translate(-50%,calc(-100% - 14px));background:var(--panel-3);border:1px solid var(--line-2);border-radius:11px;padding:9px 13px;box-shadow:var(--shadow);pointer-events:none;white-space:nowrap;z-index:6;transition:left .07s linear,top .07s linear;}
.an-tip b{display:block;font-family:var(--font-display);font-weight:600;font-size:15.5px;line-height:1.1;}
.an-tip > span{font-size:11px;color:var(--ink-3);font-family:var(--font-mono);}
.an-tip::after{content:"";position:absolute;left:50%;bottom:-5px;width:9px;height:9px;background:var(--panel-3);border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);transform:translateX(-50%) rotate(45deg);}
/* tooltip de barras: anclado al tope de la barra */
.an-tip-bar{top:0;left:50%;transform:translate(-50%,calc(-100% - 10px));}
/* tooltip de celda del heatmap */
.an-tip-cell{top:0;left:50%;transform:translate(-50%,calc(-100% - 8px));}
/* tooltip multi-serie (tendencias) */
.an-tip-multi{padding:11px 14px;}
.an-tip-multi .an-tip-ttl{display:block;font-family:var(--font-mono);font-size:11px;color:var(--ink-3);margin-bottom:8px;}
.an-tip-multi .an-tip-row{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2);min-width:150px;}
.an-tip-multi .an-tip-row + .an-tip-row{margin-top:5px;}
.an-tip-multi .an-tip-row b{margin-left:auto;color:var(--ink);font-family:var(--font-display);font-weight:600;}
.an-tip-multi .an-tip-row i{width:9px;height:9px;border-radius:3px;flex:none;}
.an-bar-col{position:relative;}
.an-bar-col.hot .an-bar-fill{background:var(--grad);box-shadow:0 6px 16px -6px rgba(var(--color-primary-dark-rgb),.7);}

/* heatmap */
.heat{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;}
.heat-corner{}
.heat-cols{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-3);text-align:center;}
.heat-zone{font-size:12.5px;color:var(--ink-2);white-space:nowrap;text-align:right;padding-right:2px;}
.heat-row{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;}
.heat-cell{height:34px;border-radius:6px;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:500;border:1px solid rgba(255,255,255,.03);transition:transform .12s;cursor:crosshair;position:relative;}
.heat-cell:hover{transform:scale(1.12);outline:1.5px solid var(--g1);z-index:2;}

/* bars */
.an-bars{display:grid;grid-template-columns:repeat(12,1fr);gap:7px;align-items:end;height:200px;}
.an-bar-col{display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;}
.an-bar-track{flex:1;width:100%;display:flex;align-items:flex-end;}
.an-bar-fill{width:100%;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,rgba(var(--color-primary-light-rgb),.5),rgba(var(--color-primary-dark-rgb),.35));transition:height .4s ease, background .2s;min-height:4px;}
.an-bar-fill.peak{background:var(--grad);box-shadow:0 6px 16px -6px rgba(var(--color-primary-dark-rgb),.7);}
.an-bar-lbl{font-family:var(--font-mono);font-size:10px;color:var(--ink-3);}

/* zone ranking */
.an-rank{display:flex;flex-direction:column;gap:18px;}
.an-rank-row{display:flex;align-items:center;gap:14px;}
.an-rank-n{width:26px;height:26px;border-radius:8px;background:var(--grad-soft);color:var(--g1);font-family:var(--font-display);font-weight:600;font-size:13px;display:grid;place-items:center;flex:none;}
.an-rank-body{flex:1;}
.an-rank-z{font-size:13.5px;color:var(--ink-2);}
.an-rank-track{height:8px;border-radius:999px;background:var(--panel-3);overflow:hidden;}
.an-rank-fill{height:100%;border-radius:999px;background:var(--grad);}

/* ---------------- estado bloqueado ---------------- */
.lock-wrap{position:relative;border-radius:var(--r-xl);overflow:hidden;max-height:600px;}
.lock-preview{filter:blur(7px) saturate(.7);opacity:.5;pointer-events:none;user-select:none;transform:scale(1.02);}
.lock-overlay{position:absolute;inset:0;display:grid;place-items:start start;padding:40px 48px;background:radial-gradient(120% 90% at 30% 30%,rgba(16,14,12,.4),rgba(16,14,12,.86));}
.lock-card{max-width:480px;text-align:left;background:linear-gradient(150deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);border-radius:var(--r-xl);padding:34px;box-shadow:var(--shadow);}
.lock-ico{width:58px;height:58px;border-radius:16px;background:var(--grad);color:#fff;display:grid;place-items:center;margin:0 0 18px;box-shadow:0 10px 26px -8px rgba(var(--color-primary-dark-rgb),.7);}
.lock-ico svg{width:27px;height:27px;}
.lock-card h2{font-size:24px;margin:8px 0;}
.lock-card>p{color:var(--ink-2);font-size:14.5px;line-height:1.55;margin-bottom:22px;}
.lock-feats{display:flex;flex-direction:column;gap:12px;text-align:left;margin-bottom:26px;}
.lock-feats .lf{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--ink-2);}
.lock-feats .lf .ck{width:30px;height:30px;border-radius:9px;background:var(--grad-soft);color:var(--g1);display:grid;place-items:center;flex:none;}
.lock-feats .lf .ck svg{width:16px;height:16px;}
.lock-card .btn-primary{width:auto;}
.lock-plan{margin-top:16px;font-size:12.5px;color:var(--ink-3);}
.lock-plan b{color:var(--ink-2);}

/* ---------------- modal de upgrade ---------------- */
.an-modal{position:fixed;top:6vh;left:50%;transform:translateX(-50%);width:min(680px,92vw);max-height:88vh;overflow-y:auto;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-xl);z-index:61;padding:30px;animation:popin .28s cubic-bezier(.2,.8,.3,1);}
@keyframes popin{from{transform:translateX(-50%) translateY(-12px) scale(.96);opacity:0;}to{transform:translateX(-50%) translateY(0) scale(1);opacity:1;}}
.an-modal .dx{position:absolute;top:18px;right:18px;width:34px;height:34px;border-radius:9px;background:var(--panel-2);display:grid;place-items:center;color:var(--ink-2);}
.an-modal .dx:hover{color:var(--ink);}
.up-plans{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:600px){.up-plans{grid-template-columns:1fr;}}
.up-plan{background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:20px;cursor:pointer;transition:border-color .2s, transform .2s;}
.up-plan:hover{border-color:var(--g2);transform:translateY(-3px);}
.up-price{display:flex;align-items:baseline;gap:6px;margin:6px 0 16px;}
.up-price b{font-family:var(--font-display);font-size:24px;}
.up-price span{font-size:12.5px;color:var(--ink-3);}
.up-feats{display:flex;flex-direction:column;gap:9px;margin-bottom:18px;}
.up-feats .upf{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--ink-2);line-height:1.4;}
.up-feats .upf svg{margin-top:2px;flex:none;}
.up-plan .btn{width:100%;font-size:13.5px;padding:12px 18px;}
.up-done{text-align:center;padding:30px 10px;}
.up-check{width:60px;height:60px;border-radius:50%;background:var(--green-bg);color:var(--green);display:grid;place-items:center;margin:0 auto;}
.up-check svg{width:30px;height:30px;}

/* charts: ejes y puntos siguen el tema */
.an-svg .an-grid{stroke:var(--line);}
.an-svg .an-axis{fill:var(--ink-3);}
.an-svg .an-dot{fill:var(--panel);}

/* toggle de tema en login */
.login-theme{position:fixed;top:22px;right:22px;z-index:30;width:42px;height:42px;border-radius:12px;background:var(--panel);border:1px solid var(--line-2);color:var(--ink-2);display:grid;place-items:center;transition:.2s;}
.login-theme:hover{color:var(--ink);border-color:var(--ink-3);}
.login-theme svg{width:19px;height:19px;}

/* ============================================================
   MODO CLARO  (fondo cálido como el landing)
   ============================================================ */
body.theme-light{
  --bg:#FBF8F3;
  --panel:#ffffff;
  --panel-2:#F4EEE6;
  --panel-3:#ece4db;
  --rail:#F6F0E8;
  --line:#ece4db;
  --line-2:#e0d6ca;
  --ink:#1A1614;
  --ink-2:#5b524c;
  --ink-3:#938880;
  --green:#3f9d58;
  --green-bg:rgba(63,157,88,.14);
  --red:#d9543f;
  --red-bg:rgba(217,84,63,.12);
  --grad-soft:linear-gradient(118deg,rgba(var(--color-primary-rgb),.15),rgba(var(--color-primary-dark-rgb),.13));
  --shadow:0 2px 8px rgba(26,22,20,.06), 0 18px 44px -20px rgba(26,22,20,.18);
}
body.theme-light .login-aside .lglow{opacity:.28;}
body.theme-light .sb-link.on{color:var(--g3);}
body.theme-light .ocard.sel,
body.theme-light .malert{box-shadow:var(--shadow-sm,none);}
body.theme-light .lock-overlay{background:radial-gradient(120% 90% at 30% 30%,rgba(251,248,243,.4),rgba(244,238,230,.9));}
body.theme-light .heat-cell{border-color:rgba(26,22,20,.04);}
body.theme-light .pill-brand{color:var(--g3);}
body.theme-light .kpi .ic,
body.theme-light .an-rank-n{color:var(--g3);}

/* ============================================================
   PEDIR DOMICILIARIO
   ============================================================ */
.pd-grid{display:grid;grid-template-columns:1fr 360px;gap:20px;align-items:start;}
@media(max-width:980px){.pd-grid{grid-template-columns:1fr;}}
.pd-section-lbl{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:6px 0 14px;padding-top:14px;border-top:1px solid var(--line);}
.pd-grid .card-pad .pd-section-lbl:first-of-type{border-top:none;padding-top:0;margin-top:0;}
.set-field textarea{resize:vertical;min-height:74px;line-height:1.5;}

/* chips de tipo de inmueble */
.pd-chips{display:flex;flex-wrap:wrap;gap:9px;}
.pd-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 15px;border-radius:999px;background:var(--panel-2);border:1.5px solid var(--line-2);color:var(--ink-2);font-weight:600;font-size:13.5px;transition:.18s;}
.pd-chip svg{width:16px;height:16px;}
.pd-chip:hover{border-color:var(--ink-3);color:var(--ink);}
.pd-chip.on{background:var(--grad-soft);border-color:var(--g2);color:var(--ink);}

/* aside */
.pd-aside{display:flex;flex-direction:column;gap:20px;position:sticky;top:92px;}

/* tarjeta de tarifa */
.pd-quote{position:relative;overflow:hidden;padding:24px;background:linear-gradient(150deg,var(--panel-2),var(--panel));border-color:var(--line-2);}
.pd-quote-glow{position:absolute;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,var(--g3),transparent 65%);filter:blur(46px);opacity:.32;top:-130px;right:-90px;}
.pd-price{font-family:var(--font-display);font-weight:700;font-size:44px;line-height:1;margin-top:12px;position:relative;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;}
.pd-price-sub{font-size:12.5px;color:var(--ink-3);margin-top:7px;position:relative;}
.pd-break{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;font-size:13.5px;position:relative;}
.pd-break .muted{max-width:62%;}
.pd-break-total{margin-top:4px;padding-top:12px;border-top:1px solid var(--line);font-size:15px;}
.pd-break-total b:last-child{font-family:var(--font-display);font-size:18px;color:var(--g1);}
.pd-eta{display:flex;align-items:center;gap:12px;margin:18px 0;padding:13px 14px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line-2);position:relative;}
.pd-eta .ic{width:38px;height:38px;border-radius:11px;background:var(--grad-soft);color:var(--g1);display:grid;place-items:center;flex:none;}
.pd-eta .ic svg{width:19px;height:19px;}
.pd-eta b{display:block;font-size:14.5px;}
.pd-eta .muted{font-size:12px;}
.pd-note{display:flex;align-items:center;gap:7px;justify-content:center;margin-top:13px;font-size:12px;color:var(--ink-3);position:relative;}
.pd-note svg{color:var(--g2);flex:none;}

/* estado vacío */
.pd-empty{text-align:center;padding:18px 6px 6px;position:relative;}
.pd-empty-ico{width:54px;height:54px;border-radius:16px;background:var(--panel);border:1px solid var(--line-2);color:var(--g2);display:grid;place-items:center;margin:14px auto 16px;}
.pd-empty-ico svg{width:24px;height:24px;}
.pd-empty p{font-size:13.5px;color:var(--ink-2);max-width:30ch;margin:0 auto;line-height:1.55;}
.pd-empty p b{color:var(--ink);}
.pd-empty-range{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-3);}
.pd-empty-range b{color:var(--g1);font-family:var(--font-display);}

/* confirmación */
.pd-done-wrap{display:grid;place-items:center;min-height:60vh;}
.pd-done{max-width:480px;text-align:center;padding:36px;}
.pd-done-ico{width:62px;height:62px;border-radius:18px;background:var(--grad);color:#fff;display:grid;place-items:center;margin:0 auto 20px;box-shadow:0 12px 28px -8px rgba(var(--color-primary-dark-rgb),.7);}
.pd-done-ico svg{width:30px;height:30px;}
.pd-done h2{font-size:25px;}
.pd-done > .muted{font-size:14px;margin-top:10px;line-height:1.55;}
.pd-done-sum{display:flex;flex-direction:column;gap:11px;margin:24px 0;padding:18px 20px;border-radius:var(--r-lg);background:var(--panel-2);border:1px solid var(--line-2);text-align:left;}
.pd-done-sum > div{display:flex;align-items:center;justify-content:space-between;font-size:14px;}
.pd-done .btn{flex:1;}

/* ── Autocompletado de dirección + ajuste manual de ubicación ───── */
.pd-ac-wrap{position:relative;}
.pd-ac-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;background:var(--panel-2);border:1.5px solid var(--line-2);border-radius:var(--r-sm);box-shadow:0 14px 34px -10px rgba(0,0,0,.5);overflow:hidden;max-height:264px;overflow-y:auto;}
.pd-ac-status{padding:11px 13px;font-size:13px;color:var(--ink-3);}
.pd-ac-item{display:flex;align-items:flex-start;gap:9px;width:100%;text-align:left;padding:10px 13px;background:transparent;border:none;border-bottom:1px solid var(--line);color:var(--ink);font-size:13.5px;line-height:1.4;cursor:pointer;transition:background .14s;}
.pd-ac-item:last-child{border-bottom:none;}
.pd-ac-item:hover{background:var(--grad-soft);}
.pd-ac-item svg{margin-top:1px;flex:none;}
.pd-ac-item .t{flex:1;}
.pd-ac-warn{color:var(--ink-3);font-style:normal;font-size:12px;}
.pd-ac-cat{color:var(--g2);font-style:normal;font-size:12px;font-weight:600;}
.pd-ac-hint{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:12.5px;font-weight:600;line-height:1.4;}
.pd-ac-hint svg{flex:none;}
.pd-ac-hint.ok{color:var(--g2);}
.pd-ac-hint.warn{color:#d97706;}
.pd-link{background:none;border:none;padding:0;color:var(--g1);font-weight:700;font-size:inherit;cursor:pointer;text-decoration:underline;}
.pd-adjust-btn{display:inline-flex;align-items:center;gap:7px;margin-top:10px;padding:9px 13px;background:var(--panel);border:1.5px dashed var(--line-2);border-radius:var(--r-sm);color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer;transition:.16s;}
.pd-adjust-btn:hover{border-color:var(--g2);color:var(--ink);}
.pd-adjust-btn svg{flex:none;color:var(--g2);}

/* alerta de distancia absurda (geocoding impreciso) */
.pd-alert{display:flex;flex-direction:column;align-items:center;text-align:center;gap:13px;padding:18px 6px 6px;position:relative;}
.pd-alert-ico{width:54px;height:54px;border-radius:16px;background:rgba(217,119,6,.12);border:1px solid rgba(217,119,6,.4);color:#d97706;display:grid;place-items:center;}
.pd-alert-ico svg{width:24px;height:24px;}
.pd-alert p{font-size:13.5px;color:var(--ink-2);line-height:1.55;margin:0;max-width:34ch;}
.pd-alert p b{color:var(--ink);}
.pd-alert .btn{margin-top:4px;}

/* ── Mini-mapa de ajuste manual del pin (overlay modal) ─────────── */
.pd-pin-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:18px;backdrop-filter:blur(2px);}
.pd-pin-modal{width:min(560px,100%);background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:0 24px 60px -12px rgba(0,0,0,.6);padding:20px;}
.pd-pin-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.pd-pin-head b{display:inline-flex;align-items:center;gap:8px;font-size:16px;}
.pd-pin-x{width:32px;height:32px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink-2);font-size:15px;cursor:pointer;display:grid;place-items:center;transition:.16s;}
.pd-pin-x:hover{color:var(--ink);border-color:var(--ink-3);}
.pd-pin-map{width:100%;height:340px;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line-2);}
.pd-pin-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;flex-wrap:wrap;}
.pd-pin-coords{font-size:13px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;}
.pd-pin-coords.lejos{color:#d97706;}

/* ── Velocímetro de telemetría (flota sobre el mapa) ─────────────── */
.treego-speedo {
  position: absolute;
  left: 14px;
  bottom: 14px;
  z-index: 3;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  /* flexbox: el número queda SIEMPRE perfectamente centrado (V y H) */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  text-align: center;
  line-height: 1;
  background:
    radial-gradient(circle at 30% 28%, #2a2a2e 0%, #1a1a1d 55%, #121214 100%);
  color: #fff;
  box-shadow: 0 6px 20px -4px rgba(0, 0, 0, .55), inset 0 1px 1px rgba(255, 255, 255, .06);
  border: 1.5px dashed rgba(255, 255, 255, .35);
  pointer-events: none;
  transition: border-color .25s ease, box-shadow .25s ease, background .25s ease;
}
.treego-speedo-num {
  font-family: var(--font-display, "Inter", sans-serif);
  font-weight: 700;
  font-size: 24px;
  line-height: 1;
  letter-spacing: -.5px;
  font-variant-numeric: tabular-nums;
  max-width: 100%;
}
/* Escala de fuente según nº de dígitos para que nunca se desborde del círculo */
.treego-speedo.sp-3 .treego-speedo-num { font-size: 19px; }
.treego-speedo.sp-4 .treego-speedo-num { font-size: 14px; letter-spacing: -1px; }
.treego-speedo-unit {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .5px;
  opacity: .72;
  margin-top: 2px;
}
/* Sobre el límite (aún sin confirmar): ámbar */
.treego-speedo.is-over {
  border-color: #f59e0b;
  box-shadow: 0 6px 22px -4px rgba(245, 158, 11, .55), inset 0 1px 1px rgba(255, 255, 255, .06);
}
/* Infracción confirmada (≥30 s): fondo ROJO brillante de alerta + número
   que parpadea. Vuelve solo al gris cuando se quita la clase (transición de
   background en .treego-speedo) al regresar a velocidad permitida. */
.treego-speedo.is-violation {
  background: radial-gradient(circle at 30% 28%, #f1654f 0%, #dc2626 58%, #b41d1d 100%);
  border-color: #fff;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, .4), 0 8px 28px -2px rgba(220, 38, 38, .75);
  animation: treego-speedo-pulse 1.1s ease-in-out infinite;
}
.treego-speedo.is-violation .treego-speedo-num {
  color: #fff;
  animation: treego-speedo-blink .7s steps(1, start) infinite;
}
.treego-speedo.is-violation .treego-speedo-unit { opacity: .95; }
@keyframes treego-speedo-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, .55), 0 8px 28px -2px rgba(220, 38, 38, .75); }
  50%      { box-shadow: 0 0 0 8px rgba(220, 38, 38, 0), 0 8px 28px -2px rgba(220, 38, 38, .75); }
}
@keyframes treego-speedo-blink {
  0%, 49%   { opacity: 1; }
  50%, 100% { opacity: .3; }
}

/* ── Toast / badge de alerta de velocidad (consola admin) ────────── */
.treego-toast-stack {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}
.treego-toast {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  max-width: 340px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--panel, #1a1613);
  border: 1px solid #ef4444;
  box-shadow: 0 10px 30px -6px rgba(0, 0, 0, .5);
  color: var(--text, #f5f0ea);
  animation: treego-toast-in .25s ease;
}
.treego-toast .tt-ic {
  flex: 0 0 auto;
  width: 30px; height: 30px;
  border-radius: 8px;
  display: grid; place-items: center;
  background: rgba(239, 68, 68, .15);
  color: #ef4444;
}
.treego-toast b { font-size: 13.5px; }
.treego-toast .tt-sub { font-size: 12px; opacity: .8; margin-top: 2px; }
@keyframes treego-toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* Fila de alerta resaltada en la bitácora */
.log-tbl tr.is-speed-alert { background: rgba(239, 68, 68, .07); }
.log-tbl tr.is-speed-alert .log-acc { color: #ef4444; }

/* ---------------- MODAL REPORTAR INCIDENCIA (tickets) ---------------- */
.tk-modal{width:min(480px,94vw);max-width:480px;padding:0;border-radius:20px;box-shadow:var(--shadow);}
.tk-head{display:flex;align-items:center;gap:13px;padding:22px 24px 18px;border-bottom:1px solid var(--line);}
.tk-head .tk-ic{width:42px;height:42px;border-radius:12px;background:var(--grad-soft);color:var(--g2);display:grid;place-items:center;flex:none;}
.tk-head h2{font-size:19px;color:var(--ink);font-weight:700;}
.tk-head .tk-sub{font-size:13px;color:var(--ink-3);margin-top:2px;}
.tk-body{padding:22px 24px 4px;}
.tk-grp{margin-bottom:18px;}
.tk-grp .tk-lbl{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:9px;}
.tk-select,.tk-textarea{width:100%;background:var(--panel);border:1.5px solid var(--line-2);border-radius:12px;color:var(--ink);font-size:14.5px;outline:none;transition:border-color .2s, box-shadow .2s;}
.tk-select:focus,.tk-textarea:focus{border-color:var(--g2);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.15);}
.tk-select{appearance:none;-webkit-appearance:none;cursor:pointer;padding:13px 38px 13px 14px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2384786c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 13px center;}
.tk-select:disabled{opacity:.6;cursor:default;}
.tk-textarea{padding:12px 14px;resize:vertical;min-height:86px;line-height:1.5;}
.tk-textarea::placeholder{color:var(--ink-3);}
.tk-chips{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;}
.tk-chip{padding:11px 8px;border-radius:12px;border:1.5px solid var(--line-2);background:var(--panel);color:var(--ink-2);font-size:13px;font-weight:600;line-height:1.25;text-align:center;transition:border-color .18s, background .18s, color .18s;}
.tk-chip:hover{border-color:var(--ink-3);color:var(--ink);}
.tk-chip.on{border-color:var(--g2);background:var(--grad-soft);color:var(--g2);}
.tk-drop{display:flex;flex-direction:column;align-items:center;gap:7px;padding:20px;border:1.6px dashed var(--line-2);border-radius:12px;background:var(--panel-2);color:var(--ink-3);text-align:center;cursor:pointer;transition:border-color .18s, background .18s, color .18s;}
.tk-drop:hover,.tk-drop.tk-drag{border-color:var(--g2);background:var(--grad-soft);color:var(--g2);}
.tk-drop .tk-drop-t{font-size:12.5px;max-width:26ch;}
.tk-drop .tk-drop-file{font-size:13px;font-weight:600;color:var(--g2);word-break:break-all;}
.tk-foot{padding:6px 24px 22px;}
.tk-cancel{display:block;width:100%;text-align:center;margin-top:12px;padding:9px;background:none;color:var(--ink-3);font-size:14px;font-weight:600;transition:color .2s;}
.tk-cancel:hover{color:var(--ink-2);}
.tk-ok{padding:6px 24px 24px;}
.tk-ok p{color:var(--ink-2);font-size:14px;line-height:1.55;margin-bottom:18px;}

/* ---------------- TRAZABILIDAD DE TICKETS (Mis reclamaciones) ---------------- */
.tk-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;margin-bottom:14px;}
.tk-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.tk-card-head .tk-ttl{font-size:15px;font-weight:700;color:var(--ink);}
.tk-card-desc{color:var(--ink-2);font-size:13px;margin:8px 0 0;line-height:1.5;}
.tk-tl{margin-top:16px;}
.tk-tl-step{display:flex;gap:13px;}
.tk-tl-rail{display:flex;flex-direction:column;align-items:center;flex:none;}
.tk-tl-dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--panel-2);box-shadow:inset 0 0 0 2px var(--line-2);color:var(--ink-3);transition:.2s;}
.tk-tl-dot svg{width:14px;height:14px;}
.tk-tl-line{width:2px;flex:1;min-height:16px;background:var(--line-2);border-radius:2px;margin:3px 0;}
.tk-tl-step.done .tk-tl-dot{background:var(--green-bg);box-shadow:inset 0 0 0 2px var(--green);color:var(--green);}
.tk-tl-step.done .tk-tl-line{background:var(--green);opacity:.5;}
.tk-tl-step.cur .tk-tl-dot{background:var(--grad-soft);box-shadow:inset 0 0 0 2px var(--g2),0 0 0 4px rgba(var(--color-primary-rgb),.16);color:var(--g2);}
.tk-tl-body{padding-top:3px;padding-bottom:6px;}
.tk-tl-name{font-size:14px;font-weight:600;color:var(--ink-3);}
.tk-tl-step.done .tk-tl-name{color:var(--ink);}
.tk-tl-step.cur .tk-tl-name{color:var(--g2);}
.tk-tl-time{font-size:12px;color:var(--ink-3);margin-top:2px;}
.tk-comp{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--grad-soft);border:1px solid rgba(var(--color-primary-rgb),.25);}
.tk-comp .tk-comp-l{font-size:12.5px;font-weight:600;color:var(--ink-2);}
.tk-comp .tk-comp-v{font-size:14px;font-weight:700;color:var(--g2);white-space:nowrap;}
