/* ===== Fundl — iOS-optimiertes App-Stylesheet ===== */
:root{
  --bg:#FBFBFD; --bg-2:#FFFFFF; --surface:#FFFFFF; --surface-2:#F2F2F5; --surface-3:#E9E9EE;
  --line:#E4E4E9; --line-2:#D5D5DB;
  --text:#141416; --text-2:#63636B; --text-3:#96969E;
  --accent:#B4720F; --accent-fill:#EF9E2C; --accent-ink:#241606; --accent-soft:#FBEBCF;
  --good:#1C8C4B; --warn:#B4791A;
  --c-food:#C24A2E; --c-culture:#7A4BC4; --c-nature:#2E8B57; --c-night:#4257C4; --c-market:#C08A1E; --c-music:#0E7C86; --c-wellness:#2A94A6;
  --glass:rgba(255,255,255,.66); --glass-brd:rgba(255,255,255,.7); --blur:saturate(180%) blur(20px);
  --shadow:0 1px 2px rgba(0,0,0,.05),0 8px 26px rgba(0,0,0,.07);
  --shadow-lg:0 6px 20px rgba(0,0,0,.12),0 30px 60px rgba(0,0,0,.16);
  --sa-top:env(safe-area-inset-top); --sa-bot:env(safe-area-inset-bottom);
  --sa-left:env(safe-area-inset-left); --sa-right:env(safe-area-inset-right);
  --sf:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --rounded:ui-rounded,"SF Pro Rounded",-apple-system,system-ui,sans-serif;
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0E1014; --bg-2:#141519; --surface:#191B20; --surface-2:#22242B; --surface-3:#2C2F37;
    --line:#2A2D34; --line-2:#3B3F48;
    --text:#F3F3F6; --text-2:#A2A3AC; --text-3:#6C6E78;
    --accent:#FFC061; --accent-fill:#F3A536; --accent-ink:#231705; --accent-soft:#2A2011;
    --good:#5FD08A; --warn:#E0AC48;
    --c-food:#E0715A; --c-culture:#B18BF0; --c-nature:#5FC98A; --c-night:#7C8CF0; --c-market:#E3B24A; --c-music:#3FB6C0; --c-wellness:#4FC2D4;
    --glass:rgba(24,26,31,.6); --glass-brd:rgba(255,255,255,.1);
    --shadow:0 1px 2px rgba(0,0,0,.5),0 10px 30px rgba(0,0,0,.4);
    --shadow-lg:0 6px 20px rgba(0,0,0,.55),0 34px 70px rgba(0,0,0,.6);
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--text); font-family:var(--sf);
  font-size:17px; line-height:1.45; letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; text-rendering:optimizeLegibility;
  -webkit-tap-highlight-color:transparent; overscroll-behavior-y:none;
}
button{font-family:inherit;cursor:pointer;-webkit-touch-callout:none;touch-action:manipulation}
img{max-width:100%}
:where(button,a,.tap){touch-action:manipulation}
::selection{background:var(--accent-fill);color:var(--accent-ink)}

.app{min-height:100vh;min-height:100svh;min-height:100dvh;display:flex;flex-direction:column;max-width:520px;margin:0 auto;position:relative}

/* ---------- Header / Kontextzeile ---------- */
.appbar{position:sticky;top:0;z-index:30;background:var(--glass);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border-bottom:1px solid var(--line);padding:calc(var(--sa-top) + 10px) calc(16px + var(--sa-right)) 10px calc(16px + var(--sa-left))}
.appbar .row1{display:flex;align-items:center;gap:10px}
.brandmark{width:28px;height:28px;border-radius:8px;flex:0 0 auto;background-size:cover;box-shadow:var(--shadow)}
.title{font-size:26px;font-weight:700;letter-spacing:-.03em;line-height:1}
.title .sub{display:block;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--text-2);margin-top:3px;font-family:var(--rounded)}
.appbar .spacer{flex:1}
.iconbtn{width:36px;height:36px;border-radius:50%;border:1px solid var(--line-2);background:var(--surface);color:var(--text);display:grid;place-items:center}
.iconbtn svg{width:19px;height:19px}
.ctxbar{margin-top:12px;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.ctxbar::-webkit-scrollbar{display:none}
.ctxchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;font-family:var(--rounded);font-size:13px;font-weight:560;
  color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:7px 12px}
.ctxchip svg{width:15px;height:15px;color:var(--text-2)}
.ctxchip[data-active="1"]{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,var(--line))}
.ctxchip[data-active="1"] svg{color:var(--accent)}

/* ---------- Feed ---------- */
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:auto;padding:14px 14px calc(96px + var(--sa-bot));scroll-behavior:smooth}
.sectlabel{font-size:13px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);margin:16px 4px 10px;display:flex;align-items:center;gap:8px}
.sectlabel:first-child{margin-top:2px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px;
  transform:translateZ(0);transition:transform .18s ease}
.card:active{transform:scale(.985)}
.card .photo{height:150px;position:relative}
.photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(0,0,0,.58))}
.photo .ov{position:absolute;z-index:2;color:#fff}
.photo .cat{top:11px;left:12px;display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;opacity:.95}
.photo .cat svg{width:14px;height:14px}
.photo .cat.hit{color:#FFD79A}
.photo .status{top:11px;right:11px;font-family:var(--rounded);font-size:10.5px;font-weight:600;background:rgba(0,0,0,.42);backdrop-filter:blur(6px);border-radius:8px;padding:3px 8px}
.photo .ttl{left:12px;right:12px;bottom:10px;font-size:19px;font-weight:680;letter-spacing:-.02em;line-height:1.14}
.card .body{padding:10px 13px 13px}
.meta{display:flex;align-items:center;gap:13px;font-family:var(--rounded);font-size:12.5px;color:var(--text-2);margin-bottom:10px}
.meta span{display:inline-flex;align-items:center;gap:4px}
.meta b{color:var(--text);font-weight:640}
.meta svg{width:14px;height:14px;color:var(--text-3)}
.cardactions{display:flex;align-items:center;gap:8px}
.why{flex:1;display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text);background:var(--glass);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--glass-brd);border-radius:999px;padding:8px 12px;text-align:left;line-height:1.25}
.why svg{width:15px;height:15px;color:var(--accent-fill);flex:0 0 auto}
.why b{color:var(--accent);font-weight:600}
.savebtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line-2);background:var(--surface-2);color:var(--text-2);display:grid;place-items:center;flex:0 0 auto}
.savebtn svg{width:19px;height:19px}
.savebtn[data-on="1"]{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 34%,var(--line));background:var(--accent-soft)}
.endcard{text-align:center;padding:26px 20px 8px;color:var(--text-2)}
.endcard .big{font-size:19px;font-weight:640;color:var(--text);letter-spacing:-.02em;margin-bottom:4px}
.endcard .sm{font-size:14px}

/* category photo gradients (Platzhalter statt Fotos) */
.g-nature{background:radial-gradient(120% 120% at 76% 18%,#8fd6a6,transparent 55%),linear-gradient(150deg,#1f4a33,#243b2a)}
.g-music{background:radial-gradient(120% 120% at 22% 20%,#5fd3dc,transparent 55%),linear-gradient(150deg,#123f45,#2a1f3a)}
.g-night{background:radial-gradient(120% 120% at 24% 22%,#8b98f2,transparent 55%),linear-gradient(150deg,#20233f,#38202e)}
.g-culture{background:radial-gradient(120% 120% at 30% 20%,#c3a3ef,transparent 55%),linear-gradient(150deg,#3a2359,#241436)}
.g-food{background:radial-gradient(120% 120% at 78% 20%,#f2b98a,transparent 55%),linear-gradient(150deg,#7c3a22,#3a2417)}
.g-market{background:radial-gradient(120% 120% at 72% 78%,#eccb7a,transparent 55%),linear-gradient(150deg,#6a5320,#3a2c14)}
.g-wellness{background:radial-gradient(120% 120% at 70% 30%,#8fd9e0,transparent 55%),linear-gradient(150deg,#184a52,#20343a)}

/* ---------- Tab bar ---------- */
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(10px + var(--sa-bot));width:min(360px,calc(100% - 24px));z-index:40;
  height:60px;border-radius:30px;background:var(--glass);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--glass-brd);box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:space-around;padding:0 6px}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:0;background:none;color:var(--text-3);padding:8px 0;font-size:10px;font-weight:600;letter-spacing:.01em}
.tab svg{width:24px;height:24px}
.tab[data-on="1"]{color:var(--accent)}

/* ---------- Sheets / modal ---------- */
.sheet{position:fixed;inset:0;z-index:60;display:none}
.sheet[data-open="1"]{display:block}
.sheet .scrim{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .28s}
.sheet[data-open="1"] .scrim{opacity:1}
.sheet .panel{position:absolute;left:0;right:0;bottom:0;max-height:92dvh;overflow-y:auto;background:var(--bg-2);
  border-radius:26px 26px 0 0;padding:8px 18px calc(28px + var(--sa-bot));transform:translateY(100%);transition:transform .32s cubic-bezier(.3,.9,.3,1);
  max-width:520px;margin:0 auto;box-shadow:var(--shadow-lg)}
.sheet[data-open="1"] .panel{transform:translateY(0)}
.grabber{width:38px;height:5px;border-radius:5px;background:var(--line-2);margin:8px auto 12px}
@media (prefers-reduced-motion:reduce){.sheet .panel,.sheet .scrim{transition:none}}

.detail .hero{height:190px;border-radius:20px;position:relative;overflow:hidden;margin-bottom:14px}
.detail .hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.5))}
.detail .hero .ttl{position:absolute;left:14px;right:14px;bottom:12px;z-index:2;color:#fff;font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.detail h3{font-size:14px;font-weight:640;letter-spacing:-.01em;margin:18px 0 8px}
.detail p{color:var(--text-2);font-size:15px;margin:0 0 10px}
.reasons{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-direction:column;gap:8px}
.reasons li{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text)}
.reasons .bar{flex:1;height:6px;border-radius:6px;background:var(--surface-3);overflow:hidden}
.reasons .bar i{display:block;height:100%;background:var(--accent-fill);border-radius:6px}
.reasons .lab{width:120px;flex:0 0 auto;color:var(--text-2);font-size:13px}
.reasons .val{width:34px;text-align:right;font-family:var(--rounded);font-size:12px;color:var(--text-2)}
.detailbtns{display:flex;gap:10px;margin-top:18px}
.btn{flex:1;border:1px solid var(--line-2);background:var(--surface);color:var(--text);border-radius:14px;padding:13px;font-size:15px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px}
.btn svg{width:18px;height:18px}
.btn.primary{background:var(--accent-fill);color:var(--accent-ink);border-color:transparent}
.feedback{display:flex;gap:8px;margin-top:10px}
.feedback .btn{font-size:14px;padding:11px}

/* ---------- Onboarding ---------- */
.onb{position:fixed;inset:0;z-index:80;background:var(--bg);display:none;flex-direction:column;
  padding:calc(var(--sa-top) + 30px) 22px calc(22px + var(--sa-bot))}
.onb[data-open="1"]{display:flex}
.onb .big{font-size:30px;font-weight:700;letter-spacing:-.03em;line-height:1.08;margin:6px 0 6px;text-wrap:balance}
.onb .lead{font-size:16px;color:var(--text-2);margin:0 0 20px;max-width:34ch}
.vibes{flex:1;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:start}
.vibe{border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:16px;text-align:left;min-height:96px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;color:var(--text)}
.vibe .em{position:absolute;inset:0;opacity:.9}
.vibe .lb{position:relative;font-weight:660;font-size:15px;letter-spacing:-.01em;z-index:2;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.vibe[data-on="1"]{border-color:var(--accent-fill);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-fill) 30%,transparent)}
.vibe[data-on="1"]::after{content:"✓";position:absolute;top:9px;right:11px;z-index:3;color:#fff;font-weight:800;font-size:15px}
.onb .cta{margin-top:16px;border:0;background:var(--accent-fill);color:var(--accent-ink);border-radius:16px;padding:16px;font-size:16px;font-weight:680;letter-spacing:-.01em}
.onb .cta[disabled]{opacity:.4}
.onb .skip{background:none;border:0;color:var(--text-2);font-size:14px;padding:12px;font-weight:560}

/* ---------- Karte / Geplant / Profil ---------- */
.view{display:none}
.view[data-on="1"]{display:block}
.mapwrap{position:relative;border-radius:20px;overflow:hidden;height:300px;border:1px solid var(--line);margin-bottom:14px;
  background:linear-gradient(135deg,#cfe0d2,#dfe7ef)}
@media (prefers-color-scheme:dark){.mapwrap{background:linear-gradient(135deg,#1a2a24,#1b2330)}}
.mapwrap .grid{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:34px 34px;opacity:.5}
.mapwrap .river{position:absolute;inset:0}
.pin{position:absolute;transform:translate(-50%,-100%);z-index:3;display:flex;flex-direction:column;align-items:center;color:var(--accent)}
.pin .dot{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(45deg);background:var(--accent-fill);border:2px solid #fff;box-shadow:var(--shadow)}
.pin .dot svg{transform:rotate(-45deg);width:13px;height:13px;color:var(--accent-ink);margin:4px}
.pin .me .dot{background:var(--c-night)}
.chiprow{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.tagchip{font-size:13px;font-family:var(--rounded);color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:7px 12px;display:inline-flex;align-items:center;gap:7px}
.tagchip .x{color:var(--text-3);font-weight:700}
.tagchip .conf{width:52px;height:5px;border-radius:5px;background:var(--surface-3);overflow:hidden}
.tagchip .conf i{display:block;height:100%;background:var(--accent-fill)}
.empty{text-align:center;color:var(--text-2);padding:40px 20px}
.empty svg{width:40px;height:40px;color:var(--text-3);margin-bottom:10px}
.profcard{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:12px;box-shadow:var(--shadow)}
.profcard h4{margin:0 0 4px;font-size:16px;font-weight:640}
.profcard p{margin:0;color:var(--text-2);font-size:14px}
.linkbtn{background:none;border:0;color:var(--accent);font-weight:600;font-size:15px;padding:8px 0}

/* install hint */
.installhint{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(80px + var(--sa-bot));z-index:45;
  width:min(420px,calc(100% - 24px));background:var(--surface);border:1px solid var(--line-2);border-radius:16px;
  padding:12px 14px;box-shadow:var(--shadow-lg);display:none;align-items:center;gap:10px;font-size:13.5px;color:var(--text)}
.installhint[data-open="1"]{display:flex}
.installhint svg{width:22px;height:22px;color:var(--accent);flex:0 0 auto}
.installhint .cl{margin-left:auto;color:var(--text-3);font-weight:700;padding:4px 6px;background:none;border:0;font-size:16px}

@media (hover:hover) and (pointer:fine){
  .card:hover{transform:translateY(-2px)}
  .vibe:hover,.tab:hover{opacity:.92}
}
