/* ==========================================================================
   LUNA — design tokens & palette system
   ========================================================================== */

:root{
  --font-display:'Outfit',sans-serif;
  --font-body:'Inter',sans-serif;

  --radius-xl:28px;
  --radius-lg:22px;
  --radius-md:16px;
  --radius-sm:12px;
  --radius-pill:999px;

  --nav-h:78px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);

  --spring:cubic-bezier(.34,1.56,.64,1);
  --spring-soft:cubic-bezier(.22,1,.36,1);
  --spring-snap:cubic-bezier(.5,1.8,.6,1);

  --dur-fast:160ms;
  --dur-med:280ms;
  --dur-slow:460ms;
}

/* ---- Palette: Terra (default) — warm clay + dusty rose ---- */
:root, [data-palette="terra"]{
  --bg:#EDE3DC;
  --surface:#F1E8E1;
  --surface-2:#E7DACF;
  --shadow-dark:#C9BAAC;
  --shadow-light:#FFFDF9;
  --ink:#3A322C;
  --ink-soft:#8A7C70;
  --ink-faint:#B3A69A;
  --accent:#A8647A;
  --accent-ink:#FBF2F0;
  --accent-soft:#E7CDD3;
  --accent-2:#7E9484;
  --line-track:#E1D3C6;
  --danger:#B85450;
}

/* ---- Palette: Bloom — deeper rose, more saturated ---- */
[data-palette="bloom"]{
  --bg:#F1E4E6;
  --surface:#F6EBEC;
  --surface-2:#EAD5D9;
  --shadow-dark:#D4B7BC;
  --shadow-light:#FFFDFD;
  --ink:#3C2A2E;
  --ink-soft:#8E6B72;
  --ink-faint:#BC9BA1;
  --accent:#B24C63;
  --accent-ink:#FCF0F2;
  --accent-soft:#EBC7CE;
  --accent-2:#8A7C4F;
  --line-track:#E9D0D4;
  --danger:#AE4441;
}

/* ---- Palette: Moss — sage & clay, calm/earthy ---- */
[data-palette="moss"]{
  --bg:#E7E9DE;
  --surface:#EEEFE5;
  --surface-2:#DCE0CE;
  --shadow-dark:#BFC4AC;
  --shadow-light:#FBFCF6;
  --ink:#31352A;
  --ink-soft:#7C8168;
  --ink-faint:#A7AB94;
  --accent:#6F8F63;
  --accent-ink:#F3F7EF;
  --accent-soft:#D3DFC6;
  --accent-2:#A8714F;
  --line-track:#D8DCC7;
  --danger:#B5544A;
}

/* ---- Palette: Dusk — plum & mauve, moody-premium ---- */
[data-palette="dusk"]{
  --bg:#E7E1E6;
  --surface:#EEE8EC;
  --surface-2:#DCD2DB;
  --shadow-dark:#BDB0BB;
  --shadow-light:#FBF8FA;
  --ink:#332C36;
  --ink-soft:#867589;
  --ink-faint:#AFA0B2;
  --accent:#77577F;
  --accent-ink:#F6F1F7;
  --accent-soft:#D8C6DB;
  --accent-2:#A87D5C;
  --line-track:#DDD0DE;
  --danger:#AD4E52;
}

/* ---- Palette: Sand — warm neutral amber, minimal ---- */
[data-palette="sand"]{
  --bg:#EFE7D8;
  --surface:#F5EFE2;
  --surface-2:#E4D8BF;
  --shadow-dark:#CCBE9F;
  --shadow-light:#FFFDF6;
  --ink:#392F22;
  --ink-soft:#8C7C5E;
  --ink-faint:#B6A583;
  --accent:#B07A3E;
  --accent-ink:#FBF4E6;
  --accent-soft:#E9D3AA;
  --accent-2:#7E8C6B;
  --line-track:#E5D7B8;
  --danger:#B0533D;
}

/* ---- Dark surfaces modifier ---- */
[data-dark="1"]{
  --bg:#242024;
  --surface:#2B262B;
  --surface-2:#332D33;
  --shadow-dark:#171417;
  --shadow-light:#3A343A;
  --ink:#F1E9E7;
  --ink-soft:#B6A9AC;
  --ink-faint:#7C6F72;
  --accent-ink:#2B1C20;
  --line-track:#3A333A;
}
[data-dark="1"][data-palette="terra"]{ --accent:#C98299; --accent-soft:#4A3438; --accent-2:#8FAE95; }
[data-dark="1"][data-palette="bloom"]{ --accent:#D07A8E; --accent-soft:#4A2E33; --accent-2:#A99A5F; }
[data-dark="1"][data-palette="moss"]{ --accent:#8FB07F; --accent-soft:#38412E; --accent-2:#C08F67; }
[data-dark="1"][data-palette="dusk"]{ --accent:#9C7BA4; --accent-soft:#3E3141; --accent-2:#C79A70; }
[data-dark="1"][data-palette="sand"]{ --accent:#D0A15E; --accent-soft:#453A26; --accent-2:#96A57D; }

/* ---- Reduced motion ---- */
[data-reduced-motion="1"] *{
  transition-duration:.01ms !important;
  animation-duration:.01ms !important;
}

/* ==========================================================================
   Reset & base
   ========================================================================== */

*,*::before,*::after{box-sizing:border-box;}
html,body{
  margin:0;padding:0;height:100%;
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior:none;
}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  transition:background var(--dur-med) var(--spring-soft), color var(--dur-med) var(--spring-soft);
}
button{font-family:inherit;color:inherit;background:none;border:none;cursor:pointer;-webkit-user-select:none;user-select:none;}
h1,h2,h3,p{margin:0;}
.hidden{display:none !important;}
img,svg{display:block;}

/* ==========================================================================
   Splash
   ========================================================================== */
.splash{
  position:fixed;inset:0;background:var(--bg);z-index:999;
  display:flex;align-items:center;justify-content:center;
  transition:opacity var(--dur-slow) var(--spring-soft), visibility var(--dur-slow);
}
.splash.hide{opacity:0;visibility:hidden;pointer-events:none;}
.splash-mark{width:88px;height:88px;position:relative;}
.splash-blob{
  width:100%;height:100%;border-radius:38% 62% 60% 40%/48% 42% 58% 52%;
  background:var(--accent);
  box-shadow:10px 10px 24px var(--shadow-dark), -10px -10px 24px var(--shadow-light);
  animation:blobPulse 1.6s var(--spring-soft) infinite;
}
@keyframes blobPulse{
  0%,100%{border-radius:38% 62% 60% 40%/48% 42% 58% 52%;transform:scale(1);}
  50%{border-radius:58% 42% 40% 60%/40% 58% 42% 60%;transform:scale(1.06);}
}

/* ==========================================================================
   Clay primitives
   ========================================================================== */

.clay-panel{
  background:var(--surface);
  border-radius:var(--radius-lg);
  padding:20px;
  box-shadow:9px 9px 20px var(--shadow-dark), -9px -9px 20px var(--shadow-light);
  margin-bottom:16px;
}

.clay-hero{
  background:var(--surface);
  border-radius:var(--radius-xl);
  padding:28px 24px 24px;
  box-shadow:11px 11px 26px var(--shadow-dark), -11px -11px 26px var(--shadow-light);
  margin-bottom:20px;
  text-align:center;
}
.clay-hero.compact{padding:22px 22px 20px;text-align:left;}

.clay-btn{
  display:flex;align-items:center;justify-content:center;
  width:100%;padding:16px 20px;
  border-radius:var(--radius-md);
  font-family:var(--font-display);
  font-weight:600;font-size:16px;
  background:var(--surface);
  box-shadow:6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), box-shadow var(--dur-fast) var(--spring-soft);
  margin-top:10px;
}
.clay-btn:active{transform:scale(.96);box-shadow:inset 4px 4px 10px var(--shadow-dark), inset -4px -4px 10px var(--shadow-light);}
.clay-btn.primary{background:var(--accent);color:var(--accent-ink);}
.clay-btn.ghost{background:transparent;box-shadow:none;color:var(--ink-soft);}
.clay-btn.danger{background:var(--danger);color:#fff;}

.text-btn{
  font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--accent);
  padding:6px 4px;transition:transform var(--dur-fast) var(--spring);
}
.text-btn:active{transform:scale(.92);}

.round-btn{
  width:40px;height:40px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--surface);font-size:20px;color:var(--ink-soft);
  box-shadow:5px 5px 12px var(--shadow-dark), -5px -5px 12px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring);
}
.round-btn:active{transform:scale(.88);box-shadow:inset 3px 3px 8px var(--shadow-dark), inset -3px -3px 8px var(--shadow-light);}

/* ==========================================================================
   App shell / layout
   ========================================================================== */

.app{
  max-width:560px;margin:0 auto;
  min-height:100%;
  padding-top:calc(var(--safe-top) + 14px);
  padding-bottom:calc(var(--nav-h) + var(--safe-bottom) + 18px);
}

.screen{
  display:none;
  padding:0 20px;
  animation:screenIn var(--dur-med) var(--spring-soft);
}
.screen.active{display:block;}
@keyframes screenIn{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:translateY(0);}
}

.screen-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:20px;
}
.eyebrow{
  font-size:13px;font-weight:600;color:var(--ink-soft);
  letter-spacing:.01em;margin-bottom:2px;
}
.screen-title{
  font-family:var(--font-display);font-weight:700;font-size:30px;
  color:var(--ink);letter-spacing:-.01em;
}

.avatar-btn{
  width:44px;height:44px;border-radius:50%;
  background:var(--accent);color:var(--accent-ink);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-weight:700;font-size:17px;
  box-shadow:5px 5px 12px var(--shadow-dark), -5px -5px 12px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring);
}
.avatar-btn:active{transform:scale(.9);}

.section-row{
  display:flex;align-items:center;justify-content:space-between;
  margin:6px 2px 12px;
}
.section-title{
  font-family:var(--font-display);font-weight:600;font-size:17px;color:var(--ink);
}

.empty-copy{color:var(--ink-soft);font-size:14.5px;line-height:1.55;}

/* ==========================================================================
   Bottom navigation
   ========================================================================== */

.bottom-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  max-width:560px;margin:0 auto;
  display:flex;
  padding:10px 10px calc(10px + var(--safe-bottom));
  background:var(--surface);
  border-radius:28px 28px 0 0;
  box-shadow:0 -8px 26px var(--shadow-dark);
}
.nav-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:8px 2px;border-radius:18px;color:var(--ink-faint);
  font-size:11px;font-weight:600;font-family:var(--font-display);
  transition:transform var(--dur-fast) var(--spring), color var(--dur-fast) var(--spring-soft);
}
.nav-btn .nav-icon{width:23px;height:23px;margin:0 auto;}
.nav-btn.active{color:var(--accent);}
.nav-btn:active{transform:scale(.88);}
.nav-indicator{display:none;}

/* ==========================================================================
   Today screen
   ========================================================================== */

.hero-ring-wrap{position:relative;width:180px;height:180px;margin:0 auto 14px;}
.hero-ring{width:100%;height:100%;transform:rotate(-90deg);}
.hero-ring-track{fill:none;stroke:var(--line-track);stroke-width:12;}
.hero-ring-progress{
  fill:none;stroke:var(--accent);stroke-width:12;stroke-linecap:round;
  stroke-dasharray:540;stroke-dashoffset:540;
  transition:stroke-dashoffset var(--dur-slow) var(--spring-soft);
}
.hero-ring-center{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
}
.hero-day-num{font-family:var(--font-display);font-weight:800;font-size:44px;color:var(--ink);line-height:1;}
.hero-day-label{font-size:13px;color:var(--ink-soft);font-weight:600;margin-top:4px;}
.hero-status{font-family:var(--font-display);font-weight:600;font-size:18px;color:var(--ink);margin-top:4px;}
.hero-substatus{font-size:14px;color:var(--ink-soft);margin-top:6px;line-height:1.5;}

.quick-log-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:22px;
}
.clay-chip{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 6px;border-radius:var(--radius-md);
  background:var(--surface);font-size:12px;font-weight:600;color:var(--ink-soft);
  box-shadow:6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), box-shadow var(--dur-fast) var(--spring-soft);
}
.clay-chip .chip-icon{font-size:22px;}
.clay-chip:active{transform:scale(.92);box-shadow:inset 3px 3px 8px var(--shadow-dark), inset -3px -3px 8px var(--shadow-light);}

.mini-week{display:flex;gap:8px;justify-content:space-between;}
.mini-day{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:10px 0;border-radius:16px;background:var(--surface);
  box-shadow:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);
}
.mini-day.is-today{background:var(--accent);color:var(--accent-ink);}
.mini-day .dow{font-size:10px;font-weight:700;opacity:.7;}
.mini-day .dot-row{display:flex;gap:2px;height:6px;align-items:center;}
.mini-day .dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.35;}
.mini-day .dot.filled{opacity:1;}
.mini-day .num{font-family:var(--font-display);font-weight:700;font-size:13px;}

.log-entry-row{
  display:flex;align-items:center;gap:12px;padding:8px 0;
}
.log-entry-row + .log-entry-row{border-top:1px solid var(--line-track);}
.log-entry-icon{
  width:36px;height:36px;border-radius:12px;background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;
}
.log-entry-text{font-size:14px;font-weight:500;}
.log-entry-time{font-size:12px;color:var(--ink-faint);margin-left:auto;}

/* ==========================================================================
   Insights
   ========================================================================== */

.confidence-panel{display:flex;align-items:center;gap:14px;}
.confidence-ring{width:52px;height:52px;flex-shrink:0;}
.insights-list{display:flex;flex-direction:column;gap:14px;}
.insight-card{
  background:var(--surface);border-radius:var(--radius-lg);padding:18px;
  box-shadow:8px 8px 18px var(--shadow-dark), -8px -8px 18px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring);
}
.insight-card:active{transform:scale(.985);}
.insight-top{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.insight-icon{
  width:34px;height:34px;border-radius:11px;background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;
}
.insight-kicker{font-size:12px;font-weight:700;color:var(--accent);text-transform:none;}
.insight-text{font-size:15px;line-height:1.5;color:var(--ink);}
.insight-meta{font-size:12.5px;color:var(--ink-faint);margin-top:8px;}
.confidence-bar{height:5px;border-radius:3px;background:var(--line-track);margin-top:10px;overflow:hidden;}
.confidence-fill{height:100%;background:var(--accent);border-radius:3px;transition:width var(--dur-slow) var(--spring-soft);}

/* ==========================================================================
   Cycle calendar
   ========================================================================== */

.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.cal-month{font-family:var(--font-display);font-weight:700;font-size:17px;}
.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:6px;}
.cal-weekdays span{text-align:center;font-size:11px;font-weight:700;color:var(--ink-faint);}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:4px;}
.cal-cell{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  position:relative;
}
.cal-cell button{
  width:34px;height:34px;border-radius:50%;
  font-size:13px;font-weight:600;color:var(--ink);
  display:flex;align-items:center;justify-content:center;position:relative;
  transition:transform var(--dur-fast) var(--spring);
}
.cal-cell button:active{transform:scale(.82);}
.cal-cell.muted button{color:var(--ink-faint);}
.cal-cell.period button{background:var(--accent);color:var(--accent-ink);box-shadow:3px 3px 8px var(--shadow-dark), -3px -3px 8px var(--shadow-light);}
.cal-cell.predicted button{box-shadow:inset 0 0 0 2px var(--accent);color:var(--accent);}
.cal-cell.fertile button::after{content:"";position:absolute;bottom:2px;width:4px;height:4px;border-radius:50%;background:var(--accent-2);}
.cal-cell.today button{outline:2px solid var(--ink-soft);outline-offset:2px;}

.cal-legend{display:flex;gap:16px;margin-top:14px;flex-wrap:wrap;}
.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft);}
.legend-dot{width:10px;height:10px;border-radius:50%;}

.history-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 0;
}
.history-row + .history-row{border-top:1px solid var(--line-track);}
.history-dates{font-weight:600;font-size:14px;}
.history-len{font-size:12.5px;color:var(--ink-soft);}
.history-badge{
  font-size:11px;font-weight:700;padding:4px 10px;border-radius:var(--radius-pill);
  background:var(--accent-soft);color:var(--accent);
}

/* ==========================================================================
   Prepare
   ========================================================================== */

.checklist-panel{padding:8px 12px;}
.check-row{
  display:flex;align-items:center;gap:14px;padding:12px 4px;
}
.check-row + .check-row{border-top:1px solid var(--line-track);}
.check-box{
  width:26px;height:26px;border-radius:9px;flex-shrink:0;
  background:var(--surface);
  box-shadow:3px 3px 7px var(--shadow-dark), -3px -3px 7px var(--shadow-light);
  display:flex;align-items:center;justify-content:center;
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast);
}
.check-box.checked{background:var(--accent);box-shadow:inset 2px 2px 5px rgba(0,0,0,.15);}
.check-box.checked svg{opacity:1;transform:scale(1);}
.check-box svg{width:14px;height:14px;stroke:var(--accent-ink);opacity:0;transform:scale(.5);transition:all var(--dur-fast) var(--spring);}
.check-label{font-size:14.5px;flex:1;transition:color var(--dur-fast), opacity var(--dur-fast);}
.check-row.done .check-label{color:var(--ink-faint);text-decoration:line-through;opacity:.7;}

/* ==========================================================================
   Profile
   ========================================================================== */

.profile-summary{display:flex;flex-direction:column;gap:2px;}
.profile-stat-row{display:flex;justify-content:space-between;padding:9px 0;}
.profile-stat-row + .profile-stat-row{border-top:1px solid var(--line-track);}
.profile-stat-label{font-size:14px;color:var(--ink-soft);}
.profile-stat-value{font-size:14px;font-weight:600;}

.setting-label{font-size:13px;font-weight:700;color:var(--ink-soft);margin-bottom:12px;}
.palette-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.palette-swatch{
  aspect-ratio:1;border-radius:16px;position:relative;
  box-shadow:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring);
}
.palette-swatch:active{transform:scale(.9);}
.palette-swatch.selected::after{
  content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:700;font-size:15px;text-shadow:0 1px 3px rgba(0,0,0,.35);
}
.setting-divider{height:1px;background:var(--line-track);margin:16px 0;}
.setting-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;font-size:14.5px;}

.toggle{
  width:48px;height:28px;border-radius:var(--radius-pill);
  background:var(--surface-2);position:relative;flex-shrink:0;
  box-shadow:inset 2px 2px 5px var(--shadow-dark), inset -2px -2px 5px var(--shadow-light);
  transition:background var(--dur-fast);
}
.toggle .toggle-knob{
  position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;
  background:var(--surface);box-shadow:2px 2px 5px var(--shadow-dark);
  transition:transform var(--dur-med) var(--spring);
}
.toggle[aria-checked="true"]{background:var(--accent);}
.toggle[aria-checked="true"] .toggle-knob{transform:translateX(20px);background:var(--accent-ink);}

.cycle-setting-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;}
.cycle-setting-row + .cycle-setting-row{border-top:1px solid var(--line-track);}
.stepper{display:flex;align-items:center;gap:12px;}
.stepper button{
  width:30px;height:30px;border-radius:50%;background:var(--surface-2);
  font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;
  transition:transform var(--dur-fast) var(--spring);
}
.stepper button:active{transform:scale(.85);}
.stepper .stepper-val{min-width:34px;text-align:center;font-weight:700;font-family:var(--font-display);}

.settings-action{
  display:flex;align-items:center;justify-content:space-between;
  width:100%;padding:14px 4px;font-size:14.5px;font-weight:500;
}
.settings-action + .settings-action{border-top:1px solid var(--line-track);}
.settings-action.danger{color:var(--danger);}
.settings-action .chev{color:var(--ink-faint);font-size:18px;}
.settings-action:active{opacity:.6;}

.privacy-note{
  text-align:center;font-size:12.5px;color:var(--ink-faint);
  padding:8px 24px 4px;line-height:1.6;
}

/* ==========================================================================
   Sheets (bottom modal)
   ========================================================================== */

.sheet-backdrop{
  position:fixed;inset:0;background:rgba(30,24,22,.38);
  opacity:0;visibility:hidden;z-index:80;
  transition:opacity var(--dur-med) var(--spring-soft), visibility var(--dur-med);
}
.sheet-backdrop.show{opacity:1;visibility:visible;}

.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:90;
  max-width:560px;margin:0 auto;
  background:var(--surface);
  border-radius:28px 28px 0 0;
  padding:10px 22px calc(24px + var(--safe-bottom));
  box-shadow:0 -12px 32px rgba(0,0,0,.18);
  transform:translateY(102%);
  transition:transform var(--dur-med) var(--spring);
  max-height:82vh;overflow-y:auto;
}
.sheet.show{transform:translateY(0);}
.sheet-grabber{width:38px;height:5px;border-radius:3px;background:var(--line-track);margin:6px auto 16px;}
.sheet-title{font-family:var(--font-display);font-weight:700;font-size:21px;margin-bottom:4px;}
.sheet-sub{font-size:13.5px;color:var(--ink-soft);margin-bottom:18px;}

.tag-grid{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:8px;}
.tag-pill{
  padding:11px 16px;border-radius:var(--radius-pill);background:var(--surface-2);
  font-size:14px;font-weight:600;color:var(--ink-soft);
  box-shadow:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast), color var(--dur-fast);
}
.tag-pill.selected{background:var(--accent);color:var(--accent-ink);}
.tag-pill:active{transform:scale(.92);}

.mood-scale, .energy-scale{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;}
.scale-opt{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:14px 4px;border-radius:var(--radius-md);background:var(--surface-2);
  box-shadow:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast);
  font-size:11px;font-weight:600;color:var(--ink-soft);
}
.scale-opt .scale-emoji{font-size:24px;}
.scale-opt.selected{background:var(--accent);color:var(--accent-ink);}
.scale-opt:active{transform:scale(.9);}

.period-options{display:flex;flex-direction:column;gap:10px;margin-bottom:8px;}
.period-opt{
  display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius-md);
  background:var(--surface-2);
  box-shadow:4px 4px 10px var(--shadow-dark), -4px -4px 10px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast), color var(--dur-fast);
  font-size:14.5px;font-weight:600;color:var(--ink-soft);
}
.period-opt.selected{background:var(--accent);color:var(--accent-ink);}
.period-opt:active{transform:scale(.97);}
.flow-row{display:flex;gap:8px;margin-top:4px;}
.flow-opt{
  flex:1;padding:10px 0;text-align:center;border-radius:12px;background:var(--surface-2);
  font-size:13px;font-weight:600;color:var(--ink-soft);
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast), color var(--dur-fast);
}
.flow-opt.selected{background:var(--accent-2);color:#fff;}
.flow-opt:active{transform:scale(.92);}

/* ==========================================================================
   Toast
   ========================================================================== */
.toast{
  position:fixed;left:50%;bottom:calc(var(--nav-h) + var(--safe-bottom) + 18px);
  transform:translate(-50%,20px);
  background:var(--ink);color:var(--bg);
  padding:12px 20px;border-radius:var(--radius-pill);
  font-size:13.5px;font-weight:600;
  opacity:0;pointer-events:none;z-index:120;
  transition:all var(--dur-med) var(--spring-soft);
  white-space:nowrap;
}
.toast.show{opacity:1;transform:translate(-50%,0);}

/* ==========================================================================
   Onboarding
   ========================================================================== */

.onboarding{
  position:fixed;inset:0;background:var(--bg);z-index:100;
  display:flex;flex-direction:column;
  padding:calc(var(--safe-top) + 20px) 24px calc(var(--safe-bottom) + 24px);
}
.ob-progress{display:flex;gap:6px;margin-bottom:8px;}
.ob-progress span{
  flex:1;height:4px;border-radius:3px;background:var(--line-track);overflow:hidden;
}
.ob-progress span i{
  display:block;height:100%;width:0;background:var(--accent);
  transition:width var(--dur-med) var(--spring-soft);
}
.ob-progress span.filled i{width:100%;}

.ob-skip-all{
  align-self:flex-end;font-size:13px;font-weight:600;color:var(--ink-faint);
  padding:12px 2px;
}

.ob-stage{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  max-width:480px;margin:0 auto;width:100%;
}
.ob-q{
  font-family:var(--font-display);font-weight:700;font-size:26px;
  line-height:1.25;margin-bottom:8px;letter-spacing:-.01em;
  animation:obIn var(--dur-slow) var(--spring-soft);
}
.ob-hint{font-size:14px;color:var(--ink-soft);margin-bottom:26px;animation:obIn var(--dur-slow) var(--spring-soft);}
@keyframes obIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}

.ob-options{display:flex;flex-direction:column;gap:12px;}
.ob-opt{
  padding:18px 20px;border-radius:var(--radius-lg);background:var(--surface);
  box-shadow:7px 7px 16px var(--shadow-dark), -7px -7px 16px var(--shadow-light);
  font-size:15.5px;font-weight:600;text-align:left;
  transition:transform var(--dur-fast) var(--spring), background var(--dur-fast), color var(--dur-fast), box-shadow var(--dur-fast);
  animation:obIn var(--dur-slow) var(--spring-soft);
}
.ob-opt.selected{background:var(--accent);color:var(--accent-ink);box-shadow:inset 3px 3px 8px rgba(0,0,0,.15);}
.ob-opt:active{transform:scale(.96);}

.ob-multi{display:flex;flex-wrap:wrap;gap:10px;}
.ob-multi .ob-opt{flex:0 0 auto;padding:13px 18px;border-radius:var(--radius-pill);font-size:14.5px;}

.ob-nav{display:flex;gap:12px;margin-top:28px;}
.ob-back{
  width:52px;height:52px;border-radius:50%;flex-shrink:0;
  background:var(--surface);display:flex;align-items:center;justify-content:center;
  box-shadow:6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring);
  font-size:18px;
}
.ob-back:active{transform:scale(.88);}
.ob-back.invisible{visibility:hidden;}
.ob-continue{
  flex:1;border-radius:var(--radius-lg);background:var(--accent);color:var(--accent-ink);
  font-family:var(--font-display);font-weight:700;font-size:16px;
  box-shadow:6px 6px 14px var(--shadow-dark), -6px -6px 14px var(--shadow-light);
  transition:transform var(--dur-fast) var(--spring), opacity var(--dur-fast);
}
.ob-continue:active{transform:scale(.97);}
.ob-continue:disabled{opacity:.45;pointer-events:none;}

.ob-date-input{
  width:100%;padding:16px 18px;border-radius:var(--radius-lg);background:var(--surface);
  box-shadow:inset 3px 3px 8px var(--shadow-dark), inset -3px -3px 8px var(--shadow-light);
  border:none;font-size:16px;font-family:var(--font-body);color:var(--ink);
  font-weight:600;
}

.ob-welcome{text-align:center;}
.ob-welcome .ob-mark{
  width:76px;height:76px;margin:0 auto 22px;border-radius:36% 64% 60% 40%/46% 40% 60% 54%;
  background:var(--accent);
  box-shadow:9px 9px 20px var(--shadow-dark), -9px -9px 20px var(--shadow-light);
}
.ob-welcome .ob-q{font-size:29px;}
.ob-welcome .ob-hint{font-size:15px;margin-bottom:36px;}

/* ==========================================================================
   Responsive — tablet / desktop expansion
   ========================================================================== */

@media (min-width:720px){
  body{background:var(--surface-2);}
  .app{
    max-width:900px;margin:24px auto;min-height:calc(100vh - 48px);
    background:var(--bg);border-radius:36px;
    box-shadow:0 30px 70px rgba(0,0,0,.14);
    padding:32px 40px calc(var(--nav-h) + 40px);
    position:relative;overflow:hidden;
  }
  .screen{padding:0 4px;}
  .bottom-nav{
    position:absolute;max-width:none;left:24px;right:24px;bottom:20px;
    border-radius:24px;
  }
  .quick-log-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .clay-hero{max-width:420px;margin-left:auto;margin-right:auto;}
  .sheet, .sheet-backdrop{max-width:900px;}
  .onboarding{max-width:900px;margin:24px auto;min-height:calc(100vh - 48px);border-radius:36px;box-shadow:0 30px 70px rgba(0,0,0,.14);}
}

@media (min-width:1080px){
  .app{max-width:1040px;}
  .screen[data-screen="today"]{
    display:grid !important;grid-template-columns:1fr 1fr;gap:0 32px;align-content:start;
  }
  .screen[data-screen="today"].active{display:grid;}
}
