:root{
  --bg:#0B1B27; --surface:#12303F; --surface2:#173B4D; --raised:#1E465A;
  --line:#28556B; --text:#EAF3F6; --muted:#86A4B3;
  --aurora:#4FE0C4; --aurora2:#7E8DF2; --coral:#F2795F; --birch:#D8C39E; --good:#56D49C;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased; line-height:1.45;
  overscroll-behavior-y:none;
}
.hidden{display:none !important}
button{font-family:inherit; cursor:pointer}
input,select,textarea{font-family:inherit; font-size:16px} /* 16px = kein iOS-Zoom */
a{color:var(--aurora)}

/* ---------- Buttons / Felder ---------- */
.btn{border:1px solid var(--line); background:transparent; color:var(--text);
  border-radius:12px; padding:12px 16px; font-weight:700; font-size:15px; width:100%;
  transition:opacity .15s}
.btn:active{opacity:.7}
.btn-primary{background:var(--aurora); color:#08221C; border-color:var(--aurora)}
.btn-coral{background:var(--coral); color:#2A0D08; border-color:var(--coral)}
.btn-sm{width:auto; padding:8px 12px; font-size:13px; border-radius:10px}
.btn-ghost{background:transparent}
.field{display:flex; flex-direction:column; gap:6px; margin-bottom:14px}
.field>span{font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:700}
.field input,.field select,.field textarea,.inp{
  background:var(--bg); border:1px solid var(--line); color:var(--text);
  border-radius:10px; padding:11px 12px; outline:none; width:100%}
.field textarea{resize:vertical; min-height:64px}
input:focus,select:focus,textarea:focus{border-color:var(--aurora)}
::placeholder{color:var(--muted); opacity:.7}
.error{color:var(--coral); font-size:13px; margin:4px 0 0}

/* ---------- Login ---------- */
.login{position:relative; min-height:100dvh; display:grid; place-items:start center; overflow:hidden;
  padding:calc(var(--safe-t) + 8dvh) 20px 40px}
.aurora{position:absolute; inset:-20% -20% auto -20%; height:50dvh; filter:blur(60px); z-index:0;
  background:
    radial-gradient(50% 70% at 35% 45%, rgba(79,224,196,.45), transparent 60%),
    radial-gradient(45% 60% at 70% 35%, rgba(126,141,242,.40), transparent 60%);
  animation:auroraShift 16s ease-in-out infinite}
@keyframes auroraShift{0%{transform:translateX(-6%) scaleY(1)}50%{transform:translateX(6%) scaleY(1.12)}100%{transform:translateX(-6%) scaleY(1)}}
@media (prefers-reduced-motion: reduce){.aurora{animation:none}}
.login-inner{position:relative; z-index:1; width:100%; max-width:420px; text-align:center}
.eyebrow{display:inline-block; font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--aurora); border:1px solid var(--line); background:var(--surface2);
  padding:6px 14px; border-radius:999px; margin-bottom:22px}
.countdown{display:flex; justify-content:center; gap:10px; margin-bottom:6px}
.cd-block{background:var(--surface); border:1px solid var(--line); border-radius:16px;
  padding:12px 6px; min-width:70px}
.cd-block span{display:block; font-size:34px; font-weight:800; line-height:1; color:var(--aurora);
  font-variant-numeric:tabular-nums}
.cd-block label{display:block; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); margin-top:6px}
.cd-caption{color:var(--muted); font-size:13px; margin:0 0 30px}
.login-card{background:var(--surface); border:1px solid var(--line); border-radius:20px;
  padding:22px; text-align:left}

/* ---------- App-Layout ---------- */
.app{min-height:100dvh; display:flex; flex-direction:column}
.topbar{position:sticky; top:0; z-index:30; display:flex; align-items:center; gap:10px;
  padding:calc(var(--safe-t) + 12px) 16px 12px;
  background:rgba(11,27,39,.9); backdrop-filter:blur(10px); border-bottom:1px solid var(--line)}
.brand{font-weight:800; font-size:18px; margin-right:auto}
.mini-cd{font-size:12px; font-weight:700; color:var(--aurora); background:var(--surface2);
  border:1px solid var(--line); border-radius:999px; padding:5px 10px; font-variant-numeric:tabular-nums}
.icon-btn{background:transparent; border:1px solid var(--line); color:var(--text);
  width:38px; height:38px; border-radius:10px; font-size:18px; line-height:1}
.icon-btn:active{opacity:.6}
.main{flex:1; padding:16px 16px calc(92px + var(--safe-b)); max-width:760px; width:100%; margin:0 auto}

/* ---------- Tabbar ---------- */
.tabbar{position:fixed; bottom:0; left:0; right:0; z-index:30; display:flex;
  background:rgba(11,27,39,.92); backdrop-filter:blur(12px); border-top:1px solid var(--line);
  padding-bottom:var(--safe-b)}
.tab{flex:1; background:none; border:none; color:var(--muted); padding:9px 2px 8px;
  display:flex; flex-direction:column; align-items:center; gap:3px; font-size:11px; font-weight:600}
.tab .ti{font-size:20px; line-height:1; filter:grayscale(.4) opacity(.7)}
.tab.active{color:var(--aurora)}
.tab.active .ti{filter:none}

/* ---------- Karten / Listen ---------- */
.card{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:16px; margin-bottom:14px}
.card.tight{padding:8px}
.section-head{display:flex; align-items:center; gap:10px; margin-bottom:14px}
.section-head h2{font-size:18px; margin:0}
.section-head p{font-size:12px; color:var(--muted); margin:2px 0 0}
.dot{width:36px; height:36px; border-radius:11px; display:grid; place-items:center;
  background:var(--surface2); border:1px solid var(--line); font-size:18px}
.empty{border:1px dashed var(--line); border-radius:14px; padding:26px 16px; text-align:center; color:var(--muted); font-size:14px}
.row{display:flex; align-items:center; gap:12px}
.grow{flex:1; min-width:0}
.muted{color:var(--muted)}
.small{font-size:13px}
.tag{display:inline-block; font-size:11px; padding:2px 8px; border-radius:6px; background:var(--surface2); color:var(--birch)}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.title-strong{font-weight:700}
.del{background:none; border:none; color:var(--coral); font-size:18px; padding:4px 6px}
.iconbtn-line{background:none; border:1px solid var(--line); color:var(--muted); border-radius:8px; padding:5px 8px; font-size:14px}
.list-item{display:flex; align-items:center; gap:12px; padding:11px 10px; border-bottom:1px solid var(--surface2)}
.list-item:last-child{border-bottom:none}
.check{width:22px; height:22px; border-radius:7px; border:1px solid var(--line); background:transparent;
  display:grid; place-items:center; color:#06231A; font-size:14px; flex:none}
.check.on{background:var(--good); border-color:var(--good)}
.strike{text-decoration:line-through; color:var(--muted)}
.chip{border:1px solid var(--line); background:transparent; color:var(--muted); border-radius:9px;
  padding:6px 11px; font-size:13px; font-weight:600}
.chip.on{background:var(--aurora); color:#08221C; border-color:var(--aurora)}
.chip.coral.on{background:var(--coral); color:#2A0D08; border-color:var(--coral)}
.chips{display:flex; flex-wrap:wrap; gap:8px}
.cat-head{font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--aurora);
  font-weight:700; margin:18px 0 6px}
.date-badge{text-align:center; width:46px; flex:none}
.date-badge .d{font-size:20px; font-weight:800; color:var(--aurora); line-height:1}
.date-badge .m{font-size:11px; color:var(--muted)}

/* ---------- Kasse ---------- */
.balance-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:14px}
.bal{background:var(--bg); border:1px solid var(--line); border-radius:12px; text-align:center; padding:8px 4px}
.bal .n{font-size:12px; color:var(--muted)}
.bal .v{font-size:15px; font-weight:800; font-variant-numeric:tabular-nums}
.settle-row{display:flex; align-items:center; gap:10px; background:var(--bg); border:1px solid var(--line);
  border-radius:12px; padding:11px 12px; margin-bottom:8px}
.settle-row .amt{margin-left:auto; font-weight:800; color:var(--coral); font-variant-numeric:tabular-nums}
.gradient{background:linear-gradient(135deg,var(--surface2),var(--surface))}

/* ---------- Map ---------- */
#map{height:300px; border-radius:14px; overflow:hidden; border:1px solid var(--line); margin-bottom:14px; z-index:0}
.search-results{border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-top:6px}
.search-results button{display:block; width:100%; text-align:left; background:var(--bg); border:none;
  border-bottom:1px solid var(--surface2); color:var(--text); padding:10px 12px; font-size:14px}
.search-results button:active{background:var(--surface2)}
.route-pills{display:flex; gap:8px; overflow-x:auto; padding-bottom:6px; margin-bottom:6px}
.route-pill{flex:none; border:1px solid var(--line); background:var(--surface); color:var(--muted);
  border-radius:999px; padding:7px 14px; font-size:13px; font-weight:600; white-space:nowrap}
.route-pill.on{background:var(--aurora); color:#08221C; border-color:var(--aurora)}
.stop-num{width:26px; height:26px; border-radius:50%; background:var(--surface2); border:1px solid var(--line);
  color:var(--aurora); font-weight:800; font-size:13px; display:grid; place-items:center; flex:none}
.toast{position:fixed; left:50%; bottom:calc(100px + var(--safe-b)); transform:translateX(-50%);
  background:var(--raised); border:1px solid var(--line); color:var(--text); padding:10px 16px;
  border-radius:999px; font-size:14px; z-index:50; box-shadow:0 6px 20px rgba(0,0,0,.4)}
.modal-back{position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:60; display:grid; place-items:center; padding:20px}
.modal{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:20px; width:100%; max-width:420px}
.modal h3{margin:0 0 14px}
.modal-actions{display:flex; gap:10px; margin-top:6px}
.modal-actions .btn{flex:1}

/* ---------- Ladesäulen ---------- */
.charge-bar{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:12px}
.charger-pin{width:26px; height:26px; border-radius:50%; display:grid; place-items:center;
  font-size:14px; background:#3A6072; color:#EAF3F6; border:2px solid #EAF3F6;
  box-shadow:0 1px 4px rgba(0,0,0,.45)}
.charger-pin.fast{background:var(--aurora); color:#08221C; border-color:#08221C}
.leaflet-popup-content{font-size:13px; line-height:1.4}

/* ---------- Routen-Statistik & Etappen ---------- */
.route-stats{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:12px; min-height:2px}
.rs-chip{display:inline-flex; align-items:center; gap:5px; font-size:13px; font-weight:700;
  background:var(--surface2); border:1px solid var(--line); color:var(--text);
  border-radius:999px; padding:5px 12px; font-variant-numeric:tabular-nums}
.leg{padding:3px 0 3px 38px}
.leg:empty{display:none}
.leg-text{display:inline-block; font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums}

/* ---------- Fotos ---------- */
.photo-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:6px}
.photo-cell{padding:0; border:none; background:var(--surface2); aspect-ratio:1;
  border-radius:10px; overflow:hidden; cursor:pointer}
.photo-cell img{width:100%; height:100%; object-fit:cover; display:block}
.ph-progress{margin-top:12px; display:flex; align-items:center; gap:10px}
.ph-progress .bar{flex:1; height:8px; background:var(--surface2); border-radius:999px; overflow:hidden}
.ph-progress .bar>div{height:100%; width:0; background:var(--aurora); transition:width .2s}
.lightbox{position:fixed; inset:0; z-index:80; background:rgba(5,12,18,.95);
  display:flex; align-items:center; justify-content:center}
.lightbox img{max-width:100%; max-height:82vh; object-fit:contain}
.lb-close{position:absolute; top:calc(var(--safe-t) + 10px); right:14px; z-index:2;
  background:rgba(0,0,0,.4); border:none; color:#fff; font-size:22px; width:40px; height:40px; border-radius:50%}
.lb-nav{position:absolute; top:50%; transform:translateY(-50%); z-index:2;
  background:rgba(0,0,0,.4); border:none; color:#fff; font-size:32px; width:46px; height:70px; border-radius:10px}
.lb-prev{left:6px} .lb-next{right:6px}
.lb-bar{position:absolute; bottom:0; left:0; right:0; display:flex; align-items:center; gap:12px;
  padding:14px 16px calc(14px + var(--safe-b)); background:linear-gradient(transparent, rgba(0,0,0,.65))}
.lb-bar .iconbtn-line, .lb-bar a.iconbtn-line{color:#fff; text-decoration:none; border-color:rgba(255,255,255,.4)}
.lb-bar .small{color:#fff} .lb-bar .muted{color:rgba(255,255,255,.7)}

/* ---------- Dashboard ---------- */
.dash-eyebrow{font-size:12px; letter-spacing:.06em; color:var(--aurora); margin:0 0 4px; font-weight:700}
.dash-title{font-size:24px; margin:0 0 12px}
.dash-count{font-size:14px; color:var(--muted)}
.dash-count span{font-size:30px; font-weight:800; color:var(--aurora); display:inline-block; margin-right:6px; vertical-align:-2px}
.dash-grid{display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; margin-bottom:14px}
.stat{display:flex; flex-direction:column; align-items:flex-start; gap:2px; text-align:left;
  background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:14px 12px; cursor:pointer}
.stat:active{opacity:.7}
.stat-ic{font-size:20px}
.stat-v{font-size:18px; font-weight:800; color:var(--text); font-variant-numeric:tabular-nums}
.stat-l{font-size:11px; color:var(--muted)}

/* ---------- „Mehr"-Sheet ---------- */
.sheet-back{position:fixed; inset:0; z-index:60; background:rgba(0,0,0,.5);
  display:flex; align-items:flex-end; animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.sheet{width:100%; background:var(--surface); border-top:1px solid var(--line);
  border-radius:22px 22px 0 0; padding:10px 16px calc(22px + var(--safe-b)); animation:slideUp .2s ease}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-grip{width:40px; height:4px; border-radius:2px; background:var(--line); margin:4px auto 16px}
.sheet-grid{display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px}
.sheet-item{display:flex; flex-direction:column; align-items:center; gap:6px; background:var(--surface2);
  border:1px solid var(--line); border-radius:16px; padding:16px 8px; color:var(--text); font-size:13px; font-weight:600}
.sheet-item:active{opacity:.7}
.sheet-item .si{font-size:24px}

/* ---------- Wetter ---------- */
.wx-now{display:flex; align-items:center; gap:12px}
.wx-emo-big{font-size:38px; line-height:1}
.wx-loc{font-weight:700}
.wx-temp{font-size:30px; font-weight:800; font-variant-numeric:tabular-nums}
.wx-days{display:flex; gap:8px; overflow-x:auto; margin-top:14px; padding-bottom:2px}
.wx-day{flex:none; min-width:62px; display:flex; flex-direction:column; align-items:center; gap:3px;
  background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:9px 6px}
.wx-dow{font-size:11px; color:var(--muted); text-transform:capitalize}
.wx-day .wx-emo{font-size:20px}
.wx-max{font-weight:800; font-variant-numeric:tabular-nums}
.wx-min{font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums}
.wx-pop{font-size:10px; color:var(--aurora)}

/* ---------- Fjord-Duell ---------- */
.lobby-players{display:flex; flex-wrap:wrap; gap:8px}
.lb-rank{width:24px; text-align:center; font-weight:800}
.game-hud{display:flex; flex-direction:column; gap:10px}
.game-timer{align-self:center; font-size:22px; font-weight:800; color:var(--aurora); font-variant-numeric:tabular-nums}
.game-bars{display:flex; flex-direction:column; gap:8px}
.gb-row{display:flex; align-items:center; gap:8px}
.gb-row.me .gb-name{color:var(--aurora)}
.gb-name{width:74px; font-size:13px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.gb-track{flex:1; height:14px; background:var(--surface2); border-radius:999px; overflow:hidden}
.gb-fill{display:block; height:100%; background:var(--aurora); border-radius:999px; transition:width .25s ease}
.gb-row.me .gb-fill{background:var(--coral)}
.gb-score{width:42px; text-align:right; font-weight:800; font-variant-numeric:tabular-nums}
.play-area{position:relative; height:62vh; min-height:340px; margin-top:14px; border-radius:18px;
  background:radial-gradient(120% 90% at 50% 0%, var(--surface2), var(--bg)); border:1px solid var(--line);
  overflow:hidden; touch-action:manipulation; user-select:none}
.target{position:absolute; transform:translate(-50%,-50%); width:58px; height:58px; border:none;
  background:rgba(255,255,255,.06); border-radius:50%; font-size:34px; line-height:1; padding:0;
  display:grid; place-items:center; cursor:pointer; animation:pop .12s ease}
.target.troll{box-shadow:0 0 0 2px rgba(79,224,196,.5)}
.target.decoy{box-shadow:0 0 0 2px rgba(242,121,95,.5)}
.target.hit{background:rgba(86,212,160,.5)}
.target.miss{background:rgba(242,121,95,.5)}
@keyframes pop{from{transform:translate(-50%,-50%) scale(.3)}to{transform:translate(-50%,-50%) scale(1)}}
.cd-ov{position:absolute; inset:0; display:grid; place-items:center; background:rgba(11,27,39,.6); z-index:2}
.cd-ov span{font-size:72px; font-weight:900; color:var(--aurora)}
.cd-done{position:absolute; inset:0; display:grid; place-items:center; text-align:center; font-size:22px; font-weight:800}
.results .res-row{display:flex; align-items:center; gap:10px; padding:10px 4px; border-bottom:1px solid var(--surface2)}
.results .res-row:last-child{border-bottom:none}
.results .res-row.me{color:var(--aurora)}
.res-medal{width:28px; text-align:center; font-size:18px}

/* ---------- Flüge ---------- */
.fl-badge{font-size:11px; font-weight:800; padding:4px 10px; border-radius:999px; white-space:nowrap}
.fl-route{display:grid; grid-template-columns:1fr auto 1fr; align-items:start; gap:8px}
.fl-end .fl-code{font-size:26px; font-weight:900; letter-spacing:.02em}
.fl-arr{text-align:right}
.fl-arrow{align-self:center; color:var(--aurora); font-size:20px; transform:translateY(-6px)}
.fl-time{font-weight:700; margin-top:4px; font-variant-numeric:tabular-nums}
.fl-hr{border:none; border-top:1px solid var(--surface2); margin:14px 0}
.flight .strike{text-decoration:line-through}

/* ---------- Flug auf dem Dashboard ---------- */
.dash-flight-card{cursor:pointer}
.dash-flight-card:active{opacity:.7}

/* ---------- Wanderwege ---------- */
#hk-map{height:300px; border-radius:14px; overflow:hidden; border:1px solid var(--line); z-index:0}
.hk-item{display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:11px 12px; margin-bottom:8px; color:inherit}
.hk-item:active{opacity:.7}

/* ---------- Wander-Detailinfos ---------- */
.hk-details{margin-top:12px; border-top:1px solid var(--surface2); padding-top:10px}
.hk-row{display:flex; gap:10px; padding:5px 0; align-items:baseline}
.hk-k{width:104px; flex:none; color:var(--birch); font-size:13px}
.hk-v{flex:1; font-size:14px; font-weight:600}
.hk-dot{display:inline-block; width:12px; height:12px; border-radius:50%; margin-right:6px; vertical-align:-1px; border:1px solid rgba(255,255,255,.25)}
.hk-desc{margin-top:8px; font-size:14px; color:var(--text); line-height:1.45}
.hk-links{display:flex; gap:14px; margin-top:10px}
.hk-links a{color:var(--aurora); font-weight:700; font-size:14px; text-decoration:none}
.hk-profile{margin-top:10px}
.hk-profile svg{display:block; background:var(--bg); border:1px solid var(--line); border-radius:10px}
.hk-profile-lbl{display:flex; justify-content:space-between; font-size:11px; color:var(--birch); margin-top:4px}
