:root{
  --ink:      #100E0B;
  --ink-2:    #1A1712;
  --ink-3:    #272219;
  --canopy:   #FFC72C;
  --canopy-2: #E0A211;
  --paper:    #F2EDE3;
  --paper-2:  #8C8478;
  --brake:    #E8503A;

  --mono: 'Martian Mono', ui-monospace, monospace;
  --sans: 'Familjen Grotesk', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}

body{
  font-family:var(--sans);
  background:var(--ink);
  color:var(--paper);
  height:100dvh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  overscroll-behavior:none;
  -webkit-user-select:none;user-select:none;
}

/* ─── Header ─── */
header{
  flex-shrink:0;
  padding:calc(14px + env(safe-area-inset-top)) 18px 12px;
  display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid var(--ink-3);
}
.brand{
  font-family:var(--mono);
  font-weight:800;
  font-size:12px;
  letter-spacing:-0.02em;
  text-transform:uppercase;
  display:flex;align-items:center;gap:8px;
}
.brand-mark{
  width:20px;height:20px;border-radius:5px;
  background:var(--canopy);
  display:grid;place-items:center;
  font-size:11px;
  filter:saturate(1.1);
}
.pill{
  font-family:var(--mono);
  font-size:9px;font-weight:600;
  letter-spacing:0.04em;
  text-transform:uppercase;
  padding:5px 9px;
  border-radius:999px;
  border:1px solid var(--ink-3);
  color:var(--paper-2);
  display:flex;align-items:center;gap:6px;
  max-width:56vw;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pill .led{width:6px;height:6px;border-radius:50%;background:var(--paper-2);flex-shrink:0}
.pill.live{color:var(--canopy);border-color:rgba(255,199,44,.35)}
.pill.live .led{background:var(--canopy);animation:blink 1.6s ease-in-out infinite}
.pill.bad{color:var(--brake);border-color:rgba(232,80,58,.4)}
.pill.bad .led{background:var(--brake)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

/* ─── View plumbing ─── */
.view{flex:1;min-height:0;display:none;flex-direction:column}
.view.on{display:flex}
.scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:18px 18px 26px}

/* ─── Map ─── */
#map{flex:1;min-height:0;background:var(--ink-2)}
.leaflet-control-attribution{
  font-size:8px!important;
  background:rgba(16,14,11,.7)!important;
  color:var(--paper-2)!important;
  padding:1px 5px!important;
}
.leaflet-control-attribution a{color:var(--paper-2)!important}

/* Rider marker — Swiggy/Zomato style */
.rider{position:relative;width:46px;height:46px}
.rider .halo{
  position:absolute;inset:0;border-radius:50%;
  background:rgba(255,199,44,.28);
  opacity:0;
}
.rider.moving .halo{animation:halo 1.9s cubic-bezier(.2,.6,.35,1) infinite}
.rider .halo:nth-child(2){animation-delay:.95s}
@keyframes halo{
  0%{transform:scale(.45);opacity:.75}
  100%{transform:scale(1.35);opacity:0}
}
.rider .badge{
  position:absolute;inset:8px;
  border-radius:50%;
  background:var(--canopy);
  border:2.5px solid var(--ink);
  box-shadow:0 3px 10px rgba(0,0,0,.55);
  display:grid;place-items:center;
  font-size:16px;line-height:1;
  transition:transform .3s ease;
}
.rider.moving .badge{animation:jog .5s ease-in-out infinite}
@keyframes jog{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}

/* ─── Meter panel (the signature) ─── */
.meter-panel{
  flex-shrink:0;
  background:var(--canopy);
  color:var(--ink);
  border-radius:20px 20px 0 0;
  padding:16px 18px 18px;
  box-shadow:0 -12px 34px rgba(0,0,0,.5);
  position:relative;
  z-index:4;
}
.meter-panel::before{
  content:'';
  position:absolute;top:8px;left:50%;transform:translateX(-50%);
  width:38px;height:3px;border-radius:2px;
  background:rgba(16,14,11,.22);
}
.meter-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:6px}
.meter-cap{
  font-family:var(--mono);
  font-size:9px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;
  opacity:.62;
  margin-bottom:4px;
}

/* Odometer */
.odo-wrap{display:flex;align-items:baseline;gap:3px}
.rupee{
  font-family:var(--mono);font-weight:600;
  font-size:22px;opacity:.55;
}
.odo{
  display:flex;
  font-family:var(--mono);
  font-weight:800;
  font-size:clamp(40px,13.5vw,54px);
  line-height:1;
  letter-spacing:-0.04em;
}
.odo-d{display:inline-block;height:1em;overflow:hidden}
.odo-strip{display:block;transition:transform .5s cubic-bezier(.3,1.4,.4,1)}
.odo-strip>span{display:block;height:1em;line-height:1em}

.night-tag{
  font-family:var(--mono);font-size:8px;font-weight:800;
  letter-spacing:.06em;text-transform:uppercase;
  background:var(--ink);color:var(--canopy);
  padding:4px 7px;border-radius:5px;
  align-self:center;
  display:none;
}
.night-tag.on{display:block}

/* Readout strip */
.readout{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:rgba(16,14,11,.16);
  border-radius:11px;
  overflow:hidden;
  margin-top:14px;
}
.ro{background:var(--canopy);padding:9px 10px}
.ro-k{
  font-family:var(--mono);font-size:8px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;opacity:.6
}
.ro-v{
  font-family:var(--mono);font-size:15px;font-weight:800;
  letter-spacing:-0.03em;margin-top:2px
}

/* Buttons */
.btn-row{display:flex;gap:9px;margin-top:14px}
.btn{
  flex:1;padding:14px;border:none;border-radius:12px;
  font-family:var(--sans);font-size:15px;font-weight:700;
  letter-spacing:.01em;cursor:pointer;
  transition:transform .12s,opacity .12s;
}
.btn:active{transform:scale(.975)}
.btn-go{background:var(--ink);color:var(--canopy)}
.btn-halt{background:var(--brake);color:#fff}
.btn-ghost{flex:0 0 auto;padding:14px 18px;background:rgba(16,14,11,.13);color:var(--ink)}

/* ─── Tab bar ─── */
nav{
  flex-shrink:0;
  display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid var(--ink-3);
  background:var(--ink);
  padding-bottom:env(safe-area-inset-bottom);
}
.tab{
  background:none;border:none;cursor:pointer;
  padding:11px 4px 12px;
  font-family:var(--mono);
  font-size:9px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--paper-2);
  display:flex;flex-direction:column;align-items:center;gap:5px;
  border-top:2px solid transparent;
  margin-top:-1px;
}
.tab .ic{font-size:15px;line-height:1;filter:grayscale(1) opacity(.55)}
.tab.on{color:var(--canopy);border-top-color:var(--canopy)}
.tab.on .ic{filter:none}

/* ─── Forms / cards ─── */
.sec-title{
  font-family:var(--mono);font-size:9px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--paper-2);
  margin:0 0 10px 2px;
}
.sec-title:not(:first-child){margin-top:26px}

.card{
  background:var(--ink-2);
  border:1px solid var(--ink-3);
  border-radius:15px;
  padding:4px 14px;
}
.row{
  display:flex;align-items:center;gap:12px;
  padding:13px 0;
  border-bottom:1px solid var(--ink-3);
}
.row:last-child{border-bottom:none}
.row-l{flex:1;min-width:0}
.row-t{font-size:14px;font-weight:500}
.row-s{font-size:11.5px;color:var(--paper-2);margin-top:2px;line-height:1.35}
.row input[type=number]{
  width:98px;flex-shrink:0;
  background:var(--ink);
  border:1px solid var(--ink-3);
  border-radius:9px;
  padding:9px 10px;
  color:var(--canopy);
  font-family:var(--mono);font-size:14px;font-weight:600;
  text-align:right;
  outline:none;
  transition:border-color .15s;
}
.row input[type=number]:focus{border-color:var(--canopy)}
.row input::-webkit-outer-spin-button,
.row input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.row input[type=number]{-moz-appearance:textfield}

/* Switch */
.sw{
  flex-shrink:0;width:44px;height:26px;border-radius:99px;
  background:var(--ink-3);border:none;cursor:pointer;
  position:relative;transition:background .18s;
}
.sw::after{
  content:'';position:absolute;top:3px;left:3px;
  width:20px;height:20px;border-radius:50%;
  background:var(--paper-2);
  transition:transform .18s,background .18s;
}
.sw.on{background:rgba(255,199,44,.3)}
.sw.on::after{transform:translateX(18px);background:var(--canopy)}

/* Derived note */
.note{
  font-family:var(--mono);
  font-size:10px;line-height:1.6;
  color:var(--paper-2);
  margin-top:10px;padding:0 2px;
}
.note b{color:var(--canopy);font-weight:600}

/* ─── In-view header + kebab menu ─── */
.view-head{
  flex-shrink:0;
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px 4px;
  position:relative;
}
.view-head h2{
  font-size:19px;font-weight:700;letter-spacing:-.01em;
}
.view-head .sub{
  font-size:11.5px;color:var(--paper-2);margin-top:2px;
}
.kebab{
  flex-shrink:0;
  width:34px;height:34px;border-radius:9px;
  background:var(--ink-2);border:1px solid var(--ink-3);
  color:var(--paper-2);cursor:pointer;
  font-size:15px;line-height:1;
  display:grid;place-items:center;
}
.kebab:active{background:var(--ink-3)}
.menu{
  position:absolute;top:52px;right:18px;z-index:30;
  background:var(--ink-2);
  border:1px solid var(--ink-3);
  border-radius:13px;
  padding:5px;
  min-width:196px;
  box-shadow:0 14px 36px rgba(0,0,0,.6);
  display:none;
}
.menu.open{display:block}
.menu-item{
  width:100%;text-align:left;
  background:none;border:none;cursor:pointer;
  color:var(--paper);
  font-family:var(--sans);font-size:13.5px;font-weight:500;
  padding:10px 11px;border-radius:9px;
  display:flex;align-items:center;gap:9px;
}
.menu-item:active{background:var(--ink-3)}
.menu-item .tick{
  margin-left:auto;color:var(--canopy);font-size:12px;opacity:0;
}
.menu-item.on{color:var(--canopy)}
.menu-item.on .tick{opacity:1}
.menu-sep{height:1px;background:var(--ink-3);margin:4px 6px}
.menu-cap{
  font-family:var(--mono);font-size:8px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--paper-2);padding:7px 11px 4px;
}
.mode{display:none}
.mode.on{display:block}

/* ─── Estimate result ─── */
.est-total{
  background:var(--canopy);color:var(--ink);
  border-radius:15px;padding:16px 16px 14px;
  margin-bottom:16px;
}
.est-total .meter-cap{opacity:.62}
.est-big{
  font-family:var(--mono);font-weight:800;
  font-size:42px;line-height:1;letter-spacing:-.04em;
  margin-top:2px;
}
.est-big small{font-size:19px;font-weight:600;opacity:.55;margin-right:2px}
.est-sub{
  font-family:var(--mono);font-size:10px;font-weight:600;
  letter-spacing:.03em;margin-top:9px;
  padding-top:9px;border-top:1px solid rgba(16,14,11,.18);
  display:flex;justify-content:space-between;
}
.break{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:10px 0;border-bottom:1px dashed var(--ink-3);
  font-size:13px;
}
.break:last-child{border-bottom:none}
.break .k{color:var(--paper-2)}
.break .v{font-family:var(--mono);font-size:13px;font-weight:600}
.break.sum{border-top:1px solid var(--ink-3);border-bottom:none;margin-top:4px;padding-top:12px}
.break.sum .k{color:var(--paper);font-weight:600}
.break.sum .v{color:var(--canopy);font-weight:800;font-size:15px}

/* ─── Update toast (service worker) ─── */
.toast{
  position:fixed;
  left:50%;transform:translateX(-50%);
  top:calc(58px + env(safe-area-inset-top));
  z-index:1200;                      /* over Leaflet's panes, which reach 800 */
  display:flex;align-items:center;gap:12px;
  max-width:calc(100vw - 32px);
  padding:10px 10px 10px 15px;
  border-radius:13px;
  background:var(--ink-2);
  border:1px solid var(--ink-3);
  box-shadow:0 14px 36px rgba(0,0,0,.6);
  font-size:13px;
  animation:toast-in .28s cubic-bezier(.2,.9,.3,1);
}
.toast[hidden]{display:none}
.toast span{white-space:nowrap}
.toast button{
  flex-shrink:0;
  background:var(--canopy);color:var(--ink);
  border:none;border-radius:9px;cursor:pointer;
  font-family:var(--sans);font-size:13px;font-weight:700;
  padding:8px 13px;
}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
