:root{
  --ink:#1C2630;
  --ink-2:#3C4B57;
  --ink-3:#6B7A86;
  --morning:#E3E7EA;
  --morning-2:#D3D9DE;
  --paper:#F3F5F6;
  --amber:#E0A458;
  --amber-ink:#2A1B05;
  --heavy:#3A2A4A;
  --light:#C9DEE8;
  --stop:#B5503C;
  --night:#0F151B;
  --night-2:#19222B;
  --night-ink:#DDE4E9;
  --night-ink-2:#8E9BA6;
  --serif:"Newsreader", Georgia, serif;
  --sans:"Instrument Sans", system-ui, -apple-system, sans-serif;
  --r:14px;
  --r-s:5px;
  --bg:var(--morning);
  --fg:var(--ink);
  --fg-2:var(--ink-2);
  --fg-3:var(--ink-3);
  --surface:var(--paper);
  --line:var(--morning-2);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#141B22; --fg:#E6EBEF; --fg-2:#B6C1CA; --fg-3:#7F8C97; --surface:#1C252E; --line:#2A3440;
  }
}
:root[data-theme="dark"]{
  --bg:#141B22; --fg:#E6EBEF; --fg-2:#B6C1CA; --fg-3:#7F8C97; --surface:#1C252E; --line:#2A3440;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--ink); color:var(--fg);
  font-family:var(--sans); font-size:16px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button{font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer}
button:focus-visible, [tabindex]:focus-visible, input:focus-visible, textarea:focus-visible{outline:3px solid var(--amber); outline-offset:3px}
h1,h2,h3{margin:0; font-family:var(--serif); font-weight:400; letter-spacing:-0.01em}
p{margin:0}

/* Shell: phone-sized column on desktop, full width on phone */
#app{
  position:relative; margin:0 auto; min-height:100dvh; max-width:480px;
  background:var(--bg); color:var(--fg);
  display:flex; flex-direction:column;
  padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
}
@media (min-width:560px){
  body{background:var(--ink)}
  #app{min-height:100dvh}
}
.screen{display:none; flex:1; flex-direction:column; padding:20px 20px 28px}
.screen.on{display:flex}
.grow{flex:1}

/* Top bar */
.bar{display:flex; align-items:center; justify-content:space-between; min-height:40px; margin-bottom:12px}
.bar .back{display:flex; align-items:center; gap:8px; color:var(--fg-2); font-size:15px; padding:6px 10px 6px 2px; border-radius:8px}
.bar .back:hover{background:var(--surface)}
.wordmark{font-family:var(--serif); font-size:22px; font-weight:500; letter-spacing:-0.02em}
.wordmark i{font-style:italic; font-weight:300}

/* Type */
.display{font-size:clamp(34px,9vw,44px); line-height:1.05; font-weight:400; letter-spacing:-0.02em}
.display i{font-style:italic; font-weight:300}
.lede{font-size:17px; color:var(--fg-2); max-width:34ch}
.q{font-family:var(--serif); font-size:26px; line-height:1.2; font-weight:400}
.small{font-size:14px; color:var(--fg-3)}
.hint{font-size:14px; color:var(--fg-3); margin-top:8px}

/* Buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:52px; padding:0 22px; border-radius:var(--r);
  background:var(--ink); color:#fff; font-weight:600; font-size:16px;
  transition:transform .12s ease, background .15s ease;
}
.btn:active{transform:scale(.985)}
.btn.amber{background:var(--amber); color:var(--amber-ink)}
.btn.ghost{background:transparent; color:var(--fg); border:1.5px solid var(--line)}
.btn.block{width:100%}
.btn[disabled]{opacity:.45; cursor:not-allowed}
:root[data-theme="dark"] .btn:not(.amber):not(.ghost){background:#E6EBEF; color:#141B22}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .btn:not(.amber):not(.ghost){background:#E6EBEF; color:#141B22} }
:root[data-theme="dark"] .yn button.sel{background:#E6EBEF; color:#141B22; border-color:#E6EBEF}
:root[data-theme="dark"] .toast{background:#E6EBEF; color:#141B22}
.actions{display:flex; flex-direction:column; gap:10px; margin-top:22px}
.link{color:var(--fg-2); text-decoration:underline; text-underline-offset:3px; font-size:15px}

/* Welcome */
.hero{padding-top:28px}
.hero .display{margin:26px 0 14px}
.facts{margin-top:28px; border-top:1px solid var(--line)}
.facts div{padding:12px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:84px 1fr; gap:12px; font-size:15px}
.facts b{font-weight:600; color:var(--fg-2)}
.facts span{color:var(--fg-2)}

/* Screening */
.qs{display:flex; flex-direction:column; gap:14px; margin-top:18px}
.qrow{padding:16px; border-radius:var(--r); background:var(--surface)}
.qrow p{font-size:16px; margin-bottom:12px}
.yn{display:flex; gap:8px}
.yn button{flex:1; min-height:44px; border-radius:10px; border:1.5px solid var(--line); font-weight:600; color:var(--fg-2)}
.yn button.sel{background:var(--ink); color:#fff; border-color:var(--ink)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .yn button.sel{background:#E6EBEF; color:#141B22; border-color:#E6EBEF} }
.consent{display:flex; gap:12px; align-items:flex-start; padding:14px 0; border-top:1px solid var(--line); font-size:15px; color:var(--fg-2)}
.consent input{width:22px; height:22px; margin:2px 0 0; accent-color:var(--ink); flex:none}

/* Stop / crisis */
.stop .display{color:var(--fg)}
.numbers{margin-top:20px; display:flex; flex-direction:column; gap:10px}
.numbers a{display:flex; justify-content:space-between; align-items:center; padding:16px 18px; border-radius:var(--r); background:var(--surface); color:var(--fg); text-decoration:none; font-weight:600}
.numbers a span{font-weight:400; color:var(--fg-3); font-size:14px}

/* Stack (home) */
.home-head{display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin:6px 0 18px}
.home-head h2{font-size:30px; line-height:1.1}
.count{font-size:14px; color:var(--fg-3); text-align:right}
.count b{display:block; font-family:var(--serif); font-size:28px; font-weight:400; color:var(--fg); line-height:1}
.stack{display:flex; flex-direction:column; gap:7px}
.slab{
  position:relative; width:100%; text-align:left; border-radius:var(--r-s);
  color:#fff; padding:0 14px; display:flex; align-items:center; justify-content:space-between; gap:12px;
  transition:height .5s cubic-bezier(.2,.8,.2,1), background .5s ease, transform .15s ease;
  overflow:hidden;
}
.slab:active{transform:scale(.99)}
.slab .t{font-family:var(--serif); font-style:italic; font-size:17px; line-height:1.2; font-weight:400; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.slab[style*="height: 44px"] .t, .slab[style*="height: 51px"] .t{-webkit-line-clamp:1}
.slab .n{font-family:var(--serif); font-size:22px; font-weight:300; flex:none; width:34px; text-align:right}
.slab.done{color:var(--ink-2)}
.slab.done .t{text-decoration:line-through; text-decoration-thickness:1px; opacity:.7}
.slab .order{position:absolute; right:52px; top:50%; transform:translateY(-50%); display:none; gap:2px}
.stack.reorder .slab .order{display:flex}
.stack.reorder .slab .n{opacity:.3}
.order button{width:34px; height:30px; border-radius:6px; background:rgba(255,255,255,.18); color:#fff; font-size:14px}
.empty{padding:40px 10px; text-align:center; color:var(--fg-3)}
.empty .q{color:var(--fg-2); margin-bottom:10px}
.home-foot{display:flex; gap:10px; margin-top:22px}
.home-foot .btn{flex:1}
.tools{display:flex; justify-content:space-between; align-items:baseline; gap:16px; margin-top:16px}
.tools button{font-size:14px; color:var(--fg-3); text-decoration:underline; text-underline-offset:3px; white-space:nowrap; flex:none}
.tools .small{text-align:right}

/* Intake */
.mic{
  margin:30px auto 0; width:124px; height:124px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:var(--ink); color:#fff; position:relative;
  transition:transform .15s ease;
}
.mic.live{background:var(--amber); color:var(--amber-ink)}
.mic.live::after{content:""; position:absolute; inset:-10px; border-radius:50%; border:2px solid var(--amber); opacity:.6; animation:pulse 1.4s ease-out infinite}
@keyframes pulse{0%{transform:scale(.9); opacity:.7}100%{transform:scale(1.25); opacity:0}}
@media (prefers-reduced-motion: reduce){ .mic.live::after{animation:none} }
.mic svg{width:40px; height:40px}
.mic-hint{text-align:center; margin-top:14px; color:var(--fg-3); font-size:14px}
textarea.memo{
  width:100%; min-height:132px; margin-top:22px; padding:16px; border-radius:var(--r); border:1.5px solid var(--line);
  background:var(--surface); color:var(--fg); font-family:var(--serif); font-size:19px; line-height:1.35; resize:vertical;
}
textarea.memo::placeholder{color:var(--fg-3); font-style:italic}

/* Lading slider */
.lading{margin-top:26px}
.lading .read{display:flex; align-items:baseline; justify-content:space-between}
.lading .read b{font-family:var(--serif); font-size:64px; font-weight:300; line-height:1}
.lading .read span{color:var(--fg-3); font-size:14px; max-width:16ch; text-align:right}
input[type=range]{width:100%; margin:14px 0 6px; accent-color:var(--ink); height:32px}
.scale{display:flex; justify-content:space-between; font-size:12px; color:var(--fg-3)}
.preview{height:12px; border-radius:var(--r-s); margin-top:18px; transition:height .4s, background .4s}

/* Session (night) */
.night{background:var(--night); color:var(--night-ink)}
.night .bar .back{color:var(--night-ink-2)}
.night .bar .back:hover{background:var(--night-2)}
.night .q{color:var(--night-ink)}
.night .small, .night .hint{color:var(--night-ink-2)}
.night .btn{background:var(--night-ink); color:var(--night)}
.night .btn.amber{background:var(--amber); color:var(--amber-ink)}
.night .btn.ghost{background:transparent; color:var(--night-ink); border-color:#2E3A46}
.night textarea.memo{background:var(--night-2); border-color:#2E3A46; color:var(--night-ink)}
.night input[type=range]{accent-color:var(--amber)}
.night .lading .read span{color:var(--night-ink-2)}
.night .scale{color:var(--night-ink-2)}
.chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:16px}
.chip{padding:10px 14px; border-radius:999px; border:1.5px solid #2E3A46; color:var(--night-ink); font-size:15px}
.chip.sel{background:var(--night-ink); color:var(--night); border-color:var(--night-ink)}
.steps{display:flex; gap:4px; margin-top:4px}
.steps i{flex:1; height:3px; border-radius:2px; background:#2A3440}
.steps i.on{background:var(--amber)}
.memory-ref{font-family:var(--serif); font-style:italic; color:var(--night-ink-2); font-size:16px; margin-top:6px}
.setinfo{color:var(--night-ink-2); font-size:14px}
.bls{position:relative; flex:1; min-height:300px; display:flex; align-items:center}
.track{position:absolute; left:6%; right:6%; top:50%; height:1px; background:#243040}
.dot{position:absolute; top:50%; width:22px; height:22px; border-radius:50%; background:var(--amber); box-shadow:0 0 28px 6px rgba(224,164,88,.35); transform:translate(-50%,-50%); will-change:left}
.bls-foot{text-align:center; color:var(--night-ink-2); font-size:14px}
.reflect{
  margin-top:18px; padding:16px 18px; border-left:2px solid var(--amber);
  font-family:var(--serif); font-size:20px; line-height:1.3; color:var(--night-ink);
  min-height:56px;
}
.reflect.thinking{color:var(--night-ink-2); font-style:italic}
.options{display:flex; gap:10px; margin-top:16px}
.options .btn{flex:1}
.opt-row{display:flex; justify-content:space-between; align-items:center; padding:14px 0; border-bottom:1px solid #243040}
.opt-row .seg{display:flex; gap:6px}
.opt-row .seg button{padding:8px 12px; border-radius:8px; border:1.5px solid #2E3A46; color:var(--night-ink-2); font-size:14px}
.opt-row .seg button.sel{background:var(--night-ink); color:var(--night); border-color:var(--night-ink)}

/* Closure */
.breath{position:relative; width:220px; height:220px; margin:30px auto 10px; display:flex; align-items:center; justify-content:center}
.breath .ring{position:absolute; inset:0; border-radius:50%; border:1.5px solid #2E3A46}
.breath .orb{width:90px; height:90px; border-radius:50%; background:var(--light); transition:transform 4s cubic-bezier(.4,0,.6,1)}
.breath .orb.in{transform:scale(2.2)}
.breath .orb.out{transform:scale(1)}
.breath-label{text-align:center; font-family:var(--serif); font-size:24px; color:var(--night-ink)}
.breath-count{text-align:center; color:var(--night-ink-2); font-size:14px; margin-top:6px}

/* Done */
.result{margin-top:18px}
.result .delta{display:flex; align-items:baseline; gap:14px; font-family:var(--serif); font-weight:300}
.result .delta b{font-size:72px; font-weight:300; line-height:1}
.result .delta i{font-size:22px; color:var(--fg-3); font-style:normal}
.result .delta .arrow{font-size:40px; color:var(--fg-3)}
.card{
  margin-top:22px; aspect-ratio:1/1; border-radius:18px; padding:26px; display:flex; flex-direction:column; justify-content:space-between;
  color:#fff; background:linear-gradient(160deg, var(--heavy), var(--ink) 55%, #22394A);
}
.card .cw{font-family:var(--serif); font-size:20px}
.card .cw i{font-weight:300}
.card .cb{font-family:var(--serif); font-size:52px; font-weight:300; line-height:1}
.card .cb span{font-size:26px; color:rgba(255,255,255,.6); margin:0 10px; vertical-align:middle; position:relative; top:-10px}
.result .delta .arrow{position:relative; top:-10px}
.card .cf{font-size:13px; color:rgba(255,255,255,.65)}

/* Detail */
.hist{display:flex; align-items:flex-end; gap:6px; height:120px; margin-top:20px; padding-bottom:6px; border-bottom:1px solid var(--line)}
.hist div{flex:1; max-width:46px; border-radius:4px 4px 0 0; background:var(--heavy); position:relative}
.hist div span{position:absolute; top:-22px; left:0; right:0; text-align:center; font-size:13px; color:var(--fg-3)}
.hist-l{display:flex; justify-content:space-between; font-size:12px; color:var(--fg-3); margin-top:6px}

/* Sheet (settings/menu) */
.sheet{position:fixed; inset:0; background:rgba(15,21,27,.5); display:none; align-items:flex-end; justify-content:center; z-index:9}
.sheet.on{display:flex}
.sheet > div{width:100%; max-width:480px; background:var(--bg); color:var(--fg); border-radius:18px 18px 0 0; padding:20px 20px calc(24px + env(safe-area-inset-bottom))}
.sheet h3{font-size:22px; margin-bottom:10px}
.sheet .row{display:flex; justify-content:space-between; align-items:center; padding:14px 0; border-top:1px solid var(--line); font-size:15px}
.sheet .row button.link{font-size:15px}

/* Gesprek */
.modes{display:flex; flex-direction:column; gap:10px; margin-top:18px}
.mode{display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; text-align:left; padding:16px 18px; border-radius:var(--r); background:var(--surface); border:1.5px solid var(--line)}
.mode b{display:block; font-family:var(--serif); font-size:20px; font-weight:400; margin-bottom:2px}
.mode span{font-size:14px; color:var(--fg-3)}
.mode i{font-style:normal; color:var(--fg-3); font-size:20px}
.mode[disabled]{opacity:.45}
.chat{display:flex; flex-direction:column; gap:12px; flex:1; margin-top:10px; overflow-y:auto; padding-bottom:8px}
.msg{max-width:88%; padding:12px 16px; border-radius:16px; font-size:16px; line-height:1.4}
.msg.app{align-self:flex-start; background:var(--surface); border-bottom-left-radius:4px; font-family:var(--serif); font-size:18px}
.msg.me{align-self:flex-end; background:var(--ink); color:#fff; border-bottom-right-radius:4px}
:root[data-theme="dark"] .msg.me{background:#E6EBEF; color:#141B22}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .msg.me{background:#E6EBEF; color:#141B22} }
.msg.sys{align-self:center; background:transparent; color:var(--fg-3); font-size:13px; text-align:center; max-width:100%}
.msg.think{color:var(--fg-3); font-style:italic}
.composer{display:flex; gap:8px; align-items:flex-end; padding-top:10px; border-top:1px solid var(--line)}
.composer textarea{flex:1; min-height:48px; max-height:140px; padding:12px 14px; border-radius:14px; border:1.5px solid var(--line); background:var(--surface); color:var(--fg); font:inherit; font-size:16px; resize:none}
.composer button{width:48px; height:48px; border-radius:14px; background:var(--ink); color:#fff; flex:none; display:flex; align-items:center; justify-content:center}
.composer button[disabled]{opacity:.4}
:root[data-theme="dark"] .composer button{background:#E6EBEF; color:#141B22}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .composer button{background:#E6EBEF; color:#141B22} }
.turns{font-size:13px; color:var(--fg-3)}
.quick{display:flex; gap:8px; flex-wrap:wrap; padding-top:10px}
.quick button{padding:10px 14px; border-radius:999px; border:1.5px solid var(--line); font-size:15px; color:var(--fg)}

/* Goede kaarten */
.deck-card{position:relative; border-radius:14px; padding:16px 18px; background:var(--surface); border:1.5px solid var(--line); margin-top:10px}
.deck-card b{display:block; font-family:var(--serif); font-size:13px; font-weight:400; color:var(--fg-3); margin-bottom:4px}
.deck-card p{font-family:var(--serif); font-size:18px; line-height:1.3}
.deck-fan{position:relative; height:200px; margin:22px 0 8px}
.deck-fan .fc{position:absolute; left:50%; top:50%; width:136px; height:184px; border-radius:14px; background:var(--surface); border:1.5px solid var(--line); box-shadow:0 10px 30px rgba(28,38,48,.12); padding:14px; font-family:var(--serif); font-size:14px; line-height:1.25; color:var(--fg-2); overflow:hidden; transform-origin:50% 120%}
.deck-fan .fc i{display:block; font-style:normal; font-size:11px; color:var(--fg-3); margin-bottom:6px}
.zin{font-family:var(--serif); font-size:30px; line-height:1.15; color:var(--fg); margin-top:8px}
.kaart-n{display:flex; gap:6px; margin-top:6px}
.kaart-n i{width:28px; height:4px; border-radius:2px; background:var(--line)}
.kaart-n i.on{background:var(--amber)}
.timer{font-family:var(--serif); font-size:72px; font-weight:300; text-align:center; margin:30px 0 6px}
.chips.light .chip{border-color:var(--line); color:var(--fg)}
.chips.light .chip.sel{background:var(--ink); color:#fff; border-color:var(--ink)}
.homecard{display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; text-align:left; width:100%; margin-top:14px; padding:14px 16px; border-radius:var(--r); background:var(--surface); border:1.5px solid var(--line)}
.homecard b{display:block; font-family:var(--serif); font-size:18px; font-weight:400}
.homecard span{font-size:13px; color:var(--fg-3)}
.homecard i{font-style:normal; color:var(--fg-3); font-size:20px}

/* Ander einde */
.rs-story{margin-top:14px; padding:14px 16px; border-radius:14px; background:var(--night-2); border:1px solid #2E3A46; font-family:var(--serif); font-size:17px; line-height:1.35; color:var(--night-ink)}
.rs-story b{display:block; font-family:var(--sans); font-size:12px; font-weight:600; color:var(--night-ink-2); letter-spacing:.04em; text-transform:uppercase; margin-bottom:6px}
.rs-ending{font-family:var(--serif); font-size:21px; line-height:1.4; color:var(--night-ink); margin-top:18px; white-space:pre-line}
.mic.sm{width:64px; height:64px; margin:12px auto 0}
.mic.sm svg{width:24px; height:24px}
.night .mic{background:var(--night-ink); color:var(--night)}
.night .mic.live{background:var(--amber); color:var(--amber-ink)}
.play{display:flex; align-items:center; gap:14px; margin-top:18px; padding:14px 16px; border-radius:14px; background:var(--night-2); border:1px solid #2E3A46}
.play button.pb{width:52px; height:52px; border-radius:50%; background:var(--amber); color:var(--amber-ink); display:flex; align-items:center; justify-content:center; flex:none}
.play .pl{flex:1; font-size:14px; color:var(--night-ink-2)}
.d-einde{margin-top:14px; padding:14px 16px; border-radius:14px; background:var(--surface); border:1.5px solid var(--line)}
.d-einde b{display:block; font-family:var(--serif); font-size:13px; font-weight:400; color:var(--fg-3); margin-bottom:4px}
.d-einde p{font-family:var(--serif); font-size:17px; line-height:1.35; white-space:pre-line}
.d-einde .row2{display:flex; gap:8px; margin-top:10px}
.d-einde .row2 button{padding:9px 14px; border-radius:999px; border:1.5px solid var(--line); font-size:14px; color:var(--fg)}

/* Dichterbij (trap) + Wat het je vertelt */
.ladder{margin-top:16px; display:flex; flex-direction:column; gap:8px}
.rung{display:grid; grid-template-columns:28px 1fr auto; gap:12px; align-items:center; text-align:left; padding:14px 14px; border-radius:12px; background:var(--surface); border:1.5px solid var(--line)}
.rung .no{font-family:var(--serif); font-size:20px; color:var(--fg-3)}
.rung .tx{font-family:var(--serif); font-size:17px; line-height:1.3}
.rung .st{font-size:12px; color:var(--fg-3); white-space:nowrap}
.rung.done{opacity:.55}
.rung.done .tx{text-decoration:line-through; text-decoration-thickness:1px}
.rung.next{border-color:var(--amber); box-shadow:inset 0 0 0 1px var(--amber)}
.rung input{width:100%; border:0; background:transparent; font-family:var(--serif); font-size:17px; color:var(--fg); outline:none}
.rung input::placeholder{color:var(--fg-3); font-style:italic}
.clock{font-family:var(--serif); font-size:64px; font-weight:300; text-align:center; margin:18px 0 0; line-height:1}
.clock-l{text-align:center; font-size:13px; color:var(--fg-3)}
.now{display:flex; align-items:baseline; justify-content:space-between; margin-top:20px}
.now b{font-family:var(--serif); font-size:44px; font-weight:300; line-height:1}
.now span{font-size:13px; color:var(--fg-3)}
.mean-entry{margin-top:12px; padding:14px 16px; border-radius:14px; background:var(--surface); border:1.5px solid var(--line)}
.mean-entry b{display:block; font-family:var(--sans); font-size:12px; color:var(--fg-3); margin-bottom:6px}
.mean-entry p{font-family:var(--serif); font-size:17px; line-height:1.4; white-space:pre-line}
.mean-dots{display:flex; gap:6px; margin-top:8px}
.mean-dots i{width:10px; height:10px; border-radius:50%; background:var(--line)}
.mean-dots i.on{background:var(--amber)}

.toast{position:fixed; left:50%; bottom:110px; transform:translateX(-50%); background:var(--ink); color:#fff; padding:12px 18px; border-radius:12px; font-size:14px; display:none; z-index:10}
.toast.on{display:block}
.vh{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
