:root{
  --ink:#17120E; --muted:#6B6259; --line:#E6DFD4;
  --paper:#F4F2EE; --card:#FFFFFF;
  --red:#C8102E; --red-dark:#9E0C24; --gold:#B5862B;
  --ok:#2E7D4F; --warn:#C9701B; --late:#C8102E;
  --shadow:0 1px 0 rgba(23,18,14,.04), 0 8px 24px -16px rgba(23,18,14,.35);
  --r:16px; --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;line-height:1.45}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:'Bricolage Grotesque',sans-serif;margin:0;letter-spacing:-.01em}
button{font-family:inherit;cursor:pointer}
a{color:inherit}
.wrap{max-width:560px;margin:0 auto;padding:0 16px}
.pad-b{padding-bottom:calc(96px + var(--safe-b))}

/* Header + huebånd */
header{background:var(--ink);color:#fff;padding:14px 0 0}
.hd-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.hd-top h1{font-size:21px;font-weight:800}
.hd-top h1 span{opacity:.55;font-weight:700}
.hd-sub{font-size:13px;opacity:.72}
.baand{height:7px;margin-top:12px;
  background:linear-gradient(var(--gold),var(--gold)) center/100% 1.5px no-repeat,var(--red)}

/* Connection chip */
.conn{display:inline-flex;align-items:center;gap:6px;font-size:12px;opacity:.85}
.conn .led{width:8px;height:8px;border-radius:50%;background:#9bbf9b}
.conn.off .led{background:#e0a45a}

/* Live hero */
.hero{background:var(--card);border-bottom:1px solid var(--line)}
.hero-in{padding:14px 0 16px}
.now-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:5px 12px;
  font-size:13px;font-weight:600;color:#fff}
.pill .dot{width:8px;height:8px;border-radius:50%;background:#fff;opacity:.9}
.pill.ok{background:var(--ok)} .pill.warn{background:var(--warn)} .pill.late{background:var(--late)} .pill.idle{background:#857B6E}
.hero h2{font-size:13px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-top:14px}
.cur-name{font-size:26px;font-weight:800;margin-top:2px;line-height:1.1}
.cur-sub{color:var(--muted);font-size:14px;margin-top:3px}
.next{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-top:12px;border-top:1px dashed var(--line)}
.next .lbl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.next .nm{font-weight:600;font-size:15px}
.next .t{font-size:20px;font-weight:700}

/* Stop cards */
.stop{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  margin-bottom:12px;overflow:hidden}
.stop.active{border-color:var(--red);box-shadow:0 0 0 2px rgba(200,16,46,.15),var(--shadow)}
.stop.done{opacity:.6}
.stop.mine{box-shadow:0 0 0 2px rgba(181,134,43,.45),var(--shadow)}
.stop-main{display:flex;gap:12px;padding:14px}
.num{flex:none;width:34px;height:34px;border-radius:10px;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-family:'Bricolage Grotesque';font-weight:800;font-size:16px}
.stop.done .num{background:var(--ok)} .stop.active .num{background:var(--red)}
.stop-body{flex:1;min-width:0}
.stop-name{font-weight:700;font-size:17px;line-height:1.2}
.stop-addr{color:var(--muted);font-size:13px;margin-top:2px;word-break:break-word}
.times{display:flex;gap:14px;margin-top:8px}
.times .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.times .v{font-weight:700;font-size:16px}
.times .v.shift{color:var(--warn)}
.meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chip{font-size:12px;background:#F3EEE6;color:#5A5147;border-radius:8px;padding:3px 9px;font-weight:500}
.chip.note{background:#FBF3E2;color:#7A5B16}
.chip.mine{background:var(--gold);color:#fff}

/* Buttons */
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 12px;
  font-weight:600;font-size:13px;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--red);border-color:var(--red);color:#fff}
.btn.go{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.tel{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.ghost{background:transparent}
.btn.sm{padding:6px 9px;font-size:12px}
.btn.block{width:100%;justify-content:center;padding:15px;font-size:16px;border-radius:14px}
.acts{display:flex;gap:8px;padding:0 14px 14px;flex-wrap:wrap}
.reorder{display:flex;flex-direction:column;gap:4px;justify-content:center}
.reorder button{width:30px;height:24px;border:1px solid var(--line);background:#fff;border-radius:7px;font-size:13px;line-height:1;color:var(--muted)}

/* Empty / panels */
.empty{text-align:center;padding:40px 20px;color:var(--muted)}
.empty h3{font-size:18px;color:var(--ink);margin-bottom:6px}
.codeform{display:flex;gap:8px;max-width:300px;margin:18px auto 0}
.codeform input{flex:1;min-width:0;font-family:'JetBrains Mono',ui-monospace,monospace;font-size:18px;letter-spacing:.14em;
  text-transform:uppercase;text-align:center;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#fff;color:var(--ink)}
.codeform .btn{white-space:nowrap}
main{padding-top:16px}
.section-t{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px}

/* Bottom bar */
.fab-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;
  background:linear-gradient(to top,var(--paper) 70%,transparent);padding:10px 0 calc(12px + var(--safe-b))}
.fab-row{display:flex;gap:10px}
.fab{flex:1;background:var(--red);color:#fff;border:none;border-radius:14px;padding:15px;font-weight:700;font-size:16px;box-shadow:var(--shadow)}
.fab.alt{flex:none;background:var(--ink);width:54px;font-size:20px}

/* Sheets / forms */
.sheet-bg{position:fixed;inset:0;background:rgba(23,18,14,.45);z-index:60;display:none}
.sheet-bg.on{display:block}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--card);border-radius:20px 20px 0 0;
  max-height:92vh;overflow:auto;transform:translateY(100%);transition:transform .25s ease;
  padding-bottom:calc(20px + var(--safe-b))}
.sheet.on{transform:translateY(0)}
.sheet-hd{position:sticky;top:0;background:var(--card);display:flex;align-items:center;justify-content:space-between;
  padding:16px;border-bottom:1px solid var(--line)}
.sheet-hd h3{font-size:18px}
.x{border:none;background:#F3EEE6;width:34px;height:34px;border-radius:10px;font-size:18px;color:var(--muted)}
.form{padding:16px;display:grid;gap:14px}
.fld{display:grid;gap:6px}
.fld label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.fld input,.fld textarea{font-family:inherit;font-size:16px;color:var(--ink);border:1px solid var(--line);
  border-radius:11px;padding:11px 12px;background:#fff;width:100%}
.fld textarea{resize:vertical;min-height:64px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.save{background:var(--red);color:#fff;border:none;border-radius:13px;padding:15px;font-weight:700;font-size:16px}
.del{background:transparent;color:var(--red);border:1px solid var(--line);border-radius:13px;padding:13px;font-weight:600}

/* Share / links */
.linkbox{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);margin-bottom:12px}
.linkbox h3{font-size:16px;margin-bottom:4px}
.code{font-family:'JetBrains Mono';font-size:24px;font-weight:700;letter-spacing:.12em;color:var(--red)}
.linkrow{display:flex;gap:8px;align-items:center;margin-top:10px}
.linkrow input{flex:1;font-size:13px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:#FBFAF7;color:var(--muted)}
#qr{display:grid;place-items:center;margin-top:14px}
#qr img,#qr canvas{border-radius:10px}

.hint{font-size:12px;color:var(--muted);margin-top:8px}
.toast{position:fixed;left:50%;bottom:calc(110px + var(--safe-b));transform:translateX(-50%);
  background:var(--ink);color:#fff;padding:11px 16px;border-radius:12px;font-size:14px;z-index:80;opacity:0;
  transition:opacity .2s;pointer-events:none}
.toast.on{opacity:1}

/* Pausetjek-banner */
.ck{border-radius:var(--r);padding:14px;margin-bottom:14px;border:1px solid var(--line);box-shadow:var(--shadow);background:var(--card)}
.ck.ok{border-color:#bfe0cb;background:#F2F9F4}
.ck.warn{border-color:#e8cda0;background:#FCF6EC}
.ck.bad{border-color:#edb5bd;background:#FCF0F1}
.ck-top{display:flex;gap:10px;align-items:flex-start}
.ck-dot{flex:none;width:12px;height:12px;border-radius:50%;margin-top:4px;background:var(--ok)}
.ck.warn .ck-dot{background:var(--warn)} .ck.bad .ck-dot{background:var(--late)}
.ck-h{font-family:'Bricolage Grotesque';font-weight:800;font-size:16px}
.ck-s{font-size:13px;color:var(--muted);margin-top:1px}
.ck-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.ck-list li{font-size:13px;padding:8px 10px;border-radius:9px;background:#fff;border:1px solid var(--line)}
.ck-list li.violation{border-color:#edb5bd;color:#8a1020;background:#fff6f7}
.ck-list li.warn{border-color:#e8cda0;color:#7a5417;background:#fffaf2}
.ck-foot{font-size:11px;color:var(--muted);margin-top:10px}

/* Kort (Leaflet) */
/* position+z-index giver kortet sin egen stacking-context, så Leaflets høje
   z-index-lag (kontroller op til ~1000) holdes indeni og ikke stikker op over
   bund-ark, toast m.m. */
#map{position:relative;z-index:0;height:240px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);margin-bottom:12px;background:#e8eef0}
.leaflet-container{font-family:inherit}
.mk{width:28px;height:28px;border-radius:9px;background:var(--ink);color:#fff;display:grid;place-items:center;
  font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:14px;border:2px solid #fff;box-shadow:0 1px 5px rgba(23,18,14,.45)}
.mk.active{background:var(--red)} .mk.done{background:var(--ok)} .mk.mine{background:var(--gold)}
.mk.truck{width:36px;height:36px;border-radius:50%;background:#fff;border:2px solid var(--red);font-size:19px;box-shadow:0 2px 8px rgba(200,16,46,.5)}

/* GPS-deling (vogn) */
.gps-bar{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);padding:10px 12px;margin-bottom:12px}
.gps-bar .gps-txt{flex:1;min-width:0;font-size:13px;color:var(--muted);line-height:1.3}
.gps-bar .gps-txt b{color:var(--ink);font-weight:700}
.gps-dot{flex:none;width:10px;height:10px;border-radius:50%;background:#c9701b;box-shadow:0 0 0 3px rgba(201,112,27,.18)}
.gps-bar.on .gps-dot{background:var(--ok);box-shadow:0 0 0 3px rgba(46,125,79,.18);animation:gpspulse 1.6s infinite}
@keyframes gpspulse{0%,100%{opacity:1}50%{opacity:.45}}

/* Auto-ankomst kontakt */
.autochk{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--muted);margin:-2px 2px 12px;line-height:1.35;cursor:pointer}
.autochk input{margin:2px 0 0;flex:none;width:18px;height:18px;accent-color:var(--red)}
.autochk b{color:var(--ink)}

/* Holdetid-nedtælling (vogn-hero) */
.hold{margin-top:12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:12px;border-top:1px dashed var(--line)}
.hold-lbl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.hold-time{font-size:32px;font-weight:800;line-height:1;color:var(--ink)}
.hold.over .hold-time,.hold.over .hold-lbl{color:var(--late)}
.hold-sub{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;line-height:1.3}

/* Adresse-autofuldførelse (DAWA) */
.ac{position:relative}
.ac-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:5;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 30px -10px rgba(23,18,14,.4);overflow:hidden;max-height:240px;overflow-y:auto;display:none}
.ac-list.on{display:block}
.ac-item{padding:11px 13px;font-size:14px;border-bottom:1px solid var(--line);cursor:pointer}
.ac-item:last-child{border-bottom:none}
.ac-item:hover,.ac-item.sel{background:#F3EEE6}
.ac-empty{padding:11px 13px;font-size:13px;color:var(--muted)}

/* In-app turn-by-turn navigation (vogn) — fuldskærms-overlay over alt */
.nav{position:fixed;inset:0;z-index:200;background:var(--paper);display:flex;flex-direction:column}
.nav-banner{background:var(--ink);color:#fff;padding:calc(14px + env(safe-area-inset-top,0px)) 16px 14px}
.nav-maneuver{display:flex;align-items:center;gap:14px}
.nav-arrow{flex:none;font-size:30px;line-height:1;width:40px;text-align:center}
.nav-dist{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:30px;line-height:1;white-space:nowrap}
.nav-instr{font-size:17px;font-weight:600;line-height:1.25}
.nav-then{margin-top:8px;font-size:13px;color:#cfc6ba;border-top:1px solid rgba(255,255,255,.12);padding-top:8px}
.nav-then.warn{color:#f0b9a0}
.nav-map{position:relative;z-index:0;flex:1;min-height:0}
.nav-foot{display:flex;align-items:center;gap:12px;padding:12px 14px calc(12px + var(--safe-b));background:var(--card);border-top:1px solid var(--line)}
.nav-info{flex:1;font-size:13px;color:var(--muted);line-height:1.3}
.nav-info b{color:var(--ink)}
.nav-foot .btn{padding:12px 18px}

@media (max-width:380px){ .cur-name{font-size:23px} .nav-dist{font-size:26px} }
@media (prefers-reduced-motion:reduce){ .sheet{transition:none} .btn:active{transform:none} .gps-bar.on .gps-dot{animation:none} }
