/* Rodolí identity layer. Presentation only: no data or interaction contracts. */
:root {
  --bg: var(--rd-canvas);
  --panel: var(--rd-surface);
  --ink: var(--rd-text);
  --muted: var(--rd-text-muted);
  --line: var(--rd-line);
  --line-soft: var(--rd-line);
  --green: var(--rd-positive);
  --yellow: var(--rd-pending);
  --red: var(--rd-negative);
  --sky: var(--rd-info);
  --iris: var(--rd-brand-iris);
  color-scheme: light dark;
  font-synthesis: none;
}

/* Explicit themes and soft fixed navigation. */
body[data-theme="light"] { color-scheme: light; --rd-canvas:#f5f6fa; --rd-surface:#fff; --rd-surface-raised:#fff; --rd-text:#181a20; --rd-text-secondary:#414651; --rd-text-muted:#687080; --rd-line:#e4e7ed; --rd-focus:#5558e7; --rd-glass-surface:rgb(255 255 255 / 72%); --rd-glass-raised:rgb(255 255 255 / 84%); background:radial-gradient(circle at 8% -8%,rgb(85 88 231 / 11%),transparent 34rem),radial-gradient(circle at 98% 24%,rgb(122 167 255 / 9%),transparent 30rem),var(--rd-canvas); }
body[data-theme="dark"], body[data-theme="classic-dark"] { color-scheme: dark; --rd-canvas:#101218; --rd-surface:#191c24; --rd-surface-raised:#222630; --rd-text:#f7f8fc; --rd-text-secondary:#c5c9d2; --rd-text-muted:#a1a7b2; --rd-line:#303541; --rd-focus:#898bff; --rd-glass-surface:rgb(25 28 36 / 78%); --rd-glass-raised:rgb(34 38 48 / 86%); background:radial-gradient(circle at 8% -8%,rgb(85 88 231 / 16%),transparent 34rem),radial-gradient(circle at 98% 24%,rgb(122 167 255 / 10%),transparent 30rem),var(--rd-canvas); }
body[data-theme="classic-dark"] { --rd-canvas:#0d110f; --rd-surface:#141b16; --rd-surface-raised:#1b251e; --rd-text:#edf4ea; --rd-text-secondary:#c1cfbd; --rd-text-muted:#91a18e; --rd-line:#2c3a2e; --rd-glass-surface:rgb(20 27 22 / 82%); --rd-glass-raised:rgb(27 37 30 / 88%); }
body[data-theme="light"] .brand-wordmark { content:url('./assets/rodoli/wordmark.svg'); }
.terminal-header { position:sticky; top:0; z-index:21; background:color-mix(in srgb,var(--rd-surface) 72%,transparent); backdrop-filter:blur(18px) saturate(125%); }
.nav { top:calc(66px + env(safe-area-inset-top)); max-height:80px; overflow:hidden; transform-origin:top center; transition:opacity 280ms var(--rd-ease-out),transform 420ms var(--rd-ease-out),max-height 360ms var(--rd-ease-out),margin 360ms var(--rd-ease-out),filter 420ms var(--rd-ease-out); }
body.nav-collapsed .nav { max-height:0; margin-bottom:0; overflow:hidden; opacity:0; pointer-events:none; transform:translateY(-12px) scale(.985); filter:blur(4px); }
.floating-menu-button { position:fixed; right:max(18px,env(safe-area-inset-right)); bottom:max(20px,env(safe-area-inset-bottom)); z-index:40; width:54px; height:54px; min-height:54px; padding:0; border:0; border-radius:50%; color:#fff; background:var(--rd-brand-iris); box-shadow:var(--rd-shadow-float); font-size:26px; line-height:1; }
.floating-menu-button[aria-expanded="true"] { transform:rotate(45deg); }
.floating-menu { position:fixed; right:max(20px,env(safe-area-inset-right)); bottom:max(84px,calc(env(safe-area-inset-bottom) + 84px)); z-index:39; display:grid; gap:8px; justify-items:end; }
.floating-menu button { min-width:74px; min-height:40px; padding:8px 12px; border:1px solid var(--rd-line); border-radius:999px; background:var(--rd-glass-raised); box-shadow:var(--rd-glass-shadow); color:var(--rd-text); font-family:var(--rd-font-code); font-size:10px; }
.account-panel,.theme-panel,.shortcut-panel,.local-lock-panel { margin-top:20px; padding-top:16px; border-top:1px solid var(--rd-line); }
.account-panel h2,.theme-panel h2,.shortcut-panel h2,.local-lock-panel h2 { margin:0 0 8px; font-family:var(--rd-font-code); font-size:11px; letter-spacing:.08em; }
.shortcut-panel label { display:inline-flex; align-items:center; gap:7px; margin:4px 14px 4px 0; }
body.auth-locked .floating-menu-button,body.auth-locked .floating-menu { display:none; }
.profile-card { margin-bottom: 20px; padding: 16px; border: 1px solid var(--rd-line); border-radius: 20px; background: var(--rd-glass-raised); box-shadow: var(--rd-glass-shadow); }
.profile-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.profile-card h2 { margin:0; font-family:var(--rd-font-code); font-size:11px; letter-spacing:.08em; }
.profile-badge { padding:5px 8px; border-radius:999px; color:var(--rd-brand-iris); background:var(--rd-brand-iris-soft); font-family:var(--rd-font-code); font-size:9px; letter-spacing:.06em; }
.profile-card .form-help { margin:10px 0; }
.week-browser { margin: 18px 0 30px; padding: 14px; border: 1px solid var(--rd-line); border-radius: 20px; background: var(--rd-glass-surface); box-shadow: var(--rd-glass-shadow); }
.week-browser-actions { display:grid; gap:10px; }
.week-browser-actions > button { width:100%; font-family:var(--rd-font-code); font-size:10px; }
.week-browser-actions label { display:grid; grid-template-columns:1fr auto; gap:8px; align-items:end; color:var(--rd-text-secondary); font-family:var(--rd-font-code); font-size:10px; }
.week-browser-actions label input { grid-column:1; min-height:44px; margin-top:5px; padding:10px 12px; border:1px solid var(--rd-line); border-radius:var(--rd-radius-control); background:var(--rd-surface-raised); color:var(--rd-text); font-family:var(--rd-font-product); font-size:16px; }
.week-browser-actions label button { grid-column:2; grid-row:1 / span 2; min-height:44px; font-family:var(--rd-font-code); font-size:10px; }
.workspace-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:16px; }
.workspace-columns > .app-panel { min-width:0; }
.task-section,.ledger-section { min-height:360px; }
.movs-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 16px; color:var(--rd-text); font-family:var(--rd-font-code); font-size:11px; letter-spacing:.1em; text-transform:none; }
.movs-head b { color:var(--rd-text-muted); font-weight:500; }
.task-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
.task-head h2 { margin:3px 0 0; font-size:22px; letter-spacing:-.03em; }
.task-head button { width:42px; min-width:42px; min-height:42px; border-radius:50%; font-size:22px; }
.task-stack { display:flex; flex-direction:column; gap:10px; overflow:hidden; touch-action:pan-y; overscroll-behavior:contain; user-select:none; }
.task-day { padding:14px; border:1px solid var(--rd-line); border-radius:20px; background:var(--rd-glass-raised); opacity:.75; transform:scale(.985); transition:opacity 240ms var(--rd-ease-out),transform 300ms var(--rd-ease-out),border-color 240ms ease; }
.task-day.is-current { opacity:1; transform:none; border-color:color-mix(in srgb,var(--rd-brand-iris) 34%,var(--rd-line)); box-shadow:var(--rd-glass-shadow); }
.task-day:not(.is-current) .task-row:nth-child(n+4) { display:none; }
.task-day-head { display:flex; justify-content:space-between; gap:10px; margin-bottom:10px; color:var(--rd-text); font-family:var(--rd-font-code); font-size:10px; }
.task-day-head b { color:var(--rd-text-muted); font-weight:500; }
.task-rows { display:grid; gap:6px; }.task-row { display:grid; grid-template-columns:28px minmax(0,1fr) 28px; align-items:center; gap:6px; min-height:42px; padding:4px 6px; border-radius:12px; background:color-mix(in srgb,var(--rd-surface) 62%,transparent); }
.task-row > button { min-width:28px; min-height:32px; padding:4px; border:0; background:transparent; color:var(--rd-brand-iris); }.task-row-main { display:grid; justify-items:start; gap:2px; text-align:left; }.task-row-main span { color:var(--rd-text); font-size:13px; }.task-row-main small { color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:9px; }.task-row.is-done .task-row-main span { color:var(--rd-text-muted); text-decoration:line-through; }.task-empty { margin:4px 0 8px; color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:10px; }
.task-add-day { display:block; width:42px; min-width:42px; min-height:42px; margin:10px 0 0 auto; border:1px solid var(--rd-line); border-radius:50%; background:transparent; color:var(--rd-text-secondary); font-family:var(--rd-font-code); font-size:22px; line-height:1; }
@media (max-width:820px) { .workspace-columns { grid-template-columns:1fr; } }
#dashboard:not([hidden]) + #week-browser { display:none; }
.user-profile-panel { margin: 18px 0 12px; padding: 16px; border: 1px solid var(--rd-line); border-radius: 24px; background: var(--rd-glass-raised); }
.user-profile-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:12px; }
.section-kicker { color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:9px; letter-spacing:.1em; }
.user-profile-panel h2 { margin:3px 0 0; color:var(--rd-text); font-size:22px; letter-spacing:-.03em; }
.profile-avatar { display:grid; place-items:center; width:58px; height:58px; flex:0 0 58px; border-radius:50%; color:#fff; background:#5558e7; font-family:var(--rd-font-code); font-size:15px; font-weight:700; box-shadow:0 10px 24px rgb(85 88 231 / 24%); }
.profile-avatar[data-avatar="lilac"],.avatar-lilac { background:#9c7aeb; }
.avatar-iris { background:#5558e7; }
.profile-avatar[data-avatar="blue"],.avatar-blue { background:#5b8be7; }
.profile-avatar[data-avatar="teal"],.avatar-teal { background:#2f8195; }
.profile-avatar[data-avatar="berry"],.avatar-berry { background:#985982; }
.profile-avatar[data-avatar="graphite"],.avatar-graphite { background:#687080; }
.profile-avatar,.avatar-iris { background:linear-gradient(145deg,#777aff 0%,#5558e7 48%,#3437a9 100%); }
.profile-avatar[data-avatar="lilac"],.avatar-lilac { background:linear-gradient(145deg,#d2baff 0%,#9c7aeb 48%,#6843b6 100%); }
.profile-avatar[data-avatar="blue"],.avatar-blue { background:linear-gradient(145deg,#a9d6ff 0%,#5b8be7 48%,#3152a7 100%); }
.profile-avatar[data-avatar="teal"],.avatar-teal { background:linear-gradient(145deg,#9ce5df 0%,#2f8195 48%,#185064 100%); }
.profile-avatar[data-avatar="berry"],.avatar-berry { background:linear-gradient(145deg,#e8b6d1 0%,#985982 48%,#5c2d57 100%); }
.profile-avatar[data-avatar="graphite"],.avatar-graphite { background:linear-gradient(145deg,#aeb7c8 0%,#687080 48%,#30343d 100%); }
.profile-avatar { box-shadow:none !important; }
.avatar-swatch { box-shadow:0 8px 18px rgb(24 26 32 / 14%), inset 0 1px rgb(255 255 255 / 32%); }
.user-profile-panel:has(.profile-avatar[data-avatar="lilac"]) { border-color:rgb(156 122 235 / 42%); background:linear-gradient(145deg,rgb(210 186 255 / 12%),var(--rd-glass-raised) 48%); }
.user-profile-panel:has(.profile-avatar[data-avatar="blue"]) { border-color:rgb(91 139 231 / 42%); background:linear-gradient(145deg,rgb(169 214 255 / 12%),var(--rd-glass-raised) 48%); }
.user-profile-panel:has(.profile-avatar[data-avatar="teal"]) { border-color:rgb(47 129 149 / 42%); background:linear-gradient(145deg,rgb(156 229 223 / 12%),var(--rd-glass-raised) 48%); }
.user-profile-panel:has(.profile-avatar[data-avatar="berry"]) { border-color:rgb(152 89 130 / 42%); background:linear-gradient(145deg,rgb(232 182 209 / 12%),var(--rd-glass-raised) 48%); }
.user-profile-panel:has(.profile-avatar[data-avatar="graphite"]) { border-color:rgb(104 112 128 / 42%); background:linear-gradient(145deg,rgb(174 183 200 / 12%),var(--rd-glass-raised) 48%); }
.profile-two-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.user-profile-panel input:disabled { color:var(--rd-text-muted); background:color-mix(in srgb,var(--rd-line) 42%,var(--rd-surface)); cursor:not-allowed; opacity:.82; }
.phone-verification { margin-top:-4px; margin-bottom:12px; padding:10px 12px; border:1px solid var(--rd-line); border-radius:16px; background:color-mix(in srgb,var(--rd-surface) 72%,transparent); }
.phone-verification button { min-height:40px; padding:8px 11px; font-family:var(--rd-font-code); font-size:10px; }
.phone-verification label { margin-top:10px; }
.country-picker-backdrop { position:fixed; inset:0; z-index:4; background:rgb(24 26 32 / 8%); cursor:default; }
.country-suggestions { position:relative; z-index:5; display:grid; gap:4px; max-height:220px; margin-top:6px; overflow:auto; padding:5px; border:1px solid var(--rd-line); border-radius:14px; background:var(--rd-glass-raised); box-shadow:var(--rd-glass-shadow); }
.country-suggestions button { display:flex; align-items:center; justify-content:space-between; min-height:40px; padding:8px 10px; border:0; border-radius:10px; background:transparent; color:var(--rd-text); font-family:var(--rd-font-code); font-size:10px; text-align:left; }
.country-suggestions button:hover,.country-suggestions button:focus-visible { background:var(--rd-brand-iris-soft); color:var(--rd-brand-iris); }
.country-suggestions button span { color:var(--rd-text-muted); font-size:9px; }
.profile-picker-trigger { display:block; width:100%; min-height:52px; margin-top:6px; padding:12px 14px; border:1px solid var(--rd-line); border-radius:var(--rd-radius-control); background:var(--rd-glass-raised); color:var(--rd-text); font-size:16px; text-align:left; }
.profile-picker-menu { position:relative; z-index:5; display:grid; gap:4px; max-height:220px; margin-top:6px; overflow:auto; padding:5px; border:1px solid var(--rd-line); border-radius:14px; background:var(--rd-glass-raised); box-shadow:var(--rd-glass-shadow); }
.profile-picker-menu button { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:40px; padding:8px 10px; border:0; border-radius:10px; background:transparent; color:var(--rd-text); font-family:var(--rd-font-code); font-size:10px; text-align:left; }
.profile-picker-menu button span { color:var(--rd-text-muted); font-size:9px; }
.profile-picker-menu button:hover,.profile-picker-menu button:focus-visible { background:var(--rd-brand-iris-soft); color:var(--rd-brand-iris); }
.avatar-picker { margin:14px 0; padding:0; border:0; }
.avatar-picker legend { margin-bottom:8px; color:var(--rd-text-secondary); font-family:var(--rd-font-code); font-size:10px; letter-spacing:.04em; }
.avatar-options { display:flex; gap:0; box-sizing:border-box; width:100%; max-width:100%; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; touch-action:pan-y; scroll-behavior:smooth; scroll-snap-type:x mandatory; scroll-padding:0; -webkit-overflow-scrolling:touch; padding:4px 0 8px; scrollbar-width:none; position:relative; }
.avatar-options::-webkit-scrollbar { display:none; width:0; height:0; }
.avatar-page { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; box-sizing:border-box; padding-right:10px; flex:0 0 100%; min-width:100%; scroll-snap-align:start; scroll-snap-stop:always; }
.avatar-options::after { content:''; position:absolute; inset:0; z-index:2; pointer-events:none; border-radius:16px; background:var(--rd-glass-raised); opacity:0; transition:opacity 220ms ease; }
.avatar-options.is-scrolling::after { opacity:.10; }
.avatar-swatch { width:38px; min-width:38px; height:38px; min-height:38px; padding:0; border:3px solid transparent; border-radius:50%; box-shadow:none; }
.avatar-swatch:hover,.avatar-swatch:focus-visible,.avatar-swatch.selected { border-color:var(--rd-text); transform:scale(1.06); }
.profile-avatar,.avatar-swatch { display:block; width:58px; height:58px; border-radius:50% !important; overflow:hidden !important; aspect-ratio:1 / 1; clip-path:circle(50% at 50% 50%); -webkit-clip-path:circle(50% at 50% 50%); background-clip:padding-box; }
.avatar-plus:disabled,.avatar-pro:disabled,.avatar-infinity:disabled { filter:grayscale(1); opacity:.42; cursor:not-allowed; }
.avatar-plus:disabled,.avatar-pro:disabled,.avatar-infinity:disabled { pointer-events:none; }
.avatar-aurora { background:linear-gradient(135deg,#b7f0e8 0%,#6f9cff 48%,#7555d8 100%); }
.avatar-sunset { background:linear-gradient(135deg,#ffd6a0 0%,#e98591 48%,#9b4f91 100%); }
.avatar-ocean { background:linear-gradient(135deg,#b8e8ff 0%,#4f9fc4 48%,#324a93 100%); }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="iris"] { background:#5558e7 !important; }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="lilac"] { background:#9c7aeb !important; }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="blue"] { background:#5b8be7 !important; }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="teal"] { background:#2f8195 !important; }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="berry"] { background:#985982 !important; }
#user-menu-dialog[data-plan="free"] .profile-avatar[data-avatar="graphite"] { background:#687080 !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-iris { background:#5558e7 !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-lilac { background:#9c7aeb !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-blue { background:#5b8be7 !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-teal { background:#2f8195 !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-berry { background:#985982 !important; }
#user-menu-dialog[data-plan="free"] .avatar-swatch.avatar-graphite { background:#687080 !important; }
.profile-avatar[data-avatar="aurora"] { background:linear-gradient(135deg,#b7f0e8 0%,#6f9cff 48%,#7555d8 100%); }
.profile-avatar[data-avatar="sunset"] { background:linear-gradient(135deg,#ffd6a0 0%,#e98591 48%,#9b4f91 100%); }
.profile-avatar[data-avatar="ocean"] { background:linear-gradient(135deg,#b8e8ff 0%,#4f9fc4 48%,#324a93 100%); }
#user-menu-dialog[data-plan="plus"] .user-profile-panel,#user-menu-dialog[data-plan="pro"] .user-profile-panel { border-color:rgb(117 85 216 / 38%); background:linear-gradient(145deg,rgb(183 240 232 / 13%),var(--rd-glass-raised) 52%); }
#user-menu-dialog[data-plan="plus"] .user-profile-panel { border-width:1.5px; box-shadow:0 22px 54px rgb(85 88 231 / 18%), inset 0 1px rgb(255 255 255 / 34%); background:radial-gradient(circle at 8% 0%,rgb(183 240 232 / 28%),transparent 34%),radial-gradient(circle at 100% 100%,rgb(117 85 216 / 20%),transparent 42%),var(--rd-glass-raised); }
#user-menu-dialog[data-plan="pro"] .user-profile-panel { border-color:rgb(210 186 255 / 58%); border-width:1.5px; box-shadow:0 26px 64px rgb(52 55 169 / 28%), inset 0 1px rgb(255 255 255 / 38%); background:radial-gradient(circle at 0% 0%,rgb(210 186 255 / 32%),transparent 38%),radial-gradient(circle at 100% 100%,rgb(85 88 231 / 30%),transparent 48%),linear-gradient(145deg,rgb(24 26 48 / 76%),var(--rd-glass-raised) 68%); }
#user-menu-dialog[data-plan="infinity"] .user-profile-panel { border-color:rgb(240 209 125 / 64%); border-width:1.5px; box-shadow:0 28px 72px rgb(75 55 117 / 28%), inset 0 1px rgb(255 255 255 / 40%); background:radial-gradient(circle at 0% 0%,rgb(255 249 219 / 30%),transparent 36%),radial-gradient(circle at 100% 100%,rgb(141 97 213 / 28%),transparent 48%),linear-gradient(145deg,rgb(33 31 58 / 82%),var(--rd-glass-raised) 70%); }
#user-menu-dialog[data-plan="plus"] .profile-avatar,#user-menu-dialog[data-plan="pro"] .profile-avatar { box-shadow:none !important; }
#user-menu-dialog[data-plan="plus"] .user-profile-panel:has(.profile-avatar[data-avatar="sunset"]),#user-menu-dialog[data-plan="pro"] .user-profile-panel:has(.profile-avatar[data-avatar="sunset"]) { border-color:rgb(233 133 145 / 42%); background:linear-gradient(145deg,rgb(255 214 160 / 14%),var(--rd-glass-raised) 52%); }
#user-menu-dialog[data-plan="plus"] .user-profile-panel:has(.profile-avatar[data-avatar="ocean"]),#user-menu-dialog[data-plan="pro"] .user-profile-panel:has(.profile-avatar[data-avatar="ocean"]) { border-color:rgb(79 159 196 / 42%); background:linear-gradient(145deg,rgb(184 232 255 / 14%),var(--rd-glass-raised) 52%); }
.subscription-plan-panel { display:flex; align-items:center; flex-wrap:wrap; gap:10px 14px; margin:0 0 14px; padding:14px 16px; border:1px solid var(--rd-line); border-radius:20px; background:var(--rd-glass-raised); }
.subscription-plan-panel > div { flex:1 1 120px; }.subscription-plan-panel h2 { margin:2px 0 0; font-size:18px; letter-spacing:.04em; }
.subscription-plan-panel button { min-height:40px; padding:8px 11px; font-family:var(--rd-font-code); font-size:10px; }.subscription-plan-panel .form-help { flex-basis:100%; margin:0; }
.avatar-cosmos { background:linear-gradient(135deg,#d9c7ff 0%,#806ee8 46%,#312e78 100%); }
.avatar-night { background:linear-gradient(135deg,#8395d9 0%,#3d4b9a 46%,#171a3f 100%); }
.avatar-copper { background:linear-gradient(135deg,#ffd3a6 0%,#b96d50 46%,#653747 100%); }
.avatar-lagoon,.profile-avatar[data-avatar="lagoon"] { background:linear-gradient(135deg,#c5fff1 0%,#4ecbb4 48%,#197a82 100%); }
.avatar-orchid,.profile-avatar[data-avatar="orchid"] { background:linear-gradient(135deg,#f3d0ff 0%,#bd79dc 48%,#70449f 100%); }
.avatar-peach,.profile-avatar[data-avatar="peach"] { background:linear-gradient(135deg,#ffe2c0 0%,#ed9c89 48%,#b85c74 100%); }
.avatar-platinum,.profile-avatar[data-avatar="platinum"] { background:linear-gradient(135deg,#ffffff 0%,#b8c7e7 42%,#6374b6 100%); }
.avatar-ember,.profile-avatar[data-avatar="ember"] { background:linear-gradient(135deg,#ffe3b0 0%,#e47751 45%,#7a304d 100%); }
.avatar-nebula,.profile-avatar[data-avatar="nebula"] { background:linear-gradient(135deg,#f1c6ff 0%,#8d61d5 42%,#24245f 100%); }
.avatar-infinity-iris,.profile-avatar[data-avatar="infinity-iris"] { background:linear-gradient(135deg,#fff 0%,#a9a8ff 36%,#4b4fcb 70%,#201e61 100%); }
.avatar-infinity-lilac,.profile-avatar[data-avatar="infinity-lilac"] { background:linear-gradient(135deg,#fff0ff 0%,#d6a9f6 36%,#8e55bf 70%,#43235f 100%); }
.avatar-infinity-teal,.profile-avatar[data-avatar="infinity-teal"] { background:linear-gradient(135deg,#e4fffb 0%,#79dfd1 36%,#348eaa 70%,#163e5b 100%); }
.avatar-infinity-gold,.profile-avatar[data-avatar="infinity-gold"] { background:linear-gradient(135deg,#fff9db 0%,#f0d17d 36%,#b2833c 70%,#57372a 100%); }
.avatar-infinity-berry,.profile-avatar[data-avatar="infinity-berry"] { background:linear-gradient(135deg,#ffeafa 0%,#e49ac9 36%,#974f9b 70%,#3e214e 100%); }
.avatar-infinity-night,.profile-avatar[data-avatar="infinity-night"] { background:linear-gradient(135deg,#dce6ff 0%,#777fd3 36%,#45458e 70%,#12142f 100%); }
.avatar-infinity-custom,.profile-avatar[data-avatar="infinity-custom"] { background:radial-gradient(circle at 30% 25%,#fff 0 5%,transparent 6%),linear-gradient(135deg,#f0d17d 0%,#8d61d5 48%,#24245f 100%); }
#avatar-upload-state { width:100%; flex-basis:100%; margin:0; }
#user-menu-dialog[data-plan="plus"] .user-profile-panel:has(.profile-avatar[data-avatar="lagoon"]) { border-color:rgb(78 203 180 / 52%); background:radial-gradient(circle at 0% 0%,rgb(197 255 241 / 24%),transparent 42%),var(--rd-glass-raised); }
#user-menu-dialog[data-plan="plus"] .user-profile-panel:has(.profile-avatar[data-avatar="orchid"]) { border-color:rgb(189 121 220 / 52%); background:radial-gradient(circle at 0% 0%,rgb(243 208 255 / 24%),transparent 42%),var(--rd-glass-raised); }
#user-menu-dialog[data-plan="plus"] .user-profile-panel:has(.profile-avatar[data-avatar="peach"]) { border-color:rgb(237 156 137 / 52%); background:radial-gradient(circle at 0% 0%,rgb(255 226 192 / 24%),transparent 42%),var(--rd-glass-raised); }
#user-menu-dialog[data-plan="pro"] .user-profile-panel:has(.profile-avatar[data-avatar="platinum"]),#user-menu-dialog[data-plan="infinity"] .user-profile-panel:has(.profile-avatar[data-avatar="platinum"]) { border-color:rgb(184 199 231 / 62%); background:radial-gradient(circle at 0% 0%,rgb(255 255 255 / 24%),transparent 42%),linear-gradient(145deg,rgb(42 49 80 / 70%),var(--rd-glass-raised)); }
#user-menu-dialog[data-plan="pro"] .user-profile-panel:has(.profile-avatar[data-avatar="ember"]),#user-menu-dialog[data-plan="infinity"] .user-profile-panel:has(.profile-avatar[data-avatar="ember"]) { border-color:rgb(228 119 81 / 62%); background:radial-gradient(circle at 0% 0%,rgb(255 227 176 / 24%),transparent 42%),linear-gradient(145deg,rgb(76 38 48 / 70%),var(--rd-glass-raised)); }
#user-menu-dialog[data-plan="pro"] .user-profile-panel:has(.profile-avatar[data-avatar="nebula"]),#user-menu-dialog[data-plan="infinity"] .user-profile-panel:has(.profile-avatar[data-avatar="nebula"]) { border-color:rgb(141 97 213 / 62%); background:radial-gradient(circle at 0% 0%,rgb(241 198 255 / 24%),transparent 42%),linear-gradient(145deg,rgb(36 36 95 / 76%),var(--rd-glass-raised)); }
.profile-avatar[data-avatar="cosmos"] { background:linear-gradient(135deg,#d9c7ff 0%,#806ee8 46%,#312e78 100%); }
.profile-avatar[data-avatar="night"] { background:linear-gradient(135deg,#8395d9 0%,#3d4b9a 46%,#171a3f 100%); }
.profile-avatar[data-avatar="copper"] { background:linear-gradient(135deg,#ffd3a6 0%,#b96d50 46%,#653747 100%); }
.avatar-swatch { width:100%; min-width:0; height:auto; min-height:0; aspect-ratio:1 / 1; padding:0; border:0 !important; border-radius:50% !important; scroll-snap-align:start; scroll-snap-stop:always; box-shadow:none !important; }
.avatar-swatch.selected { outline:0 !important; outline-offset:0; transform:none; }
#user-menu-dialog .avatar-swatch.avatar-iris { background:#5558e7 !important; }
#user-menu-dialog .avatar-swatch.avatar-lilac { background:#9c7aeb !important; }
#user-menu-dialog .avatar-swatch.avatar-blue { background:#5b8be7 !important; }
#user-menu-dialog .avatar-swatch.avatar-teal { background:#2f8195 !important; }
#user-menu-dialog .avatar-swatch.avatar-berry { background:#985982 !important; }
#user-menu-dialog .avatar-swatch.avatar-graphite { background:#687080 !important; }
#user-menu-dialog .profile-avatar[data-avatar="iris"] { background:#5558e7 !important; }
#user-menu-dialog .profile-avatar[data-avatar="lilac"] { background:#9c7aeb !important; }
#user-menu-dialog .profile-avatar[data-avatar="blue"] { background:#5b8be7 !important; }
#user-menu-dialog .profile-avatar[data-avatar="teal"] { background:#2f8195 !important; }
#user-menu-dialog .profile-avatar[data-avatar="berry"] { background:#985982 !important; }
#user-menu-dialog .profile-avatar[data-avatar="graphite"] { background:#687080 !important; }
@media (max-width:480px) { .profile-two-columns { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { .terminal-header,.nav,.floating-menu-button,.floating-menu { transition:none; } }

/* Workspace headers and calm first-frame reveal. */
.workspace-columns > .app-panel { padding:16px; border:1px solid var(--rd-line); border-radius:24px; background:transparent; box-shadow:none; }
.panel-title-code { color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:10px; font-weight:600; letter-spacing:.1em; }
.task-head,.movs-head { min-height:28px; align-items:baseline; }
.task-head h2 { margin:3px 0 0; color:var(--rd-text); font-family:var(--rd-font-product); font-size:22px; font-weight:600; letter-spacing:-.03em; }
.movs-head b { color:var(--rd-text); font-family:var(--rd-font-product); font-size:22px; font-weight:600; letter-spacing:-.03em; }
.brand-wordmark { width:92px; }
body.brand-intro .terminal-header { position:fixed; top:50%; left:50%; width:min(calc(100% - 32px),760px); transform:translate(-50%,-50%); background:transparent; backdrop-filter:none; transition:top 620ms cubic-bezier(.22,1,.36,1),transform 620ms cubic-bezier(.22,1,.36,1); }
body.brand-intro:not(.brand-revealed) .terminal-header #sync-state,body.brand-intro:not(.brand-revealed) .terminal-header #save-state,body.brand-intro:not(.brand-revealed) .user-menu-button { visibility:hidden; opacity:0; pointer-events:none; }
body.brand-intro:not(.brand-revealed) .app-shell > :not(.terminal-header) { opacity:0; pointer-events:none; }
body.brand-intro .nav { visibility:hidden; opacity:0; border-color:transparent; background:transparent; box-shadow:none; }
body.brand-intro.brand-revealed .terminal-header { top:0; transform:translateX(-50%); }
body.brand-intro.brand-revealed .logo-hint { max-height:24px; margin:66px auto 16px; opacity:1; }
body.brand-intro.brand-revealed.nav-collapsed .nav { visibility:visible; opacity:0; position:relative; top:auto; margin-top:8px; border-color:transparent; background:transparent; box-shadow:none; }
body.brand-intro.brand-revealed:not(.nav-collapsed) .logo-hint { max-height:0; margin:0 auto; opacity:0; }
body.brand-intro.brand-revealed:not(.nav-collapsed) .nav { visibility:visible; opacity:1; position:relative; top:auto; margin-top:66px; border-color:#414651; background:rgb(24 26 32 / 94%); box-shadow:0 14px 34px rgb(24 26 32 / 18%); backdrop-filter:blur(18px) saturate(115%); }
body.brand-intro.brand-revealed .nav button { color:#c5c9d2; }
body.brand-intro.brand-revealed .nav button:hover,body.brand-intro.brand-revealed .nav button:focus-visible { background:rgb(85 88 231 / 22%); color:#fff; }
body.brand-intro.brand-revealed .user-menu-button { visibility:visible; opacity:1; transition:opacity 260ms ease 620ms; }
body.brand-intro:not(.brand-revealed) .logo-hint { max-height:0; margin:0; opacity:0; }
.logo-hint { overflow:hidden; color:var(--rd-text-muted); font-family:var(--rd-font-product); font-size:11px; letter-spacing:.04em; text-align:center; transition:max-height 360ms ease,margin 360ms ease,opacity 280ms ease; }
.year-heading { display:none; }
.year-section { padding-top:10px; }
.week,.task-day { border:1px solid var(--rd-glass-border); border-radius:20px; background:var(--rd-glass-surface); box-shadow:var(--rd-glass-shadow); transition:background 220ms ease,border-color 220ms ease,box-shadow 260ms ease,transform 260ms cubic-bezier(.22,1,.36,1); }
.week:hover,.task-day:hover { border-color:#414651; background:rgb(24 26 32 / 94%); box-shadow:0 14px 34px rgb(24 26 32 / 18%); }
.week:hover .week-title,.task-day:hover .task-day-head { color:#fff; background:transparent; }
body.brand-intro.brand-revealed .app-shell > :not(.terminal-header) { opacity:1; pointer-events:auto; transition:opacity 420ms ease 180ms; }
@media (prefers-reduced-motion:reduce) { body.brand-intro .terminal-header,body.brand-intro.brand-revealed .app-shell > :not(.terminal-header) { transition:none; } }

html { background: var(--rd-canvas); -webkit-text-size-adjust: 100%; }
[hidden] { display:none !important; }
body {
  min-height: 100dvh;
  background: var(--rd-canvas);
  color: var(--rd-text);
  font-family: var(--rd-font-product);
  font-size: 15px;
  line-height: 1.42;
  text-rendering: optimizeLegibility;
}
button,input,select,textarea { font-family: inherit; }
button,input,select { min-height: var(--rd-touch-target); }
button {
  padding: 10px 14px;
  border: 1px solid var(--rd-line);
  border-radius: var(--rd-radius-control);
  background: var(--rd-surface);
  color: var(--rd-text);
  font-size: 14px;
  font-weight: 600;
  transition: background var(--rd-motion-fast) var(--rd-ease-out),border-color var(--rd-motion-fast) var(--rd-ease-out),color var(--rd-motion-fast) var(--rd-ease-out),transform var(--rd-motion-fast) var(--rd-ease-out);
}
button:hover { border-color: var(--rd-brand-iris); color: var(--rd-brand-iris); }
button:active { transform: scale(.985); }
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible {
  outline: 3px solid color-mix(in srgb,var(--rd-focus) 38%,transparent);
  outline-offset: 2px;
}

.app-shell { width: min(100%,760px); padding: max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); }
.terminal-header { min-height: 66px; padding: 12px 0 14px; border: 0; }
.terminal-header .brand { min-height: 36px; }
.brand-wordmark { display: block; width: 104px; height: auto; }
.terminal-header #save-state,.terminal-header #sync-state {
  top: 16px;
  padding: 4px 7px;
  border-radius: 999px;
  background: var(--rd-surface);
  color: var(--rd-text-muted);
  font-family: var(--rd-font-code);
  font-size: 9px;
  letter-spacing: .03em;
}
.terminal-header #sync-state { left: 0; }
.terminal-header #save-state { right: 0; }

.nav {
  position: sticky;
  z-index: 20;
  top: max(8px,env(safe-area-inset-top));
  gap: 4px;
  margin: 0 0 14px;
  padding: 5px;
  border: 1px solid var(--rd-line);
  border-radius: 20px;
  background: color-mix(in srgb,var(--rd-surface) 94%,transparent);
  box-shadow: var(--rd-shadow-card);
  backdrop-filter: blur(14px);
}
.nav button {
  flex: 1;
  min-width: 0;
  min-height: 44px;
  padding: 7px 4px;
  border: 0;
  border-radius: 15px;
  background: transparent;
  color: var(--rd-text-secondary);
  font-family: var(--rd-font-code);
  font-size: 10px;
  font-weight: 600;
}
.nav button:hover,.nav button:focus-visible { background: var(--rd-brand-iris-soft); color: var(--rd-brand-iris); }

.year-section { padding-top: 22px; }
.year-heading { justify-content:space-between; margin: 0 4px 12px; padding: 0; border: 0; }
.year-heading span,.day-title,.movement-classification,.treatment-progress-head {
  font-family: var(--rd-font-code);
  font-size: 10px;
  letter-spacing: .04em;
}
.year-heading b { color: var(--rd-text); font-size: 28px; font-weight: 650; letter-spacing: -.03em; }
.week {
  margin-bottom: 12px;
  padding: 4px;
  border: 1px solid var(--rd-line);
  border-radius: var(--rd-radius-card);
  background: var(--rd-surface);
  box-shadow: var(--rd-shadow-card);
}
.week-title {
  min-height: 48px;
  margin: 0;
  padding: 10px 12px;
  border: 0;
  border-radius: 19px;
  color: var(--rd-text);
  font-family: var(--rd-font-code);
  font-size: 10px;
}
.week-title:hover,.week-title:focus-visible { background: var(--rd-brand-iris-soft); color: var(--rd-brand-iris); }
.week-body { padding: 0 4px 6px; }
.day-title { margin: 12px 8px 5px; color: var(--rd-text-muted); }

.movement {
  min-height: 48px;
  margin: 5px 0;
  padding: 9px 10px;
  border-color: var(--rd-line);
  border-radius: 16px;
  background: var(--rd-surface-raised);
  color: var(--rd-text);
  font-family: var(--rd-font-product);
  font-size: 13px;
  font-variant-numeric: tabular-nums lining-nums;
  box-shadow: none;
}
.movement:hover,.movement:focus-visible { border-color: var(--rd-focus); background: var(--rd-surface-raised); box-shadow: 0 8px 24px rgb(24 26 32 / 7%); }
.movement-date,.movement-status,.movement-counter,.separator { font-family: var(--rd-font-code); font-size: 10px; }
.amount { color: var(--rd-text); font-weight: 650; font-variant-numeric: tabular-nums lining-nums; }
.income .amount,.cash-line .amount { color: var(--rd-positive); }
.status-pending { color: var(--rd-pending); }
.status-ok { color: var(--rd-text-secondary); }
.movement-classification { margin: 3px 10px 6px; color: var(--rd-text-muted); }
.movement-tags-toggle { min-height: 36px; margin: -3px 7px 2px auto; border-radius: 12px; font-family: var(--rd-font-code); }
.movement-tags { margin: 0 8px 8px; padding: 8px 10px; border: 0; border-radius: 12px; background: var(--rd-brand-iris-soft); color: var(--rd-brand-iris-strong); }
.movement-actions { gap: 8px; margin: 4px 7px 9px; }
.movement-actions button { min-height: 44px; border-radius: 14px; font-size: 12px; }
.cash-line { margin: 8px 4px; padding: 10px; border: 0; color: var(--rd-text); font-family: var(--rd-font-product); }
.cash-now {
  margin: 12px 0;
  padding: 13px 11px;
  border-color: color-mix(in srgb,var(--rd-brand-iris) 45%,var(--rd-line));
  border-radius: 18px;
  background: var(--rd-brand-iris-soft);
  box-shadow: none;
}
.cash-now .movement-category,.cash-now .amount,.cash-now .movement-status { color: var(--rd-brand-iris-strong); }
.annual-close { margin: 24px 4px 8px; padding: 16px 4px; border: 0; color: var(--rd-text-secondary); }

.dashboard { padding: 4px 0 34px; }
.dashboard-frame { border: 0; border-radius: var(--rd-radius-panel); background: var(--rd-surface); box-shadow: var(--rd-shadow-card); }
.dashboard-slide { padding: 22px 18px 26px; }
.dashboard-head { margin-bottom: 16px; padding: 0 36px 12px; border-color: var(--rd-line); font-family: var(--rd-font-code); }
.dashboard-grid { gap: 10px; }
.dashboard-card { min-height: 94px; padding: 15px; border-color: var(--rd-line); border-radius: 20px; background: var(--rd-surface-raised); }
.dashboard-card span { color: var(--rd-text-muted); font-family: var(--rd-font-code); font-size: 10px; }
.dashboard-card b { margin-top: 12px; color: var(--rd-text); font-size: 22px; font-weight: 650; font-variant-numeric: tabular-nums lining-nums; letter-spacing: -.025em; }
.dashboard-card.positive b { color: var(--rd-positive); }.dashboard-card.negative b { color: var(--rd-negative); }.dashboard-card.warning b { color: var(--rd-pending); }
.dashboard-panel { margin-top: 20px; padding: 16px; border: 1px solid var(--rd-line); border-radius: 20px; background: var(--rd-surface-raised); }
.dashboard-panel h2 { margin-bottom: 12px; color: var(--rd-text-secondary); font-family: var(--rd-font-code); font-size: 10px; }
.dashboard-panel p { color: var(--rd-text-muted); font-size: 13px; }
.health-panel { min-width:0; border-left: 2px solid var(--rd-brand-iris); }
.health-panel h2 { color: var(--rd-brand-iris); }
.health-panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.health-panel-actions { display:flex; flex-wrap:wrap; gap:8px; }
.health-panel-actions button { min-height:44px; padding:8px 11px; font-family:var(--rd-font-code); font-size:10px; }
.health-metric-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 12px; }
.health-search { display:block; margin:10px 0 2px; color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:10px; }
.health-search input { display:block; width:100%; min-height:42px; margin-top:6px; }
.health-empty { margin:10px 0; padding:12px 0; color:var(--rd-text-muted); }
.health-record { width:100%; border:0; border-top:1px solid var(--rd-line); border-radius:0; background:transparent; color:inherit; text-align:left; }
.health-record:hover,.health-record:focus-visible { background:var(--rd-brand-iris-soft); }
.health-history { min-width:0; overflow-wrap:anywhere; }
.health-panel button:focus-visible,.health-search input:focus-visible { outline:3px solid var(--rd-brand-iris); outline-offset:2px; }
@media (prefers-reduced-motion:reduce) { .health-panel * { scroll-behavior:auto !important; transition-duration:0.01ms !important; animation-duration:0.01ms !important; } }
@media (max-width:480px) { .health-panel-head { align-items:flex-start; flex-direction:column; }.health-panel-actions { width:100%; }.health-panel-actions button { flex:1 1 120px; }.health-metric-grid { grid-template-columns:1fr; } }
.dashboard-upcoming { padding: 10px 0; border-color: var(--rd-line); font-size: 13px; }
.dashboard-upcoming b,.dashboard-upcoming b:first-letter { color: var(--rd-text); font-variant-numeric: tabular-nums; }
.dashboard-bar { height: 6px; overflow: hidden; border-radius: 999px; background: var(--rd-line); }.dashboard-bar i { border-radius: inherit; background: var(--rd-positive); }
.dashboard-tags { gap: 8px; }.dashboard-tags button { min-height: 44px; padding: 8px 12px; border-radius: 999px; font-family: var(--rd-font-code); font-size: 10px; }
.dashboard-dots { gap: 8px; }.dashboard-dots button { width: 28px; min-width: 28px; min-height: 28px; border: 0; background: var(--rd-line); color: var(--rd-text-muted); }.dashboard-dots button.selected { background: var(--rd-brand-iris); color: #fff; }
.dashboard-arrow { top: 16px; width: 40px; min-width: 40px; min-height: 40px; border: 0; background: var(--rd-surface-raised); box-shadow: var(--rd-shadow-card); color: var(--rd-text); }
.work-timer { color: var(--rd-brand-iris); font-family: var(--rd-font-product); font-size: 34px; font-variant-numeric: tabular-nums; }
.work-day { padding: 9px 2px; border-color: var(--rd-line); border-radius: 12px; }.work-day.today { border-color: var(--rd-brand-iris); background: var(--rd-brand-iris-soft); }.work-day.worked i { color: var(--rd-positive); }

dialog {
  width: min(calc(100% - 24px),520px);
  max-height: min(90dvh,760px);
  overflow: auto;
  border: 1px solid var(--rd-line);
  border-radius: var(--rd-radius-panel);
  background: var(--rd-surface);
  color: var(--rd-text);
  box-shadow: var(--rd-shadow-float);
}
dialog::backdrop { background: rgb(16 18 24 / 68%); backdrop-filter: blur(6px); }
dialog form { padding: 22px; }
.dialog-head { margin-bottom: 16px; }.dialog-head h1,dialog h1 { font-size: 22px; font-weight: 650; letter-spacing: -.02em; }
.onboarding-wordmark { display:block; width:132px; height:auto; margin:4px auto 24px; }
.day1-context { border-color:var(--rd-accent,#8b7cf6); }
.day1-context p { margin:8px 0 14px; }
.progressive-context { margin-top:16px; padding-top:16px; border-top:1px solid var(--rd-line); }
.progressive-suggestion { display:flex; justify-content:space-between; gap:10px; align-items:center; padding:10px 0; border-bottom:1px solid var(--rd-line); }
.progressive-suggestion button { min-height:40px; }
.progressive-context h2 { margin-bottom:6px; }
.daily-priority-label { display:block; margin-bottom:4px; color:var(--rd-accent,#8b7cf6); font-size:.72rem; letter-spacing:.14em; font-weight:700; }
.view-window-cue { margin:14px 0 0; color:var(--rd-muted,#777); font-size:.72rem; letter-spacing:.12em; }
.friction-cue { display:block; margin-top:8px; color:var(--rd-muted,#777); font-size:.68rem; letter-spacing:.12em; }
.forecast-card { border-color:var(--rd-accent,#8b7cf6); }
.consequence-card { border-color:var(--rd-green,#58b77a); }
.consequence-card strong { color:var(--rd-muted,#777); font-size:.72rem; letter-spacing:.1em; }
.chat-boundary-note { margin:8px 0; }
.suggestion-card { border-color:var(--rd-green,#58b77a); }
.suggestion-row { display:flex; justify-content:space-between; gap:12px; align-items:center; padding:10px 0; border-bottom:1px solid var(--rd-line); }
.suggestion-row small { display:block; margin-top:4px; color:var(--rd-muted,#777); }
.plan-capabilities { margin-top:6px; }
.entitlement-boundary { margin-top:6px; }
.plan-privacy { margin-top:6px; }
.plan-preference { margin-top:6px; }
.subscription-plan-panel { max-width:100%; overflow-wrap:anywhere; }
.subscription-plan-panel button { min-height:44px; }
@media (max-width:480px) { .subscription-plan-panel { padding:12px; } .plan-capabilities { display:grid; gap:8px; } }
.close { width: 44px; min-width:44px; min-height:44px; border-radius: 50%; font-size: 24px; }
dialog label { margin: 14px 0; color: var(--rd-text-secondary); font-size: 13px; font-weight: 600; }
dialog input:not([type=checkbox]),dialog select {
  min-height: 52px;
  margin-top: 6px;
  padding: 12px 14px;
  border-color: var(--rd-line);
  border-radius: var(--rd-radius-control);
  background: var(--rd-surface-raised);
  color: var(--rd-text);
  font-size: 16px;
}
.form-help,dialog p { color: var(--rd-text-muted); font-size: 13px; }.form-error { color: var(--rd-negative); }
.chat-output { min-height: 110px; padding: 14px; border-color: var(--rd-line); border-radius: 16px; background: var(--rd-surface-raised); font-family: var(--rd-font-product); font-size: 14px; }
.primary,.rd-primary-action { min-height: 52px; border: 0; border-radius: var(--rd-radius-control); background: var(--rd-brand-iris); color: #fff; box-shadow: none; }
.primary:hover,.primary:focus-visible { background: var(--rd-brand-iris-strong); color: #fff; }
.danger { border-color: var(--rd-negative); color: var(--rd-negative); }.danger:hover { background: var(--rd-negative-surface); color: var(--rd-negative); }
.utility-actions,.dialog-actions { gap: 10px; }

body.auth-checking .app-shell,body.auth-locked .app-shell { visibility: hidden; }
#local-lock-dialog[open] { visibility: visible; opacity: 1; pointer-events: auto; }
#cloud-dialog[open] { width: min(calc(100vw - 24px), 390px); max-height: 90vh; overflow: auto; }
body.auth-locked #cloud-dialog { max-width: 390px; text-align: left; }
body.auth-locked #cloud-dialog::before {
  content: '';
  display: block;
  width: 58px;
  height: 58px;
  margin: 24px 22px 0;
  border-radius: 17px;
  background: var(--rd-brand-iris) url('./assets/rodoli/favicon.svg') center/58px 58px no-repeat;
}
body.auth-locked #cloud-dialog::backdrop,body.auth-checking #cloud-dialog::backdrop { background: var(--rd-canvas); }
body.auth-locked #cloud-dialog-title { font-size: 22px; }

@media (prefers-color-scheme: dark) {
  .brand-wordmark { content: url('./assets/rodoli/wordmark-reversed.svg'); }
  .nav { background: color-mix(in srgb,var(--rd-surface) 92%,transparent); }
  .movement:hover,.movement:focus-visible { box-shadow: 0 10px 28px rgb(0 0 0 / 22%); }
}
@media (max-width:390px) {
  .app-shell { padding-inline: 10px; }
  .terminal-header #save-state { display:none; }
  .brand-wordmark { width: 88px; }
  .nav button { font-size: 9px; }
  .dashboard-slide { padding-inline: 12px; }
  .dashboard-card { min-height: 84px; padding: 12px; }
  .dashboard-card b { font-size: 19px; }
  .row-columns { grid-template-columns:4.5ch 1ch 2.5ch minmax(7.5ch,1fr) 1ch 6.5ch 1ch 2.5ch; column-gap:.2ch; }
  .movement { padding-inline: 7px; font-size: 12px; }
  .work-day i { font-size: 6px; }
}
@media (min-width:800px) {
  .app-shell { width:min(100%,900px); padding-inline:28px; }
  .dashboard-grid { grid-template-columns:repeat(3,1fr); }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; animation-duration:120ms!important; transition-duration:120ms!important; }
}
@media (prefers-contrast:more) {
  button,.week,.movement,.dashboard-panel,dialog { border-width:2px; }
}

/* Milestones: one compact, shared geometry for every four-character marker. */
.done-note {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 224px;
  min-width: 224px;
  height: 42px;
  margin: 10px auto 8px;
  padding: 0 12px;
  overflow: hidden;
  border: 1px solid var(--rd-line);
  border-radius: 16px;
  background: var(--rd-surface-raised);
  color: var(--rd-positive);
  font-family: var(--rd-font-code);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  box-shadow: none;
}
.done-note::before,
.done-note::after { display: none; content: none; }
.done-note:hover { border-color: var(--rd-positive); background: var(--rd-surface-raised); }

/* Premium glass layer: restrained translucency for focus and hierarchy. */
:root {
  --rd-glass-surface: rgb(255 255 255 / 72%);
  --rd-glass-raised: rgb(255 255 255 / 84%);
  --rd-glass-border: rgb(255 255 255 / 78%);
  --rd-glass-shadow: 0 18px 48px rgb(58 63 110 / 10%);
  --rd-glass-blur: 20px;
}

body {
  background:
    radial-gradient(circle at 8% -8%, rgb(85 88 231 / 11%), transparent 34rem),
    radial-gradient(circle at 98% 24%, rgb(122 167 255 / 9%), transparent 30rem),
    var(--rd-canvas);
}
.nav,
.week,
.dashboard-frame,
.dashboard-card,
.dashboard-panel,
dialog {
  border-color: var(--rd-glass-border);
  box-shadow: var(--rd-glass-shadow);
}
.nav {
  background: var(--rd-glass-surface);
}
.week,
.dashboard-frame,
dialog {
  background: var(--rd-glass-surface);
}
.movement,
.dashboard-card,
.dashboard-panel,
.chat-output,
dialog input:not([type=checkbox]),
dialog select {
  background: var(--rd-glass-raised);
}
.movement:hover,
.movement:focus-visible,
.dashboard-card:hover {
  box-shadow: 0 14px 34px rgb(58 63 110 / 10%);
}
dialog::backdrop {
  background: rgb(16 18 30 / 46%);
}

@supports (backdrop-filter: blur(1px)) {
  .nav,
  .week,
  .dashboard-frame,
  dialog {
    -webkit-backdrop-filter: blur(var(--rd-glass-blur)) saturate(125%);
    backdrop-filter: blur(var(--rd-glass-blur)) saturate(125%);
  }
}

/* iOS-first soft interaction layer: touch feels immediate without visual noise. */
html {
  overscroll-behavior-y: none;
  scroll-behavior: smooth;
  -webkit-tap-highlight-color: transparent;
}
body {
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  touch-action: manipulation;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.app-shell,
.nav,
.movement,
.dashboard-card,
.dashboard-panel,
dialog {
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
.app-shell { contain: paint; }
.ledger,
.dashboard {
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
button,
input,
select,
textarea {
  -webkit-tap-highlight-color: transparent;
}
button {
  will-change: transform;
  transition:
    transform 180ms cubic-bezier(.22, 1, .36, 1),
    background-color 220ms ease,
    border-color 220ms ease,
    box-shadow 220ms ease,
    color 220ms ease;
}
button:active { transform: scale(.975); }
.nav button:active { transform: scale(.94); }
.movement,
.dashboard-card,
.dashboard-panel,
.week,
.cash-now {
  transition:
    transform 260ms cubic-bezier(.22, 1, .36, 1),
    box-shadow 260ms ease,
    border-color 220ms ease,
    background-color 220ms ease;
}
.movement:active,
.dashboard-card:active { transform: scale(.992); }
.app-panel { animation: rodoli-panel-soft-in 320ms cubic-bezier(.22, 1, .36, 1); }
@keyframes rodoli-panel-soft-in {
  from { opacity: .72; transform: translate3d(0, 6px, 0); }
  to { opacity: 1; transform: translate3d(0, 0, 0); }
}
dialog[open] {
  animation: rodoli-dialog-soft-in 260ms cubic-bezier(.22, 1, .36, 1);
}
@keyframes rodoli-dialog-soft-in {
  from { opacity: 0; transform: translate3d(0, 10px, 0) scale(.985); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}
@media (hover: none) {
  button:hover { color: inherit; }
  .movement:hover,
  .dashboard-card:hover { box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  button,
  .movement,
  .dashboard-card,
  .dashboard-panel,
  .week,
  .cash-now,
  .app-panel,
  dialog[open] {
    animation: none !important;
    transition: none !important;
  }
}

/* A quiet, slow-moving brand atmosphere behind the financial surface. */
body {
  position: relative;
  isolation: isolate;
  overflow-x: hidden;
}
body::before {
  content: '';
  position: fixed;
  z-index: -1;
  inset: -18%;
  pointer-events: none;
  background:
    radial-gradient(ellipse 34rem 25rem at 12% 16%, rgb(85 88 231 / 15%), transparent 70%),
    radial-gradient(ellipse 28rem 32rem at 88% 30%, rgb(105 145 239 / 12%), transparent 72%),
    radial-gradient(ellipse 32rem 26rem at 56% 102%, rgb(156 122 235 / 9%), transparent 70%);
  filter: blur(34px) saturate(108%);
  opacity: .58;
  transform: translate3d(-.8%, -.5%, 0) scale(1.018);
  animation: rodoli-atmosphere 48s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes rodoli-atmosphere {
  0% { transform: translate3d(-.8%, -.5%, 0) scale(1.018); }
  50% { transform: translate3d(.7%, .4%, 0) scale(1.03); }
  100% { transform: translate3d(-.3%, .8%, 0) scale(1.024); }
}
@media (prefers-color-scheme: dark) {
  body::before {
    background:
      radial-gradient(ellipse 34rem 25rem at 12% 16%, rgb(85 88 231 / 23%), transparent 70%),
      radial-gradient(ellipse 28rem 32rem at 88% 30%, rgb(66 105 190 / 19%), transparent 72%),
      radial-gradient(ellipse 32rem 26rem at 56% 102%, rgb(132 91 204 / 14%), transparent 70%);
    opacity: .46;
  }
}
@media (prefers-reduced-motion: reduce) {
  body::before { animation: none; }
}


@media (prefers-color-scheme: dark) {
  :root {
    --rd-glass-surface: rgb(25 28 36 / 76%);
    --rd-glass-raised: rgb(34 38 48 / 88%);
    --rd-glass-border: rgb(255 255 255 / 12%);
    --rd-glass-shadow: 0 20px 52px rgb(0 0 0 / 25%);
  }
  body {
    background:
      radial-gradient(circle at 8% -8%, rgb(85 88 231 / 18%), transparent 34rem),
      radial-gradient(circle at 98% 24%, rgb(66 105 190 / 15%), transparent 30rem),
      var(--rd-canvas);
  }
  .movement:hover,
  .movement:focus-visible,
  .dashboard-card:hover {
    box-shadow: 0 14px 34px rgb(0 0 0 / 26%);
  }
}

/* Final navigation positioning overrides. */
.terminal-header { position: sticky; top: 0; z-index: 21; background: color-mix(in srgb,var(--rd-surface) 72%,transparent); backdrop-filter: blur(18px) saturate(125%); }
.nav { top: calc(66px + env(safe-area-inset-top)); }
.nav-toggle { position: absolute; right: 0; top: 12px; width: 40px; min-height: 40px; padding: 0; border: 0; border-radius: 50%; background: color-mix(in srgb,var(--rd-surface) 80%,transparent); color: var(--rd-text-muted); font-family: var(--rd-font-code); }
body[data-theme="light"] { --rd-canvas:#f1f1fa; --rd-brand-iris-soft:#ecebfd; --rd-info-surface:#e8f1fb; --rd-glass-surface:rgb(255 255 255 / 68%); --rd-glass-raised:rgb(255 255 255 / 84%); background:radial-gradient(circle at 8% -8%,rgb(156 122 235 / 18%),transparent 34rem),radial-gradient(circle at 98% 24%,rgb(91 139 231 / 14%),transparent 30rem),var(--rd-canvas); }
body[data-theme="dark"],body[data-theme="classic-dark"] { background: radial-gradient(circle at 8% -8%,rgb(85 88 231 / 16%),transparent 34rem),radial-gradient(circle at 98% 24%,rgb(122 167 255 / 10%),transparent 30rem),var(--rd-canvas); }
body[data-theme="light"]::before { background:radial-gradient(ellipse 34rem 25rem at 12% 16%,rgb(156 122 235 / 22%),transparent 70%),radial-gradient(ellipse 28rem 32rem at 88% 30%,rgb(91 139 231 / 17%),transparent 72%),radial-gradient(ellipse 32rem 26rem at 56% 102%,rgb(183 151 238 / 12%),transparent 70%); opacity:.68; }
.terminal-header { background: transparent; backdrop-filter: none; }
.brand-toggle { position: relative; display: block; width: max-content; min-height: 44px; margin: 0 auto; padding: 0; border: 0; border-radius: 12px; background: transparent; color: inherit; }
.brand-toggle:hover, .brand-toggle:focus-visible { background: transparent; color: inherit; }
.brand-toggle .brand-wordmark { transition: filter 260ms var(--rd-ease-out), opacity 260ms var(--rd-ease-out); }
.brand-toggle.is-open .brand-wordmark { filter: drop-shadow(0 0 9px rgb(85 88 231 / 42%)); }
.nav-toggle { display: none; }
.terminal-header #save-state { right: 58px; }
.user-menu-button { position: absolute; top: 12px; right: 0; min-height: 40px; padding: 8px 11px; border: 1px solid var(--rd-line); border-radius: 999px; background: color-mix(in srgb,var(--rd-surface) 72%,transparent); color: var(--rd-text-secondary); font-family: var(--rd-font-code); font-size: 10px; letter-spacing: .04em; box-shadow: 0 8px 24px rgb(24 26 32 / 6%); }
.user-menu-button:hover, .user-menu-button:focus-visible { border-color: var(--rd-brand-iris); background: var(--rd-brand-iris-soft); color: var(--rd-brand-iris); }
.user-menu-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 18px 0 8px; }
.user-menu-grid button { min-height: 50px; text-align: left; font-family: var(--rd-font-code); font-size: 10px; }
body.auth-locked .user-menu-button { display: none; }
.floating-menu { left: auto; top: auto; right: max(20px,env(safe-area-inset-right)); bottom: max(84px,calc(env(safe-area-inset-bottom) + 84px)); }

/* Phase 115: narrow-safe BODY / FOOD / MEAL layout. */
.health-panel { overflow-wrap: anywhere; }
.health-panel-actions { min-width: 0; }
.meal-record { align-items: center; }
.meal-record small { min-width: 0; color: var(--rd-text-muted); font-family: var(--rd-font-code); font-size: 9px; }
.meal-tags-field { display: grid; grid-template-columns: repeat(auto-fit,minmax(110px,1fr)); gap: 6px; margin: 10px 0; padding: 8px; border: 1px solid var(--rd-line); border-radius: 12px; }
.meal-tags-field legend { padding: 0 4px; color: var(--rd-text-muted); font-family: var(--rd-font-code); font-size: 10px; }
.meal-tags-field label { min-width: 0; margin: 0; padding: 7px; border-radius: 8px; background: var(--rd-surface); font-size: 10px; overflow-wrap: anywhere; }
.meal-tags-field input { accent-color: var(--rd-brand-iris); }
.shop-empty { display:grid; gap:5px; margin-top:14px; padding:14px; border:1px dashed var(--rd-line); border-radius:16px; color:var(--rd-text-muted); }
.shop-empty span { color:var(--rd-brand-iris); font-family:var(--rd-font-code); font-size:10px; }
.shop-empty b { color:var(--rd-text); font-size:13px; font-weight:500; }
.shop-empty small { font-size:10px; }
.shop-ui-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.shop-ui-head button { min-height:40px; }
.shop-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 0; border-bottom:1px solid var(--rd-line-soft); }
.shop-row > span:first-child { min-width:0; overflow-wrap:anywhere; }
.shop-row button { min-height:36px; padding:6px 8px; }
.shop-store-filters { display:flex; gap:6px; overflow-x:auto; padding:8px 0 2px; }
.shop-store-filters button { min-height:34px; padding:6px 10px; white-space:nowrap; }
.shop-row button:focus-visible, .shop-store-filters button:focus-visible { outline:3px solid var(--rd-brand-iris); outline-offset:2px; }
@media (max-width:390px) { .shop-row { align-items:flex-start; flex-wrap:wrap; } .shop-row > span:last-child { margin-left:auto; } }
.shop-view { border-left:2px solid var(--rd-brand-iris); }
.shop-view-summary { margin:0 0 10px; color:var(--rd-text-muted); font-family:var(--rd-font-code); font-size:10px; }
.shop-view-action { margin:0 0 10px; min-height:40px; }
.shop-feedback { margin:0 0 8px; color:var(--rd-brand-green); font-family:var(--rd-font-code); font-size:10px; }
.move-ui { display:grid; gap:8px; margin-top:14px; padding:14px; border:1px dashed var(--rd-line); border-radius:16px; }
.move-ui-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.move-ui-head span { color:var(--rd-brand-iris); font-family:var(--rd-font-code); font-size:10px; }
.move-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 0; border-bottom:1px solid var(--rd-line-soft); }
.move-row button { min-height:36px; padding:6px 8px; }
.move-ui-head button { min-height:40px; padding:8px 10px; }
.move-ui select[multiple] { width:100%; max-width:100%; }
.onboarding-intents { display:grid; gap:8px; margin:16px 0; }
.onboarding-intents label { display:flex; align-items:center; gap:10px; min-height:48px; margin:0; padding:10px 12px; border:1px solid var(--rd-line); border-radius:14px; background:var(--rd-surface-raised); color:var(--rd-text); }
.onboarding-intents input { min-height:22px; }
.onboarding-chat-examples { display:grid; gap:8px; margin:16px 0; }
.onboarding-chat-examples button { min-height:44px; text-align:left; }
@media (max-width:480px) { #onboarding-dialog { width:calc(100% - 20px); } #onboarding-dialog .dialog-actions { grid-template-columns:1fr; } }
@media (min-width:800px) { #onboarding-dialog { width:min(520px,calc(100% - 40px)); } .onboarding-intents,.onboarding-chat-examples { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:390px) { .move-ui-head { align-items:flex-start; flex-wrap:wrap; } .move-ui-head button { flex:1 1 110px; } .move-row { align-items:flex-start; flex-wrap:wrap; } .move-row > span:last-child { margin-left:auto; } }
.meal-tags-field label:focus-within { outline: 3px solid var(--rd-brand-iris); outline-offset: 2px; }
@media (max-width: 390px) { .meal-tags-field { grid-template-columns: 1fr 1fr; gap: 4px; } .meal-tags-field label { padding: 6px 4px; font-size: 9px; } .meal-record { align-items: flex-start; flex-wrap: wrap; } }
