/* ═══════════════════════════════════════════════════════════════════
   TRACKER — DESIGN SYSTEM + APP SHELL
   ═══════════════════════════════════════════════════════════════════
   Loaded after every other stylesheet. It owns:
     1. Tokens        — dark (default) + light theme, per-tracker accents,
                        and the legacy variable names the older sheets use
     2. Base          — type (Inter + JetBrains Mono for figures), focus,
                        scrollbars
     3. Shell         — sidebar, sticky top bar, sub-tab strips, mobile
                        bottom bar + "More" sheet
     4. Components    — cards, stat tiles, buttons, pills, inputs, tables,
                        badges, dialogs, toasts — restyled in place, so the
                        markup and every id/handler the JS relies on is
                        unchanged
     5. Home, Settings, sign-in
     6. Tracker refinements
     7. Motion, density, responsive

   Theme comes from <html data-theme="dark|light">, set by the inline script
   in index.html before first paint (Settings → Appearance).
   ═══════════════════════════════════════════════════════════════════ */

/* ───────────────────────────────────────────────────────────────────
   1. TOKENS
   ─────────────────────────────────────────────────────────────────── */
html[data-theme]{
  --f:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --fm:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r:10px;--rl:16px;--rx:22px;
  --side-w:252px;--side-w-c:76px;
  --top-h:64px;--tabs-h:52px;--bnav-h:64px;
  --safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);
  --top-total:calc(var(--top-h) + var(--safe-t));
  --ease:cubic-bezier(.2,.8,.2,1);--spring:cubic-bezier(.32,1.25,.5,1);
  --dur:.18s;
}
html[data-theme="dark"]{
  color-scheme:dark;
  --canvas:#07080a;
  --bg:#0f1114;--bg2:#15181c;--bg3:#1c2025;--bg4:#262b31;
  --tx:#eceef1;--tx2:#9aa1aa;--tx3:#646b75;
  --bl:rgba(255,255,255,.06);--bm:rgba(255,255,255,.1);--bs:rgba(255,255,255,.17);
  --glass:rgba(9,10,12,.74);--side-bg:#0b0c0f;
  --card-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 1px 2px rgba(0,0,0,.35);
  --shadow-2:0 10px 30px rgba(0,0,0,.45);--shadow-3:0 28px 80px rgba(0,0,0,.65);
  --pos:#3ddc84;--neg:#ff6b6b;--warn:#fbbf24;--info:#60a5fa;
  --brand:#8b7dff;
  --c-portfolio:#34d399;--c-gym:#fb923c;--c-macro:#60a5fa;--c-calendar:#a78bfa;--c-daily:#2dd4bf;
  --c-budget:#fbbf24;--c-poker:#fb7185;--c-fishing:#22d3ee;--c-fantasy:#a3e635;--c-chess:#d9a66b;
  --on-acc:#07080a;
  --toast-bg:#20242a;--toast-tx:#eceef1;
}
html[data-theme="light"]{
  color-scheme:light;
  --canvas:#f4f4f6;
  --bg:#ffffff;--bg2:#f3f3f6;--bg3:#e9e9ee;--bg4:#dcdce3;
  --tx:#111318;--tx2:#5c6370;--tx3:#8d929c;
  --bl:rgba(15,20,30,.07);--bm:rgba(15,20,30,.12);--bs:rgba(15,20,30,.2);
  --glass:rgba(244,244,246,.8);--side-bg:#fbfbfc;
  --card-shadow:0 1px 2px rgba(15,20,30,.05),0 1px 1px rgba(15,20,30,.03);
  --shadow-2:0 10px 30px rgba(15,20,30,.1);--shadow-3:0 28px 80px rgba(15,20,30,.22);
  --pos:#15803d;--neg:#dc2626;--warn:#b45309;--info:#2563eb;
  --brand:#5b4ee6;
  --c-portfolio:#059669;--c-gym:#ea580c;--c-macro:#2563eb;--c-calendar:#7c3aed;--c-daily:#0d9488;
  --c-budget:#b45309;--c-poker:#e11d48;--c-fishing:#0891b2;--c-fantasy:#4d7c0f;--c-chess:#9a6330;
  --on-acc:#ffffff;
  --toast-bg:#15171b;--toast-tx:#f4f4f6;
}
/* Accent: the brand colour on Home/Settings, the open tracker's colour
   everywhere else — so buttons, active tabs, focus rings and modals (which
   live outside the tracker containers) all pick it up. */
body{--acc:var(--brand);}
body[data-view="portfolio"]{--acc:var(--c-portfolio);}
body[data-view="gym"]{--acc:var(--c-gym);}
body[data-view="macro"]{--acc:var(--c-macro);}
body[data-view="calendar"]{--acc:var(--c-calendar);}
body[data-view="daily"]{--acc:var(--c-daily);}
body[data-view="budget"]{--acc:var(--c-budget);}
body[data-view="poker"]{--acc:var(--c-poker);}
body[data-view="fishing"]{--acc:var(--c-fishing);}
body[data-view="fantasy"]{--acc:var(--c-fantasy);}
body[data-view="chess"]{--acc:var(--c-chess);}
[data-mod]{--mc:var(--brand);}
[data-mod="portfolio"]{--mc:var(--c-portfolio);}[data-mod="gym"]{--mc:var(--c-gym);}
[data-mod="macro"]{--mc:var(--c-macro);}[data-mod="calendar"]{--mc:var(--c-calendar);}
[data-mod="daily"]{--mc:var(--c-daily);}[data-mod="budget"]{--mc:var(--c-budget);}
[data-mod="poker"]{--mc:var(--c-poker);}[data-mod="fishing"]{--mc:var(--c-fishing);}
[data-mod="fantasy"]{--mc:var(--c-fantasy);}[data-mod="chess"]{--mc:var(--c-chess);}[data-mod="settings"]{--mc:var(--tx2);}
/* Legacy names some older rules and inline styles still reference */
html[data-theme] body{
  --tx1:var(--tx);--card:var(--bg);--bdr:var(--bm);--bd:var(--bm);--brd:var(--bm);
  --accent:var(--acc);--acc-soft:color-mix(in srgb,var(--acc) 14%,transparent);
  --acc-glow:color-mix(in srgb,var(--acc) 32%,transparent);
}

/* ───────────────────────────────────────────────────────────────────
   2. BASE
   ─────────────────────────────────────────────────────────────────── */
html{background:var(--canvas);}
body{font-family:var(--f);font-size:14px;color:var(--tx);background:var(--canvas);
  font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;letter-spacing:-.006em;}
button,input,select,textarea{font-family:inherit;}
::selection{background:color-mix(in srgb,var(--acc) 35%,transparent);}
:focus-visible{outline:2px solid color-mix(in srgb,var(--acc) 75%,transparent);outline-offset:2px;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-thumb{background:var(--bm);border-radius:10px;border:3px solid transparent;background-clip:padding-box;}
::-webkit-scrollbar-thumb:hover{background:var(--bs);background-clip:padding-box;border:3px solid transparent;}
* {scrollbar-color:var(--bm) transparent;}
.ui-i{width:18px;height:18px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;display:inline-block;vertical-align:middle;}
/* Figures: money, stats and big numbers read in the mono face — the
   "terminal" accent — with tabular digits everywhere else. */
.sens,.mc .mv,.hub-w-stat .hv,.nw-chip .val,.fvv,.dt-pct-display,.dt-streak-val,.dt-ws-val,.wt-stat-val,
.bud-net-big,.bud-badge-val,.bud-invest-avail-val,.bud-paycheck-val,.div-yield-val,.div-received-val,.div-card-ticker,
.mt-ring-big,.mt-gp-active-kcal,.mt-streak-cell .sv,.dcf-big-price,.acv,.ffb-clock .big,.home-nw-val,.ui-num{
  font-family:var(--fm);font-feature-settings:"zero" 0;letter-spacing:-.03em;}
table,.alloc-tbl,.wt-tbl,.ffb-table{font-variant-numeric:tabular-nums;}

/* ───────────────────────────────────────────────────────────────────
   3. SHELL
   ─────────────────────────────────────────────────────────────────── */
/* Sidebar */
.ui-side{position:fixed;top:0;bottom:0;left:0;width:var(--side-w);z-index:60;display:flex;flex-direction:column;
  background:var(--side-bg);border-right:1px solid var(--bl);padding:calc(14px + var(--safe-t)) 12px 14px;
  transition:width .22s var(--ease);overflow:hidden;}
.ui-side-brand{display:flex;align-items:center;gap:10px;padding:4px 4px 18px;min-height:52px;}
.ui-logo{width:34px;height:34px;border-radius:11px;border:none;cursor:pointer;flex-shrink:0;display:grid;place-items:center;
  color:#fff;background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 45%,#22d3ee));
  box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 40%,transparent),inset 0 1px 0 rgba(255,255,255,.25);}
.ui-logo .ui-i{width:19px;height:19px;stroke-width:2.3;}
.ui-brand-name{font-size:16px;font-weight:700;letter-spacing:-.3px;white-space:nowrap;flex:1;}
.ui-side-toggle{width:30px;height:30px;border-radius:8px;border:none;background:none;color:var(--tx3);cursor:pointer;display:grid;place-items:center;flex-shrink:0;}
.ui-side-toggle:hover{background:var(--bg2);color:var(--tx);}
.ui-side-nav{flex:1;display:flex;flex-direction:column;gap:2px;overflow-y:auto;overflow-x:hidden;margin:0 -4px;padding:0 4px;scrollbar-width:none;}
.ui-side-nav::-webkit-scrollbar{display:none;}
.ui-nav-sec{font-size:11px;font-weight:600;color:var(--tx3);padding:16px 10px 6px;white-space:nowrap;letter-spacing:.01em;}
.ui-nav-item{position:relative;display:flex;align-items:center;gap:11px;width:100%;padding:7px 8px;border:none;border-radius:10px;
  background:none;color:var(--tx2);font-size:13.5px;font-weight:500;cursor:pointer;text-align:left;white-space:nowrap;
  transition:background var(--dur),color var(--dur);}
.ui-nav-item:hover{background:var(--bg2);color:var(--tx);}
.ui-nav-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;color:var(--mc);
  background:color-mix(in srgb,var(--mc) 12%,transparent);transition:transform .2s var(--spring),background var(--dur);}
.ui-nav-ico .ui-i{width:16px;height:16px;}
.ui-nav-item[data-mod="home"] .ui-nav-ico,.ui-nav-item[data-mod="settings"] .ui-nav-ico{color:var(--tx2);background:var(--bg2);}
.ui-nav-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;}
.ui-nav-meta{font-size:11px;color:var(--tx3);font-family:var(--fm);letter-spacing:-.03em;max-width:84px;overflow:hidden;text-overflow:ellipsis;}
.ui-nav-item.active{background:var(--bg2);color:var(--tx);box-shadow:inset 0 0 0 1px var(--bl);}
.ui-nav-item.active::before{content:'';position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--mc);
  box-shadow:0 0 12px var(--mc);}
.ui-nav-item[data-mod="home"].active::before,.ui-nav-item[data-mod="settings"].active::before{background:var(--brand);box-shadow:0 0 12px var(--brand);}
.ui-nav-item.active .ui-nav-ico{background:var(--mc);color:var(--on-acc);}
.ui-nav-item[data-mod="home"].active .ui-nav-ico,.ui-nav-item[data-mod="settings"].active .ui-nav-ico{background:var(--brand);color:#fff;}
.ui-nav-item:active .ui-nav-ico{transform:scale(.92);}
.ui-nav-spacer{flex:1;min-height:12px;}
.ui-side-foot{border-top:1px solid var(--bl);padding-top:12px;margin-top:8px;}
/* The signed-in chip (filled by showUserChip) becomes a profile row; its
   reload/sign-out buttons live on the Settings page now. */
.ui-side .user-chip{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:10px;cursor:pointer;flex-wrap:nowrap!important;min-width:0;
  font-size:12.5px;color:var(--tx2);position:relative;}
.ui-side .user-chip:hover{background:var(--bg2);}
.ui-side .user-avatar{width:30px;height:30px;border:none;box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--bm);flex-shrink:0;}
.ui-side .user-name{flex:1;min-width:0;max-width:none;color:var(--tx);font-weight:500;}
.ui-side .user-chip .btn-signout{display:none;}
.ui-side .user-chip .sync-status{display:none;}

.ui-main{margin-left:var(--side-w);min-height:100vh;min-height:100dvh;transition:margin-left .22s var(--ease);min-width:0;}
html[data-side="collapsed"] .ui-side{width:var(--side-w-c);}
html[data-side="collapsed"] .ui-main{margin-left:var(--side-w-c);}
html[data-side="collapsed"] .ui-brand-name,html[data-side="collapsed"] .ui-nav-lbl,html[data-side="collapsed"] .ui-nav-meta,
html[data-side="collapsed"] .ui-nav-sec,html[data-side="collapsed"] .ui-side .user-name{display:none;}
html[data-side="collapsed"] .ui-side-brand{flex-direction:column;gap:12px;padding-bottom:10px;}
html[data-side="collapsed"] .ui-nav-item{justify-content:center;padding:7px 0;}
html[data-side="collapsed"] .ui-nav-sec{display:block;height:1px;padding:0;margin:10px 12px;background:var(--bl);font-size:0;}
html[data-side="collapsed"] .ui-side .user-chip{justify-content:center;padding:6px 0;}
html[data-side="collapsed"] .ui-side-toggle .ui-i{transform:scaleX(-1);}

/* Top bar */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:14px;
  height:var(--top-total);padding:var(--safe-t) 28px 0;background:var(--glass);
  -webkit-backdrop-filter:saturate(1.7) blur(18px);backdrop-filter:saturate(1.7) blur(18px);border-bottom:1px solid var(--bl);}
.topbar-left{display:flex!important;flex-direction:row;align-items:center;gap:12px;min-width:0;}
.ui-page-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex-shrink:0;color:var(--acc);
  background:color-mix(in srgb,var(--acc) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 22%,transparent);}
.ui-page-ico .ui-i{width:18px;height:18px;}
.ui-page-titles{min-width:0;display:flex;flex-direction:column;gap:1px;}
.topbar-title{font-size:17px;font-weight:650;letter-spacing:-.35px;margin:0;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#price-status{font-size:11px;color:var(--tx3)!important;min-height:0;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw;}
#price-status:empty{display:none;}
body:not([data-view="portfolio"]) #price-status{display:none;}
.topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.hub-back-btn{display:none!important;}
.ui-page-actions{display:flex;align-items:center;gap:6px;}
.ui-page-actions>[data-for]{display:none;align-items:center;gap:6px;}
.ui-page-actions .pane-toolbar{margin:0!important;}
body[data-view="gym"] .ui-page-actions>[data-for="gym"],body[data-view="fishing"] .ui-page-actions>[data-for="fishing"],
body[data-view="fantasy"] .ui-page-actions>[data-for="fantasy"]{display:flex;}
.privacy-btn,.ui-avatar-btn,.ui-icon-btn{width:38px;height:38px;border-radius:11px;border:1px solid var(--bl);background:var(--bg2);color:var(--tx2);
  cursor:pointer;display:grid;place-items:center;padding:0;font-size:15px;transition:background var(--dur),color var(--dur),border-color var(--dur);}
.privacy-btn:hover,.ui-avatar-btn:hover,.ui-icon-btn:hover{background:var(--bg3);color:var(--tx);border-color:var(--bm);}
body.privacy .privacy-btn{color:var(--acc);border-color:color-mix(in srgb,var(--acc) 40%,transparent);background:color-mix(in srgb,var(--acc) 12%,var(--bg2));}
.ui-avatar-btn{display:none;}
.ui-avatar-btn img{width:100%;height:100%;border-radius:inherit;object-fit:cover;}
.nw-chip{display:none!important;flex-direction:column;align-items:flex-end;padding:4px 12px 4px 14px;border-left:1px solid var(--bl);margin-left:4px;}
body[data-view="portfolio"] .nw-chip{display:flex!important;}
.nw-chip .lbl{font-size:10.5px;color:var(--tx3);text-transform:none;letter-spacing:0;font-weight:500;}
.nw-chip .val{font-size:18px;font-weight:600;line-height:1.2;}
/* Sync indicator (mirrors setSyncStatus) */
.ui-sync{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx3);white-space:nowrap;padding:0 4px;}
.ui-sync:empty{display:none;}
.ui-sync::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--tx3);}
.ui-sync.syncing::before{background:var(--info);animation:uiPulse 1s ease-in-out infinite;}
.ui-sync.synced::before{background:var(--pos);box-shadow:0 0 8px var(--pos);}
.ui-sync.error{color:var(--neg);}
.ui-sync.error::before{background:var(--neg);}
@keyframes uiPulse{50%{opacity:.35;}}

/* The page body */
.app{background:transparent;padding-top:0;min-width:0;}
body[data-view="home"] .app,body[data-view="settings"] .app{display:none;}
.pane{padding:28px 28px 72px;}
.app > .pane{padding:28px 28px 72px;}

/* Sub-tab strips — one look for every tracker's tabs (portfolio .tabs,
   gym/budget/fishing/fantasy .tabs, daily .dt-inner-tabs, macro's former
   bottom nav, poker .pk-subnav). Sticky under the top bar. */
.tabs,.app > .tabs,#gym-tracker .tabs,#budget-tracker .tabs,#fishing-tracker .tabs,#ffb-tabs,.dt-inner-tabs{
  position:sticky;top:var(--top-total);z-index:30;display:flex;align-items:center;gap:4px;padding:9px 24px;margin:0;
  background:var(--glass);-webkit-backdrop-filter:saturate(1.7) blur(18px);backdrop-filter:saturate(1.7) blur(18px);
  border:none;border-bottom:1px solid var(--bl);overflow-x:auto;scrollbar-width:none;}
.tabs::-webkit-scrollbar,.dt-inner-tabs::-webkit-scrollbar{display:none;}
.tab,.app > .tabs .tab,.dt-inner-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 14px;min-height:34px;
  border:none;border-radius:999px;background:transparent;color:var(--tx2);font-size:13.5px;font-weight:500;cursor:pointer;
  white-space:nowrap;margin:0;transition:background var(--dur),color var(--dur),box-shadow var(--dur);}
.tab:hover,.app > .tabs .tab:hover,.dt-inner-tab:hover{color:var(--tx);background:var(--bg2);}
.tab.active,.app > .tabs .tab.active,.dt-inner-tab.dt-inner-tab-active{color:var(--tx);font-weight:600;border:none;
  background:color-mix(in srgb,var(--acc) 15%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 26%,transparent);}
.tab.active::after,.dt-inner-tab.dt-inner-tab-active::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc);
  box-shadow:0 0 8px var(--acc);order:-1;}

/* Tracker headers: the title moved into the top bar and the action buttons
   into .ui-page-actions (ui.js), so the old header row goes away. */
.gym-header{display:none!important;}

/* Mobile bottom bar + "More" sheet (hidden on desktop) */
.ui-bnav{display:none;}
.ui-sheet-backdrop{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:uiFade .2s ease;}
.ui-sheet{position:fixed;left:0;right:0;bottom:0;z-index:91;background:var(--bg);border-radius:24px 24px 0 0;border-top:1px solid var(--bm);
  padding:6px 16px calc(18px + var(--safe-b));box-shadow:var(--shadow-3);animation:uiSheetUp .32s var(--spring);max-height:86dvh;overflow-y:auto;}
.ui-sheet.hidden,.ui-sheet-backdrop.hidden{display:none;}
.ui-sheet-grab{width:40px;height:5px;border-radius:3px;background:var(--bs);margin:6px auto 8px;}
.ui-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:4px 2px 14px;}
.ui-sheet-title{font-size:17px;font-weight:700;letter-spacing:-.3px;}
.ui-more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.ui-more-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px;border-radius:16px;border:1px solid var(--bl);
  background:var(--bg2);color:var(--tx);font-size:12.5px;font-weight:600;cursor:pointer;text-align:center;}
.ui-more-item:active{transform:scale(.97);}
.ui-more-item.active{border-color:color-mix(in srgb,var(--mc) 50%,transparent);background:color-mix(in srgb,var(--mc) 10%,var(--bg2));}
.ui-more-ico{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:var(--mc);background:color-mix(in srgb,var(--mc) 14%,transparent);}
.ui-more-ico .ui-i{width:21px;height:21px;}
@keyframes uiFade{from{opacity:0;}to{opacity:1;}}
@keyframes uiSheetUp{from{transform:translateY(40%);opacity:.4;}to{transform:none;opacity:1;}}

/* ───────────────────────────────────────────────────────────────────
   4. COMPONENTS
   ─────────────────────────────────────────────────────────────────── */
/* Section labels: sentence case, readable */
.sec-lbl,.app > .pane .sec-lbl{font-size:14px;font-weight:650;color:var(--tx);text-transform:none;letter-spacing:-.15px;margin:28px 0 12px;}
.bud-section-hdr,.dt-cat-name,.wt-insight-title,.div-growth-title,.ci-card-title,.mt-card-title,.mt-ach-sec,.hub-backup-label{
  text-transform:none;letter-spacing:-.05px;font-size:13px;font-weight:650;color:var(--tx);}
.ci-card-title{font-size:12.5px;color:var(--tx2);}

/* Cards */
.chart-card,.equity-card,.ocard,.ci-card,.div-card,.alloc-card,.bud-expense-panel,.bud-net-card,.bud-invest-header,.fvrow,.cblk,
.notes-section,.wt-log-card,.wt-goal-card,.wt-chart-card,.wt-insight-card,.wt-history-card,.ffb-card,.ffb-rail,.dt-calendar-panel,
.dt-week-panel,.mt-card,.ffb-board-head,.ffb-clock,.dcf-balance-row,.tbl-wrap,.heatmap-panel,.bud-expense-detail-card,.div-cmp-row,
.ffb-sl-bar,.overload-card,.dt-stats-row,.aip-text-box,.ffb-league-card,.dt-manage-cat,
.app > .pane .chart-card,.app > .pane .alloc-card,.app > .pane .equity-card,.app > .pane .ocard,.app > .pane .ci-card,.app > .pane .tbl-wrap{
  background:var(--bg);border:1px solid var(--bl);border-radius:var(--rl);box-shadow:var(--card-shadow);}
.equity-card,.chart-card,.ocard,.ci-card,.div-card,.bud-expense-panel,.wt-log-card,.wt-goal-card,.wt-chart-card,.wt-insight-card,
.wt-history-card,.ffb-card,.ffb-rail,.dt-calendar-panel,.dt-week-panel,.heatmap-panel{padding:18px 20px;}
.alloc-card:hover,.app > .pane .alloc-card:hover{transform:translateY(-2px);border-color:var(--bm);box-shadow:var(--shadow-2);}
.tbl-wrap,.app > .pane .tbl-wrap{overflow-x:auto;}
.dt-stats-row{background:var(--bg);padding:22px 24px;}
.dt-streak-card,.mt-total-cell,.mt-streak-cell,.mt-avg-cell,.mt-pct-chip,.div-yield-box,.div-gbadge,.bud-meta-badge,.ffb-proj-tot>div{
  background:var(--bg2);border:1px solid var(--bl);border-radius:12px;}

/* Stat tiles */
.sum-grid,.app > .pane .sum-grid{gap:12px;margin-bottom:24px;}
.mc,.app > .pane .mc,.wt-stat-card{position:relative;overflow:hidden;background:var(--bg);border:1px solid var(--bl);border-radius:var(--rl);
  padding:16px 18px;box-shadow:var(--card-shadow);}
.mc::before,.wt-stat-card::before{content:'';position:absolute;inset:0 0 auto 0;height:1px;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--acc) 55%,transparent),transparent);opacity:.55;}
.mc .ml,.app > .pane .mc .ml,.wt-stat-lbl{font-size:12px;font-weight:500;color:var(--tx2);text-transform:none;letter-spacing:0;margin-bottom:6px;}
.mc .mv,.app > .pane .mc .mv{font-size:23px;font-weight:600;letter-spacing:-.04em;line-height:1.2;}
.wt-stat-val{font-size:23px;font-weight:600;}

/* Tables */
thead th,.app > .pane thead th,.wt-tbl th,.ffb-table th,.alloc-tbl th{font-size:11.5px;font-weight:500;color:var(--tx3);text-transform:none;letter-spacing:0;
  background:transparent;border-bottom:1px solid var(--bl);padding:12px 14px;}
.alloc-tbl th{background:var(--bg);}
tbody td,.app > .pane tbody td{padding:12px 14px;}
tbody tr,.app > .pane tbody tr{border-bottom:1px solid var(--bl);transition:background .12s;}
tbody tr:hover,.ffb-row:hover,.alloc-tr:hover{background:color-mix(in srgb,var(--tx) 3%,transparent);}
.sh:hover{background:transparent!important;color:var(--tx);}

/* Buttons — primary */
.btn-save-proj,.svbtn,.wt-log-submit,.aip-copy-btn,.div-add-pay-btn,.mt-big-btn,.mt-scan-go,.ffb-pick-mine{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--acc);color:var(--on-acc);border:none;
  border-radius:var(--r);font-weight:600;font-size:13.5px;padding:9px 16px;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 4px 14px -4px var(--acc-glow);
  transition:transform .12s,filter var(--dur),box-shadow var(--dur);}
.btn-save-proj:hover,.svbtn:hover,.wt-log-submit:hover,.aip-copy-btn:hover,.div-add-pay-btn:hover,.mt-big-btn:hover,.ffb-pick-mine:hover{
  opacity:1;filter:brightness(1.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 8px 22px -6px var(--acc-glow);}
.btn-save-proj:active,.svbtn:active,.wt-log-submit:active,.mt-big-btn:active{transform:scale(.97);}
.svbtn{padding:6px 14px;font-size:12.5px;border-radius:8px;}
.mt-big-btn{padding:14px;font-size:15px;border-radius:14px;width:100%;}
.mt-big-btn.ghost{background:var(--bg3);color:var(--tx);box-shadow:none;}
.mt-big-btn.danger,.ui-dialog .btn-save-proj.ui-dialog-danger{background:var(--neg);color:#fff;box-shadow:0 4px 14px -4px color-mix(in srgb,var(--neg) 50%,transparent);}
/* Buttons — secondary */
.btn-secondary,.addbtn,.btn-clear-proj,.btn-fetch,.btn-test,.btn-cancel,.cxbtn,.hub-edit-btn,.dt-nav-btn,.ffb-pick-other,
.app > .pane .btn-secondary,.app > .pane .addbtn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--bg2);color:var(--tx);border:1px solid var(--bm);
  border-radius:var(--r);font-size:13px;font-weight:500;padding:8px 14px;cursor:pointer;min-height:36px;
  transition:background var(--dur),border-color var(--dur),transform .12s;}
.btn-secondary:hover,.addbtn:hover,.btn-clear-proj:hover,.btn-fetch:hover,.btn-test:hover,.btn-cancel:hover,.cxbtn:hover,
.hub-edit-btn:hover,.dt-nav-btn:hover:not(:disabled),.ffb-pick-other:hover{background:var(--bg3);border-color:var(--bs);color:var(--tx);}
.btn-secondary:active,.addbtn:active,.btn-clear-proj:active,.cxbtn:active{transform:scale(.97);}
.addbtn{margin-top:12px;color:var(--tx2);border-style:dashed;background:transparent;}
.addbtn:hover{color:var(--tx);border-style:solid;}
.addbtn .plus{color:var(--acc);font-size:17px;font-weight:600;}
.cxbtn{padding:6px 12px;font-size:12.5px;border-radius:8px;min-height:0;}
.btn-secondary:disabled,.btn-save-proj:disabled{opacity:.5;cursor:default;}
/* Buttons — quiet / icon */
.delbtn,.wt-del-btn,.mt-icon-btn,.ci-edit-btn,.div-card-hide-btn,.div-cmp-hide-btn{border-radius:8px;transition:background var(--dur),color var(--dur);}
.delbtn:hover,.wt-del-btn:hover{background:color-mix(in srgb,var(--neg) 14%,transparent);color:var(--neg);}
.proj-io-btn{display:inline-flex;align-items:center;gap:5px;background:var(--bg2);border:1px solid var(--bl);border-radius:8px;color:var(--tx2);
  font-size:12px;font-weight:500;padding:6px 10px;cursor:pointer;transition:all var(--dur);}
.proj-io-btn:hover{background:var(--bg3);color:var(--tx);border-color:var(--bm);}
/* Pills / segmented */
.pbtn,.app > .pane .pbtn,.col-tog-btn,.app > .pane .col-tog-btn,.ffb-chip,.ffb-board-chip,.cardio-filter-btn,.mt-chip,.csb,.gym-qbtn{
  border:1px solid var(--bl);background:var(--bg2);color:var(--tx2);border-radius:999px;font-weight:500;cursor:pointer;
  transition:background var(--dur),color var(--dur),border-color var(--dur);}
.pbtn,.app > .pane .pbtn{padding:5px 12px;font-size:12px;min-height:30px;}
.col-tog-btn,.app > .pane .col-tog-btn{padding:4px 10px;font-size:11.5px;}
.pbtn:hover,.col-tog-btn:hover,.ffb-chip:hover,.ffb-board-chip:hover,.cardio-filter-btn:hover:not(.active),.mt-chip:hover,.csb:hover{color:var(--tx);border-color:var(--bm);background:var(--bg3);}
.pbtn.active,.app > .pane .pbtn.active,.ffb-chip.active,.ffb-board-chip.active,.cardio-filter-btn.active,.mt-chip.active,.csb.active{
  background:color-mix(in srgb,var(--acc) 16%,var(--bg));color:var(--acc);border-color:color-mix(in srgb,var(--acc) 40%,transparent);font-weight:600;}
.col-tog-off{opacity:.45;}
.alloc-seg,.cal-viewseg{background:var(--bg2);border:1px solid var(--bl);border-radius:10px;padding:3px;}
.alloc-seg-btn.active,.cal-viewseg button.active{background:var(--bg4);color:var(--tx);box-shadow:0 1px 2px rgba(0,0,0,.25);}

/* Inputs */
.modal-input,.dtt-input,.ffb-inp,.ffb-search,.ci-edit-inp,.ticker-inp,.pmi input[type="number"],.dcf-bal-inp,.dcf-param-inp,
.wt-log-field input,.wt-log-field select,.mt-field input,.mt-field select,.mt-field textarea,.mt-search-input,.mt-qty-input,.mt-unit-sel,
.ir td input,.ir td select,#ci-search,#aip-search,#aip-sort,.proj-sort-sel,.spi-tag-sel,.mt-ing-g,.ffb-ta,.pt-sortbar select,.vol-targets input{
  background:var(--bg2)!important;border:1px solid var(--bm)!important;border-radius:var(--r)!important;color:var(--tx);
  transition:border-color var(--dur),box-shadow var(--dur),background var(--dur);}
.modal-input:focus,.dtt-input:focus,.ffb-inp:focus,.ffb-search:focus,.ci-edit-inp:focus,.ticker-inp:focus,
.pmi input[type="number"]:focus,.wt-log-field input:focus,.wt-log-field select:focus,.mt-field input:focus,.mt-field select:focus,
.mt-field textarea:focus,.mt-search-input:focus,.mt-qty-input:focus,.mt-unit-sel:focus,.ir td input:focus,.ir td select:focus,
#ci-search:focus,#aip-search:focus,.ffb-ta:focus,.dcf-bal-inp:focus,.dcf-param-inp:focus{
  outline:none;border-color:color-mix(in srgb,var(--acc) 65%,transparent)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 18%,transparent);
  background:var(--bg)!important;}
.modal-input{padding:10px 13px;font-size:14px;}
.ir td input,.ir td select{border-radius:8px!important;padding:6px 9px;}
.modal-field-lbl,.pmi label,.wt-log-field label,.mt-field label,.ffb-form-grid label,.dcf-lbl{font-size:12px;font-weight:500;color:var(--tx2);
  text-transform:none;letter-spacing:0;}
input[type="checkbox"],input[type="radio"]{accent-color:var(--acc);}
select{color-scheme:inherit;}
/* "Your input" cells (projections / DCF): an accent wash instead of yellow */
.pcell.yel,html[data-theme="dark"] .pcell.yel{background:color-mix(in srgb,var(--warn) 9%,transparent);}
.dcf-bal-inp,.dcf-param-inp,html[data-theme="dark"] .dcf-bal-inp,html[data-theme="dark"] .dcf-param-inp{background:color-mix(in srgb,var(--warn) 10%,var(--bg2))!important;}
.guide-input::before{background:color-mix(in srgb,var(--warn) 25%,transparent);border-color:var(--warn);}

/* Badges & tags: translucent tints that work in both themes */
.badge,.app > .pane .badge{padding:3px 9px;border-radius:7px;font-size:11.5px;font-weight:600;}
.bbuy,.bd{background:color-mix(in srgb,var(--pos) 15%,transparent);color:var(--pos);}
.bsell{background:color-mix(in srgb,var(--neg) 15%,transparent);color:var(--neg);}
.bg,.broth{background:color-mix(in srgb,var(--info) 15%,transparent);color:var(--info);}
.bv,.btxbl{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn);}
.be,.bira,.bboth,html[data-theme="dark"] .bboth{background:color-mix(in srgb,var(--c-calendar) 16%,transparent);color:var(--c-calendar);}
.bcrp,html[data-theme="dark"] .bcrp{background:color-mix(in srgb,var(--c-gym) 15%,transparent);color:var(--c-gym);}
.bc{background:var(--bg3);color:var(--tx2);}
.spi-tag-current,html[data-theme="dark"] .spi-tag-current{background:color-mix(in srgb,var(--pos) 16%,transparent);color:var(--pos);}
.spi-tag-watchlist,html[data-theme="dark"] .spi-tag-watchlist{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn);}
.cbull{background:color-mix(in srgb,var(--pos) 13%,var(--bg));color:var(--pos);}
.cbase{background:color-mix(in srgb,var(--info) 13%,var(--bg));color:var(--info);}
.cbear{background:color-mix(in srgb,var(--neg) 13%,var(--bg));color:var(--neg);}
.div-yoc-note,html[data-theme="dark"] .div-yoc-note,.div-gpos,html[data-theme="dark"] .div-gpos{background:color-mix(in srgb,var(--pos) 11%,transparent);}
.div-gneg,html[data-theme="dark"] .div-gneg{background:color-mix(in srgb,var(--neg) 11%,transparent);}
.div-yld{background:var(--info);}.div-yoc{background:var(--pos);}
.notice,.app > .pane .notice{background:color-mix(in srgb,var(--acc) 7%,var(--bg));border:1px solid color-mix(in srgb,var(--acc) 18%,transparent);
  border-left:3px solid var(--acc);border-radius:12px;color:var(--tx2);}
.bud-alert-info{background:color-mix(in srgb,var(--info) 9%,transparent);color:var(--tx);border-left-color:var(--info);border-radius:12px;}
.bud-alert-warn{background:color-mix(in srgb,var(--neg) 9%,transparent);color:var(--tx);border-left-color:var(--neg);border-radius:12px;}
.cash-row{background:color-mix(in srgb,var(--pos) 7%,transparent)!important;}

/* Saved-item lists (projections, companies, prompts, muscle groups…) */
.sidebar-section{background:var(--bg);overflow:hidden;}
.sidebar-header{background:transparent;border-bottom:1px solid var(--bl);padding:12px 14px;}
.sidebar-header:hover{background:var(--bg2);}
.sidebar-title{font-size:13.5px;font-weight:650;}
.sidebar-count{background:var(--bg3);border:none;color:var(--tx2);font-family:var(--fm);font-size:11px;}
.saved-proj-list{padding:8px;gap:4px;}
.spi{background:transparent;border:1px solid transparent;border-radius:10px;padding:9px 11px;transition:background .12s,border-color .12s;}
.spi:hover{background:var(--bg2);border-color:var(--bl);}
.spi-active,html[data-theme="dark"] .spi-active{background:color-mix(in srgb,var(--acc) 11%,var(--bg))!important;border-color:color-mix(in srgb,var(--acc) 45%,transparent)!important;}
.spi-active .spi-ticker{color:var(--acc);}
.proj-sidebar{top:calc(var(--top-total) + var(--tabs-h) + 16px);max-height:calc(100dvh - var(--top-total) - var(--tabs-h) - 32px);}

/* Dialogs */
.modal-overlay{background:rgba(3,4,6,.6);-webkit-backdrop-filter:blur(8px) saturate(1.2);backdrop-filter:blur(8px) saturate(1.2);padding:16px;}
html[data-theme="light"] .modal-overlay{background:rgba(20,22,28,.32);}
.modal-box{background:var(--bg);border:1px solid var(--bm);border-radius:var(--rx);padding:26px;box-shadow:var(--shadow-3);
  animation:uiPop .26s var(--spring);max-height:calc(100dvh - 32px);overflow-y:auto;}
.modal-title{font-size:18px;font-weight:700;letter-spacing:-.35px;margin-bottom:10px;}
.modal-desc{color:var(--tx2);}
.modal-actions{gap:10px;margin-top:6px;}
@keyframes uiPop{from{opacity:0;transform:translateY(10px) scale(.97);}to{opacity:1;transform:none;}}
.alloc-modal{border-radius:var(--rx);background:var(--bg);}

/* Toasts */
.undo-toast{background:var(--toast-bg);color:var(--toast-tx);border:1px solid rgba(255,255,255,.08);border-radius:14px;
  box-shadow:var(--shadow-3);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:uiToastIn .35s var(--spring);}
.undo-toast-btn{color:var(--acc);opacity:1;text-decoration:none;font-weight:700;}
.undo-toast-btn:hover{filter:brightness(1.15);}
.mt-toast{background:var(--toast-bg);color:var(--toast-tx);border:1px solid rgba(255,255,255,.08);}
@keyframes uiToastIn{from{opacity:0;transform:translateX(-50%) translateY(16px) scale(.96);}to{opacity:1;transform:translateX(-50%);}}

/* Empty states */
.alloc-empty-ico{font-size:0;width:44px;height:44px;border-radius:14px;background:color-mix(in srgb,var(--acc) 12%,transparent);
  display:grid;place-items:center;margin-bottom:6px;}
.alloc-empty-ico::before{content:'';width:20px;height:20px;background:var(--acc);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z'/%3E%3Cpath d='M21.21 15.89A10 10 0 1 1 8 2.83'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z'/%3E%3Cpath d='M21.21 15.89A10 10 0 1 1 8 2.83'/%3E%3C/svg%3E") center/contain no-repeat;}
.saved-empty,.dt-empty,.wt-empty,.mt-hint,.bud-exp-empty,.hub-w-empty{color:var(--tx3);}
#gym-main-empty,#ci-empty,#aip-empty{padding:56px 20px;border:1px dashed var(--bm);border-radius:var(--rl);margin-top:0!important;background:color-mix(in srgb,var(--bg) 50%,transparent);}

/* ───────────────────────────────────────────────────────────────────
   5a. HOME — "Today at a glance"
   ─────────────────────────────────────────────────────────────────── */
.hub-overlay{position:static;inset:auto;width:auto;z-index:auto;background:transparent;display:block;overflow:visible;padding-top:0;}
.hub-content{text-align:left;max-width:1240px;margin:0 auto;padding:28px 28px 64px;}
.home-hero{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding:30px 32px;border-radius:26px;border:1px solid var(--bl);margin-bottom:30px;
  background:linear-gradient(160deg,color-mix(in srgb,var(--bg) 92%,var(--brand) 8%),var(--bg) 60%);box-shadow:var(--card-shadow);isolation:isolate;}
.home-hero-glow{position:absolute;inset:-40% -10% auto auto;width:70%;height:180%;z-index:-1;pointer-events:none;opacity:.55;filter:blur(40px);
  background:radial-gradient(closest-side,color-mix(in srgb,var(--brand) 55%,transparent),transparent 70%),
             radial-gradient(closest-side at 30% 70%,color-mix(in srgb,var(--c-portfolio) 35%,transparent),transparent 70%);
  animation:homeGlow 18s ease-in-out infinite alternate;}
html[data-theme="light"] .home-hero-glow{opacity:.35;}
@keyframes homeGlow{0%{transform:translate(0,0) rotate(0deg);}50%{transform:translate(-8%,6%) rotate(8deg);}100%{transform:translate(4%,-4%) rotate(-6deg);}}
.home-hero::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background-image:radial-gradient(color-mix(in srgb,var(--tx) 12%,transparent) 1px,transparent 1px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(90deg,transparent 30%,#000 100%);mask-image:linear-gradient(90deg,transparent 30%,#000 100%);}
.home-hero-main{min-width:0;}
.hub-greeting{font-size:clamp(26px,3.4vw,38px);font-weight:750;letter-spacing:-.04em;line-height:1.08;color:var(--tx);text-transform:none;margin:0;}
.home-date{font-family:var(--fm);font-size:12px;color:var(--tx3);margin-top:10px;letter-spacing:.02em;text-transform:uppercase;}
.home-nw{display:flex;align-items:flex-end;gap:18px;}
.home-nw:empty{display:none;}
.home-nw-lbl{font-size:12px;color:var(--tx2);font-weight:500;margin-bottom:4px;}
.home-nw-val{font-size:clamp(26px,3vw,36px);font-weight:600;line-height:1.05;}
.home-nw-delta{display:inline-flex;align-items:center;gap:4px;margin-top:8px;font-size:12px;font-weight:600;font-family:var(--fm);
  padding:3px 8px;border-radius:999px;background:var(--bg3);color:var(--tx2);}
.home-nw-delta.pos{background:color-mix(in srgb,var(--pos) 14%,transparent);color:var(--pos);}
.home-nw-delta.neg{background:color-mix(in srgb,var(--neg) 14%,transparent);color:var(--neg);}
.home-spark{width:150px;height:56px;overflow:visible;}
.home-spark path.line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.home-nw-link{cursor:pointer;border-radius:14px;padding:4px;margin:-4px;}

.hub-dash-head{display:flex;align-items:center;gap:10px;margin:0 0 14px;}
.hub-dash-title{font-size:15px;font-weight:650;color:var(--tx);text-transform:none;letter-spacing:-.2px;}
.hub-edit-btn{margin-left:auto;min-height:30px;padding:5px 12px;font-size:12px;}
.hub-edit-btn.on{background:var(--acc);color:var(--on-acc);border-color:transparent;}
.hub-widgets{gap:14px;margin-bottom:36px;}
.hub-w{position:relative;background:var(--bg);border:1px solid var(--bl);border-radius:18px;padding:16px 18px 18px;min-height:118px;
  box-shadow:var(--card-shadow);transition:border-color .2s,transform .2s var(--ease),box-shadow .2s;overflow:hidden;}
.hub-w[onclick]:hover{border-color:color-mix(in srgb,var(--mc) 40%,var(--bm));transform:translateY(-2px);box-shadow:var(--shadow-2);}
.hub-w::before{content:'';position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,var(--mc),transparent 70%);opacity:.7;}
.hub-w-head{margin-bottom:12px;gap:9px;}
.hub-w-ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:var(--mc);background:color-mix(in srgb,var(--mc) 14%,transparent);flex-shrink:0;}
.hub-w-ico .ui-i{width:14px;height:14px;}
.hub-w-name{font-size:12.5px;font-weight:600;color:var(--tx2);text-transform:none;letter-spacing:0;}
.hub-w-stat .hv{font-size:24px;font-weight:600;letter-spacing:-.04em;}
.hub-w-stat .hl{font-size:11.5px;color:var(--tx3);text-transform:none;letter-spacing:0;font-weight:500;margin-top:2px;}
.hub-w-bar{height:6px;border-radius:6px;background:var(--bg3);margin-bottom:14px;}
.hub-w-bar>div{border-radius:6px;box-shadow:0 0 10px currentColor;transition:width .8s var(--ease);}
.hub-w-sub{font-size:12px;margin-top:10px;}
.hub-brief{font-size:15px;line-height:1.7;color:var(--tx2);}
.hub-brief b{color:var(--tx);}
.hub-w[data-wid="briefing"]{background:linear-gradient(135deg,color-mix(in srgb,var(--brand) 8%,var(--bg)),var(--bg) 55%);}
.hub-qa-row{gap:10px;}
.hub-qa{background:var(--bg2);border:1px solid var(--bl);border-radius:14px;padding:14px 8px;color:var(--mc);font-size:0;gap:8px;}
.hub-qa .ui-i{width:20px;height:20px;}
.hub-qa span{font-size:12px;color:var(--tx);font-weight:600;}
.hub-qa:hover{border-color:color-mix(in srgb,var(--mc) 45%,transparent);background:color-mix(in srgb,var(--mc) 8%,var(--bg2));transform:translateY(-2px);}
.hub-act-row{border-bottom:1px solid var(--bl);padding:9px 0;}
.hub-act-ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:var(--mc);background:color-mix(in srgb,var(--mc) 13%,transparent);font-size:0;}
.hub-act-ico .ui-i{width:14px;height:14px;}
.hub-act-txt{font-size:13px;}
.hub-act-when{font-family:var(--fm);font-size:11px;}
.hub-act-row:hover .hub-act-txt{color:var(--tx);}
.hub-w-size,.hub-w-vis,.hub-w-grip{color:var(--tx2);border-radius:6px;}
.hub-w.editing,.hub-widgets.editing .hub-w{border-style:dashed;}
.hub-ev-dot{border-radius:50%;box-shadow:0 0 8px currentColor;}

.hub-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;justify-content:stretch;}
.hub-card{position:relative;display:flex;align-items:center;gap:14px;width:auto;text-align:left;padding:16px;border-radius:18px;
  background:var(--bg);border:1px solid var(--bl);box-shadow:var(--card-shadow);cursor:pointer;
  transition:transform .2s var(--ease),border-color .2s,box-shadow .2s,background .2s;}
.hub-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--mc) 45%,var(--bm));
  box-shadow:0 12px 32px -12px color-mix(in srgb,var(--mc) 45%,transparent);background:color-mix(in srgb,var(--mc) 4%,var(--bg));}
.hub-card-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;flex-shrink:0;margin:0;font-size:0;color:var(--mc);
  background:color-mix(in srgb,var(--mc) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--mc) 22%,transparent);}
.hub-card-icon .ui-i{width:21px;height:21px;}
.hub-card-text{flex:1;min-width:0;}
.hub-card-name{font-size:14.5px;font-weight:650;margin-bottom:2px;letter-spacing:-.2px;}
.hub-card-desc{font-size:12.5px;color:var(--tx3);line-height:1.45;}
.hub-card-stat{color:var(--tx);font-weight:600;}
.hub-card-go{position:absolute;top:14px;right:14px;width:15px;height:15px;color:var(--tx3);opacity:0;transform:translate(-3px,3px);transition:all .2s var(--ease);}
.hub-card:hover .hub-card-go{opacity:1;transform:none;color:var(--mc);}
.hub-card.hub-card-today{border-color:color-mix(in srgb,var(--mc) 55%,transparent);background:color-mix(in srgb,var(--mc) 6%,var(--bg));}
.hub-card.hub-card-today .hub-card-name{color:var(--tx);}

/* ───────────────────────────────────────────────────────────────────
   5b. SETTINGS
   ─────────────────────────────────────────────────────────────────── */
.ui-settings{padding:28px 28px 80px;}
.ui-settings.hidden{display:none!important;}
.ui-set-wrap{max-width:760px;margin:0 auto;}
.ui-set-head{margin-bottom:22px;}
.ui-set-head h2{font-size:28px;font-weight:750;letter-spacing:-.04em;margin:0;}
.ui-set-head p{color:var(--tx2);margin-top:6px;}
.ui-set-sec{background:var(--bg);border:1px solid var(--bl);border-radius:20px;box-shadow:var(--card-shadow);margin-bottom:16px;overflow:hidden;}
.ui-set-sec-h{display:flex;align-items:center;gap:10px;padding:16px 20px 4px;}
.ui-set-sec-h .ui-nav-ico{--mc:var(--brand);}
.ui-set-sec-h h3{font-size:15px;font-weight:650;letter-spacing:-.2px;margin:0;}
.ui-set-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;border-top:1px solid var(--bl);}
.ui-set-sec-h + .ui-set-row{border-top:none;}
.ui-set-row-t{min-width:0;}
.ui-set-lbl{font-size:13.5px;font-weight:550;}
.ui-set-desc{font-size:12.5px;color:var(--tx3);margin-top:2px;line-height:1.45;}
.ui-set-ctl{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;}
.ui-seg{display:inline-flex;background:var(--bg2);border:1px solid var(--bl);border-radius:11px;padding:3px;gap:2px;}
.ui-seg button{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:none;border-radius:8px;background:none;color:var(--tx2);
  font-size:12.5px;font-weight:550;cursor:pointer;white-space:nowrap;transition:all var(--dur);}
.ui-seg button .ui-i{width:14px;height:14px;}
.ui-seg button:hover{color:var(--tx);}
.ui-seg button.on{background:var(--bg4);color:var(--tx);box-shadow:0 1px 3px rgba(0,0,0,.25);}
.ui-switch{position:relative;width:44px;height:26px;border-radius:999px;border:none;background:var(--bg4);cursor:pointer;transition:background .2s;flex-shrink:0;}
.ui-switch::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .25s var(--spring);}
.ui-switch.on{background:var(--acc);}
.ui-switch.on::after{transform:translateX(18px);}
.ui-select{appearance:none;-webkit-appearance:none;background:var(--bg2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 9px center/14px;
  border:1px solid var(--bm);border-radius:10px;color:var(--tx);font-size:13px;padding:7px 30px 7px 11px;cursor:pointer;min-width:130px;}
.ui-select:focus{outline:none;border-color:color-mix(in srgb,var(--acc) 65%,transparent);}
.ui-pins{display:flex;gap:8px;flex-wrap:wrap;}
.ui-acct{display:flex;align-items:center;gap:14px;padding:16px 20px;border-top:1px solid var(--bl);}
.ui-acct-av{width:46px;height:46px;border-radius:50%;object-fit:cover;background:var(--bg3);display:grid;place-items:center;color:var(--tx2);flex-shrink:0;}
.ui-acct-name{font-size:15px;font-weight:650;}
.ui-acct-mail{font-size:12.5px;color:var(--tx3);}
.ui-set-foot{text-align:center;color:var(--tx3);font-size:12px;margin-top:24px;font-family:var(--fm);}
.ui-btn-danger{color:var(--neg)!important;}
.ui-btn-danger:hover{background:color-mix(in srgb,var(--neg) 12%,transparent)!important;border-color:color-mix(in srgb,var(--neg) 40%,transparent)!important;}

/* ───────────────────────────────────────────────────────────────────
   5c. SIGN-IN
   ─────────────────────────────────────────────────────────────────── */
.auth-overlay{background:var(--canvas);overflow:hidden;isolation:isolate;}
.auth-overlay::before{content:'';position:absolute;inset:-20%;z-index:-1;filter:blur(60px);opacity:.6;
  background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--brand) 45%,transparent),transparent 40%),
             radial-gradient(circle at 70% 70%,color-mix(in srgb,var(--c-portfolio) 28%,transparent),transparent 40%),
             radial-gradient(circle at 80% 20%,color-mix(in srgb,var(--c-gym) 20%,transparent),transparent 35%);
  animation:homeGlow 22s ease-in-out infinite alternate;}
.auth-overlay::after{content:'';position:absolute;inset:0;z-index:-1;opacity:.35;
  background-image:linear-gradient(var(--bl) 1px,transparent 1px),linear-gradient(90deg,var(--bl) 1px,transparent 1px);background-size:44px 44px;
  -webkit-mask-image:radial-gradient(circle at center,#000,transparent 70%);mask-image:radial-gradient(circle at center,#000,transparent 70%);}
.auth-card{width:400px;padding:40px 34px 30px;border-radius:28px;gap:14px;background:color-mix(in srgb,var(--bg) 82%,transparent);
  border:1px solid var(--bm);box-shadow:var(--shadow-3);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);animation:uiPop .5s var(--spring);}
.auth-logo{width:60px;height:60px;border-radius:19px;display:grid;place-items:center;font-size:0;color:#fff;
  background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 45%,#22d3ee));
  box-shadow:0 14px 36px color-mix(in srgb,var(--brand) 45%,transparent),inset 0 1px 0 rgba(255,255,255,.3);}
.auth-logo .ui-i{width:30px;height:30px;stroke-width:2.2;}
.auth-title{font-size:26px;font-weight:750;letter-spacing:-.04em;margin-top:6px;}
.auth-sub{font-size:14px;color:var(--tx2);margin-bottom:6px;}
.auth-google-btn{padding:12px 20px;font-size:14px;border-radius:12px;background:#fff;color:#1f1f1f;border:1px solid rgba(0,0,0,.08);
  box-shadow:0 2px 10px rgba(0,0,0,.18);}
.auth-google-btn:hover{background:#f6f6f6;box-shadow:0 6px 20px rgba(0,0,0,.25);transform:translateY(-1px);}
.auth-divider{display:flex;align-items:center;gap:12px;width:100%;color:var(--tx3);font-size:12px;margin:4px 0 -2px;}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--bm);}
.auth-guests{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;}
.fishing-guest-btn{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;padding:12px 10px;font-size:13px;font-weight:600;
  border:1px solid var(--bm);border-style:solid;border-radius:12px;background:var(--bg2);color:var(--tx);}
.fishing-guest-btn .ui-i{color:var(--mc);width:16px;height:16px;}
.fishing-guest-btn:hover{background:var(--bg3);border-color:color-mix(in srgb,var(--mc) 50%,transparent);}
.auth-privacy{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tx3);margin-top:4px;}
.auth-privacy .ui-i{width:13px;height:13px;}
.fishing-guest-back-btn{opacity:1;color:var(--tx2);font-size:12px;border:1px solid var(--bl);background:var(--bg2);padding:6px 10px;border-radius:8px;margin:0;}

/* ───────────────────────────────────────────────────────────────────
   6. TRACKER REFINEMENTS
   ─────────────────────────────────────────────────────────────────── */
/* Portfolio */
.pane-toolbar{gap:8px;}
.refresh-all-btn{color:var(--acc)!important;}
.hm-cell{border-radius:12px;}
.ffb-pos-chip,.ffb-tier-bar{border-radius:6px;}
/* Projections layout keeps its right rail sticky under the new header */
.proj-layout{gap:20px;}
.fvrow .fvv{font-size:24px;font-weight:600;}
.chdr{font-weight:650;}

/* Gym */
#gym-tracker .proj-layout{grid-template-columns:280px minmax(0,1fr);}
.gym-set-pill{background:var(--bg2);border:1px solid var(--bl);font-family:var(--fm);font-size:12px;letter-spacing:-.02em;}
.std-seg.on{background:color-mix(in srgb,var(--acc) 22%,transparent);color:var(--acc);}
.vol-fill{background:var(--acc);}
.wt-progress-fill{background:var(--acc);box-shadow:0 0 10px var(--acc-glow);}
.wt-goal-countdown{background:color-mix(in srgb,var(--acc) 14%,transparent);color:var(--acc);}

/* Fishing: the navy scheme is gone — shared surfaces + cyan accent */
#fishing-tracker{background:transparent;color:var(--tx);min-height:0;}
#fishing-tracker .proj-layout{grid-template-columns:230px minmax(0,1fr);}

/* Budget */
#budget-tracker .pane.active{padding:28px 28px 72px;}
.bud-invest-avail-val{font-size:32px;font-weight:600;}
.bud-net-big{font-size:28px;font-weight:600;}
.bud-exp-line,.bud-exp-total{border-color:var(--bl);}
.bud-clickable:hover{box-shadow:0 0 0 1.5px color-mix(in srgb,var(--acc) 60%,transparent);}

/* Daily */
#daily-tracker-body,#daily-lt-body{padding:28px!important;}
.dt-pct-display{font-size:56px;font-weight:600;letter-spacing:-.06em;}
.dt-progress-bar{height:8px;background:var(--bg3);border-radius:8px;}
.dt-progress-fill{border-radius:8px;}
.dt-task{background:var(--bg);border:1px solid var(--bl);border-radius:12px;padding:12px 14px;}
.dt-task:hover{background:var(--bg2);border-color:var(--bm);}
.dt-task-done{background:color-mix(in srgb,var(--acc) 5%,var(--bg));}
.dt-task input[type=checkbox]{width:18px;height:18px;}
.dtt-item{background:var(--bg);border:1px solid var(--bl);border-radius:12px;}
.dt-streak-card{background:var(--bg2);}
.dt-cal-selected{outline-color:var(--acc);}

/* Fantasy */
.ffb-clock{top:calc(var(--top-total) + var(--tabs-h) + 8px);background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);}
.ffb-bcard{border-radius:8px;}

/* Macro — its bottom nav becomes the shared sub-tab strip; the log-food
   button becomes a floating action button. */
#macro-tracker{background:transparent;min-height:0;}
.mt-shell{padding:24px 16px 120px;max-width:820px;}
.mt-bottomnav{position:sticky;top:var(--top-total);bottom:auto;left:auto;right:auto;transform:none;max-width:none;z-index:30;
  display:flex;justify-content:flex-start;gap:4px;padding:9px 24px;border:none;border-radius:0;border-bottom:1px solid var(--bl);
  background:var(--glass);-webkit-backdrop-filter:saturate(1.7) blur(18px);backdrop-filter:saturate(1.7) blur(18px);box-shadow:none;}
.mt-nav-btn{flex-direction:row;gap:6px;padding:7px 14px;min-width:0;min-height:34px;border-radius:999px;color:var(--tx2);}
.mt-nav-btn:hover{background:var(--bg2);color:var(--tx);}
.mt-nav-btn.active{color:var(--tx);background:color-mix(in srgb,var(--acc) 15%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 26%,transparent);}
.mt-nav-ico{display:none;}
.mt-nav-lbl{font-size:13.5px;font-weight:500;}
.mt-nav-btn.active .mt-nav-lbl{font-weight:600;}
.mt-nav-btn.active::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc);}
.mt-nav-add{position:fixed;right:28px;bottom:28px;margin:0;z-index:55;width:60px;height:60px;border-radius:20px;font-size:0;
  background:var(--acc);color:var(--on-acc);box-shadow:0 12px 30px -6px var(--acc-glow),inset 0 1px 0 rgba(255,255,255,.25);
  display:grid;place-items:center;transition:transform .2s var(--spring),box-shadow .2s;}
.mt-nav-add::before{content:'';width:26px;height:26px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E") center/contain no-repeat;}
.mt-nav-add:hover{transform:translateY(-2px) scale(1.04);}
.mt-nav-add:active{transform:scale(.94);}
#macro-tracker{--mt-kcal:var(--acc);}
.mt-card{border-radius:20px;padding:18px;}
.mt-ring .track{stroke:var(--bg3);}
.mt-ring .prog{filter:drop-shadow(0 0 6px var(--acc-glow));}
.mt-bar{height:9px;background:var(--bg3);}
.mt-date-arrow{border:1px solid var(--bl);background:var(--bg);border-radius:14px;}
.mt-act-tile,.mt-food-tile{background:var(--bg);border:1px solid var(--bl);border-radius:18px;box-shadow:var(--card-shadow);transition:transform .15s,border-color .15s;}
.mt-act-tile:hover,.mt-food-tile:hover{border-color:var(--bm);transform:translateY(-1px);}
.mt-today-pill{background:var(--acc);color:var(--on-acc);}
.mt-sheet{background:var(--bg);border:1px solid var(--bm);box-shadow:var(--shadow-3);}
.mt-sheet-backdrop{background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.mt-sheet-close{background:var(--bg3);}

/* Calendar & Poker size themselves against the new header heights */
#calendar-tracker .cal-shell{height:calc(100dvh - var(--top-total));}
#calendar-tracker .cal-toolbar{background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--bl);padding:12px 24px;}
#calendar-tracker .cal-newbtn{background:var(--cal-acc);color:var(--on-acc);border-radius:var(--r);box-shadow:0 4px 14px -4px var(--acc-glow);}
#calendar-tracker .cal-tb-btn{background:var(--bg2);border:1px solid var(--bm);color:var(--tx);}
html[data-theme] #poker-tracker{--pk-acc:var(--acc);--pk-gold:var(--warn);}
#poker-tracker .pk-shell{min-height:calc(100dvh - var(--top-total));background:transparent;}
#poker-tracker .pk-subnav{top:var(--top-total);background:var(--glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--bl);}
#poker-tracker .pk-addbtn,html[data-theme="dark"] #poker-tracker .pk-addbtn{color:var(--on-acc);box-shadow:0 4px 14px -4px var(--acc-glow);}

/* ───────────────────────────────────────────────────────────────────
   7. MOTION · DENSITY · RESPONSIVE
   ─────────────────────────────────────────────────────────────────── */
/* Page entrance: each page/tab fades up when it appears. Fill is 'backwards'
   on purpose: a forwards/both fill keeps the animation in effect after it
   ends, which leaves the element a stacking context and traps the sheets and
   dialogs inside it under the bottom bar. */
.ui-enter{animation:uiEnter .38s var(--ease) backwards;}
@keyframes uiEnter{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.ui-stagger > *{animation:uiEnter .45s var(--ease) backwards;}
.ui-stagger > *:nth-child(2){animation-delay:.04s;}.ui-stagger > *:nth-child(3){animation-delay:.08s;}
.ui-stagger > *:nth-child(4){animation-delay:.12s;}.ui-stagger > *:nth-child(5){animation-delay:.16s;}
.ui-stagger > *:nth-child(6){animation-delay:.2s;}.ui-stagger > *:nth-child(7){animation-delay:.24s;}
.ui-stagger > *:nth-child(8){animation-delay:.28s;}.ui-stagger > *:nth-child(n+9){animation-delay:.32s;}

/* Celebration toast + confetti canvas (ui.js → uiCelebrate) */
.ui-confetti{position:fixed;inset:0;z-index:10050;pointer-events:none;}
.ui-celebrate{position:fixed;left:50%;top:calc(18px + var(--safe-t));z-index:10051;transform:translateX(-50%);display:flex;align-items:center;gap:12px;
  padding:12px 18px 12px 12px;border-radius:18px;background:var(--toast-bg);color:var(--toast-tx);border:1px solid color-mix(in srgb,var(--acc) 40%,transparent);
  box-shadow:0 20px 50px rgba(0,0,0,.5),0 0 40px -10px var(--acc-glow);animation:uiCelIn .6s var(--spring) both;max-width:92vw;}
.ui-celebrate.out{animation:uiCelOut .35s ease forwards;}
.ui-celebrate-ico{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:var(--acc);color:var(--on-acc);flex-shrink:0;
  box-shadow:0 0 22px var(--acc-glow);}
.ui-celebrate-ico .ui-i{width:21px;height:21px;}
.ui-celebrate-k{font-size:11px;font-weight:700;color:var(--acc);letter-spacing:.04em;text-transform:uppercase;}
.ui-celebrate-t{font-size:14.5px;font-weight:650;line-height:1.3;}
@keyframes uiCelIn{from{opacity:0;transform:translateX(-50%) translateY(-30px) scale(.9);}to{opacity:1;transform:translateX(-50%);}}
@keyframes uiCelOut{to{opacity:0;transform:translateX(-50%) translateY(-20px) scale(.96);}}

html[data-motion="reduced"] *,html[data-motion="reduced"] *::before,html[data-motion="reduced"] *::after{animation:none!important;transition:none!important;}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important;}}

/* Compact density */
html[data-density="compact"] body{font-size:13px;}
html[data-density="compact"] .pane,html[data-density="compact"] .app > .pane,html[data-density="compact"] .hub-content,
html[data-density="compact"] .ui-settings,html[data-density="compact"] #budget-tracker .pane.active{padding:18px 20px 56px;}
html[data-density="compact"] tbody td,html[data-density="compact"] .app > .pane tbody td{padding:7px 10px;}
html[data-density="compact"] thead th,html[data-density="compact"] .app > .pane thead th{padding:8px 10px;}
html[data-density="compact"] .mc,html[data-density="compact"] .app > .pane .mc{padding:11px 13px;}
html[data-density="compact"] .mc .mv,html[data-density="compact"] .app > .pane .mc .mv{font-size:19px;}
html[data-density="compact"] .sum-grid,html[data-density="compact"] .app > .pane .sum-grid{gap:8px;margin-bottom:16px;}
html[data-density="compact"] .equity-card,html[data-density="compact"] .chart-card,html[data-density="compact"] .hub-w{padding:12px 14px;}
html[data-density="compact"] .hub-w{min-height:96px;}
html[data-density="compact"] .home-hero{padding:22px 24px;margin-bottom:20px;}
html[data-density="compact"] .tabs,html[data-density="compact"] .dt-inner-tabs,html[data-density="compact"] .mt-bottomnav{padding-top:6px;padding-bottom:6px;}
html[data-density="compact"] .tab,html[data-density="compact"] .dt-inner-tab{min-height:30px;padding:5px 12px;font-size:13px;}
html[data-density="compact"]{--top-h:56px;--tabs-h:44px;}

/* Large desktop: more room */
@media(min-width:1600px){
  .pane,.app > .pane,#budget-tracker .pane.active{padding-left:40px;padding-right:40px;}
  .topbar{padding-left:40px;padding-right:40px;}
  .tabs,.app > .tabs,.dt-inner-tabs,.mt-bottomnav{padding-left:36px;padding-right:36px;}
}
/* Tablet: sidebar collapses to an icon rail */
@media(max-width:1099px) and (min-width:768px){
  html[data-theme] .ui-side{width:var(--side-w-c);}
  html[data-theme] .ui-main{margin-left:var(--side-w-c);}
  .ui-brand-name,.ui-nav-lbl,.ui-nav-meta,.ui-side .user-name,.ui-side-toggle{display:none;}
  .ui-side-brand{justify-content:center;}
  .ui-nav-item{justify-content:center;padding:7px 0;}
  .ui-nav-sec{height:1px;padding:0;margin:10px 12px;background:var(--bl);font-size:0;}
  .ui-side .user-chip{justify-content:center;padding:6px 0;}
  .hub-widgets{grid-template-columns:repeat(2,minmax(0,1fr));}
  .hub-w.wide{grid-column:span 2;}
}
/* Phone */
@media(max-width:767px){
  html[data-theme]{--top-h:56px;--tabs-h:50px;}
  .ui-side{display:none;}
  .ui-main,html[data-side="collapsed"] .ui-main{margin-left:0;padding-bottom:calc(var(--bnav-h) + var(--safe-b));}
  .topbar{padding:var(--safe-t) 14px 0;gap:10px;flex-direction:row;align-items:center;}
  .ui-page-ico{width:32px;height:32px;border-radius:10px;}
  .topbar-title{font-size:17px;}
  .topbar-right{gap:6px;}
  .ui-avatar-btn{display:grid;}
  .ui-sync{font-size:0;gap:0;padding:0 2px;}
  .privacy-btn,.ui-avatar-btn,.ui-icon-btn{width:36px;height:36px;}
  body[data-view="portfolio"] .nw-chip{display:none!important;}
  .ui-page-actions .proj-io-btn{padding:6px 8px;font-size:11.5px;}
  .tabs,.app > .tabs,#gym-tracker .tabs,#budget-tracker .tabs,#fishing-tracker .tabs,#ffb-tabs,.dt-inner-tabs,.mt-bottomnav{padding:8px 12px;}
  .app > .tabs .tab,.tab,.dt-inner-tab,.mt-nav-btn{min-height:34px;padding:6px 13px;font-size:13.5px;}
  .pane,.app > .pane,#budget-tracker .pane.active,#daily-tracker-body,#daily-lt-body{padding:16px 14px 32px!important;}
  .hub-content,.ui-settings{padding:16px 14px 32px;}
  .home-hero{padding:22px 20px;border-radius:22px;margin-bottom:22px;flex-direction:column;align-items:flex-start;}
  .home-nw{width:100%;justify-content:space-between;}
  .home-spark{width:120px;height:46px;}
  .hub-widgets{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
  .hub-w{padding:13px 14px 14px;min-height:0;border-radius:16px;}
  .hub-w-stat .hv{font-size:20px;}
  .hub-cards{grid-template-columns:1fr;gap:8px;}
  .hub-card{padding:13px 14px;border-radius:16px;}
  .hub-card-go{opacity:.6;transform:none;top:50%;margin-top:-7px;}
  .mt-shell{padding:14px 12px calc(110px + var(--safe-b));}
  .mt-nav-add{right:16px;bottom:calc(var(--bnav-h) + var(--safe-b) + 14px);width:56px;height:56px;border-radius:18px;}
  #calendar-tracker .cal-shell{height:calc(100dvh - var(--top-total) - var(--bnav-h) - var(--safe-b));}
  #poker-tracker .pk-shell{min-height:calc(100dvh - var(--top-total) - var(--bnav-h) - var(--safe-b));}
  .undo-toast{bottom:calc(var(--bnav-h) + var(--safe-b) + 12px);}
  .mt-toast{bottom:calc(var(--bnav-h) + var(--safe-b) + 84px);}
  .ui-set-row{flex-direction:column;align-items:flex-start;gap:10px;}
  .ui-set-ctl{justify-content:flex-start;}
  .ui-set-head h2{font-size:24px;}
  /* Dialogs become bottom sheets */
  .modal-overlay{align-items:flex-end;padding:0;}
  .modal-box,.modal-overlay .modal-box{width:100%!important;max-width:100%!important;border-radius:24px 24px 0 0;border-bottom:none;
    padding:22px 18px calc(20px + var(--safe-b));max-height:92dvh;animation:uiSheetUp .34s var(--spring);}
  .modal-overlay.ui-dialog-backdrop{align-items:center;padding:16px;}
  .modal-overlay.ui-dialog-backdrop .modal-box.ui-dialog{border-radius:20px;border-bottom:1px solid var(--bm);padding:22px 18px;}

  .ui-bnav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:50;
    height:calc(var(--bnav-h) + var(--safe-b));padding:0 6px var(--safe-b);background:var(--glass);
    -webkit-backdrop-filter:saturate(1.8) blur(20px);backdrop-filter:saturate(1.8) blur(20px);border-top:1px solid var(--bl);}
  .ui-bnav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:none;color:var(--tx3);
    font-size:10.5px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;min-width:0;padding:0;}
  .ui-bnav-ico{width:46px;height:28px;border-radius:999px;display:grid;place-items:center;transition:background .25s var(--ease),color .2s;}
  .ui-bnav-ico .ui-i{width:21px;height:21px;}
  .ui-bnav-lbl{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .ui-bnav-item.active{color:var(--tx);}
  .ui-bnav-item.active .ui-bnav-ico{background:color-mix(in srgb,var(--mc) 18%,transparent);color:var(--mc);}
  .ui-bnav-item[data-mod="home"].active .ui-bnav-ico,.ui-bnav-item[data-mod="more"].active .ui-bnav-ico{background:color-mix(in srgb,var(--brand) 20%,transparent);color:var(--brand);}
  .ui-bnav-item:active .ui-bnav-ico{transform:scale(.9);}
}
@media(max-width:380px){
  .ui-sync{display:none;}
  .hub-widgets{grid-template-columns:1fr;}
  .hub-w.small{grid-column:span 1;}.hub-w.wide{grid-column:span 1;}
}

/* Guests (shared Fishing / Fantasy) are locked to one tracker */
html.ui-guest .ui-side,html.ui-guest .ui-bnav,html.ui-guest .ui-avatar-btn{display:none!important;}
html.ui-guest .ui-main{margin-left:0!important;padding-bottom:0!important;}
html.ui-guest .mt-nav-add{bottom:28px;}
.ui-fade{animation:uiFadeIn .32s ease backwards;}
@keyframes uiFadeIn{from{opacity:0;}to{opacity:1;}}

/* Poker — header slims down (the title lives in the top bar), its sub-nav
   joins the shared pill strip, panels use the shared surfaces. */
#poker-tracker .pk-header{padding:18px 28px 6px;align-items:center;}
#poker-tracker .pk-brand{display:none;}
#poker-tracker .pk-brand-sub{font-size:13px;color:var(--tx2);margin:0;}
#poker-tracker .pk-brand-sub strong{font-family:var(--fm);letter-spacing:-.03em;}
#poker-tracker .pk-addbtn{border-radius:var(--r);padding:9px 16px;}
#poker-tracker .pk-subnav{position:sticky;top:var(--top-total);z-index:30;gap:4px;padding:9px 24px;border-bottom:1px solid var(--bl);margin-top:8px;}
#poker-tracker .pk-nav-btn{padding:7px 14px;min-height:34px;border:none;border-radius:999px;font-size:13.5px;font-weight:500;}
#poker-tracker .pk-nav-btn:hover{background:var(--bg2);}
#poker-tracker .pk-nav-btn.active{border:none;color:var(--tx);font-weight:600;background:color-mix(in srgb,var(--acc) 15%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 26%,transparent);}
#poker-tracker .pk-nav-ico{display:none;}
#poker-tracker .pk-nav-btn.active::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc);}
#poker-tracker .pk-pane{padding:24px 28px 72px;}
#poker-tracker .pk-stat,#poker-tracker .pk-panel{background:var(--bg);border:1px solid var(--bl);box-shadow:var(--card-shadow);}
#poker-tracker .pk-stat-l{font-size:12px;text-transform:none;letter-spacing:0;font-weight:500;}
#poker-tracker .pk-stat-v{font-family:var(--fm);font-weight:600;letter-spacing:-.04em;}
#poker-tracker .pk-panel-t{font-size:14px;font-weight:650;}
@media(max-width:767px){
  #poker-tracker .pk-header{padding:14px 14px 4px;}
  #poker-tracker .pk-subnav{padding:8px 12px;}
  #poker-tracker .pk-pane{padding:16px 14px 32px;}
}

/* ── Fixes from the phone/desktop review ──────────────────────────── */
/* Section titles inside chart cards keep their tight spacing */
.alloc-title,.app > .pane .alloc-title{margin:0 0 2px;}
/* Two-column tracker layouts stack on narrow screens */
@media(max-width:900px){
  #gym-tracker .proj-layout,#fishing-tracker .proj-layout{grid-template-columns:minmax(0,1fr);}
  .proj-sidebar{position:static;max-height:none;}
}
/* Home widgets: as many columns as fit, wide widgets take the whole row */
.hub-widgets{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));}
.hub-w.wide{grid-column:1/-1;}
.hub-w.small{grid-column:auto;}
/* All-caps micro labels → sentence case, like the rest of the system */
.dt-streak-lbl,.bud-badge-lbl,.bud-paycheck-lbl,.bud-invest-avail-lbl,.div-yield-lbl,.div-gbadge-lbl,.dt-ws-lbl,.acl,
.mt-total-cell .tl,.mt-streak-cell .sl,.mt-avg-cell .al,.dcf-avg-lbl,.mt-gp-strip-lbl,.mt-ach-pop-lbl,.ffb-clock .lbl,
.ffb-slot-lbl,.dt-cal-dow,.mt-cal-dow,.wt-tbl th,.hub-backup-label{text-transform:none;letter-spacing:0;font-size:11.5px;font-weight:500;color:var(--tx3);}
.dt-streak-icon{font-size:18px;}
.dt-streak-val{font-size:30px;font-weight:600;}
@media(max-width:767px){
  /* Page actions shrink to icons so the title keeps its room */
  .ui-page-actions .proj-io-btn span{display:none;}
  .ui-page-actions .proj-io-btn{width:36px;height:36px;padding:0;justify-content:center;}
  .ui-page-actions .proj-io-btn .ui-i{width:17px;height:17px;}
  .topbar-left{flex:1;}
  /* Toolbars scroll sideways instead of stacking three rows deep */
  .pane-toolbar,.app > .pane .pane-toolbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;justify-content:flex-start;
    margin:0 -14px 14px;padding:0 14px 2px;}
  .pane-toolbar::-webkit-scrollbar{display:none;}
  .pane-toolbar > *{flex-shrink:0;}
  /* Poker keeps its tab labels (its own sheet hid them on phones) */
  #poker-tracker .pk-nav-lbl{display:inline!important;}
  #poker-tracker .pk-nav-btn{padding:6px 13px;}
}
.btn-secondary .ui-i,.btn-save-proj .ui-i,.addbtn .ui-i{width:15px;height:15px;opacity:.85;}
.refresh-all-btn:disabled .ui-i{animation:uiSpin .9s linear infinite;}
@keyframes uiSpin{to{transform:rotate(360deg);}}

/* Poker / Calendar labels: sentence case like the rest of the system
   (day-of-week headers keep their small caps) */
#poker-tracker .pk-sec-lbl,#poker-tracker .pk-table thead th,#poker-tracker .pk-calc-item span,#poker-tracker .pk-dh-l,
#poker-tracker .pk-tn-item span,#poker-tracker .pk-brsum span,#poker-tracker .pk-rec-l,#poker-tracker .pk-ach-sub,#poker-tracker .pk-ach-s,
#poker-tracker .pk-fl,#poker-tracker .pk-fld,#poker-tracker .pk-ycard-m,
#calendar-tracker .cal-side-title,#calendar-tracker .cal-st-l{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500;}
#poker-tracker .pk-sec-lbl,#calendar-tracker .cal-side-title,#poker-tracker .pk-ycard-m{font-size:13px;font-weight:650;color:var(--tx);}
#poker-tracker .pk-table thead th{color:var(--tx3);}
#calendar-tracker .cal-side-box,#calendar-tracker .cal-sidebar > div{border-radius:14px;}
/* Stat values shrink a little on crowded rows instead of clipping */
.mc .mv,.app > .pane .mc .mv{font-size:clamp(18px,1.55vw,23px);overflow-wrap:anywhere;}
@media(max-width:900px){
  /* Calendar's slide-out panel sits above the app sidebar rail and bottom bar */
  #calendar-tracker .cal-sidebar{z-index:95;padding-top:calc(20px + var(--safe-t));background:var(--bg);border-right:1px solid var(--bm);}
  #calendar-tracker .cal-sb-backdrop{z-index:94;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
}
@media(max-width:767px){
  .cal-toasts{bottom:calc(var(--bnav-h) + var(--safe-b) + 12px);right:12px;left:12px;align-items:stretch;}
  .mt-ach-pop{top:calc(10px + var(--safe-t));}
}
/* Achievement unlock pop-ups match the celebration toast */
.mt-ach-pop{background:var(--toast-bg);color:var(--toast-tx);border-width:1px;border-radius:18px;
  box-shadow:0 20px 50px rgba(0,0,0,.45);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);}
.mt-ach-pop-lbl{color:color-mix(in srgb,var(--toast-tx) 60%,transparent);}
