/* ==========================================================================
   Dreamlight Helfer — Gestaltung nach design/prototype.html
   Vollbild-PWA statt Handy-Rahmen. Keine externen Ressourcen.
   ========================================================================== */

:root{
  --font-serif: ui-serif, "New York", "Iowan Old Style", "Palatino Linotype", Palatino, P052, Georgia, "Times New Roman", serif;
  --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Nimbus Sans", "Helvetica Neue", system-ui, Arial, sans-serif;

  --paper:#17130E;
  --backdrop:#0F0C09;
  --surface:#211B15;
  --ink:#F4EEE3;
  --soft:#DED4C4;
  --muted:#B5A995;
  --line:#3B332A;
  --line-soft:#2D261F;
  --control:#A2957F;

  --accent:#84B79F;
  --accent-ink:#A9CEBC;
  --accent-wash:#1E2A24;

  --rare:#E4906C;
  --gem:#9DAFDC;
  --fish:#7FC0CC;
  --fruit:#D8A55F;
  --veg:#9DBF7C;
  --animal:#C9A87A;
  --danger:#E28C82;

  --t-display:40px;
  --t-title:34px;
  --t-name:24px;
  --t-h2:26px;
  --t-row:19px;
  --t-body:18.5px;
  --t-sub:16px;
  --t-label:14px;
  --t-tab:13px;
  --pad:22px;

  color-scheme: dark;
}
html[data-text="gross"]{
  --t-display:43px; --t-title:37px; --t-name:26px; --t-h2:28px;
  --t-row:21px; --t-body:20px; --t-sub:17px; --t-label:14.5px;
}
html[data-text="sehrgross"]{
  --t-display:46px; --t-title:40px; --t-name:28px; --t-h2:30px;
  --t-row:23px; --t-body:22px; --t-sub:18.5px; --t-label:15.5px;
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
html{-webkit-text-size-adjust:100%;background:var(--backdrop)}
body{
  margin:0;
  background:var(--backdrop);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--t-body);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  -webkit-tap-highlight-color:transparent;
}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,p,dl,dd,dt{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ---------- App-Rahmen ---------- */

.app{
  position:relative;
  height:100vh;
  height:100dvh;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--paper);
}
.view{
  flex:1;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-width:none;
  background:var(--paper);
  outline:none;
  padding-bottom:28px;
}
.view::-webkit-scrollbar{display:none}

.pad{
  width:100%;
  max-width:600px;
  margin:0 auto;
  padding-left:var(--pad);
  padding-right:var(--pad);
}
.sr-only,.visually-hidden{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.skip{
  position:absolute;
  left:-9999px;
  top:0;
  z-index:100;
  padding:12px 16px;
  background:var(--surface);
  color:var(--ink);
  font-weight:700;
}
.skip:focus{left:8px;top:8px}

/* ---------- Typografie ---------- */

.eyebrow{
  font-size:11.5px;
  line-height:1.2;
  font-weight:700;
  letter-spacing:.17em;
  text-transform:uppercase;
  color:var(--accent);
  margin:0 0 9px;
}
h1{
  font-family:var(--font-serif);
  font-size:var(--t-display);
  font-weight:600;
  line-height:1.05;
  letter-spacing:-.015em;
  color:var(--ink);
  text-wrap:balance;
}
h1:focus{outline:none}
.lede{
  margin-top:12px;
  max-width:36ch;
  font-size:var(--t-body);
  line-height:1.5;
  color:var(--muted);
  text-wrap:pretty;
}
.page-head{padding-top:calc(32px + env(safe-area-inset-top));padding-bottom:22px}
.page-head h1{font-size:var(--t-display)}
.area-head{padding-top:22px;padding-bottom:4px}
.area-head h1{font-size:var(--t-title);line-height:1.08}
.area-head .eyebrow{margin-bottom:8px}
.area-stat{
  margin-top:9px;
  font-size:var(--t-sub);
  line-height:1.4;
  color:var(--muted);
}
.area-group-head{
  margin-top:22px;
  padding-bottom:6px;
  font-family:var(--font-sans);
  font-size:var(--t-label);
  font-weight:750;
  letter-spacing:.085em;
  text-transform:uppercase;
  color:var(--muted);
}

/* ---------- Startseite: Gebiete ---------- */

.home-list{padding-bottom:26px}
/* Genug Luft über der festen Tab-Leiste, damit die letzte Zeile nicht klebt. */
.pad:last-child .rows:last-child,
.pad > .rows:last-child{padding-bottom:26px}
.list-tail{padding-bottom:96px}
.meta-part{white-space:nowrap}
.areas{border-top:1px solid var(--line)}
.area-group{margin-top:32px}
.home-list > .area-group:first-child{margin-top:0}
.area-group-head{
  display:flex;
  align-items:baseline;
  gap:10px;
  margin-top:0;
  padding-bottom:10px;
}
.area-group-name{
  font-family:var(--font-sans);
  font-size:var(--t-sub);
  font-weight:750;
  line-height:1.2;
  letter-spacing:.075em;
  text-transform:uppercase;
  color:var(--soft);
}
.area-group-count{
  margin-left:auto;
  font-size:var(--t-label);
  font-weight:600;
  letter-spacing:0;
  text-transform:none;
  font-variant-numeric:tabular-nums;
  color:var(--muted);
}
.area-group-note{
  margin:-2px 0 12px;
  max-width:40ch;
  font-size:var(--t-sub);
  line-height:1.45;
  color:var(--muted);
  text-wrap:pretty;
}
.area-row{border-bottom:1px solid var(--line)}
.area-row button,.area-row a{
  display:flex;
  align-items:flex-start;
  gap:12px;
  width:calc(100% + var(--pad)*2);
  margin:0 calc(var(--pad)*-1);
  padding:13px var(--pad);
  min-height:79px;
  text-align:left;
  text-decoration:none;
  color:inherit;
  transition:background-color .14s ease;
}
.area-num{
  flex:none;
  width:22px;
  padding-top:6px;
  font-size:11.5px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.07em;
  color:var(--muted);
}
.area-main{flex:1;min-width:0}
.area-name{
  display:block;
  font-family:var(--font-serif);
  font-size:var(--t-name);
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.008em;
  overflow-wrap:break-word;
  hyphens:auto;
}
.area-meta{
  display:block;
  margin-top:4px;
  font-size:var(--t-sub);
  line-height:1.35;
  color:var(--muted);
}
.chev{
  flex:none;
  width:9px;
  height:9px;
  margin-top:9px;
  border-right:1.8px solid var(--muted);
  border-bottom:1.8px solid var(--muted);
  transform:rotate(-45deg);
}
@media (hover:hover){
  .area-row button:hover,.area-row a:hover{background:var(--surface)}
}

/* ---------- Kopfleiste / Zurück ---------- */

.topbar{
  position:sticky;
  top:0;
  z-index:8;
  background:var(--paper);
  border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top);
}
.topbar-inner{display:flex;align-items:center;height:52px}
.back{
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:48px;
  margin-left:-6px;
  padding:0 10px 0 2px;
  color:var(--accent);
  font-size:var(--t-sub);
  font-weight:650;
  letter-spacing:.005em;
}
.back::before{
  content:"";
  flex:none;
  width:9px;
  height:9px;
  border-left:1.8px solid currentColor;
  border-bottom:1.8px solid currentColor;
  transform:rotate(45deg);
}

/* ---------- Abschnitte ---------- */

.sec{margin-top:28px}
.sec-head{
  display:flex;
  align-items:baseline;
  gap:8px;
  padding-bottom:9px;
  border-bottom:1px solid var(--line);
}
.dot{
  flex:none;
  width:7px;
  height:7px;
  border-radius:50%;
  transform:translateY(-1px);
}
.sec-name{
  font-family:var(--font-sans);
  font-size:var(--t-label);
  font-weight:750;
  letter-spacing:.085em;
  text-transform:uppercase;
  color:var(--soft);
  line-height:1.2;
}
.sec-count{
  margin-left:auto;
  font-size:var(--t-label);
  font-variant-numeric:tabular-nums;
  color:var(--muted);
  line-height:1.2;
}

/* ---------- Zeilen ---------- */

.rows{border-bottom:1px solid var(--line-soft)}
.row{
  display:flex;
  align-items:center;
  border-bottom:1px solid var(--line-soft);
}
.row:last-child{border-bottom:0}
.row-main{
  flex:1;
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
  min-height:64px;
  padding:12px 0;
  text-align:left;
  transition:opacity .14s ease;
}
.row:active .row-main{opacity:.62}
.row-text{flex:1;min-width:0}
.row-name{
  display:block;
  font-size:var(--t-row);
  font-weight:600;
  line-height:1.3;
  letter-spacing:-.003em;
  overflow-wrap:break-word;
  hyphens:auto;
}
.row.is-checked .row-name{color:var(--muted);font-weight:550}
.row-sub{
  display:block;
  margin-top:2px;
  font-size:var(--t-sub);
  line-height:1.35;
  color:var(--muted);
}
.row-sub.is-time{
  color:var(--rare);
  font-weight:650;
}
.val{
  flex:none;
  padding-left:6px;
  text-align:right;
  font-variant-numeric:tabular-nums;
}
.val b{
  display:block;
  font-size:calc(var(--t-sub) + 1px);
  font-weight:700;
  line-height:1.15;
  letter-spacing:-.01em;
}
.val span{
  display:block;
  margin-top:1px;
  font-size:11.5px;
  line-height:1.2;
  letter-spacing:.02em;
  color:var(--muted);
}

/* Abhaken */
.check{
  flex:none;
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  border-radius:50%;
}
.check > span{
  width:29px;
  height:29px;
  display:grid;
  place-items:center;
  border-radius:50%;
  border:2px solid var(--muted);
  background:transparent;
  transition:background-color .16s ease, border-color .16s ease;
}
.check > span::after{
  content:"";
  width:13px;
  height:7px;
  margin-top:-3px;
  border-left:3px solid #fff;
  border-bottom:3px solid #fff;
  transform:rotate(-45deg) scale(0);
  transition:transform .12s ease;
}
.check[aria-pressed="true"] > span{
  background:var(--accent);
  border-color:var(--accent);
  box-shadow:0 0 0 4px rgba(132,183,159,.18);
  animation:pop .22s ease;
}
.check[aria-pressed="true"] > span::after{transform:rotate(-45deg) scale(1)}
@keyframes pop{
  0%{transform:scale(.9)}
  60%{transform:scale(1.07)}
  100%{transform:scale(1)}
}

/* ---------- Suche ---------- */

.searchbox{
  display:flex;
  align-items:center;
  gap:8px;
  height:56px;
  padding:0 6px 0 14px;
  background:var(--surface);
  border:1.5px solid var(--control);
  border-radius:14px;
  transition:border-color .16s ease, box-shadow .16s ease;
}
.searchbox:focus-within{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(44,91,77,.13);
}
.searchbox input{
  flex:1;
  min-width:0;
  height:100%;
  border:0;
  background:none;
  font-family:var(--font-sans);
  font-size:var(--t-body);
  color:var(--ink);
  outline:none;
  appearance:none;
}
.searchbox input::-webkit-search-cancel-button,
.searchbox input::-webkit-search-decoration{display:none}
.searchbox input::placeholder{color:var(--muted);opacity:1}
.clear{
  flex:none;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:var(--muted);
  font-size:20px;
  transition:opacity .12s ease;
}
.searchbox input:placeholder-shown ~ .clear{opacity:0;pointer-events:none}

.result-count{
  margin:20px 0 8px;
  font-size:var(--t-label);
  font-weight:700;
  letter-spacing:.085em;
  text-transform:uppercase;
  color:var(--muted);
}
.hint-block{padding-top:26px}
.hint-title{
  font-family:var(--font-serif);
  font-size:var(--t-h2);
  font-weight:600;
  line-height:1.2;
}
.hint-text{
  margin-top:8px;
  max-width:38ch;
  font-size:var(--t-body);
  line-height:1.5;
  color:var(--muted);
}
.suggest-label{
  margin:22px 0 0;
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}
.suggestions{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
  margin-top:10px;
}
.suggestion{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  padding:0 14px;
  border:1.5px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  font-size:calc(var(--t-sub) + 1px);
  font-weight:600;
  color:var(--soft);
}
@media (hover:hover){
  .suggestion:hover{border-color:var(--control)}
}

/* ---------- Leerzustände ---------- */

.empty{padding-top:24px;padding-bottom:26px}
.empty h2{
  font-family:var(--font-serif);
  font-size:var(--t-h2);
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.01em;
}
.empty p{
  margin-top:9px;
  max-width:38ch;
  font-size:var(--t-body);
  line-height:1.5;
  color:var(--muted);
}
.ghostbtn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
  margin-top:20px;
  padding:0 20px;
  border:1.5px solid var(--accent);
  border-radius:12px;
  color:var(--accent);
  font-size:calc(var(--t-sub) + .5px);
  font-weight:650;
}
.ghostbtn:active{background:var(--accent-wash)}
.fuzzy-hint{
  margin:14px 0 10px;
  font-size:var(--t-sub);
  color:var(--muted);
}

/* ---------- Heute ---------- */

.now-item{
  position:relative;
  margin-bottom:10px;
  border-radius:16px;
}
.now-panel{
  display:block;
  width:100%;
  margin-bottom:0;
  padding:15px 64px 14px 16px;
  text-align:left;
  background:var(--accent-wash);
  border:1px solid var(--line);
  border-radius:16px;
}
/* Häkchen sitzt in der reservierten Spalte rechts unten – immer vorhanden,
   dadurch kein Layout-Shift beim Abhaken. */
.now-item > .check{
  position:absolute;
  right:8px;
  bottom:8px;
}
.now-item.is-checked .now-title{color:var(--muted)}
.now-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:7px;
}
.now-badge{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-size:11.5px;
  font-weight:800;
  letter-spacing:.11em;
  text-transform:uppercase;
  color:var(--accent-ink);
}
.now-badge::before{
  content:"";
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--accent);
}
.now-where{
  font-size:13px;
  font-weight:600;
  color:var(--accent-ink);
  opacity:.78;
  text-align:right;
}
.now-title{
  display:block;
  font-family:var(--font-serif);
  font-size:var(--t-name);
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.01em;
  color:var(--ink);
  overflow-wrap:break-word;
  hyphens:auto;
}
.now-meta{
  display:block;
  margin-top:5px;
  font-size:var(--t-sub);
  line-height:1.4;
  color:var(--accent-ink);
}
.now-cta{
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin-top:10px;
  font-size:calc(var(--t-sub) - 1px);
  font-weight:700;
  color:var(--accent-ink);
}
.now-cta .chev{width:7px;height:7px;margin:0;border-color:currentColor}

.calm{
  padding:16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--surface);
}
.calm-title{
  font-size:var(--t-row);
  font-weight:650;
  line-height:1.35;
}
.calm-text{
  margin-top:6px;
  font-size:var(--t-sub);
  line-height:1.45;
  color:var(--muted);
}
.calm-next{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--line-soft);
  font-size:var(--t-sub);
  line-height:1.45;
  color:var(--soft);
}
.calm-next b{font-weight:700;color:var(--ink)}

.ttime{
  flex:none;
  width:58px;
  padding-top:1px;
  font-size:calc(var(--t-sub) + 1px);
  font-variant-numeric:tabular-nums;
  font-weight:700;
  color:var(--soft);
  letter-spacing:-.01em;
}
.row.is-past .row-name{color:var(--muted);font-weight:550}
.row.is-past .ttime{color:var(--muted);font-weight:600}
.row.is-past .row-sub.is-time{color:var(--muted);font-weight:550}
.always{
  margin-top:26px;
  padding-top:14px;
  border-top:1px solid var(--line);
  font-size:var(--t-sub);
  line-height:1.5;
  color:var(--muted);
  max-width:42ch;
}
.today-time{font-variant-numeric:tabular-nums}

/* ---------- Meine Liste ---------- */

.group{margin-top:26px}
.group-head{
  display:flex;
  align-items:baseline;
  gap:10px;
  padding-bottom:9px;
  border-bottom:1px solid var(--line);
}
.group-name{
  font-family:var(--font-serif);
  font-size:calc(var(--t-name) - 2px);
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.01em;
}
.group-count{
  margin-left:auto;
  font-size:var(--t-label);
  font-variant-numeric:tabular-nums;
  color:var(--muted);
}
.reset-row{margin:32px 0 10px}
.textbtn{
  min-height:48px;
  padding:0 4px;
  font-size:15px;
  font-weight:600;
  color:var(--muted);
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-color:var(--line);
}

/* ---------- Tab-Leiste ---------- */

.tabbar{
  flex:none;
  z-index:20;
  background:var(--paper);
  border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.tabbar-inner{
  max-width:600px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  padding:0 6px;
}
.tab{
  position:relative;
  min-height:62px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  color:var(--muted);
  font-size:14px;
  font-weight:600;
  letter-spacing:.005em;
  text-decoration:none;
  transition:color .14s ease;
}
.tab-label{display:block}
.tab-mark{
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
  font-size:17px;
  line-height:1;
  font-weight:600;
}
.tab[aria-current="page"]{color:var(--accent);font-weight:700}
.tab[aria-current="page"]::before{
  content:"";
  position:absolute;
  top:0;
  width:24px;
  height:2.5px;
  border-radius:0 0 3px 3px;
  background:var(--accent);
}

/* ---------- Detail-Sheet ---------- */

.sheet-layer{
  position:absolute;
  inset:0;
  z-index:40;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  visibility:hidden;
  pointer-events:none;
  transition:visibility 0s linear .32s;
}
.sheet-layer.is-open{
  visibility:visible;
  pointer-events:auto;
  transition:visibility 0s;
}
.scrim{
  position:absolute;
  inset:0;
  background:rgba(30,26,20,.38);
  opacity:0;
  transition:opacity .26s ease;
}
.is-open .scrim{opacity:1}
.sheet{
  position:relative;
  width:min(100%,560px);
  max-height:calc(100% - 14px);
  margin:0 auto;
  display:flex;
  flex-direction:column;
  background:var(--surface);
  border:1px solid var(--line);
  border-bottom:0;
  border-radius:24px 24px 0 0;
  box-shadow:0 -18px 50px rgba(30,26,20,.2);
  transform:translateY(103%);
  transition:transform .3s cubic-bezier(.2,.72,.25,1);
}
.is-open .sheet{transform:translateY(0)}
.sheet-pad{
  width:100%;
  max-width:600px;
  margin:0 auto;
  padding-left:var(--pad);
  padding-right:var(--pad);
}
.sheet-head{padding-top:6px;flex:none}
.sheet-headrow{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:50px;
}
.kind{
  font-size:11.5px;
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
  text-align:right;
}
.sheet-body{
  flex:1;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  padding-bottom:20px;
}
.sheet-body::-webkit-scrollbar{display:none}
.sheet-body h1{
  font-size:var(--t-title);
  line-height:1.06;
  margin:2px 0 14px;
  text-wrap:pretty;
  overflow-wrap:break-word;
  hyphens:auto;
}
.now-inline{
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin-bottom:15px;
  padding:6px 11px;
  border-radius:999px;
  background:var(--accent-wash);
  color:var(--accent-ink);
  font-size:12.5px;
  font-weight:700;
  letter-spacing:.02em;
}
.now-inline::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent);
}

.facts{border-top:1px solid var(--line)}
.fact{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:14px;
  padding:12px 0;
  border-bottom:1px solid var(--line-soft);
}
.fact dt{
  padding-top:3px;
  font-size:calc(var(--t-label) - .5px);
  font-weight:750;
  letter-spacing:.06em;
  text-transform:uppercase;
  line-height:1.3;
  color:var(--muted);
  white-space:nowrap;
}
.fact dd{
  font-size:var(--t-body);
  line-height:1.45;
  color:var(--ink);
  text-wrap:pretty;
  overflow-wrap:break-word;
}
.note{
  margin-top:20px;
  padding-top:13px;
  border-top:1px solid var(--line);
}
.note-label{
  font-size:calc(var(--t-label) - .5px);
  font-weight:750;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--muted);
}
.note p{
  margin-top:5px;
  font-size:var(--t-sub);
  line-height:1.5;
  color:var(--soft);
  text-wrap:pretty;
}
.sheet-foot{
  flex:none;
  padding:12px 0 max(14px,env(safe-area-inset-bottom));
  border-top:1px solid var(--line);
  background:var(--surface);
}
.listbtn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  width:100%;
  min-height:56px;
  border-radius:14px;
  background:var(--accent);
  color:#fff;
  font-size:calc(var(--t-sub) + 1.5px);
  font-weight:700;
  letter-spacing:.005em;
  transition:background-color .16s ease,color .16s ease;
}
.listbtn:active{background:var(--accent-ink)}
.listbtn[aria-pressed="true"]{
  background:var(--accent-wash);
  color:var(--accent-ink);
  box-shadow:inset 0 0 0 1.5px var(--accent);
}

/* ---------- Hinweis / Toast ---------- */

.notice{
  margin-top:18px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  font-size:var(--t-sub);
  line-height:1.45;
  color:var(--soft);
}
.toast{
  position:absolute;
  left:14px;
  right:14px;
  bottom:calc(70px + env(safe-area-inset-bottom));
  z-index:45;
  display:flex;
  align-items:center;
  gap:12px;
  min-height:52px;
  padding:8px 10px 8px 16px;
  border-radius:12px;
  background:#3A3025;
  color:var(--ink);
  font-size:15px;
  line-height:1.35;
  opacity:0;
  transform:translateY(8px);
  pointer-events:none;
  transition:opacity .2s ease, transform .2s ease;
}
.toast.show{opacity:1;transform:none;pointer-events:auto}
.toast[hidden]{display:none}
.toast button{
  margin-left:auto;
  flex:none;
  min-height:40px;
  padding:0 10px;
  color:#EAC989;
  font-weight:700;
  font-size:14.5px;
}

/* ---------- Info ---------- */

.info-list{margin-top:22px;border-top:1px solid var(--line)}
.info-list dt{
  padding-top:12px;
  font-size:calc(var(--t-label) - .5px);
  font-weight:750;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--muted);
}
.info-list dd{
  padding:4px 0 12px;
  border-bottom:1px solid var(--line-soft);
  font-size:var(--t-body);
  line-height:1.45;
}

/* ---------- Quellen und Lizenz ---------- */

.source-intro{
  margin-top:10px;
  font-size:var(--t-body);
  line-height:1.45;
  color:var(--soft);
}
.source-list{
  margin:14px 0 0;
  padding:0;
  list-style:none;
  border-top:1px solid var(--line);
}
.source-list .source{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:10px 0;
  border-bottom:1px solid var(--line-soft);
}
.source-name{
  display:flex;
  align-items:center;
  min-height:48px;
  font-size:var(--t-body);
  line-height:1.35;
  color:var(--accent-ink);
  text-decoration:underline;
  text-underline-offset:3px;
}
span.source-name{color:var(--soft);text-decoration:none}
.source-use{
  font-size:var(--t-sub);
  line-height:1.4;
  color:var(--muted);
}
.contact-link{
  display:inline-flex;
  align-items:center;
  min-height:48px;
  font-size:var(--t-body);
  color:var(--accent-ink);
  text-decoration:underline;
  text-underline-offset:3px;
  overflow-wrap:anywhere;
}

.steps{margin-top:10px;counter-reset:step}
.steps li{
  position:relative;
  padding:8px 0 8px 34px;
  font-size:var(--t-body);
  line-height:1.45;
  counter-increment:step;
}
.steps li::before{
  content:counter(step);
  position:absolute;
  left:0;
  top:8px;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:var(--accent-wash);
  color:var(--accent-ink);
  font-size:13px;
  font-weight:800;
}
.setting{margin-top:24px}
.setting-label{
  display:block;
  margin-bottom:8px;
  font-size:calc(var(--t-label) - .5px);
  font-weight:750;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--muted);
}
.seg{
  display:flex;
  border:1px solid var(--line);
  border-radius:10px;
  overflow:hidden;
  background:var(--surface);
}
.seg button{
  flex:1;
  min-height:52px;
  padding:0 10px;
  border-right:1px solid var(--line-soft);
  font-size:var(--t-sub);
  font-weight:650;
  color:var(--muted);
}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:#3A3025;color:var(--ink)}

/* ---------- Responsive ---------- */

@media (min-width:720px){
  body{display:flex;justify-content:center;align-items:stretch}
  .app{
    width:min(100%,660px);
    border-left:1px solid var(--line-soft);
    border-right:1px solid var(--line-soft);
  }
  .suggestions{grid-template-columns:repeat(4,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    transition-duration:.01ms !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
  }
}

/* ---------- Icons (lokal, WebP 96 px) ---------- */

.ico{
  flex:none;
  display:block;
  object-fit:contain;
  width:46px;
  height:46px;
}
.ico-row{border-radius:12px;background:rgba(255,255,255,.035)}
.ico-empty{background:var(--line-soft);border-radius:12px}
.ico-sheet{width:64px;height:64px;border-radius:16px}
.sheet-head{
  display:flex;
  align-items:center;
  gap:14px;
}
.sheet-head h1{min-width:0}


.ring{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top:3px;
  font-size:var(--t-sub);
  font-weight:650;
  color:var(--soft);
  letter-spacing:.01em;
}
.ring-dot{
  flex:none;
  width:14px;
  height:14px;
  border-radius:50%;
  box-shadow:0 0 0 1px rgba(0,0,0,.55) inset;
}
.ring-weiß .ring-dot{background:#F4EEE3}
.ring-blau .ring-dot{background:#5A8FE0}
.ring-gold .ring-dot{background:#D9A93C}
.ring-beliebig .ring-dot{background:linear-gradient(90deg,#F4EEE3,#5A8FE0,#D9A93C)}
.ring-keine .ring-dot{background:transparent;box-shadow:0 0 0 2px var(--muted) inset}
