/* ============================================================
   Resonance — styles
   Themes switch via body[data-theme]: cosmic | breath | cold | warm
   ============================================================ */
:root{
  --sans:"Karla",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --nav-h:64px; --top-h:52px; --safe-b:env(safe-area-inset-bottom,0px);
  --radius:16px; --radius-sm:12px;

  /* ---- warm light theme (default) ---- */
  --bg:oklch(97% 0.014 75); --bg1:var(--bg); --bg2:var(--bg); --bg3:var(--bg);
  --card:oklch(99% 0.006 75); --surface:var(--card); --surface-2:oklch(95.5% 0.012 75);
  --border:oklch(88% 0.015 70); --line:var(--border); --line-strong:oklch(82% 0.02 70);
  --ink:oklch(22% 0.02 50); --ink-dim:oklch(48% 0.02 50); --ink-dim2:oklch(60% 0.02 55);
  --accent:oklch(55% 0.1 150); --accent2:var(--accent); --accentInk:oklch(99% 0.006 75);
  --accent-soft:oklch(92% 0.03 150);
  --nav-bg:oklch(98% 0.01 75 / 0.92);
  --glow1:transparent; --glow2:transparent;
  --c-freq:oklch(58% 0.1 90); --c-freq-soft:oklch(92% 0.03 90);
  --c-breath:oklch(55% 0.1 150); --c-breath-soft:oklch(92% 0.03 150);
  --c-cold:oklch(55% 0.09 190); --c-cold-soft:oklch(93% 0.02 190);
  --c-cal:oklch(52% 0.09 130); --c-cal-soft:oklch(93% 0.025 130);
  --c-task:oklch(60% 0.1 70); --c-task-soft:oklch(93% 0.03 70);
  /* day-rating slots: morning=amber, noon=sage-teal, evening=dusk-violet */
  --rate-morning:oklch(70% 0.125 70); --rate-morning-soft:oklch(93% 0.035 70);
  --rate-noon:oklch(58% 0.1 165); --rate-noon-soft:oklch(93% 0.03 165);
  --rate-evening:oklch(56% 0.11 300); --rate-evening-soft:oklch(93% 0.03 300);
}
:root[data-mode="dark"]{
  --bg:oklch(22% 0.02 50); --card:oklch(27% 0.02 50); --surface-2:oklch(31% 0.02 50);
  --border:oklch(35% 0.02 50); --line-strong:oklch(43% 0.02 50);
  --ink:oklch(94% 0.01 70); --ink-dim:oklch(74% 0.015 60); --ink-dim2:oklch(66% 0.018 58);
  --accent:oklch(68% 0.11 150); --accent2:var(--accent); --accentInk:oklch(20% 0.02 50);
  --accent-soft:oklch(38% 0.05 150);
  --nav-bg:oklch(24% 0.02 50 / 0.9);
  --c-freq:oklch(70% 0.1 90); --c-freq-soft:oklch(38% 0.05 90);
  --c-breath:oklch(68% 0.11 150); --c-breath-soft:oklch(38% 0.05 150);
  --c-cold:oklch(68% 0.09 190); --c-cold-soft:oklch(36% 0.05 190);
  --c-cal:oklch(62% 0.09 130); --c-cal-soft:oklch(34% 0.05 130);
  --c-task:oklch(72% 0.1 70); --c-task-soft:oklch(38% 0.05 70);
  --rate-morning:oklch(78% 0.13 70); --rate-morning-soft:oklch(40% 0.06 70);
  --rate-noon:oklch(72% 0.11 165); --rate-noon-soft:oklch(38% 0.05 165);
  --rate-evening:oklch(72% 0.12 300); --rate-evening-soft:oklch(40% 0.06 300);
}
/* per-practice accent hue; base palette stays per-mode */
body[data-theme="breath"]{--accent:var(--c-breath);--accent2:var(--c-breath);--accent-soft:var(--c-breath-soft);}
body[data-theme="cold"]{--accent:var(--c-breath);--accent2:var(--c-breath);--accent-soft:var(--c-breath-soft);}
body[data-theme="cal"]{--accent:var(--c-breath);--accent2:var(--c-breath);--accent-soft:var(--c-breath-soft);}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
html{background:var(--bg1);}
body{
  font-family:var(--sans); color:var(--ink); min-height:100%;
  background-color:var(--bg1);
  -webkit-font-smoothing:antialiased;
  transition:background-color .4s ease;
}
/* background lives on #app so it spans the full scroll height (in-flow,
   no position:fixed — iOS repaints fixed pseudo-elements on scroll,
   which read as a repeating band). */
button{font-family:inherit;color:inherit;cursor:pointer;border:none;background:none;}
input,select{font-family:inherit;}
#app{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);}

/* ---- topbar ---- */
.topbar{
  position:sticky;top:0;z-index:40;height:var(--top-h);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 16px; background:transparent;
}
.topbar::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--nav-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);}
.topbar-actions{display:flex;align-items:center;gap:2px;}
.brand{display:flex;align-items:center;gap:8px;font-weight:600;}
.brand-mark{color:var(--accent);font-size:18px;}
.brand-logo{width:26px;height:26px;display:block;object-fit:contain;flex:none;}
.brand-logo.big{width:58px;height:58px;}
.brand-name{font-family:var(--serif);letter-spacing:.02em;font-size:16px;}
.signout{font-size:18px;color:var(--ink-dim2);width:36px;height:36px;border-radius:10px;}
.signout:active{background:var(--surface-2);}
.theme-toggle{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--ink-dim);border:1px solid var(--line);background:var(--card);}
.theme-toggle:active{background:var(--surface-2);}
.tt-ic{display:grid;place-items:center;}
.theme-toggle .ic{width:19px;height:19px;stroke:currentColor;fill:none;}
.an-export{color:var(--accent);font-weight:600;}

/* ---- view ---- */
.view{flex:1;padding:8px 16px calc(var(--nav-h) + var(--safe-b) + 24px);max-width:680px;margin:0 auto;width:100%;}
.fade-in{animation:fade .32s ease;}
@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* ---- motion: staggered entrance ---- */
@keyframes cardIn{from{transform:translateY(14px);}to{transform:none;}}
.view.fade-in>*{animation:cardIn .46s cubic-bezier(.2,.7,.2,1) both;}
.view.fade-in>*:nth-child(1){animation-delay:0s;}
.view.fade-in>*:nth-child(2){animation-delay:.05s;}
.view.fade-in>*:nth-child(3){animation-delay:.1s;}
.view.fade-in>*:nth-child(4){animation-delay:.15s;}
.view.fade-in>*:nth-child(5){animation-delay:.2s;}
.view.fade-in>*:nth-child(6){animation-delay:.25s;}
.view.fade-in>*:nth-child(7){animation-delay:.29s;}
.view.fade-in>*:nth-child(n+8){animation-delay:.33s;}
/* drawer: content rides in with the panel as one sheet, no per-item stagger */

/* ---- clear tap feedback (perimeter + fill) ---- */
.drawer-item:active,.cat-item:active,.content-card:active,.fact-card:active,.lang-opt:active,.lang-cell:active,.bdet:active,.hg-link:active{background:var(--surface-2);box-shadow:inset 0 0 0 2px var(--accent);}
.drawer-item.active{box-shadow:inset 0 0 0 1.5px var(--accent);}
@media (prefers-reduced-motion:reduce){.view.fade-in>*,.drawer-root.open .drawer-list .drawer-item,.drawer-root.open .drawer-foot{animation:none!important;}}

/* ---- bottom nav ---- */
.bottom-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  height:calc(var(--nav-h) + var(--safe-b));
  padding-bottom:var(--safe-b);
  display:flex;justify-content:space-around;align-items:center;
  background:var(--nav-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line);
}
.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;flex:1;color:var(--ink-dim2);}
.nav-glyph{font-size:18px;line-height:1;}
.nav-label{font-size:10px;letter-spacing:.02em;}
.nav-item.active{color:var(--accent);}
.nav-item.active .nav-glyph{filter:drop-shadow(0 0 8px var(--glow1));}

/* ---- shared headings ---- */
.page-head{padding:14px 2px 18px;}
.page-head.center{text-align:center;}
.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0 0 6px;}
.page-title{font-family:var(--serif);font-size:25px;font-weight:600;margin:0;letter-spacing:.01em;}
.page-sub{color:var(--ink-dim);font-size:13.5px;line-height:1.5;margin:6px 0 0;}
.page-sub.warn{color:var(--accent);}
.muted{color:var(--ink-dim2);}
.small{font-size:12.5px;}
.row{display:flex;align-items:center;}
.row.gap{gap:10px;}
.row.center{justify-content:center;}
.row.between{justify-content:space-between;width:100%;}
.section-label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim2);margin:18px 0 8px;}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 18px;border-radius:var(--radius-sm);font-size:14.5px;font-weight:600;
  border:1px solid transparent;transition:transform .1s,background .2s,opacity .2s;}
.btn:active{transform:scale(.97);}
.btn.primary{background:var(--accent);color:var(--accentInk);}
.btn.ghost{background:transparent;border-color:var(--line-strong);color:var(--ink-dim);}
.btn.danger{background:#C25A5A;color:#fff;}
.btn.big{width:100%;padding:16px;font-size:16px;margin-top:10px;}
.btn.small{padding:8px 12px;font-size:13px;}
.btn[disabled]{opacity:.4;pointer-events:none;}
.btn.cold.primary{background:var(--accent);color:var(--accentInk);}

/* ---- fields ---- */
.field{display:flex;flex-direction:column;gap:7px;}
.field-label{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim2);}
.input,.select{
  background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);
  border-radius:10px;padding:12px 13px;font-size:15px;width:100%;
}
.input:focus,.select:focus{outline:2px solid var(--accent);outline-offset:1px;}

/* ============================================================ HOME */
.home-hero{padding:20px 2px 18px;}
.home-title{font-family:var(--serif);font-size:30px;line-height:1.12;font-weight:600;margin:6px 0 0;}
.home-sub{color:var(--ink-dim);font-size:14px;margin:10px 0 0;}
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0 20px;}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 8px;text-align:center;}
.stat-value{font-family:var(--mono);font-size:19px;font-weight:600;color:var(--accent);}
.stat-label{font-size:10px;color:var(--ink-dim2);margin-top:3px;line-height:1.2;}
.tile-grid{display:flex;flex-direction:column;gap:12px;}
.tile{display:flex;align-items:center;gap:14px;text-align:left;width:100%;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px;
  transition:transform .12s,border-color .2s;position:relative;overflow:hidden;}
.tile:active{transform:scale(.985);}
.tile::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 100% 0%, var(--tileglow,transparent), transparent 60%);pointer-events:none;}
.tile-glyph{font-size:26px;width:48px;height:48px;flex:none;display:grid;place-items:center;border-radius:14px;background:rgba(255,255,255,0.05);}
.tile-text{flex:1;display:flex;flex-direction:column;gap:2px;}
.tile-title{font-weight:600;font-size:16px;}
.tile-sub{font-size:12.5px;color:var(--ink-dim2);}
.tile-go{color:var(--ink-dim2);font-size:18px;}
.t-freq .tile-glyph{color:#E3B873;} .t-freq{--tileglow:rgba(227,184,115,0.10);}
.t-breath .tile-glyph{color:#5FD0C4;} .t-breath{--tileglow:rgba(95,208,196,0.10);}
.t-cold .tile-glyph{color:#7FD4F2;} .t-cold{--tileglow:rgba(127,212,242,0.10);}
.t-cal .tile-glyph{color:#5C86C9;} .t-cal{--tileglow:rgba(92,134,201,0.10);}
.t-task .tile-glyph{color:#E0A24B;} .t-task{--tileglow:rgba(224,162,75,0.10);}
.stat.t-freq .stat-value{color:#E3B873;} .stat.t-breath .stat-value{color:#5FD0C4;}
.stat.t-cold .stat-value{color:#7FD4F2;} .stat.t-task .stat-value{color:#E0A24B;}

/* ============================================================ FREQUENCIES */
.freq-filters{display:flex;flex-direction:column;gap:14px;margin-bottom:16px;}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;}
.chip{padding:7px 13px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-dim);font-size:12.5px;}
.chip.on{background:rgba(227,184,115,0.16);border-color:var(--accent);color:var(--ink);}
.freq-list{display:flex;flex-direction:column;gap:10px;}
.freq-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;transition:transform .1s;}
.freq-card:active{transform:scale(.99);}
.freq-hz{font-family:var(--mono);font-weight:600;color:var(--accent);font-size:15px;min-width:62px;}
.freq-meta{flex:1;min-width:0;}
.freq-name{font-weight:600;font-size:15px;}
.freq-desc{font-size:12px;color:var(--ink-dim2);line-height:1.4;margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.freq-badge{font-size:10px;font-weight:600;padding:4px 9px;border-radius:999px;border:1px solid currentColor;white-space:nowrap;}
.freq-badge.researched{color:#5FD0C4;} .freq-badge.unverified{color:#E3956B;}

/* player sheet */
.player-sheet{position:fixed;left:0;right:0;bottom:0;z-index:60;transform:translateY(100%);
  transition:transform .28s cubic-bezier(.2,.7,.2,1);pointer-events:none;}
.player-sheet.show{transform:translateY(0);pointer-events:auto;}
.player-body{max-width:680px;margin:0 auto;background:linear-gradient(180deg,var(--bg3),var(--bg1));
  border-top:1px solid var(--line-strong);border-radius:22px 22px 0 0;
  padding:18px 18px calc(18px + var(--safe-b));position:relative;box-shadow:0 -16px 50px rgba(0,0,0,.16);}
.sheet-close{position:absolute;top:14px;right:14px;font-size:16px;color:var(--ink-dim2);width:34px;height:34px;border-radius:50%;background:var(--surface);}
.player-titlewrap{text-align:center;margin-bottom:14px;}
.player-name{font-family:var(--serif);font-size:21px;font-weight:600;}
.player-cat{font-size:12px;color:var(--ink-dim2);}
.seg-group{display:flex;gap:4px;background:var(--surface-2);border-radius:999px;padding:4px;width:max-content;margin:0 auto 16px;}
.seg-group.wide{width:100%;}
.seg{padding:9px 18px;border-radius:999px;font-size:13px;color:var(--ink-dim);flex:1;white-space:nowrap;}
.seg.on{background:linear-gradient(120deg,var(--accent),var(--accent2));color:var(--accentInk);font-weight:600;}

/* visualizer */
.viz{width:200px;height:200px;margin:6px auto 10px;display:grid;place-items:center;position:relative;}
.viz-ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--accent);opacity:0;}
.viz.active .viz-ring{animation:pulse var(--pulse,2s) ease-out infinite;}
.viz.active .viz-ring.r2{animation-delay:calc(var(--pulse,2s)/3);}
.viz.active .viz-ring.r3{animation-delay:calc(var(--pulse,2s)*2/3);}
@keyframes pulse{0%{transform:scale(.45);opacity:.7;}100%{transform:scale(1);opacity:0;}}
.viz-core{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 30% 30%, var(--accent), var(--accent2));
  color:var(--accentInk);font-family:var(--mono);font-weight:700;font-size:15px;
  box-shadow:0 0 40px var(--glow1);}
.player-time{text-align:center;font-family:var(--mono);font-size:20px;color:var(--ink-dim);margin:4px 0;}
.player-controls{display:flex;justify-content:center;margin:6px 0;}
.play-btn{width:64px;height:64px;border-radius:50%;background:linear-gradient(120deg,var(--accent),var(--accent2));
  display:grid;place-items:center;box-shadow:0 8px 30px var(--glow1);}
.play-btn .ico{width:30px;height:30px;fill:var(--accentInk);}
.vol-row{display:flex;align-items:center;gap:10px;margin:14px 4px 6px;}
.vol-ic{font-size:14px;}
.vol{flex:1;-webkit-appearance:none;height:4px;border-radius:2px;background:var(--line-strong);}
.vol::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);}
.player-hint{text-align:center;font-size:12px;color:var(--ink-dim);margin-top:6px;}
.player-desc{font-size:12.5px;color:var(--ink-dim2);line-height:1.5;margin:12px 2px 0;text-align:center;}
.yt-wrap{margin:6px 0;}
.yt-frame{width:100%;aspect-ratio:16/9;border:none;border-radius:14px;background:#000;}

/* ============================================================ WIM HOF */
.wh-config{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:8px 14px;margin-bottom:8px;}
.stepper,.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);}
.wh-config .field{padding:12px 0;border-bottom:1px solid var(--line);}
.wh-config > *:last-child{border-bottom:none;}
.stepper-label,.toggle-label{font-size:14px;}
.stepper-ctl{display:flex;align-items:center;gap:14px;}
.stepper-btn{width:34px;height:34px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line-strong);font-size:18px;display:grid;place-items:center;color:var(--ink);}
.stepper-val{font-family:var(--mono);font-size:16px;min-width:42px;text-align:center;color:var(--accent);}
.switch{width:48px;height:28px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line-strong);position:relative;transition:background .2s;}
.switch.on{background:var(--accent);}
.switch-knob{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s;}
.switch.on .switch-knob{transform:translateX(20px);}
.wh-note,.wh-stage-foot{text-align:center;}
.wh-note{font-size:11.5px;color:var(--ink-dim2);margin-top:14px;line-height:1.5;}

/* stage */
.wh-stage{min-height:64vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;}
.wh-round{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);}
.wh-phase{font-family:var(--serif);font-size:23px;}
.wh-sub{font-size:14px;color:var(--ink-dim2);min-height:20px;}
.wh-bigtime{font-family:var(--mono);font-size:46px;font-weight:600;min-height:50px;color:var(--ink);}
.wh-stage-foot{margin-top:10px;}
.orb{width:200px;height:200px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%, var(--accent), var(--accent2) 75%);
  box-shadow:0 0 60px var(--glow1);transition:transform var(--breath,1.6s) ease-in-out;transform:scale(.55);}
.orb-label{color:var(--accentInk);font-weight:600;font-size:16px;}
.orb.inhale{transform:scale(1);}
.orb.exhale{transform:scale(.55);}
.orb.hold{transform:scale(.85);animation:holdpulse 3s ease-in-out infinite;}
.orb.recover{transform:scale(1);animation:none;}
@keyframes holdpulse{0%,100%{box-shadow:0 0 40px var(--glow1);}50%{box-shadow:0 0 80px var(--glow1);}}

/* results */
.wh-results{display:flex;flex-direction:column;gap:8px;margin:8px 0 16px;}
.wh-result-row{display:flex;justify-content:space-between;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 16px;}
.wh-result-row.best{border-color:var(--accent);}
.wh-result-round{color:var(--ink-dim);} .wh-result-time{font-family:var(--mono);color:var(--accent);font-weight:600;}
.wh-total{display:flex;justify-content:space-between;padding:14px 4px;border-top:1px solid var(--line);font-size:15px;}
.wh-total strong{font-family:var(--mono);color:var(--accent);}

/* ============================================================ COLD */
.cold-config{display:flex;flex-direction:column;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:10px;}
.preset-row{display:flex;gap:8px;flex-wrap:wrap;}
.preset{padding:10px 14px;border-radius:10px;border:1px solid var(--line-strong);color:var(--ink-dim);font-family:var(--mono);font-size:14px;}
.preset.on{background:rgba(127,212,242,0.16);border-color:var(--accent);color:var(--ink);}
.cold-running{display:flex;flex-direction:column;align-items:center;gap:18px;padding-top:10px;}
.cold-mode-tag{font-size:14px;color:var(--ink-dim);letter-spacing:.02em;}
.cold-ring-wrap{position:relative;width:296px;height:296px;display:grid;place-items:center;}
.cold-ring{position:absolute;inset:0;width:100%;height:100%;}
.ring-bg{fill:none;stroke:var(--line-strong);stroke-width:8;}
.ring-prog{fill:none;stroke:url(#g);stroke:var(--accent);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .25s linear;filter:drop-shadow(0 0 8px var(--glow1));}
.cold-ring-center{text-align:center;}
.cold-time{font-family:var(--mono);font-size:48px;font-weight:600;}
.cold-phase{font-size:13px;color:var(--ink-dim2);margin-top:4px;}
.frost{position:absolute;inset:0;border-radius:50%;}
.cold-big{text-align:center;margin:24px 0;}
.cold-big strong{font-family:var(--mono);font-size:44px;color:var(--accent);display:block;}
.cold-big span{color:var(--ink-dim2);font-size:13px;}

/* ============================================================ CALENDAR */
.cal-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.cal-nav{width:40px;height:40px;border-radius:10px;font-size:22px;color:var(--ink-dim);background:var(--surface);border:1px solid var(--line-strong);}
.cal-month{font-family:var(--serif);font-size:18px;}
.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:4px;}
.cal-week span{text-align:center;font-size:11px;color:var(--ink-dim2);}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;}
.cal-cell{aspect-ratio:1;min-width:0;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  background:var(--surface);border:1px solid var(--line);position:relative;overflow:hidden;}
.cal-cell.empty{background:none;border:none;}
.cal-cell.today{border-color:var(--accent);}
.cal-cell.has{background:var(--surface-2);}
.cal-day{font-size:13px;color:var(--ink-dim);}
.cal-cell.today .cal-day{color:var(--accent);font-weight:700;}
.cal-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;max-width:100%;min-height:6px;}
.dot{width:6px;height:6px;border-radius:50%;background:var(--ink-dim2);}
.dot.d-freq{background:#E3B873;} .dot.d-breath{background:#5FD0C4;} .dot.d-book{background:#5C86C9;} .dot.d-cold{background:#7FD4F2;}
.cal-legend{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:center;margin:20px 0 14px;}
.legend-chip{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-dim);}
.cal-detail{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;min-height:80px;}
.cal-detail-head{font-family:var(--serif);font-size:16px;margin-bottom:10px;}
.sess-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);}
.sess-row:last-child{border-bottom:none;}
.sess-glyph{width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);font-size:15px;}
.sess-glyph.d-freq{color:#E3B873;} .sess-glyph.d-breath{color:#5FD0C4;} .sess-glyph.d-cold{color:#7FD4F2;}
.sess-main{flex:1;min-width:0;}
.sess-title{font-size:14px;font-weight:600;}
.sess-sub{font-size:12px;color:var(--ink-dim2);font-family:var(--mono);}
.sess-del{color:var(--ink-dim2);width:30px;height:30px;border-radius:8px;font-size:13px;}
.sess-del:active{background:var(--surface-2);}
.sess-rounds{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;}
.round-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;color:var(--ink-dim);background:var(--surface-2);border-radius:7px;padding:2px 7px;}
.round-chip b{color:var(--ink-dim2);font-weight:700;}

/* ---- new home ---- */
.home-state,.home-today,.home-goal{padding:16px;}
.hs-main{display:flex;align-items:center;gap:14px;}
.hs-level{flex:none;width:62px;height:62px;border-radius:16px;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;}
.hs-lvl-num{font-family:var(--serif);font-size:28px;font-weight:600;color:var(--accent);line-height:1;}
.hs-lvl-cap{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-dim2);margin-top:2px;}
.hs-titles{min-width:0;}
.hs-rank{font-size:17px;font-weight:600;color:var(--ink);}
.hs-class{font-size:13px;color:var(--ink-dim);margin-top:2px;}
.hs-streak{margin-top:13px;padding-top:13px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-dim);}
.hs-streak b{font-family:var(--mono);color:var(--ink);font-size:16px;}
.hs-status{position:relative;cursor:pointer;}
.hs-status:active{opacity:.85;}
.hs-chev{position:absolute;top:4px;right:0;color:var(--ink-dim2);font-size:22px;line-height:1;}
.hs-stats{display:flex;gap:22px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line);}
.hs-stat b{font-family:var(--mono);color:var(--ink);font-size:17px;}
.hs-stat span{font-size:12px;color:var(--ink-dim);}
.hs-note{font-size:11px;color:var(--ink-dim2);margin-top:9px;}
.hs-goal{cursor:pointer;}
.fact-more{font-size:13px;color:var(--accent);font-weight:600;margin-top:8px;}
.cat-block{margin-bottom:18px;}
.cat-head{display:flex;align-items:center;gap:8px;margin:0 2px 9px;}
.cat-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.cat-name{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--ink);}
.cat-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:7px;transition:transform .1s;}
.cat-item:active{transform:scale(.99);}
.cat-item-title{flex:1;font-size:14px;color:var(--ink);line-height:1.35;}
.cat-item-go{flex:none;color:var(--ink-dim2);font-size:16px;}

/* ---- language picker (header + settings) ---- */
.lang-wrap{position:relative;}
.lang-btn{display:flex;align-items:center;gap:3px;height:34px;padding:0 7px;border-radius:10px;color:var(--ink-dim);font-size:17px;background:none;}
.lang-btn:active{background:var(--surface);}
.lang-caret{font-size:10px;color:var(--ink-dim2);}
.lang-menu{position:absolute;top:42px;right:0;z-index:60;background:var(--bg2);border:1px solid var(--line-strong);border-radius:13px;padding:6px;min-width:178px;box-shadow:0 14px 36px rgba(0,0,0,.45);opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .16s,transform .16s;}
.lang-menu.open{opacity:1;transform:none;pointer-events:auto;}
.lang-opt{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 10px;border-radius:9px;color:var(--ink);font-size:14px;background:none;}
.lang-opt:active{background:var(--surface);}
.lang-opt.active{background:var(--surface);color:var(--accent);}
.lang-opt-flag{font-size:18px;}
.lang-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.lang-cell{display:flex;align-items:center;gap:9px;padding:11px 12px;border-radius:11px;border:1px solid var(--line);color:var(--ink);font-size:14px;background:var(--surface);text-align:left;}
.lang-cell.active{border-color:var(--accent);color:var(--accent);}
.lang-cell-flag{font-size:20px;}
.ht-head{display:flex;align-items:center;gap:9px;}
.ht-dot{width:11px;height:11px;border-radius:50%;background:var(--line-strong);flex:none;}
.ht-dot.on{background:#5FD0C4;box-shadow:0 0 10px rgba(95,208,196,.5);}
.ht-title{font-size:15px;font-weight:600;color:var(--ink);}
.ht-sub{font-size:13px;color:var(--ink-dim);margin:7px 0 12px;}
.btn.block{width:100%;display:block;}
.hg-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;}
.hg-title{font-size:15px;font-weight:600;color:var(--ink);}
.hg-cost{font-family:var(--mono);font-size:12px;color:var(--accent);flex:none;}
.hg-bar{height:8px;border-radius:99px;background:rgba(255,255,255,0.07);overflow:hidden;margin:10px 0;}
.hg-bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:99px;}
.hg-link{font-size:13px;color:var(--accent);font-weight:600;background:none;padding:2px 0;}
.intro-card{padding:18px 16px;}
.intro-title{font-family:var(--serif);font-size:20px;font-weight:600;color:var(--ink);margin-bottom:8px;}
.intro-text{font-size:14px;line-height:1.6;color:var(--ink-dim);margin:0 0 14px;}
.intro-btn{width:auto;display:inline-block;padding:9px 16px;}
.intro-card.aura{text-align:center;padding:24px 18px 22px;background:radial-gradient(circle at 50% -12%, var(--glow1), transparent 62%), var(--surface);}
.intro-logo{width:48px;height:48px;margin:0 auto 12px;display:block;}
.intro-card.aura .intro-title{font-family:var(--serif);font-size:clamp(18px,5.7vw,23px);white-space:nowrap;color:var(--ink);margin-bottom:9px;}
.intro-card.aura .intro-text{font-size:13.5px;color:var(--ink-dim);max-width:262px;margin:0 auto 16px;line-height:1.5;}
.btn.intro-btn-a{display:inline-block;width:auto;background:var(--accent);color:var(--accentInk);font-weight:600;padding:9px 22px;border-radius:999px;border:none;}
.home-fact{margin-top:2px;}
.assist-card{padding:16px;}
.assist-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:13px;}
.assist-ic{width:40px;height:40px;flex:none;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent2);}
.assist-ic svg{width:21px;height:21px;}
.assist-copy{min-width:0;}
.assist-title{font-size:15px;font-weight:600;color:var(--ink);}
.assist-text{font-size:13px;line-height:1.5;color:var(--ink-dim);margin:4px 0 0;}
.hs-goal{margin-top:13px;padding-top:13px;border-top:1px solid var(--line);}
.hs-goal .hg-top{display:flex;align-items:baseline;gap:8px;}
.hg-glabel{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim2);font-weight:700;flex:none;}
.hs-goal .hg-title{flex:1;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hs-goal .hg-cost{flex:none;}

/* ---- quick-access menu config (drag reorder) ---- */
.navcfg-active{padding:7px;display:flex;flex-direction:column;gap:7px;}
.navcfg-row{display:flex;align-items:center;gap:11px;padding:10px 10px;}
.navcfg-active .navcfg-row{background:var(--surface-2);border-radius:10px;cursor:grab;touch-action:pan-y;transition:transform .13s ease,box-shadow .13s ease;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
@keyframes navJiggle{0%{transform:rotate(-.6deg)}50%{transform:rotate(.6deg)}100%{transform:rotate(-.6deg)}}
.navcfg-active.reordering .navcfg-row:not(.dragging){animation:navJiggle .28s ease-in-out infinite;}
.lang-select{width:100%;padding:12px 40px 12px 14px;border-radius:11px;background:var(--surface-2);color:var(--ink);border:1px solid var(--line-strong);font-size:15px;font-family:inherit;appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27 viewBox=%270 0 12 8%27%3E%3Cpath d=%27M1 1l5 5 5-5%27 stroke=%27%238a8aa0%27 stroke-width=%272%27 fill=%27none%27 stroke-linecap=%27round%27/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;}
.lang-select:focus{outline:none;border-color:var(--accent);}
.navcfg-active .navcfg-row:active{cursor:grabbing;}
.navcfg-row.dragging{opacity:.98;transform:scale(1.04);cursor:grabbing;position:relative;z-index:5;box-shadow:0 14px 32px rgba(0,0,0,.5),inset 0 0 0 1.5px var(--accent);}
.navcfg-avail .navcfg-row+.navcfg-row{border-top:1px solid var(--line);}
.navcfg-handle{display:none;}
.navcfg-glyph{width:22px;height:22px;display:grid;place-items:center;color:var(--ink-dim);flex:none;}
.navcfg-glyph svg{width:19px;height:19px;}
.navcfg-row .ncfg-name{flex:1;font-size:14px;color:var(--ink);}
.navcfg-del{width:30px;height:30px;border-radius:8px;color:var(--ink-dim2);font-size:13px;flex:none;background:none;}
.navcfg-del:active{background:var(--surface);color:var(--accent2);}
.navcfg-add{width:30px;height:30px;border-radius:8px;background:var(--surface);border:1px solid var(--line-strong);color:var(--accent);font-size:18px;flex:none;}
.navcfg-add.off{color:var(--ink-dim2);border-color:var(--line);}

/* ---- content library ---- */
.ev-badge{font-size:10px;letter-spacing:.03em;text-transform:uppercase;padding:2px 7px;border-radius:6px;font-weight:700;flex:none;}
.ev-good{background:rgba(95,208,196,.16);color:#5FD0C4;}
.ev-mixed{background:rgba(224,162,75,.18);color:#E0A24B;}
.ev-none{background:rgba(92,134,201,.16);color:var(--ink-dim);}
.fact-card{display:block;width:100%;text-align:left;border-color:var(--line-strong);}
.fact-title{font-family:var(--serif);font-size:18px;font-weight:600;color:var(--ink);line-height:1.3;margin-bottom:8px;}
.content-feed{display:flex;flex-direction:column;gap:10px;}
.content-card{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 14px;transition:transform .1s;}
.content-card:active{transform:scale(.99);}
.cc-top{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.cc-cat{font-size:11px;font-weight:700;letter-spacing:.03em;}
.cc-title{font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.3;}
.cc-text{font-size:13px;color:var(--ink-dim);line-height:1.55;margin-top:6px;}
.read-head{margin-bottom:4px;}
.back-link{font-size:13px;color:var(--accent);font-weight:600;background:none;padding:2px 0;margin-bottom:8px;display:inline-block;}
.read-meta{display:flex;align-items:center;gap:8px;margin-bottom:9px;}
.read-title{font-family:var(--serif);font-size:23px;line-height:1.25;color:var(--ink);font-weight:600;}
.read-body{margin-top:14px;}
.read-text{font-size:15.5px;line-height:1.7;color:var(--ink-dim);margin:0;}
.read-lead{font-size:16.5px;line-height:1.6;color:var(--ink);font-weight:500;margin:0 0 12px;}
.read-text + .read-text{margin-top:11px;}
.read-sub{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim2);font-weight:700;margin:16px 0 9px;}
.read-points{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;}
.read-points li{font-size:14.5px;line-height:1.5;color:var(--ink-dim);}
.read-sources{margin-top:12px;}
.read-src{display:block;font-size:14px;color:var(--accent);padding:8px 0;border-bottom:1px solid var(--line);}
.read-src:last-child{border-bottom:none;}
.read-note{font-size:12px;color:var(--ink-dim2);margin:14px 2px 0;line-height:1.5;}
.btn.ghost.block{width:100%;margin-top:14px;}

/* ============================================================ TASKS */
.points-pill{font-family:var(--mono);font-weight:700;color:var(--accentInk);
  background:linear-gradient(120deg,var(--accent),var(--accent2));padding:7px 14px;border-radius:999px;font-size:14px;}
.task-panel{margin-top:14px;display:flex;flex-direction:column;gap:10px;}
.task-row,.reward-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 14px;}
.task-row.done{opacity:.6;}
.check{width:30px;height:30px;flex:none;border-radius:9px;border:2px solid var(--line-strong);display:grid;place-items:center;font-size:15px;color:var(--accentInk);}
.check.on{background:var(--accent);border-color:var(--accent);}
.task-main,.reward-main{flex:1;min-width:0;}
.task-title{font-size:15px;font-weight:600;}
.task-sub{font-size:12px;color:var(--ink-dim2);margin-top:2px;}
.task-del{color:var(--ink-dim2);width:30px;height:30px;border-radius:8px;font-size:13px;}
.task-row.closed{opacity:.6;}
.task-reopen{color:var(--ink-dim2);width:32px;height:32px;border-radius:8px;font-size:16px;flex:none;background:none;}
.task-reopen:active{background:var(--surface-2);color:var(--accent);}
.reward-row.claimed{opacity:.5;}
.claimed-tag{color:var(--accent);font-size:16px;}
.add-btn{width:100%;padding:14px;border-radius:var(--radius-sm);border:1px dashed var(--line-strong);color:var(--ink-dim);font-size:14px;margin-top:4px;}
.empty-hint{text-align:center;color:var(--ink-dim2);font-size:13px;padding:18px;}
.loading{text-align:center;color:var(--ink-dim2);padding:20px;font-size:13px;}

/* ============================================================ AUTH */
.auth-screen{min-height:100vh;display:grid;place-items:center;padding:24px;}
.auth-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px;
  background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:26px 22px;}
.auth-brand{display:flex;align-items:center;gap:10px;justify-content:center;}
.brand-mark.big{font-size:30px;}
.auth-title{font-family:var(--serif);font-size:26px;margin:0;}
.auth-tag{text-align:center;color:var(--ink-dim);font-size:13.5px;line-height:1.5;margin:0 0 4px;}
.auth-msg{text-align:center;font-size:12.5px;color:#E3956B;min-height:16px;}
.auth-msg.ok{color:var(--accent);}
.auth-swap{color:var(--ink-dim2);font-size:13px;text-decoration:underline;padding:6px;}

/* ============================================================ MODAL / TOAST */
.modal-overlay{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:24px;opacity:0;transition:opacity .2s;}
.modal-overlay.show{opacity:1;}
.modal-box{width:100%;max-width:360px;background:linear-gradient(180deg,var(--bg3),var(--bg2));border:1px solid var(--line-strong);border-radius:18px;padding:20px;transform:translateY(10px);transition:transform .2s;}
.modal-overlay.show .modal-box{transform:none;}
.modal-title{font-family:var(--serif);font-size:18px;margin:0 0 14px;}
.modal-msg{font-size:14.5px;line-height:1.5;margin:0 0 16px;}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px;}
.modal-actions .btn{flex:1;}
.modal-box .field{margin-bottom:12px;}
.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + var(--safe-b) + 16px);transform:translate(-50%,20px);
  background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);padding:11px 18px;border-radius:999px;
  font-size:13.5px;z-index:90;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap;box-shadow:0 8px 30px rgba(0,0,0,.4);}
.toast.show{opacity:1;transform:translate(-50%,0);}
.toast.err{border-color:#C25A5A;}

.spinner{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:10px auto;}
@keyframes spin{to{transform:rotate(360deg);}}
.error-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;text-align:center;color:var(--ink-dim);}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;transition-duration:.08s !important;}
  .orb{transition:transform var(--breath,1.6s) ease-in-out !important;}
}

/* ============================================================
   v2 additions: SVG icons, per-tab themes, sliders, analytics
   ============================================================ */

/* ---- distinct per-tab themes ---- */
body[data-theme="freq"]{--accent:var(--c-breath);--accent2:var(--c-breath);--accent-soft:var(--c-breath-soft);}

/* ---- icons ---- */
.ic{width:24px;height:24px;display:block;}
.nav-glyph{display:grid;place-items:center;height:24px;}
.nav-glyph .ic{width:23px;height:23px;color:inherit;}
.nav-item{color:var(--ink-dim2);transition:color .2s;}
.nav-item.active{color:var(--accent);}
.nav-item.active .nav-glyph .ic{filter:drop-shadow(0 0 6px var(--glow1));}

/* ---- home tiles: SVG + tactile depth ---- */
.tile-glyph .ic{width:25px;height:25px;}
.tile-go{display:grid;place-items:center;}
.tile-go .ic{width:18px;height:18px;color:var(--ink-dim2);fill:var(--ink-dim2);}
.tile{
  box-shadow:0 8px 22px rgba(0,0,0,.20);
  transition:transform .15s cubic-bezier(.2,.7,.2,1), box-shadow .2s, border-color .2s, background .2s;
}
.tile:active{
  transform:scale(.955);
  box-shadow:0 1px 3px rgba(0,0,0,.35), inset 0 2px 10px rgba(0,0,0,.28);
  border-color:var(--line-strong);
}
.tile:active .tile-glyph{transform:scale(.92);}
.tile-glyph{transition:transform .15s;}
@media(hover:hover){ .tile:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.28);} }
.tile:active .tile-go .ic{transform:translateX(2px);}

/* ---- player icons ---- */
.play-btn .ic{width:30px;height:30px;fill:var(--accentInk);stroke:none;}
.sheet-close .ic{width:16px;height:16px;color:var(--ink-dim2);}

/* ---- sliders (range) ---- */
.slider-row{padding:13px 0;border-bottom:1px solid var(--line);}
.slider-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;}
.slider-label{font-size:14px;}
.slider-val{font-family:var(--mono);color:var(--accent);font-size:14px;}
.slider-input{width:100%;-webkit-appearance:none;appearance:none;height:5px;border-radius:3px;
  background:var(--line-strong);outline:none;}
.slider-input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 5px var(--glow1);cursor:pointer;}
.slider-input::-moz-range-thumb{width:24px;height:24px;border:none;border-radius:50%;background:var(--accent);}
.wh-config .slider-row{border-bottom:1px solid var(--line);}
.wh-config .slider-row:last-of-type{border-bottom:1px solid var(--line);}
.wh-action{margin-top:14px;min-width:200px;}

/* ---- analyze button ---- */
.analyze-btn{display:inline-flex;align-items:center;gap:7px;background:var(--surface);
  border:1px solid var(--line-strong);color:var(--ink);border-radius:999px;padding:9px 15px;font-size:13px;font-weight:600;}
.analyze-btn .ic{width:17px;height:17px;color:var(--accent);}
.analyze-btn:active{transform:scale(.96);}

/* ---- analytics page ---- */
.an-controls{display:flex;flex-direction:column;gap:14px;margin:6px 0 18px;}
.an-control{display:flex;flex-direction:column;gap:8px;}
.an-chip-row{display:flex;gap:8px;flex-wrap:wrap;}
.an-chip{padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-dim);font-size:13px;}
.an-chip.on{background:var(--accent);color:var(--accentInk);border-color:transparent;font-weight:600;}
.an-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px;}
.an-scard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 8px;text-align:center;}
.an-snum{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--accent);}
.an-slabel{font-size:11px;color:var(--ink-dim2);margin-top:3px;}
.an-chart{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 10px 10px;min-height:160px;}
.an-chart-title{font-size:12px;color:var(--ink-dim2);text-align:center;margin-bottom:8px;}
.an-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.an-svg{height:200px;display:block;}
.an-daterange{display:flex;flex-direction:column;}
.dr-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.dr-label{font-size:13px;color:var(--ink-dim);}
.date-in{flex:1;min-width:120px;padding:8px 10px;}
.an-allbtn{align-self:flex-start;margin-top:10px;}
.an-allbtn.active{background:rgba(227,184,115,0.16);border-color:var(--accent);color:var(--ink);}
#rs-print{display:none;}
.rp-h1{font-size:20px;font-weight:700;margin:0 0 2px;}
.rp-sub{font-size:12px;color:#555;margin-bottom:14px;}
.rp-h2{font-size:15px;font-weight:700;margin:16px 0 6px;border-bottom:1px solid #ccc;padding-bottom:3px;}
.rp-h3{font-size:12px;margin:10px 0 4px;color:#555;}
.rp-stats{font-size:13px;margin-bottom:8px;}
.rp-chart{margin:8px 0;}
.rp-chart svg{width:100%!important;height:auto!important;}
.rp-table{width:100%;border-collapse:collapse;font-size:11px;}
.rp-table th,.rp-table td{border:1px solid #ccc;padding:3px 6px;text-align:left;vertical-align:top;}
.rp-table th{background:#f0f0f0;}
.rp-table-wrap{overflow-x:auto;}
.exp-opt{display:flex;align-items:center;gap:11px;padding:10px 2px;font-size:15px;cursor:pointer;}
.exp-opt input{width:19px;height:19px;flex:none;accent-color:var(--accent);}
.rp-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;margin:4px 0 8px;}
.rp-leg{display:inline-flex;align-items:center;gap:5px;}
.rp-leg-dot{width:9px;height:9px;border-radius:2px;display:inline-block;}
@media print{
  body>*{display:none!important;}
  #rs-print{display:block!important;position:static;background:#fff;color:#000;padding:4px 2px;font-family:var(--sans);}
  #rs-print *{color:#000;}
  #rs-print .an-svg text{fill:#333;}
  #rs-print .an-svg .an-grid{stroke:#ccc;}
  .rp-table tr{page-break-inside:avoid;}
}
.an-grid{stroke:var(--line);stroke-width:1;}
.an-ylabel{fill:var(--ink-dim2);font-size:9px;font-family:var(--mono);}
.an-xlabel{fill:var(--ink-dim2);font-size:8px;font-family:var(--mono);text-anchor:middle;}
.an-bar{transition:height .3s;}
.an-bytype{margin-top:18px;}
.bt-row{display:flex;align-items:center;gap:10px;margin-bottom:9px;}
.bt-label{font-size:13px;width:64px;flex:none;color:var(--ink-dim);}
.bt-track{flex:1;height:10px;background:var(--surface-2);border-radius:999px;overflow:hidden;}
.bt-fill{height:100%;border-radius:999px;transition:width .4s;min-width:2px;}
.bt-val{font-family:var(--mono);font-size:12px;color:var(--ink-dim);width:48px;text-align:right;flex:none;}

/* brand mark stays gold regardless of theme accent for identity */
.brand-mark{color:var(--accent);}
.an-bar{fill:var(--accent);transition:height .3s;}
.an-bar.zero{fill:var(--line-strong);}

/* ---- enable-sound banner ---- */
.audio-banner{
  position:fixed; left:50%; top:calc(var(--top-h) + 8px); transform:translateX(-50%);
  z-index:70; display:flex; align-items:center; gap:9px;
  background:linear-gradient(120deg,var(--accent),var(--accent2)); color:var(--accentInk);
  border-radius:999px; padding:11px 18px; font-size:14px; font-weight:700;
  box-shadow:0 8px 26px var(--glow1); max-width:calc(100% - 28px);
  animation:abIn .35s ease, abPulse 2.4s ease-in-out .4s infinite;
}
.audio-banner .ab-ic{font-size:16px;}
.audio-banner:active{transform:translateX(-50%) scale(.96);}
.audio-banner.hide{opacity:0;transform:translateX(-50%) translateY(-12px);transition:opacity .3s,transform .3s;animation:none;}
@keyframes abIn{from{opacity:0;transform:translateX(-50%) translateY(-12px);}to{opacity:1;transform:translateX(-50%);}}
@keyframes abPulse{0%,100%{box-shadow:0 8px 26px var(--glow1);}50%{box-shadow:0 8px 34px var(--accent);}}
@media (prefers-reduced-motion:reduce){ .audio-banner{animation:abIn .2s ease;} }

/* ---- frequencies as YouTube Music links ---- */
.freq-card{display:flex;align-items:stretch;gap:0;padding:0;overflow:hidden;}
.freq-main{display:flex;align-items:center;gap:14px;flex:1;min-width:0;padding:14px;text-decoration:none;color:inherit;}
.freq-main:active{background:rgba(255,255,255,0.04);}
.freq-name{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;}
.yt-tag{font-size:10px;color:var(--accent);font-weight:700;white-space:nowrap;letter-spacing:.02em;}
.freq-log{flex:none;width:50px;align-self:stretch;display:grid;place-items:center;color:var(--ink-dim2);
  border-left:1px solid var(--line);background:transparent;}
.freq-log .ic{width:20px;height:20px;}
.freq-log:active{background:var(--surface-2);color:var(--accent);}

/* ---- "open in YouTube Music" button ---- */
.yt-music-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:14px;margin:8px 0 4px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);
  color:var(--ink);font-size:14px;font-weight:600;text-decoration:none;background:var(--surface);}
.yt-music-btn:active{transform:scale(.985);background:var(--surface-2);}

/* ============================================================
   v3: sections, detail pages, info cards, links
   ============================================================ */
/* frequency list card (navigates to detail) */
.freq-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;transition:transform .12s,border-color .2s;}
.freq-card:active{transform:scale(.99);border-color:var(--line-strong);}
.freq-meta{flex:1;min-width:0;}
.freq-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none;}
.freq-more{font-size:11px;color:var(--accent);font-weight:700;white-space:nowrap;}

/* back button */
.back-btn{background:none;color:var(--ink-dim);font-size:13px;padding:8px 2px;margin-bottom:4px;}
.back-btn:active{color:var(--accent);}

/* detail header */
.detail-head{padding:4px 2px 14px;}
.detail-hz{font-family:var(--mono);color:var(--accent);font-size:15px;font-weight:700;}
.detail-title{font-family:var(--serif);font-size:28px;margin:4px 0 10px;line-height:1.1;}
.detail-tags{display:flex;gap:8px;align-items:center;}
.detail-tag{font-size:11px;color:var(--ink-dim);background:var(--surface-2);padding:4px 11px;border-radius:999px;}

/* info card */
.info-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px;}
.info-lead{font-size:15.5px;font-weight:600;margin:0 0 8px;line-height:1.45;}
.info-text{font-size:13.5px;color:var(--ink-dim);line-height:1.6;margin:0;}
.info-note{display:flex;gap:8px;margin-top:12px;padding:10px 12px;background:var(--surface-2);border-radius:10px;font-size:12.5px;color:var(--ink-dim);line-height:1.5;}
.info-note.headphones{color:var(--ink);}
.info-note-ic{flex:none;}
.benefit-list{display:flex;flex-direction:column;gap:9px;margin-top:14px;}
.benefit{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink);}
.benefit-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none;}

/* YouTube Music link list */
.link-list{display:flex;flex-direction:column;gap:9px;margin-bottom:16px;}
.yt-link{display:flex;align-items:center;justify-content:space-between;background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:14px 16px;
  text-decoration:none;color:var(--ink);font-size:14px;font-weight:600;}
.yt-link:active{transform:scale(.99);background:var(--surface-2);}
.yt-link-go{color:var(--accent);font-size:13px;}

/* pattern practice */
.pattern-badge{display:inline-block;font-family:var(--mono);font-size:13px;color:var(--accent);
  background:var(--surface-2);padding:7px 15px;border-radius:999px;margin-top:8px;}
.wh-est{text-align:center;font-size:12px;color:var(--ink-dim2);padding:6px 0;}

/* ---- frequency list card (final, simplified) ---- */
.freq-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px;transition:transform .12s,border-color .2s;}
.freq-card:active{transform:scale(.985);border-color:var(--accent);}
.freq-hz{font-family:var(--mono);font-weight:700;color:var(--accent);font-size:15px;min-width:72px;flex:none;}
.freq-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;align-items:flex-start;}
.freq-name{font-weight:600;font-size:16px;}
.freq-meta .freq-badge{font-size:10px;}
.freq-more{flex:none;color:var(--accent);font-weight:700;font-size:13px;white-space:nowrap;}

/* ============================================================
   Assistant
   ============================================================ */
.assistant-fab{
  position:fixed; right:16px; bottom:calc(var(--nav-h) + var(--safe-b) + 16px); z-index:75;
  width:54px; height:54px; border-radius:50%;
  background:var(--c-breath); color:var(--accentInk);
  font-size:22px; display:grid; place-items:center; box-shadow:0 8px 24px var(--glow1);
  transition:transform .15s, opacity .2s;
}
.assistant-fab:active{transform:scale(.92);}
.assistant-fab svg{width:26px;height:26px;}
.assistant-fab.hide{opacity:0;pointer-events:none;transform:scale(.6);}

.assistant-panel{
  position:fixed; left:0; right:0; bottom:0; z-index:78;
  max-width:680px; margin:0 auto; height:min(76vh,640px);
  background:linear-gradient(180deg,var(--bg3),var(--bg1));
  border-top:1px solid var(--line-strong); border-radius:22px 22px 0 0;
  display:flex; flex-direction:column; transform:translateY(102%);
  transition:transform .3s cubic-bezier(.2,.7,.2,1); box-shadow:0 -16px 50px rgba(0,0,0,.16);
  padding-bottom:var(--safe-b);
}
.assistant-panel.show{transform:translateY(0);}
.assistant-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 8px;}
.assistant-title{font-family:var(--serif);font-size:18px;}
.assistant-close{width:34px;height:34px;border-radius:50%;background:var(--surface);color:var(--ink-dim2);font-size:15px;}
.assistant-msgs{flex:1;overflow-y:auto;padding:8px 16px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch;}
.amsg{display:flex;flex-direction:column;gap:6px;max-width:88%;}
.amsg.user{align-self:flex-end;align-items:flex-end;}
.amsg.bot{align-self:flex-start;}
.amsg-bubble{padding:11px 14px;border-radius:16px;font-size:14px;line-height:1.5;}
.amsg.bot .amsg-bubble{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:5px;}
.amsg.user .amsg-bubble{background:var(--accent);color:var(--accentInk);border-bottom-right-radius:5px;font-weight:500;}
.amsg-actions{display:flex;flex-wrap:wrap;gap:7px;}
.amsg-action{font-size:12.5px;font-weight:600;color:var(--accent);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;padding:7px 13px;}
.amsg-action:active{transform:scale(.96);}
.assistant-chips{display:flex;gap:8px;overflow-x:auto;padding:6px 16px 10px;-webkit-overflow-scrolling:touch;}
.assistant-chip{flex:none;font-size:12.5px;color:var(--ink-dim);background:var(--surface);border:1px solid var(--line-strong);border-radius:999px;padding:8px 13px;white-space:nowrap;}
.assistant-chip:active{border-color:var(--accent);color:var(--ink);}
.assistant-inputrow{display:flex;gap:8px;padding:10px 16px 14px;border-top:1px solid var(--line);}
.assistant-input{flex:1;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);border-radius:999px;padding:12px 16px;font-size:15px;}
.assistant-input:focus{outline:2px solid var(--accent);}
.assistant-send{width:46px;height:46px;flex:none;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--accentInk);font-size:20px;}
.assistant-send:active{transform:scale(.94);}

.app-ver{text-align:center;color:var(--ink-dim2);font-size:11px;opacity:.5;padding:18px 0 4px;font-family:var(--mono);}

/* selected day in calendar (distinct from today) */
.cal-cell.selected{ background:var(--accent-soft); border-color:var(--accent); box-shadow:inset 0 0 0 2px var(--accent); }
.cal-cell.selected .cal-day{ color:var(--ink); font-weight:700; }
.cal-cell.selected.today .cal-day{ color:var(--accent); }

/* assistant multi-chat */
.assistant-icon{ width:34px; height:34px; border-radius:50%; background:var(--surface); color:var(--ink-dim2); font-size:15px; display:grid; place-items:center; }
.assistant-icon:active{ color:var(--accent); }
.assistant-chat{ display:flex; flex-direction:column; flex:1; min-height:0; }
.assistant-chat.hide, .assistant-list.hide{ display:none; }
.assistant-list{ display:flex; flex-direction:column; flex:1; min-height:0; overflow-y:auto; padding:8px 16px 16px; gap:8px; -webkit-overflow-scrolling:touch; }
.thread-new{ width:100%; padding:13px; border-radius:var(--radius-sm); border:1px dashed var(--line-strong); color:var(--accent); font-weight:600; font-size:14px; background:transparent; }
.thread-new:active{ background:var(--surface); }
.thread-rows{ display:flex; flex-direction:column; gap:8px; }
.thread-row{ display:flex; align-items:center; gap:6px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm); padding:4px 6px 4px 4px; }
.thread-row.active{ border-color:var(--accent); }
.thread-open{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:2px; padding:10px 12px; text-align:left; background:transparent; color:inherit; }
.thread-title{ font-size:14px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.thread-date{ font-size:11px; color:var(--ink-dim2); }
.thread-act{ flex:none; width:38px; height:38px; border-radius:10px; background:transparent; color:var(--ink-dim2); font-size:15px; }
.thread-act:active{ background:var(--surface-2); color:var(--accent); }

/* exercises + books tiles */
.t-ex .tile-glyph{color:#E8835A;} .t-ex{--tileglow:rgba(232,131,90,0.10);}
.t-book .tile-glyph{color:#5C86C9;} .t-book{--tileglow:rgba(92,134,201,0.10);}

/* hold timer (exercises) */
.hold-timer{display:flex;flex-direction:column;align-items:center;gap:6px;margin:14px 0;}
.cold-phase{font-size:14px;color:var(--ink-dim);}

/* books page */
.section-label2{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim2);font-weight:700;margin:18px 2px 10px;}
.books-total{font-size:13px;color:var(--ink-dim);background:rgba(92,134,201,0.08);border:1px solid var(--line);border-radius:11px;padding:10px 13px;}
.book-card{display:flex;align-items:center;gap:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;margin-bottom:10px;flex-wrap:wrap;}
.book-card.read{opacity:.82;}
.book-spine{width:38px;height:38px;border-radius:9px;flex:none;display:grid;place-items:center;color:#5C86C9;background:rgba(92,134,201,0.12);}
.book-spine svg{width:20px;height:20px;}
.book-main{flex:1;min-width:120px;}
.book-title{font-size:14.5px;font-weight:600;}
.book-meta{font-size:12px;color:var(--ink-dim);margin-top:2px;}
.book-min{font-size:11.5px;color:#5C86C9;margin-top:3px;font-family:var(--mono);}
.book-actions{display:flex;align-items:center;gap:8px;}
.btn.small{padding:7px 12px;font-size:12.5px;}
.icon-btn{width:34px;height:34px;border-radius:9px;background:var(--surface-2);color:var(--ink-dim2);font-size:14px;display:grid;place-items:center;}
.icon-btn:active{color:var(--accent);}
.dot.d-ex{background:#E8835A;}

/* ===== Розвиток page ===== */
.t-dev .tile-glyph{color:#E3B873;} .t-dev{--tileglow:rgba(227,184,115,0.12);}
.persona{display:flex;align-items:center;gap:14px;}
.pavatar{width:60px;height:60px;border-radius:50%;flex:none;display:grid;place-items:center;font-family:var(--serif);font-size:24px;font-weight:700;color:#170F2B;background:conic-gradient(from 210deg,#E8835A,#5FD0C4,#5C86C9,#E8835A);box-shadow:0 6px 18px rgba(0,0,0,.4);}
.persona-info{flex:1;min-width:0;}
.persona-name{font-family:var(--serif);font-size:19px;}
.persona-meta{font-size:12.5px;color:var(--ink-dim);margin-top:2px;}
.persona-class{display:inline-block;margin-top:6px;font-size:11px;font-weight:700;color:var(--accent);background:rgba(227,184,115,0.12);border:1px solid var(--line-strong);padding:4px 10px;border-radius:999px;}
.edit-btn{font-size:12px;color:var(--ink-dim2);align-self:flex-start;background:none;}
.wheel-wrap{display:flex;flex-direction:column;align-items:center;}
.dev-wheel{max-width:300px;}
.sectors{display:flex;gap:14px;margin-top:8px;flex-wrap:wrap;justify-content:center;}
.sct{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-dim);}
.swatch{width:11px;height:11px;border-radius:3px;display:inline-block;}
.will-card{display:flex;align-items:center;gap:13px;}
.will-ic{width:46px;height:46px;border-radius:13px;flex:none;display:grid;place-items:center;color:var(--accent);background:rgba(227,184,115,0.12);}
.will-ic svg{width:24px;height:24px;}
.will-main{flex:1;min-width:0;}
.will-top{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.will-title{font-weight:600;font-size:15px;}
.will-rank{font-size:12px;color:var(--ink-dim);}
.will-bar{height:7px;border-radius:99px;background:rgba(255,255,255,0.07);margin-top:8px;overflow:hidden;}
.will-bar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),#F0CE96);}
.will-next{font-size:12px;color:var(--accent);font-weight:600;margin-top:6px;}
.will-sub{font-size:11.5px;color:var(--ink-dim);margin-top:6px;}
.will-mult{flex:none;text-align:center;background:rgba(227,184,115,0.12);border:1px solid var(--line-strong);border-radius:12px;padding:8px 11px;}
.will-mult b{font-family:var(--mono);font-size:18px;color:var(--accent);display:block;line-height:1;}
.will-mult span{font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-dim2);}
.grp{font-size:12px;font-weight:700;color:var(--ink-dim);margin:2px 0 6px;display:flex;align-items:center;gap:7px;letter-spacing:.04em;}
.brow{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line);}
.brow:last-child{border-bottom:none;}
.bdot{width:10px;height:10px;border-radius:50%;flex:none;}
.bn{font-size:14px;font-weight:600;flex:none;width:104px;}
.bbar{flex:1;height:7px;border-radius:99px;background:rgba(255,255,255,0.07);overflow:hidden;}
.bbar>i{display:block;height:100%;border-radius:99px;}
.blv{font-family:var(--mono);font-size:12px;color:var(--ink-dim);flex:none;width:38px;text-align:right;}
.bdet{flex:none;font-size:12px;color:var(--accent);font-weight:600;background:none;padding-left:2px;}
.contrib{display:flex;flex-direction:column;}
.crow{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px;}
.crow:last-child{border-bottom:none;}
.cact{flex:none;width:88px;font-weight:600;}
.cbars{flex:1;display:flex;height:18px;border-radius:6px;overflow:hidden;border:1px solid var(--line);}
.cseg{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#11101a;white-space:nowrap;}
/* branch detail */
.stat-grid{display:flex;gap:18px;flex-wrap:wrap;}
.sg b{display:block;font-family:var(--mono);font-size:20px;color:var(--ink);}
.sg span{font-size:12px;color:var(--ink-dim);}
.feeds{font-size:12.5px;color:var(--ink-dim);background:rgba(95,208,196,0.07);border:1px solid var(--line);border-radius:11px;padding:11px 13px;margin-bottom:6px;line-height:1.5;}
.tree{position:relative;}
.node{display:flex;gap:14px;align-items:flex-start;position:relative;padding-bottom:18px;}
.node:last-child{padding-bottom:0;}
.node .rail{position:absolute;left:14px;top:30px;bottom:-2px;width:2px;background:var(--line-strong);}
.node:last-child .rail{display:none;}
.knob{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;z-index:1;border:2px solid var(--line-strong);background:var(--surface-2);color:var(--ink-dim2);}
.knob .ic{width:16px;height:16px;}
.node.done .knob{background:var(--accent);border-color:var(--accent);color:var(--accentInk);}
.node.current .knob{border-color:var(--accent);color:var(--accent);}
.ninfo{flex:1;padding-top:3px;}
.ntitle{font-size:14px;font-weight:600;}
.node.locked .ntitle{color:var(--ink-dim2);}
.ncrit{font-size:12px;color:var(--ink-dim);margin-top:2px;}
.ic{stroke:currentColor;fill:none;}

/* topbar gear + settings toggles */
.topbar-actions{display:flex;align-items:center;gap:6px;}
.iconbtn-top{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-dim);font-size:17px;background:none;}
.iconbtn-top:active{color:var(--accent);}

/* ---- hamburger drawer ---- */
.topbar-left{display:flex;align-items:center;gap:4px;}
.hamburger{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:var(--ink-dim);font-size:20px;background:none;}
.hamburger:active{background:var(--surface);color:var(--accent);}
.drawer-root{position:fixed;inset:0;z-index:85;pointer-events:none;}
.drawer-overlay{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .4s ease;}
.drawer{position:absolute;top:0;left:0;bottom:0;width:82%;max-width:322px;background:var(--card);border-right:1px solid var(--line-strong);transform:translateX(-101%);transition:transform .42s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top,0px) + 12px) 0 calc(var(--safe-b) + 14px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;box-shadow:0 0 40px rgba(0,0,0,.18);}
.drawer-root.open{pointer-events:auto;}
.drawer-root.open .drawer-overlay{opacity:1;}
.drawer-root.open .drawer{transform:translateX(0);}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:6px 16px 12px;}
.drawer-head .brand-name{font-size:20px;color:var(--accent);}
.drawer-close{width:36px;height:36px;border-radius:11px;color:var(--ink-dim);font-size:15px;background:none;}
.drawer-close:active{background:var(--surface);}
.drawer-list{display:flex;flex-direction:column;padding:2px 10px;gap:1px;}
.drawer-item{display:flex;align-items:center;gap:13px;padding:12px 12px;border-radius:12px;color:var(--ink);font-size:15px;text-align:left;width:100%;background:none;}
.drawer-item:active{background:var(--surface);}
.drawer-item.active{background:var(--surface);color:var(--accent);}
.drawer-glyph{width:22px;height:22px;display:grid;place-items:center;color:var(--ink-dim);flex:none;font-size:16px;}
.drawer-item.active .drawer-glyph{color:var(--accent);}
.drawer-glyph svg{width:20px;height:20px;}
.drawer-section{padding:12px 22px 6px;margin-top:8px;border-top:1px solid var(--line);}
.drawer-section-title{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-dim2);font-weight:700;margin-bottom:9px;}
.drawer-langs{display:flex;flex-wrap:wrap;gap:7px;}
.drawer-lang{padding:6px 12px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-dim);font-size:13px;background:none;}
.drawer-lang.active{background:var(--accent);color:var(--accentInk);border-color:transparent;}
.drawer-foot{padding:10px 10px 0;margin-top:8px;border-top:1px solid var(--line);}
.nav-cfg-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);}
.nav-cfg-row:last-child{border-bottom:none;}
.ncfg-name{font-size:15px;font-weight:500;}
.toggle{width:46px;height:28px;border-radius:99px;background:var(--surface-2);border:1px solid var(--line-strong);position:relative;transition:background .15s;flex:none;}
.toggle.on{background:linear-gradient(120deg,var(--accent),var(--accent2));border-color:transparent;}
.toggle-knob{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.toggle.on .toggle-knob{left:22px;}

/* modal form column */
.form-col{display:flex;flex-direction:column;gap:10px;margin:14px 0;}
.form-col .input{width:100%;}

/* ===== Бібліотека (redesign) ===== */
.add-book{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:15px;border-radius:var(--radius);
  border:1px solid var(--line-strong);background:linear-gradient(135deg,rgba(92,134,201,0.14),rgba(95,208,196,0.08));
  color:var(--ink);font-size:15px;font-weight:600;margin-bottom:14px;}
.add-book:active{transform:scale(.99);}
.add-plus{font-size:18px;color:#5C86C9;font-weight:700;}
.read-total{display:flex;align-items:center;gap:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:6px;}
.rt-ic{width:42px;height:42px;border-radius:11px;flex:none;display:grid;place-items:center;color:#5C86C9;background:rgba(92,134,201,0.12);}
.rt-ic svg{width:22px;height:22px;}
.rt-num{font-family:var(--mono);font-size:20px;font-weight:600;}
.rt-lbl{font-size:12px;color:var(--ink-dim);margin-top:2px;}
.book-empty{display:flex;align-items:center;gap:10px;color:var(--ink-dim2);font-size:13px;padding:14px 4px;}
.be-ic{opacity:.5;} .be-ic svg{width:20px;height:20px;color:var(--ink-dim2);}
.book-card{display:flex;align-items:center;gap:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px;margin-bottom:10px;flex-wrap:wrap;}
.book-card.read{opacity:.85;}
.book-cover{width:40px;height:54px;border-radius:7px;flex:none;display:grid;place-items:center;color:rgba(255,255,255,0.92);box-shadow:0 3px 10px rgba(0,0,0,.35);border:1px solid rgba(255,255,255,0.12);}
.book-cover svg{width:20px;height:20px;}
.book-main{flex:1;min-width:130px;}
.book-title{font-size:14.5px;font-weight:600;line-height:1.25;}
.book-meta{font-size:12px;color:var(--ink-dim);margin-top:3px;}
.book-min{font-size:11.5px;color:#5C86C9;margin-top:4px;font-family:var(--mono);}
.book-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.read-tag{font-size:11px;font-weight:700;color:#5FD0C4;background:rgba(95,208,196,0.13);padding:3px 9px;border-radius:99px;}
.icon-btn svg{width:15px;height:15px;}

/* profile edit */
.av-row{display:flex;align-items:center;gap:16px;}
.av-preview{width:80px;height:80px;border-radius:50%;flex:none;background:conic-gradient(from 210deg,#E8835A,#5FD0C4,#5C86C9,#E8835A);background-size:cover;background-position:center;display:grid;place-items:center;box-shadow:0 6px 18px rgba(0,0,0,.4);overflow:hidden;}
.av-init{font-family:var(--serif);font-size:30px;font-weight:700;color:#170F2B;}
.av-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-start;}
.fld{display:flex;flex-direction:column;gap:5px;}
.fld-label{font-size:12px;color:var(--ink-dim);font-weight:600;letter-spacing:.02em;}
textarea.input{resize:vertical;min-height:60px;font-family:inherit;}
select.input{appearance:none;-webkit-appearance:none;}

/* wheel legend (maps colors to branches) */
.wheel-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin-top:12px;}
.wl-item{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:5px 11px;font-size:12px;color:var(--ink);}
.wl-item:active{border-color:var(--line-strong);}
.wl-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.wl-name{font-weight:500;}
.wl-lv{font-family:var(--mono);font-size:11px;color:var(--ink-dim);display:inline-flex;align-items:baseline;gap:5px;}
.wl-xp{font-size:10px;color:var(--ink-dim2);}

/* base card (was missing — caused Розвиток/profile cards to collapse & overlap) */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:16px;
  margin-bottom:14px;
}
.card.wheel-wrap{padding-top:18px;padding-bottom:18px;}

.an-bar-seg{transition:opacity .15s ease;}
.an-legend{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:center;margin-top:12px;}
.an-leg{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-dim);}
.an-leg-dot{width:11px;height:11px;border-radius:3px;flex:none;}

/* ---- rozvytok: compact skills list, nav blocks, skill tree ---- */
.skills-list{display:flex;flex-direction:column;gap:2px;}
.nav-block{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;cursor:pointer;}
.nb-t{display:flex;flex-direction:column;gap:3px;min-width:0;}
.nb-title{font-size:15px;font-weight:600;color:var(--ink);}
.nb-sub{font-size:12px;color:var(--ink-dim);}
.nb-arrow{font-size:20px;color:var(--ink-dim2);flex:none;}
.nav-block:active{box-shadow:inset 0 0 0 2px var(--accent);}
.tree-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;margin-bottom:4px;}
.tree-node{position:relative;display:flex;align-items:center;gap:12px;padding:9px 0 9px 22px;}
.tree-node::before{content:"";position:absolute;left:5px;top:0;bottom:0;width:2px;background:var(--line);}
.tree-node:first-of-type::before{top:50%;}
.tree-node:last-of-type::before{bottom:50%;}
.tree-dot{position:absolute;left:0;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;border:2px solid var(--bg2);flex:none;}
.tree-lv{font-size:12px;color:var(--ink-dim2);min-width:70px;}
.tree-rank{font-size:14px;font-weight:600;color:var(--ink);}
/* ---- community ---- */
.bell{position:relative;width:38px;height:38px;border-radius:11px;color:var(--ink-dim);font-size:16px;display:grid;place-items:center;}
.bell:active{background:var(--surface-2);}
.bell-ic{display:grid;place-items:center;}
.bell .ic{width:20px;height:20px;stroke:currentColor;fill:none;}
.bell:active{background:var(--surface);}
.bell-badge{position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#E8835A;color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;line-height:1;}
.center-card{text-align:center;}
.big-emoji{font-size:40px;margin-bottom:4px;}
.cc-title{font-size:17px;font-weight:700;}
.inv-list{display:flex;flex-direction:column;gap:6px;}
.inv-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);}
.notif-row{width:100%;text-align:left;background:none;}
.notif-row.unread{background:var(--accent-soft);border-radius:10px;padding:9px 10px;border-bottom:none;}
.notif-row.unread .inv-txt b{color:var(--accent);}
.nt-arrow{margin-left:auto;color:var(--ink-dim2);font-size:18px;flex:none;}
.inv-row:last-child{border-bottom:none;}
.inv-txt{display:flex;flex-direction:column;gap:2px;min-width:0;}
.srch-res{display:flex;flex-direction:column;margin-top:8px;}
.srow{display:flex;align-items:center;gap:10px;padding:8px 0;}
.srow-name{flex:1;min-width:0;font-size:14px;}
.mavatar{width:34px;height:34px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-weight:700;color:var(--accent);flex:none;}
.mavatar.sm{width:26px;height:26px;font-size:12px;}
.mrow{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line);}
.mrow:last-child{border-bottom:none;}
.mmain{flex:1;min-width:0;}
.mname{font-size:14px;font-weight:600;}
.owner-tag{font-size:11px;color:var(--accent);flex:none;}
.feed-row{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--line);}
.comm-home .feed-row:last-child{border-bottom:none;}
.feed-name{font-weight:600;font-size:14px;}
.feed-info{margin-left:auto;font-size:12px;color:var(--ink-dim);}
.link-btn{font-size:13px;color:var(--accent);}
/* ---- challenges ---- */
.ch-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
.ch-chip{padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink-dim);font-size:13px;}
.ch-chip.on{border-color:var(--accent);color:var(--accent);background:var(--surface);}
.ch-bar{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin:9px 0 6px;}
.ch-bar>i{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .3s;}
.ch-card .cc-title{margin-bottom:2px;}
.ch-event{display:block;width:100%;text-align:left;margin-top:8px;background:var(--surface-2);border-radius:12px;padding:11px 12px;cursor:pointer;}
.ch-ev-name{font-weight:600;font-size:14px;}
.ch-how{line-height:1.45;padding:9px 11px;margin-top:8px;background:var(--surface-2);border-radius:10px;}
.feed-act{margin-left:8px;}
.lb-row{margin-top:10px;}
.lb-name{font-weight:600;}
.lb-val{white-space:nowrap;}
.mrow.tapable{width:100%;text-align:left;cursor:pointer;}
.mrow-arrow{margin-left:auto;color:var(--ink-dim2);font-size:20px;padding-left:8px;}
.news-row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line);}
.news-row:last-child{border-bottom:none;}
.news-main{min-width:0;}
.news-title{font-weight:600;}
.news-sub{margin-top:2px;}
.drawer-sub{max-height:0;overflow:hidden;transition:max-height .28s ease;}
.drawer-sub.open{max-height:340px;}
.drawer-subitem{padding-left:34px;}
.drawer-caret{margin-left:auto;font-size:17px;color:var(--accent);transition:transform .2s ease;}
.drawer-group.open .drawer-caret{transform:rotate(180deg);}
.note-more{color:var(--accent);white-space:nowrap;}
.ch-status{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap;flex:none;}
.ch-status.on{background:rgba(78,157,92,0.22);color:#7BD08A;}
.ch-status.off{background:var(--surface-2);color:var(--ink-dim2);}
.pose-img{background:#fff;border-radius:12px;margin-bottom:12px;padding:6px;display:flex;justify-content:center;align-items:center;}
.pose-img img{width:100%;max-width:300px;height:auto;display:block;}
.eyebrow{display:none;}
/* ---- day rating ---- */
.rate-slider-row{display:flex;align-items:center;gap:12px;margin-top:8px;}
.rate-slider{flex:1;-webkit-appearance:none;appearance:none;height:6px;border-radius:6px;background:linear-gradient(90deg,var(--accent-soft),var(--accent));outline:none;}
.rate-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:var(--ink);border:2px solid var(--accent);cursor:pointer;}
.rate-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--ink);border:2px solid var(--accent);cursor:pointer;}
.rate-val{min-width:34px;text-align:center;font-family:var(--serif);font-size:22px;font-weight:600;color:var(--accent);}
.rate-note{width:100%;margin-top:6px;resize:vertical;min-height:52px;}
.cal-rate{display:block;font-size:9px;line-height:1;margin-top:2px;color:var(--accent);font-weight:700;}
.rate-detail-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;margin-bottom:10px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);font-weight:600;}
.daynote-score{font-family:var(--serif);font-size:40px;font-weight:600;color:var(--accent);}
.daynote-note{margin-top:10px;color:var(--ink-dim);line-height:1.5;white-space:pre-wrap;}
.note-row{display:block;width:100%;text-align:left;margin-top:8px;}
.note-date{font-weight:600;}
.note-score{color:var(--accent);font-weight:600;}
.note-excerpt{margin-top:4px;color:var(--ink-dim2);font-size:13px;}
/* ---- day rating v104: three slots (morning/noon/evening) ---- */
.rate-num{width:66px;flex:none;text-align:center;font-family:var(--serif);font-size:20px;font-weight:700;padding:6px 4px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);-moz-appearance:textfield;}
.rate-num::-webkit-outer-spin-button,.rate-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.rate-slot{padding:14px 14px 16px;margin-bottom:12px;}
.rate-slot>.rate-slider{width:100%;display:block;margin:2px 0 6px;}
.rate-slot-head{display:flex;align-items:center;gap:9px;margin-bottom:12px;}
.rate-slot-title{flex:1;font-weight:700;font-size:15px;}
.rate-dot{width:11px;height:11px;border-radius:50%;flex:none;background:var(--accent);}
.rate-slot.rm .rate-dot{background:var(--rate-morning);} .rate-slot.rm .rate-num{border-color:var(--rate-morning);color:var(--rate-morning);}
.rate-slot.rn .rate-dot{background:var(--rate-noon);} .rate-slot.rn .rate-num{border-color:var(--rate-noon);color:var(--rate-noon);}
.rate-slot.re .rate-dot{background:var(--rate-evening);} .rate-slot.re .rate-num{border-color:var(--rate-evening);color:var(--rate-evening);}
.rate-slider.rm{background:linear-gradient(90deg,var(--rate-morning-soft),var(--rate-morning));} .rate-slider.rm::-webkit-slider-thumb{border-color:var(--rate-morning);} .rate-slider.rm::-moz-range-thumb{border-color:var(--rate-morning);}
.rate-slider.rn{background:linear-gradient(90deg,var(--rate-noon-soft),var(--rate-noon));} .rate-slider.rn::-webkit-slider-thumb{border-color:var(--rate-noon);} .rate-slider.rn::-moz-range-thumb{border-color:var(--rate-noon);}
.rate-slider.re{background:linear-gradient(90deg,var(--rate-evening-soft),var(--rate-evening));} .rate-slider.re::-webkit-slider-thumb{border-color:var(--rate-evening);} .rate-slider.re::-moz-range-thumb{border-color:var(--rate-evening);}
/* home block */
.rate-home-chips{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
.rate-home-btn{flex:none;}
.rate-chip{flex:1;min-width:72px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px;border-radius:12px;background:var(--surface);border:1px solid var(--line);}
.rate-chip-l{font-size:11px;color:var(--ink-dim2);font-weight:600;}
.rate-chip-v{font-family:var(--serif);font-size:24px;font-weight:700;line-height:1;color:var(--ink);}
.rate-chip.rm .rate-chip-v{color:var(--rate-morning);} .rate-chip.rn .rate-chip-v{color:var(--rate-noon);} .rate-chip.re .rate-chip-v{color:var(--rate-evening);}
/* calendar day-detail rating */
.cal-rate-block{margin:2px 0 14px;}
.cal-rate-row{display:flex;gap:7px;flex-wrap:wrap;}
.cal-rate-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;background:var(--surface);border:1px solid var(--line);font-size:13px;}
.cal-rate-pill .crp-l{font-style:normal;color:var(--ink-dim2);font-size:11px;}
.cal-rate-pill .crp-v{font-style:normal;font-weight:700;}
.cal-rate-pill.rm{border-color:var(--rate-morning);} .cal-rate-pill.rm .crp-v{color:var(--rate-morning);}
.cal-rate-pill.rn{border-color:var(--rate-noon);} .cal-rate-pill.rn .crp-v{color:var(--rate-noon);}
.cal-rate-pill.re{border-color:var(--rate-evening);} .cal-rate-pill.re .crp-v{color:var(--rate-evening);}
/* chart legend, candles, spline */
.rate-legend{display:flex;gap:16px;justify-content:center;margin:2px 0 6px;flex-wrap:wrap;}
.rate-leg-it{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-dim);}
.rate-leg-dot{width:10px;height:10px;border-radius:3px;display:inline-block;}
.rate-leg-t{font-style:normal;}
.rate-candle{transition:opacity .15s ease;}
.rate-spline{fill:none;stroke:var(--ink-dim);stroke-width:1.4;opacity:.55;stroke-linecap:round;stroke-linejoin:round;}
/* ratings table */
.rate-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:4px;}
.rate-table{min-width:100%;border-collapse:collapse;font-size:13px;}
.rate-table th,.rate-table td{padding:7px 8px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);}
.rate-table th{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-dim2);font-weight:700;white-space:nowrap;}
.rate-table th.rm{color:var(--rate-morning);} .rate-table th.rn{color:var(--rate-noon);} .rate-table th.re{color:var(--rate-evening);}
.rate-table .rt-date{white-space:nowrap;}
.rate-table .rt-v{font-weight:700;font-size:15px;}
.rate-table .rt-v.muted{font-weight:400;color:var(--ink-dim2);}
.rate-table .rt-n{margin-top:3px;color:var(--ink-dim2);font-size:12px;line-height:1.35;width:200px;max-width:200px;white-space:normal;}
#rs-print .rate-spline{stroke:#888;} #rs-print .rate-table th,#rs-print .rate-table td{border-color:#ddd;}
/* report table: fit + equal rating columns + wrapping */
#rs-print .rate-table{table-layout:fixed;width:100%;min-width:0;}
#rs-print .rate-table th,#rs-print .rate-table td{white-space:normal;overflow-wrap:anywhere;word-break:break-word;vertical-align:top;padding:4px 6px;}
#rs-print .rate-table td:first-child,#rs-print .rate-table th:first-child{width:58px;}
#rs-print .rate-table .rt-n{width:auto;max-width:none;}
#rs-print .rp-table th,#rs-print .rp-table td{overflow-wrap:anywhere;word-break:break-word;}
/* ---- water intake (v105) ---- */
.water-card{text-align:center;}
.water-total-row{display:flex;align-items:baseline;justify-content:center;gap:8px;}
.water-total{font-family:var(--serif);font-size:44px;font-weight:700;line-height:1;color:var(--accent);}
.water-goal-lbl{font-size:14px;color:var(--ink-dim2);font-weight:600;}
.water-bar{margin:14px 0 6px;height:12px;border-radius:20px;background:var(--surface-2);overflow:hidden;}
.water-bar-fill{height:100%;border-radius:20px;background:linear-gradient(90deg,var(--accent-soft),var(--accent));transition:width .35s cubic-bezier(.22,1,.36,1);}
.water-pct{font-size:12px;color:var(--ink-dim2);font-weight:600;}
.water-presets{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 12px;}
.water-chip{flex:1;min-width:64px;padding:10px 6px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:700;font-size:15px;cursor:pointer;transition:border-color .15s,background .15s;}
.water-chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);}
.water-custom-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.water-custom{width:96px;flex:none;text-align:center;font-weight:700;-moz-appearance:textfield;}
.water-custom::-webkit-outer-spin-button,.water-custom::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.water-drink{font-size:17px;padding:15px;}
.water-actions{display:flex;gap:10px;margin-top:10px;justify-content:center;}
.water-goal-row{display:flex;align-items:center;gap:10px;}
.water-goal-input{width:96px;flex:none;text-align:center;font-weight:700;-moz-appearance:textfield;}
.water-goal-input::-webkit-outer-spin-button,.water-goal-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
/* calendar water indicators */
.cal-water-badge{display:block;font-size:9px;line-height:1;margin-top:2px;color:var(--c-cold);font-weight:700;}
.cal-water-row{display:flex;align-items:center;gap:8px;padding:10px 12px;margin:2px 0 12px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);font-weight:600;}
.cw-drop{display:inline-flex;width:18px;height:18px;color:var(--c-cold);flex:none;}
.cw-drop svg{width:18px;height:18px;}

/* ---- habits (bad-habit daily tracker) ---- */
.habit-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;}
.habit-title{font-weight:700;font-size:16px;min-width:0;overflow:hidden;text-overflow:ellipsis;}
.habit-tools{display:flex;gap:4px;flex:none;}
.habit-mini{width:30px;height:30px;border-radius:8px;background:var(--surface-2);color:var(--ink-dim);border:1px solid var(--line);font-size:13px;}
.habit-stats{display:flex;gap:8px;}
.habit-stat{flex:1;text-align:center;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:9px 4px;}
.habit-stat-v{font-family:var(--serif);font-size:22px;font-weight:700;line-height:1;color:var(--accent);}
.habit-stat-l{font-size:11px;color:var(--ink-dim2);margin-top:4px;}
.habit-toggle{display:flex;gap:8px;margin-top:12px;}
.habit-toggle .btn{flex:1;}
.habit-strip{display:flex;gap:3px;margin-top:12px;}
.habit-cell{flex:1;height:9px;border-radius:3px;background:var(--surface-2);border:1px solid var(--line);}
.habit-cell.clean{background:var(--accent);border-color:var(--accent);}
.habit-cell.used{background:#C25A5A;border-color:#C25A5A;}
.habit-strip-lbl{font-size:11px;color:var(--ink-dim2);margin-top:8px;}
.habits-home-list{margin-top:2px;}
.habit-home-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--line);}
.habit-home-row:first-child{border-top:none;}
.habit-home-name{font-weight:600;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.habit-home-btns{display:flex;gap:6px;flex:none;}
.hh-btn{min-width:46px;padding:7px 10px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-dim);font-weight:600;font-size:13px;}
.hh-btn.on-no{background:var(--accent);border-color:var(--accent);color:var(--accentInk);}
.hh-btn.on-yes{background:#C25A5A;border-color:#C25A5A;color:#fff;}

/* ---- habit sectors on calendar cells ---- */
.cal-habits{position:absolute;inset:0;z-index:0;pointer-events:none;}
.cal-habits .chs{flex:1;}
.cal-habits .chs.used{background:rgba(194,90,90,.30);}
.cal-cell>.cal-day,.cal-cell>.cal-dots,.cal-cell>.cal-rate{position:relative;z-index:1;}
.habit-since{margin-top:10px;font-size:12.5px;color:var(--ink-dim);}

/* ---- habits: milestones, editable strip, calendar legend ---- */
.habit-strip .habit-cell{cursor:pointer;}
.habit-ms{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap;}
.habit-ms-badge{font-weight:700;font-size:13px;color:var(--accent);}
.habit-ms-next{font-size:12px;color:var(--ink-dim2);}
.cal-hab-legend{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:center;margin:0 0 10px;font-size:11px;color:var(--ink-dim2);}
.cal-hab-legend .chl-lbl{font-weight:600;}

/* ---- home weekly summary ---- */
.week-grid{display:flex;gap:8px;}
.week-tile{flex:1;min-width:0;text-align:center;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:9px 4px;cursor:pointer;}
.week-v{font-family:var(--serif);font-size:19px;font-weight:700;line-height:1;color:var(--accent);}
.week-l{font-size:10px;color:var(--ink-dim2);margin-top:4px;}

