/* ============ APEX COACH ============ */
:root{
  --font-display:'Anton','Arial Narrow',Impact,sans-serif;
  --bg:#0B0E11;
  --bg2:#12161B;
  --card:#161B21;
  --card2:#1C232B;
  --line:#242C35;
  --txt:#F2F5F7;
  --muted:#8A97A3;
  --accent:#C8FF3D;
  --accent-dim:#9BCC2E;
  --danger:#FF5A5A;
  --radius:20px;
  --nav-h:76px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:var(--bg);color:var(--txt);
  font-family:-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  font-size:16px;line-height:1.45;
  overscroll-behavior:none;
}
.hidden{display:none!important}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select{font:inherit}

/* ---------- generic ---------- */
.btn{
  display:block;width:100%;padding:14px 20px;border-radius:14px;
  font-weight:700;font-size:16px;text-align:center;
  transition:transform .12s ease,filter .15s ease;
}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--accent);color:#0B0E11;box-shadow:0 6px 24px rgba(200,255,61,.22)}
.btn-primary:hover{filter:brightness(1.06)}
.btn-xl{padding:17px 24px;font-size:17px;letter-spacing:.02em}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--line);margin-top:10px}
.btn-ghost:hover{color:var(--txt)}
.btn[disabled]{opacity:.5;pointer-events:none}

.input{
  width:100%;padding:14px 16px;border-radius:14px;border:1px solid var(--line);
  background:var(--bg2);color:var(--txt);outline:none;
}
.input:focus{border-color:var(--accent)}
select.input{appearance:none}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px;margin:0 16px 16px;
}
.card-h{font-size:14px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:14px}
.field{display:block;font-size:13px;color:var(--muted);margin-bottom:14px}
.field .input{margin-top:6px}
.hint{font-size:12.5px;color:var(--muted);margin-top:12px}

/* ---------- onboarding ---------- */
.fullview{
  position:fixed;inset:0;background:var(--bg);z-index:50;
  overflow-y:auto;
}
.ob-wrap{max-width:480px;margin:0 auto;padding:28px 24px 40px;min-height:100%;display:flex;flex-direction:column}
.ob-progress{height:4px;background:var(--line);border-radius:2px;margin-bottom:36px;overflow:hidden}
#ob-bar{height:100%;width:8%;background:var(--accent);border-radius:2px;transition:width .35s ease}
.ob-step{display:flex;flex-direction:column;gap:18px;flex:1;animation:fadeUp .4s ease}
.ob-logo{font-size:15px;font-weight:900;letter-spacing:.28em;color:var(--txt)}
.ob-logo span{color:var(--accent)}
.ob-step h1{font-size:44px;line-height:1.05;font-weight:900;letter-spacing:-.02em;margin-top:auto}
.ob-step h2{font-size:30px;font-weight:900;letter-spacing:-.01em}
.ob-sub{color:var(--muted);font-size:15.5px}
.ob-step .btn-primary{margin-top:auto}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.choice-grid.one-col{grid-template-columns:1fr}
.choice{
  background:var(--card);border:1.5px solid var(--line);border-radius:16px;
  padding:16px;text-align:left;display:flex;flex-direction:column;gap:4px;
  transition:border-color .15s,background .15s;
}
.choice .ch-ico{font-size:26px}
.choice .ch-t{font-weight:800;font-size:15.5px}
.choice .ch-s{font-size:12.5px;color:var(--muted)}
.choice.sel{border-color:var(--accent);background:rgba(200,255,61,.08)}

/* ---------- app shell ---------- */
#app{max-width:520px;margin:0 auto;min-height:100dvh}
.view{padding-bottom:calc(var(--nav-h) + 24px);animation:fadeUp .25s ease}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:22px 20px 14px}
.pagetitle{font-size:26px;font-weight:900;letter-spacing:-.01em}
.greet{font-size:24px;font-weight:900}
.greet-sub{font-size:13px;color:var(--muted);margin-top:2px}
.streak-chip{
  background:var(--card);border:1px solid var(--line);border-radius:999px;
  padding:8px 14px;font-size:14px;color:var(--muted);
}
.streak-chip b{color:var(--txt)}

.coach-note{
  margin:0 16px 16px;padding:14px 16px;border-radius:16px;font-size:14px;
  background:linear-gradient(120deg,rgba(200,255,61,.12),rgba(200,255,61,.03));
  border:1px solid rgba(200,255,61,.25);color:#DFF5B8;
}
.coach-note:empty{display:none}
.coach-note b{color:var(--accent)}

/* ---------- WOD card ---------- */
.wod-card{
  margin:0 16px 16px;padding:24px;border-radius:24px;position:relative;overflow:hidden;
  background:
    radial-gradient(120% 90% at 90% -10%,rgba(200,255,61,.16),transparent 60%),
    linear-gradient(160deg,#1A2129,#12161B);
  border:1px solid var(--line);
}
.wod-tag{font-size:11px;font-weight:800;letter-spacing:.22em;color:var(--accent)}
.wod-name{font-size:40px;font-weight:900;letter-spacing:-.02em;margin:6px 0 4px;text-transform:uppercase}
.wod-meta{font-size:13.5px;color:var(--muted);margin-bottom:16px}
.wod-exlist{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.wex{
  display:flex;justify-content:space-between;align-items:center;
  background:rgba(255,255,255,.04);border-radius:12px;padding:10px 14px;font-size:14.5px;
}
.wex b{font-weight:700}
.wex span{color:var(--muted);font-size:13px}
.wex.wex-head{background:none;padding:6px 2px 0;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}

.stat-row{display:flex;gap:12px;margin:0 16px 16px}
.stat{
  flex:1;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:14px;text-align:center;
}
.stat b{display:block;font-size:22px;font-weight:900}
.stat span{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}

/* ---------- progress ---------- */
.level-card{background:linear-gradient(150deg,#1A2129,#12161B)}
.lvl-row{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.lvl-badge{
  width:54px;height:54px;border-radius:16px;background:var(--accent);color:#0B0E11;
  display:flex;align-items:center;justify-content:center;font-weight:900;font-size:24px;
  box-shadow:0 6px 20px rgba(200,255,61,.3);
}
.lvl-info b{display:block;font-size:19px}
.lvl-info span{font-size:13px;color:var(--muted)}
.xp-bar{height:10px;border-radius:5px;background:var(--line);overflow:hidden}
#xp-fill{height:100%;width:0%;background:var(--accent);border-radius:5px;transition:width .6s ease}
.xp-next{font-size:12.5px;color:var(--muted);margin-top:8px}

.chart{display:flex;align-items:flex-end;gap:8px;height:120px;padding-top:8px}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.chart .bar{width:100%;border-radius:8px 8px 4px 4px;background:var(--card2);min-height:4px;transition:height .5s ease}
.chart .bar.hit{background:var(--accent)}
.chart .lbl{font-size:11px;color:var(--muted)}

.hist-list{display:flex;flex-direction:column;gap:10px}
.hist{
  display:flex;justify-content:space-between;align-items:center;
  background:var(--bg2);border-radius:14px;padding:12px 14px;
}
.hist .h-l b{display:block;font-size:15px}
.hist .h-l span{font-size:12.5px;color:var(--muted)}
.hist .h-xp{color:var(--accent);font-weight:800;font-size:14px}
.hist-empty{color:var(--muted);font-size:14px;text-align:center;padding:16px 0}

/* ---------- chat ---------- */
#view-chat{display:flex;flex-direction:column;height:100dvh;padding-bottom:0}
.chat-top{flex:none}
.model-chip{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 10px}
.chat-box{flex:1;overflow-y:auto;padding:4px 16px 12px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:85%;padding:12px 15px;border-radius:18px;font-size:15px;white-space:pre-wrap;word-wrap:break-word;animation:fadeUp .2s ease}
.msg.user{align-self:flex-end;background:var(--accent);color:#0B0E11;border-bottom-right-radius:6px;font-weight:500}
.msg.ai{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-bottom-left-radius:6px}
.msg.ai.thinking{color:var(--muted);font-style:italic}
.msg.err{align-self:center;background:rgba(255,90,90,.1);border:1px solid rgba(255,90,90,.35);color:#FFB3B3;font-size:13.5px;max-width:95%}
.chat-suggest{display:flex;gap:8px;overflow-x:auto;padding:8px 16px;flex:none;scrollbar-width:none}
.chat-suggest::-webkit-scrollbar{display:none}
.sug{
  flex:none;background:var(--card);border:1px solid var(--line);border-radius:999px;
  padding:9px 14px;font-size:13px;color:var(--muted);
}
.sug:hover{color:var(--txt);border-color:var(--accent)}
.chat-inputrow{
  display:flex;gap:10px;padding:10px 16px calc(var(--nav-h) + 14px);flex:none;
  background:linear-gradient(transparent,var(--bg) 30%);
}
.chat-input{flex:1;border-radius:999px}
.chat-send{width:52px;flex:none;border-radius:999px;padding:0;font-size:18px}
.nokey{margin:auto 24px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}
.nokey-ico{font-size:44px}
.nokey p{color:var(--muted);font-size:14px}
.nokey .btn{width:auto;padding:12px 28px}

/* ---------- profile ---------- */
.coach-brain{display:flex;flex-direction:column;gap:10px}
.brain-row{display:flex;justify-content:space-between;font-size:14.5px}
.brain-row span{color:var(--muted)}
.brain-row b{color:var(--accent)}
.danger-zone .btn{color:var(--danger);border-color:rgba(255,90,90,.3)}

/* ---------- bottom nav ---------- */
.bottomnav{
  position:fixed;bottom:0;left:0;right:0;z-index:40;height:var(--nav-h);
  display:flex;max-width:520px;margin:0 auto;
  background:rgba(11,14,17,.92);backdrop-filter:blur(16px);
  border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.navbtn{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:11px;font-weight:600;color:var(--muted);
}
.navbtn .nico{font-size:20px;filter:grayscale(1);opacity:.7;transition:.15s}
.navbtn.active{color:var(--accent)}
.navbtn.active .nico{filter:none;opacity:1}

/* ---------- player ---------- */
#player{display:flex;flex-direction:column;background:radial-gradient(120% 70% at 50% -10%,#1A2129,var(--bg) 70%)}
.pl-top{display:flex;align-items:center;gap:14px;padding:20px}
.pl-close{font-size:20px;color:var(--muted);width:40px;height:40px;border-radius:12px;background:var(--card)}
.pl-progress{flex:1;height:6px;background:var(--line);border-radius:3px;overflow:hidden}
#pl-bar{height:100%;width:0%;background:var(--accent);border-radius:3px;transition:width .3s ease}
.pl-block{font-size:12px;font-weight:800;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.pl-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 24px;text-align:center;gap:8px}
.pl-ring-wrap{position:relative;width:min(64vw,260px);aspect-ratio:1}
.pl-ring{width:100%;height:100%;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:var(--line);stroke-width:10}
.ring-fg{
  fill:none;stroke:var(--accent);stroke-width:10;stroke-linecap:round;
  stroke-dasharray:565.5;stroke-dashoffset:0;transition:stroke-dashoffset .25s linear;
  filter:drop-shadow(0 0 12px rgba(200,255,61,.5));
}
.pl-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pl-value{font-size:64px;font-weight:900;letter-spacing:-.03em;line-height:1}
.pl-unit{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-top:6px}
.pl-exname{font-size:28px;font-weight:900;margin-top:10px}
.pl-hint{color:var(--muted);font-size:14px;max-width:340px}
.pl-next{font-size:13px;color:var(--muted);margin-top:6px}
.pl-next b{color:var(--txt)}
.pl-controls{display:flex;gap:12px;padding:16px 20px calc(20px + env(safe-area-inset-bottom))}
.pl-skip{width:auto;flex:1;margin-top:0}
.pl-action{flex:2}
#player.resting .ring-fg{stroke:#5AC8FA;filter:drop-shadow(0 0 12px rgba(90,200,250,.5))}
#player.resting .pl-value{color:#5AC8FA}

/* ---------- feedback ---------- */
.fb-wrap{max-width:480px;margin:0 auto;padding:48px 24px 40px;display:flex;flex-direction:column;gap:16px;min-height:100%}
.fb-trophy{font-size:64px;text-align:center;animation:pop .5s ease}
@keyframes pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1)}}
#fb-title{font-size:36px;font-weight:900;text-align:center}
.fb-sub{text-align:center;color:var(--muted)}
.fb-q{font-size:13px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-top:8px}
.fb-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.fb-opt{
  background:var(--card);border:1.5px solid var(--line);border-radius:16px;
  padding:14px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-size:24px;transition:.15s;
}
.fb-opt span{font-size:11.5px;color:var(--muted);font-weight:600}
.fb-opt.sel{border-color:var(--accent);background:rgba(200,255,61,.08)}
.fb-opt.sel span{color:var(--txt)}
#fb-submit{margin-top:auto}

/* ---------- quick actions ---------- */
.quick-row{display:flex;gap:10px;margin:0 16px 16px}
.quick{
  flex:1;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:3px;
  transition:border-color .15s;
}
.quick:hover{border-color:var(--accent)}
.quick .q-ico{font-size:22px}
.quick b{font-size:12px;font-weight:800;text-align:center}
.quick small{font-size:10px;color:var(--muted);text-align:center}

/* ---------- Wissen des Tages ---------- */
.fact-card{display:flex;gap:14px;align-items:flex-start;background:linear-gradient(150deg,#161d24,#12161B)}
.fact-ico{font-size:26px;line-height:1.2}
.fact-card .card-h{margin-bottom:6px}
.fact-card p{font-size:14px;color:var(--txt);opacity:.9;line-height:1.5}

/* ---------- week strip ---------- */
.week-head{display:flex;justify-content:space-between;align-items:baseline}
.week-count{font-size:13px;color:var(--accent);font-weight:700}
.week-strip{display:flex;gap:8px;margin-top:6px}
.wday{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}
.wday .dot{
  width:30px;height:30px;border-radius:50%;border:2px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--muted);
}
.wday.done .dot{background:var(--accent);border-color:var(--accent);color:#0B0E11;font-weight:900}
.wday.today .dot{border-color:var(--accent)}
.wday .wlbl{font-size:10.5px;color:var(--muted);text-transform:uppercase}
.wday.today .wlbl{color:var(--accent);font-weight:800}

/* ---------- sub pages (gods / lib) ---------- */
.sub-top{display:flex;align-items:center;gap:14px;padding:20px 20px 8px;max-width:520px;margin:0 auto}
.sub-title{font-size:24px;font-weight:900}
.sub-hint{color:var(--muted);font-size:13.5px;padding:0 20px 16px;max-width:520px;margin:0 auto}
.god-list,.lib-list{max-width:520px;margin:0 auto;padding:0 16px 40px;display:flex;flex-direction:column;gap:12px}

.god-card{
  background:linear-gradient(150deg,#1A2129,#12161B);border:1px solid var(--line);
  border-radius:18px;padding:18px;text-align:left;display:block;width:100%;
  transition:border-color .15s;
}
.god-card:hover{border-color:var(--accent)}
.god-head{display:flex;justify-content:space-between;align-items:baseline}
.god-name{font-size:22px;font-weight:900;letter-spacing:.02em}
.god-stars{color:var(--accent);font-size:13px;letter-spacing:.1em}
.god-meta{font-size:12.5px;color:var(--muted);margin:4px 0 10px}
.god-struct{font-size:13px;color:var(--txt);opacity:.85;line-height:1.6}
.god-pb{
  margin-top:10px;padding-top:10px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;font-size:13px;
}
.god-pb span{color:var(--muted)}
.god-pb b{color:var(--accent)}

.lib-group{font-size:12px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:10px 2px 0}
.lib-row{
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:14px 16px;text-align:left;width:100%;
}
.lib-row .lr-head{display:flex;justify-content:space-between;align-items:center}
.lib-row .lr-name{font-weight:700;font-size:15px}
.lib-row .lr-unit{font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 9px}
.lib-detail{margin-top:10px;display:none}
.lib-row.open .lib-detail{display:block}
.lib-row.open{border-color:var(--accent)}
.lib-detail p{font-size:13.5px;color:var(--muted);margin-bottom:10px}
.lib-detail .btn{padding:11px 16px;font-size:14px}

/* ---------- player additions ---------- */
.pl-elapsed{font-size:14px;font-weight:800;color:var(--txt);min-width:48px;text-align:right;font-variant-numeric:tabular-nums}
.pl-blockrow{display:flex;justify-content:space-between;align-items:center;padding:0 20px}
.pl-blockskip{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:6px 12px}
.pl-blockskip:hover{color:var(--txt)}

/* ---------- switches ---------- */
.switchrow{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.switchrow b{font-size:15px}
.sw-sub{display:block;font-size:12.5px;color:var(--muted)}
.switch{position:relative;display:inline-block;width:52px;height:30px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch i{
  position:absolute;inset:0;border-radius:999px;background:var(--line);transition:.2s;
}
.switch i::before{
  content:'';position:absolute;width:24px;height:24px;border-radius:50%;
  background:#fff;top:3px;left:3px;transition:.2s;
}
.switch input:checked + i{background:var(--accent)}
.switch input:checked + i::before{transform:translateX(22px)}

/* ---------- achievements ---------- */
.ach-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ach{
  background:var(--bg2);border:1px solid var(--line);border-radius:14px;
  padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;
}
.ach .a-ico{font-size:24px;filter:grayscale(1);opacity:.35}
.ach .a-name{font-size:10px;color:var(--muted);font-weight:600}
.ach.unlocked{border-color:rgba(200,255,61,.4)}
.ach.unlocked .a-ico{filter:none;opacity:1}
.ach.unlocked .a-name{color:var(--txt)}

/* ---------- PB banner & feedback extras ---------- */
.pb-banner{
  background:linear-gradient(120deg,rgba(200,255,61,.18),rgba(200,255,61,.05));
  border:1px solid rgba(200,255,61,.4);border-radius:16px;padding:14px 16px;
  text-align:center;font-size:15px;color:#DFF5B8;
}
.pb-banner b{color:var(--accent)}
.ach-line{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.ach-line:empty{display:none}
.ach-chip{
  background:var(--card);border:1px solid rgba(200,255,61,.4);border-radius:999px;
  padding:7px 14px;font-size:13px;animation:pop .4s ease;
}

/* ============ PRO-FEINSCHLIFF ============ */

/* ---------- Display-Typografie ---------- */
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
html{touch-action:manipulation}
button{user-select:none;-webkit-user-select:none}
.wod-name,.gr-count,.pl-value,.fb-title,.god-name,.ob-step h1,.lvl-badge{
  font-family:var(--font-display);font-weight:400;
}
.wod-name{font-size:46px;letter-spacing:.02em;line-height:1.05}
.pl-value{font-size:72px;letter-spacing:.01em}
.pl-exname{font-family:var(--font-display);font-weight:400;text-transform:uppercase;letter-spacing:.03em;font-size:26px}
.god-name{font-size:24px;letter-spacing:.04em}
.ob-step h1{font-size:52px;letter-spacing:.01em;text-transform:uppercase}
.fb-title{letter-spacing:.02em}
.lvl-badge{font-size:26px}

/* ---------- Fokus & Scrollbars ---------- */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- Player-Overlays (Get-Ready / Pause) ---------- */
.pl-overlay{
  position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;text-align:center;cursor:pointer;
  background:radial-gradient(100% 80% at 50% 30%,rgba(200,255,61,.10),transparent 60%),rgba(11,14,17,.96);
  backdrop-filter:blur(6px);
  animation:fadeUp .25s ease;
}
#player{position:fixed}
.gr-label{font-size:14px;font-weight:800;letter-spacing:.3em;color:var(--muted)}
.gr-count{
  font-size:140px;line-height:1;color:var(--accent);
  text-shadow:0 0 60px rgba(200,255,61,.35);
  animation:grpop 1s ease infinite;
}
.gr-count.paused-ico{font-size:80px;animation:none}
@keyframes grpop{0%{transform:scale(.7);opacity:.4}25%{transform:scale(1.08)}40%{transform:scale(1)}100%{transform:scale(1);opacity:1}}
.gr-first{font-size:16px;color:var(--txt);font-weight:600}
.gr-skip{font-size:12.5px;color:var(--muted);margin-top:18px}
.pl-pausebtn{font-size:16px}

/* ---------- Chat: Typing-Dots & Streaming-Cursor ---------- */
.msg.typing{display:flex;gap:5px;padding:16px 18px}
.msg.typing span{
  width:8px;height:8px;border-radius:50%;background:var(--muted);
  animation:tdot 1.2s ease infinite;
}
.msg.typing span:nth-child(2){animation-delay:.15s}
.msg.typing span:nth-child(3){animation-delay:.3s}
@keyframes tdot{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}
.msg.ai.streaming::after{content:'▍';color:var(--accent);animation:blink .8s steps(1) infinite;margin-left:2px}
@keyframes blink{50%{opacity:0}}
.msg.ai b{color:var(--accent)}

/* ---------- Konfetti ---------- */
.confetti{position:fixed;inset:0;z-index:200;pointer-events:none}

/* ---------- Micro-Interactions ---------- */
.wod-card{transition:transform .2s ease}
.choice,.fb-opt,.quick,.god-card,.lib-row{transition:transform .12s ease,border-color .15s,background .15s}
.choice:active,.fb-opt:active,.quick:active,.god-card:active,.lib-row:active{transform:scale(.97)}
.navbtn:active .nico{transform:scale(1.2)}
.nico{transition:transform .15s ease}
.stat b{font-variant-numeric:tabular-nums}
.hist .h-xp{font-variant-numeric:tabular-nums}

/* ---------- Reduced Motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}
}

@media (min-width:600px){
  .wod-name{font-size:56px}
}
