/* ════════════════════════════════════════════════════════════════════════
   FORGE — "Forged Glass" design system
   Dark-first, iOS-native feel: OLED-tinted surfaces, frosted chrome,
   hairline borders + inner edge light for depth, spring press states,
   tabular numerals on every stat. All selectors preserved from v1.
   ════════════════════════════════════════════════════════════════════════ */

/* ── TOKENS — DARK (default) ── */
:root, :root[data-theme="dark"] {
  --bg:#0a0a0d;
  --bg-card:#141419;--bg-card-2:#1d1d24;
  --surface:#1d1d24;--card:#141419;
  --border:rgba(255,255,255,.08);--hairline:rgba(255,255,255,.07);
  --glass:rgba(12,12,16,.78);
  --text:#f5f5f7;--text-muted:#9a9aa3;--muted:#9a9aa3;
  --accent:#d4a843;--gold:#d4a843;--gold-l:rgba(212,168,67,.13);
  --red:#ff453a;--red-l:rgba(255,69,58,.12);
  --blue:#409cff;--blue-l:rgba(64,156,255,.12);
  --green:#30d158;--green-l:rgba(48,209,88,.12);
  --orange:#ff6a3c;--orange-l:rgba(255,106,60,.12);
  --purple:#bf5af2;--purple-l:rgba(191,90,242,.12);
  --pink:#ff375f;--pink-l:rgba(255,55,95,.12);
  --A:#ff5f57;--Al:rgba(255,95,87,.14);
  --B:#4f9cf7;--Bl:rgba(79,156,247,.14);
  --C:#3fcf8e;--Cl:rgba(63,207,142,.14);
  --r:18px;
  --font:-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI',sans-serif;
  color-scheme:dark;
}
/* ── TOKENS — LIGHT ── */
:root[data-theme="light"] {
  --bg:#f2f2f7;
  --bg-card:#ffffff;--bg-card-2:#f7f7fa;
  --surface:#ffffff;--card:#ffffff;
  --border:rgba(0,0,0,.10);--hairline:rgba(0,0,0,.08);
  --glass:rgba(248,248,250,.84);
  --text:#1c1c1e;--text-muted:#8e8e93;--muted:#8e8e93;
  --accent:#b07d18;--gold:#b07d18;--gold-l:rgba(176,125,24,.12);
  --red:#ff3b30;--red-l:rgba(255,59,48,.10);
  --blue:#007aff;--blue-l:rgba(0,122,255,.10);
  --green:#248a3d;--green-l:rgba(36,138,61,.12);
  --orange:#d9480f;--orange-l:rgba(217,72,15,.10);
  --purple:#af52de;--purple-l:rgba(175,82,222,.10);
  --pink:#ff2d55;--pink-l:rgba(255,45,85,.10);
  --A:#dc3128;--Al:rgba(220,49,40,.10);
  --B:#1d6fe8;--Bl:rgba(29,111,232,.10);
  --C:#119f63;--Cl:rgba(17,159,99,.10);
  color-scheme:light;
}

/* ── BASE ── */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{height:100%}
/* Tab-app scroll model: html+body are a fixed, non-scrolling viewport; each .page
   (and the onboard/super screens) owns its OWN scroll. This fixes Android Chrome,
   where a flex child's overflow-y:auto is inert unless its parent has a DEFINITE
   height — the old min-height:100vh let the page grow to content size instead. */
body{background:var(--bg);color:var(--text);font-family:var(--font);height:100%;overflow:hidden;overscroll-behavior-y:none;transition:background .25s,color .25s;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
/* Ambient forge-light vignette behind everything */
body::before{content:'';position:fixed;inset:-10%;z-index:-1;pointer-events:none;
  background:radial-gradient(52% 38% at 50% 0%,rgba(212,168,67,.07),transparent 65%),
             radial-gradient(44% 32% at 90% 102%,rgba(255,106,60,.05),transparent 62%)}
::selection{background:rgba(212,168,67,.32)}

/* ── THEME TOGGLE ── */
.theme-toggle{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.07);border:1px solid var(--hairline);display:flex;align-items:center;justify-content:center;font-size:15px;cursor:pointer;transition:transform .15s,background .15s;flex-shrink:0;padding:0}
.theme-toggle:active{transform:scale(.88)}

/* ── SCREENS ── */
.screen{display:none;height:100%}
.screen.active{display:flex;flex-direction:column}
/* App screen: fixed-height flex column that never scrolls itself — its .page
   children each scroll internally (definite-height parent = working overflow). */
#screen-app{overflow:hidden}
/* Onboarding + super-admin are single-flow screens with no .page children,
   so they scroll as a whole now that <body> no longer scrolls. */
#screen-onboard,#screen-super{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}

/* ── NAV — frosted glass ── */
.nav{background:var(--glass);backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);border-bottom:1px solid var(--hairline);padding:0 16px;padding-top:env(safe-area-inset-top);display:flex;align-items:center;justify-content:space-between;height:calc(54px + env(safe-area-inset-top));position:sticky;top:0;z-index:100;flex-shrink:0;transition:height .25s cubic-bezier(.32,.72,0,1)}
.nav.scrolled{height:calc(42px + env(safe-area-inset-top))}
.nav-logo{font-size:17px;font-weight:800;color:var(--gold);letter-spacing:.18em;transition:font-size .25s cubic-bezier(.32,.72,0,1)}
.nav.scrolled .nav-logo{font-size:14px}
.nav-user{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 4px 4px 10px;border-radius:999px;transition:background .15s}
.nav-user:active{background:rgba(255,255,255,.06)}
.nav-av{width:30px;height:30px;border-radius:50%;background:var(--gold-l);border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--gold)}
.nav-nm{font-size:12px;font-weight:500;color:var(--muted)}

/* ── TAB BAR — frosted glass, iOS-style ── */
.tabs{display:flex;background:var(--glass);backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);border-top:1px solid var(--hairline);position:fixed;bottom:0;left:0;right:0;z-index:100;padding-bottom:env(safe-area-inset-bottom)}
.tabs::-webkit-scrollbar{display:none}
.tab-pill{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 6px);left:0;width:0;height:calc(100% - env(safe-area-inset-bottom) - 12px);border-radius:14px;background:var(--gold-l);border:1px solid rgba(212,168,67,.16);transition:left .28s cubic-bezier(.32,.72,0,1),width .28s cubic-bezier(.32,.72,0,1);pointer-events:none;z-index:0}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:9px 2px 7px;font-size:10px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .18s,transform .12s;letter-spacing:.02em;-webkit-tap-highlight-color:transparent;position:relative;z-index:1;user-select:none}
.tab svg{width:24px;height:24px;display:block;transition:transform .18s cubic-bezier(.34,1.56,.64,1)}
.tab:active{transform:scale(.86)}
.tab.active{color:var(--gold)}
.tab.active svg{transform:translateY(-1px)}

/* ── GROUP SWITCHER (multi-group) ── */
.group-switcher{display:flex;gap:8px;padding:10px 16px;background:transparent;border-bottom:1px solid var(--hairline);flex-shrink:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.group-switcher::-webkit-scrollbar{display:none}
.gs-chip{flex-shrink:0;padding:7px 15px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(255,255,255,.06);border:1px solid var(--hairline);color:var(--muted);cursor:pointer;white-space:nowrap;transition:all .18s}
.gs-chip:active{transform:scale(.94)}
.gs-chip.active{background:var(--gold-l);border-color:rgba(212,168,67,.45);color:var(--gold)}
.gs-chip.gs-add{border-style:dashed;color:var(--gold);background:transparent}

/* ── PAGES ── */
.page{display:none;padding:16px;padding-bottom:calc(92px + env(safe-area-inset-bottom));max-width:500px;margin:0 auto;width:100%;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;scrollbar-width:none}
.page::-webkit-scrollbar{display:none}
.page.active{display:block;animation:pageIn .42s cubic-bezier(.32,.72,0,1)}
@keyframes pageIn{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}

/* ── TYPOGRAPHY ── */
.page-title{font-size:30px;font-weight:800;letter-spacing:-.022em;line-height:1.12;padding:12px 0 18px}
.shdr{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin:26px 2px 10px}
.tmuted{color:var(--muted);font-size:13px;line-height:1.5}

/* ── CARDS — layered depth: hairline + inner edge light + soft shadow ── */
.card{background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,0) 38%),var(--bg-card);border:1px solid var(--hairline);border-radius:var(--r);padding:18px;margin-bottom:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 32px -14px rgba(0,0,0,.6)}
.card-title{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}

/* ── BUTTONS — iOS-weight, gradient fills, colored glow, spring press ── */
.btn{display:block;width:100%;min-height:48px;padding:15px 16px;border-radius:14px;border:none;font-size:16px;font-weight:600;font-family:var(--font);cursor:pointer;text-align:center;margin-bottom:8px;letter-spacing:-.01em;transition:transform .16s cubic-bezier(.25,.46,.45,.94),filter .16s,box-shadow .16s;-webkit-user-select:none;user-select:none}
.btn:active{transform:scale(.97);filter:brightness(.88)}
.btn:disabled{opacity:.35;cursor:default;transform:none;filter:saturate(.5)}
.btn-gold{min-height:48px;background:linear-gradient(180deg,#e7bf58,#c69d35);color:#221804;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 8px 22px -8px rgba(212,168,67,.5)}
.btn-green{background:linear-gradient(180deg,#3ddb63,#27c04f);color:#03210c;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 22px -8px rgba(48,209,88,.45)}
.btn-red{background:linear-gradient(180deg,#ff5d52,#ed3a2f);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 8px 22px -8px rgba(255,69,58,.45)}
.btn-purple{background:linear-gradient(180deg,#c96ef5,#ab48e4);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 8px 22px -8px rgba(191,90,242,.45)}
.btn-surface{background:rgba(255,255,255,.07);color:var(--text);border:1px solid var(--hairline);box-shadow:none}
.btn-sm{min-height:0;padding:9px 14px;font-size:13px;width:auto;display:inline-block;border-radius:10px;margin-bottom:0;letter-spacing:0}

/* ── after-log celebration ── */
@keyframes succPop{0%{transform:scale(.3);opacity:0}55%{transform:scale(1.18)}100%{transform:scale(1);opacity:1}}
@keyframes confFall{to{transform:translateY(105vh) rotate(720deg);opacity:0}}

/* ── INPUTS — filled iOS style; 16px kills Safari zoom-on-focus ── */
input,select,textarea{background:rgba(255,255,255,.06);border:1px solid transparent;border-radius:13px;color:var(--text);font-size:16px;padding:14px 15px;width:100%;outline:none;font-family:var(--font);margin-bottom:10px;transition:border-color .18s,box-shadow .18s,background .18s;-webkit-appearance:none;appearance:none}
:root[data-theme="light"] input,:root[data-theme="light"] select,:root[data-theme="light"] textarea{background:rgba(0,0,0,.05)}
input:focus,select:focus,textarea:focus{border-color:rgba(212,168,67,.55);box-shadow:0 0 0 3.5px rgba(212,168,67,.16);background:rgba(255,255,255,.08)}
input::placeholder{color:var(--muted)}
label{font-size:12px;font-weight:500;color:var(--muted);margin-bottom:5px;display:block}

/* ── ONBOARDING ── */
/* Onboarding: a viewport-height flex column. Cap + centre it on desktop so it
   doesn't stretch full width, and stop the children (logo/tag/card) from being
   vertically squeezed under the fixed height — that compression is what collapsed
   the Continue button. flex-shrink:0 keeps each at its natural height; the screen
   itself scrolls (overflow-y:auto, set above) if content ever exceeds the viewport. */
#screen-onboard{align-items:center;justify-content:center;padding:24px;max-width:480px;margin:0 auto}
#screen-onboard>*{flex-shrink:0}
.ob-logo{font-size:54px;font-weight:900;letter-spacing:.16em;margin-bottom:10px;background:linear-gradient(180deg,#f2d384 10%,#c9962f 90%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 8px 28px rgba(212,168,67,.28))}
.ob-tag{font-size:14px;color:var(--muted);margin-bottom:40px;text-align:center;letter-spacing:.01em}
.ob-card{background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0) 40%),var(--bg-card);border:1px solid var(--hairline);border-radius:24px;padding:26px 24px;width:100%;max-width:380px;height:auto;box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 24px 60px -24px rgba(0,0,0,.7)}
.ob-title{font-size:19px;font-weight:800;letter-spacing:-.02em;margin-bottom:5px}
.ob-sub{font-size:13px;color:var(--muted);margin-bottom:20px;line-height:1.5}
.ob-step{display:none}.ob-step.active{display:block;height:auto;animation:pageIn .35s cubic-bezier(.32,.72,0,1)}
.code-input{font-size:26px;font-weight:800;letter-spacing:.32em;text-align:center;text-transform:uppercase;font-variant-numeric:tabular-nums}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:340px;overflow-y:auto;scrollbar-width:none}
.pgrid::-webkit-scrollbar{display:none}
.pbtn{background:rgba(255,255,255,.05);border:1px solid var(--hairline);border-radius:14px;padding:13px 10px;text-align:center;cursor:pointer;transition:transform .15s,border-color .15s,background .15s}
.pbtn:active{transform:scale(.95)}
.pbtn.sel{border-color:rgba(212,168,67,.5);background:var(--gold-l)}
.pname{font-size:14px;font-weight:600;margin-bottom:2px}
.prole{font-size:10px;color:var(--muted);margin-bottom:4px}
.pteam{font-size:10px;font-weight:700;padding:2.5px 9px;border-radius:999px;display:inline-block;letter-spacing:.02em}
.tA{background:var(--Al);color:var(--A)}.tB{background:var(--Bl);color:var(--B)}.tC{background:var(--Cl);color:var(--C)}

/* ── HERO CARD (legacy) ── */
.hero-card{border-radius:16px;padding:20px;margin-bottom:12px;position:relative;overflow:hidden;background:#0d0d14}
.hero-stripe{position:absolute;top:0;left:0;width:5px;height:100%}
.hero-label{font-size:11px;font-weight:600;color:rgba(255,255,255,.45);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;padding-left:14px}
.hero-pts{font-size:58px;font-weight:900;color:var(--gold);line-height:1;padding-left:14px}
.hero-sub{font-size:13px;color:rgba(255,255,255,.5);padding-left:14px;margin-top:4px}

/* ── NUDGE ── */
.nudge{background:var(--card);border-radius:var(--r);padding:13px 14px;margin-bottom:12px;border:1px solid var(--hairline);border-left:4px solid var(--green);display:flex;align-items:flex-start;gap:10px}
.nudge-icon{font-size:18px;flex-shrink:0;margin-top:1px}
.nudge-text{font-size:13px;color:var(--text);line-height:1.5;font-weight:500}
.nudge-text strong{color:var(--green)}

/* ── STREAK CARD ── */
.streak-card-highlight{background:var(--bg-card);border:1px solid var(--hairline);border-radius:var(--r);padding:14px;margin-bottom:12px;text-align:center}
.streak-num{font-size:32px;font-weight:900;color:var(--orange);margin-bottom:4px;font-variant-numeric:tabular-nums}
.streak-msg{font-size:13px;color:var(--text);font-weight:600;line-height:1.4}

/* ── FACT CARD ── */
.fact-card{background:var(--bg-card);border:1px solid var(--hairline);border-radius:var(--r);padding:12px 14px;margin-bottom:12px;display:flex;gap:10px;align-items:flex-start;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.fact-icon{font-size:14px;flex-shrink:0}
.fact-text{font-size:0.8rem;color:var(--text-muted);font-weight:500;line-height:1.55}

/* ── STATS ── */
.srow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.sc{background:rgba(255,255,255,.05);border-radius:14px;padding:14px 8px;text-align:center;border:1px solid var(--hairline);box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.sv{font-size:26px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.sl{font-size:10px;font-weight:600;color:var(--muted);margin-top:3px;letter-spacing:.05em;text-transform:uppercase}

/* ── LEADERBOARD ── */
.lbrow{display:flex;align-items:center;padding:13px 0;border-bottom:1px solid var(--hairline);gap:11px}
.lbrow:last-child{border-bottom:none}
.lbrank{font-size:15px;font-weight:800;color:var(--muted);width:24px;text-align:center;flex-shrink:0;font-variant-numeric:tabular-nums}
.r1{color:#FFD700}.r2{color:#C0C0C0}.r3{color:#CD7F32}
.lbinfo{flex:1;min-width:0}
.lbname{font-size:15px;font-weight:600;color:var(--text);letter-spacing:-.01em}
.lbmeta{font-size:11.5px;color:var(--muted);margin-top:2px}
.tcard{border-radius:var(--r);padding:15px 17px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--hairline);background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0) 40%),var(--bg-card);box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 10px 26px -14px rgba(0,0,0,.55)}
.tcard.A{border-left:4px solid var(--A)}.tcard.B{border-left:4px solid var(--B)}.tcard.C{border-left:4px solid var(--C)}
.tcname{font-size:15px;font-weight:700;letter-spacing:-.01em}
.tcard.A .tcname{color:var(--A)}.tcard.B .tcname{color:var(--B)}.tcard.C .tcname{color:var(--C)}

/* ── TEAM STANDINGS — ranked cards with relative score bar ── */
.tstand{display:flex;align-items:center;gap:13px;padding:15px 16px;border-radius:var(--r);border:1px solid var(--hairline);background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0) 40%),var(--bg-card);box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 10px 26px -14px rgba(0,0,0,.55);margin-bottom:9px}
.tstand.lead{border-color:rgba(212,168,67,.4);background:linear-gradient(180deg,rgba(212,168,67,.08),rgba(212,168,67,0) 60%),var(--bg-card);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 0 24px -8px rgba(212,168,67,.3),0 12px 30px -14px rgba(0,0,0,.6)}
.tstand-rank{width:30px;flex-shrink:0;font-size:26px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.tstand-body{flex:1;min-width:0}
.tstand-top{display:flex;align-items:baseline;gap:8px}
.tstand-name{font-size:16px;font-weight:800;letter-spacing:-.01em}
.tstand-crown{font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);background:var(--gold-l);border:1px solid rgba(212,168,67,.32);padding:2.5px 8px;border-radius:999px;transform:translateY(-1.5px)}
.tstand-pts{margin-left:auto;font-size:21px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.02em;white-space:nowrap}
.tstand-pts i{font-style:normal;font-size:10px;font-weight:600;color:var(--muted);margin-left:4px;letter-spacing:.02em}
.tstand-bar{height:5px;background:rgba(120,120,128,.22);border-radius:999px;overflow:hidden;margin:9px 0 8px}
.tstand-fill{height:100%;border-radius:999px;transition:width .8s cubic-bezier(.2,.8,.2,1)}
.tstand-meta{font-size:11.5px;color:var(--muted);line-height:1.5}

/* ── CALENDAR ── */
.cg{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cdh{font-size:10px;font-weight:600;color:var(--muted);text-align:center;padding:4px 0;letter-spacing:.04em}
.cd{aspect-ratio:1;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:rgba(255,255,255,.04);border:1px solid transparent;color:var(--muted);cursor:default;position:relative;font-variant-numeric:tabular-nums;transition:transform .12s}
.cd.logged{background:linear-gradient(160deg,rgba(48,209,88,.24),rgba(48,209,88,.07));border-color:rgba(48,209,88,.38);color:#5fe38a;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
.cd.logged:active{transform:scale(.9)}
.cd.today{border-color:rgba(212,168,67,.85);color:var(--gold);font-weight:800;box-shadow:0 0 0 1px rgba(212,168,67,.3),0 0 16px -2px rgba(212,168,67,.4)}
.cd.empty{background:transparent;border-color:transparent;box-shadow:none}
.cal-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#222230;color:#fff;font-size:10px;font-weight:600;padding:6px 9px;border-radius:9px;z-index:99;max-width:160px;white-space:normal;line-height:1.4;text-align:center;pointer-events:none;box-shadow:0 8px 24px rgba(0,0,0,.5)}
.cal-tip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:4px solid transparent;border-top-color:#222230}

/* ── CHIPS ── */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip{padding:9px 15px;border-radius:999px;font-size:13.5px;font-weight:500;background:rgba(255,255,255,.06);border:1px solid var(--hairline);cursor:pointer;transition:transform .14s,background .14s,border-color .14s,color .14s;user-select:none}
.chip:active{transform:scale(.93)}
.chip.sel{background:var(--blue-l);border-color:rgba(64,156,255,.55);color:var(--blue);font-weight:600}
.chip.mine{border-color:rgba(212,168,67,.45)}

/* ── FEED ── */
.fi{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid var(--hairline);align-items:flex-start}
.fi:last-child{border-bottom:none}
.fav{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}
.ftxt{flex:1;min-width:0}
.fn{font-size:14px;font-weight:600;letter-spacing:-.01em}
.fw{font-size:12.5px;color:var(--muted);margin-top:2px}
.ft{font-size:10.5px;color:var(--muted);margin-top:3px;opacity:.85}

/* ── BADGES ── */
.rbadge{display:inline-block;padding:2.5px 9px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.02em}
.rCaptain{background:var(--red-l);color:var(--red)}
.rVC{background:var(--orange-l);color:var(--orange)}
.rPlayer{background:rgba(255,255,255,.07);color:var(--muted)}
.twist-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;background:var(--purple-l);color:var(--purple);border:1px solid rgba(191,90,242,.4)}

/* ── PROGRESS ── */
.pwrap{background:rgba(255,255,255,.08);border-radius:999px;height:6px;overflow:hidden;margin-top:8px}
.pbar{height:100%;border-radius:999px;transition:width .7s cubic-bezier(.2,.8,.2,1)}

/* ── SUCCESS ── */
.succ{text-align:center;padding:44px 20px}
.succ-icon{font-size:64px;margin-bottom:18px;filter:drop-shadow(0 10px 30px rgba(255,106,60,.45))}
.succ-title{font-size:28px;font-weight:800;letter-spacing:-.022em;color:var(--green);margin-bottom:8px}
.succ-sub{font-size:14px;color:var(--muted);margin-bottom:24px;line-height:1.5}
.comeback-msg{font-size:14px;color:var(--orange);font-weight:600;margin-bottom:20px;padding:13px;background:var(--orange-l);border:1px solid rgba(255,106,60,.25);border-radius:13px;line-height:1.5}

/* ── ADMIN ── */
.admin-group-card{background:var(--card);border:1px solid var(--hairline);border-radius:var(--r);padding:15px;margin-bottom:10px;cursor:pointer;transition:border-color .15s,transform .12s;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.admin-group-card:hover{border-color:rgba(212,168,67,.45)}
.admin-group-card:active{transform:scale(.985)}
.twist-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--hairline)}
.twist-row:last-child{border-bottom:none}
/* True iOS switch: 51×31, green fill, springy knob */
.toggle{width:51px;height:31px;border-radius:999px;background:rgba(120,120,128,.32);border:none;position:relative;cursor:pointer;transition:background .22s;flex-shrink:0}
.toggle.on{background:#30d158}
.toggle::after{content:'';position:absolute;width:27px;height:27px;border-radius:50%;background:#fff;top:2px;left:2px;box-shadow:0 3px 8px rgba(0,0,0,.35),0 1px 1px rgba(0,0,0,.15);transition:left .24s cubic-bezier(.3,.9,.5,1.15)}
.toggle.on::after{left:22px}
.flag-item{padding:11px 0;border-bottom:1px solid var(--hairline)}
.flag-item:last-child{border-bottom:none}

/* ── UTILS ── */
.row{display:flex;align-items:center;justify-content:space-between}
.hidden{display:none!important}
.divider{height:1px;background:var(--hairline);margin:16px 0}
.warn-box{padding:12px 14px;border-radius:13px;font-size:13px;margin-bottom:10px;line-height:1.5}
.warn-red{background:var(--red-l);border:1px solid rgba(255,69,58,.3);color:var(--red)}
.warn-orange{background:var(--orange-l);border:1px solid rgba(255,106,60,.3);color:var(--orange)}
.warn-green{background:var(--green-l);border:1px solid rgba(48,209,88,.3);color:var(--green)}
.warn-purple{background:var(--purple-l);border:1px solid rgba(191,90,242,.3);color:var(--purple)}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600}

/* ── TOASTS — frosted floating pills ── */
#toastHost{position:fixed;top:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:9999;pointer-events:none;padding:calc(env(safe-area-inset-top) + 10px) 16px 0}
.toast{pointer-events:auto;max-width:440px;width:100%;background:rgba(30,30,38,.84);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);color:var(--text);border:1px solid var(--hairline);border-left:4px solid var(--gold);border-radius:16px;padding:13px 16px;font-size:14px;font-weight:500;box-shadow:0 16px 44px rgba(0,0,0,.5);display:flex;align-items:center;gap:10px;animation:toastIn .32s cubic-bezier(.22,1,.36,1)}
:root[data-theme="light"] .toast{background:rgba(255,255,255,.86)}
.toast.out{animation:toastOut .22s ease forwards}
.toast.success{border-left-color:var(--green)}
.toast.error{border-left-color:var(--red)}
.toast-ic{font-size:18px;flex-shrink:0;line-height:1}
@keyframes toastIn{from{opacity:0;transform:translateY(-16px) scale(.95)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-10px) scale(.97)}}

/* ════════════════ FOUNDRY ════════════════ */

/* — THE STEEL (personal hero) — */
.steel-hero{position:relative;background:radial-gradient(130% 90% at 82% -18%,rgba(255,106,60,.13),transparent 55%),radial-gradient(120% 85% at 12% -12%,rgba(212,168,67,.15),transparent 60%),linear-gradient(180deg,#17171d,#0f0f13);border:1px solid var(--hairline);border-radius:24px;padding:26px 22px 24px;overflow:hidden;margin-bottom:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 24px 48px -22px rgba(0,0,0,.75)}
.steel-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(110% 70% at 50% -8%,rgba(212,168,67,.07),transparent 60%);pointer-events:none}
.steel-rank{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;letter-spacing:.05em;color:var(--gold);background:var(--gold-l);border:1px solid rgba(212,168,67,.3);padding:5.5px 12px;border-radius:999px;position:relative;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.steel-label{font-size:11.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:18px 0 2px}
.steel-pts{font-size:72px;line-height:1;font-weight:800;letter-spacing:-.035em;color:#f5f5f7;font-variant-numeric:tabular-nums}
.steel-pts .u{font-size:19px;font-weight:600;color:var(--muted);margin-left:6px;letter-spacing:0}
.steel-behind{margin-top:15px;font-size:13.5px;color:#f5f5f7;background:rgba(255,106,60,.1);border:1px solid rgba(255,106,60,.24);border-radius:13px;padding:11px 14px;line-height:1.45;position:relative}
.steel-behind strong{color:var(--orange)}
.steel-behind.lead{background:var(--gold-l);border-color:rgba(212,168,67,.26)}
.steel-behind.lead strong{color:var(--gold)}

/* — THE HEAT (animated streak fire) — */
.heat-wrap{display:flex;align-items:center;gap:16px;margin-top:18px;padding-top:17px;border-top:1px solid rgba(255,255,255,.07);position:relative}
.flame{position:relative;width:46px;height:58px;flex:none}
.flame i{position:absolute;left:50%;bottom:0;transform:translateX(-50%);border-radius:50% 50% 50% 50%/60% 60% 40% 40%;filter:blur(.4px);animation:flick var(--fdur,.9s) ease-in-out infinite alternate;transform-origin:center bottom}
.flame .f1{width:30px;height:42px;background:linear-gradient(to top,#ff5a1f,#ffb01f 70%,#ffe89a);opacity:.95}
.flame .f2{width:18px;height:30px;background:linear-gradient(to top,#ffb01f,#ffe89a);bottom:3px;animation-duration:calc(var(--fdur,.9s) * .7);opacity:.9}
.flame .f3{width:8px;height:16px;background:#fff7df;bottom:6px;animation-duration:calc(var(--fdur,.9s) * .5);opacity:.85}
.flame.cold i{background:#3a3a44 !important;animation:none;opacity:.5}
@keyframes flick{0%{transform:translateX(-50%) scaleY(1) scaleX(1) rotate(-2deg)}50%{transform:translateX(-52%) scaleY(1.12) scaleX(.94) rotate(1deg)}100%{transform:translateX(-48%) scaleY(.96) scaleX(1.05) rotate(2deg)}}
.heat-meta{flex:1}
.heat-num{font-size:30px;font-weight:800;line-height:1;color:var(--orange);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.heat-num.cold{color:var(--muted)}
.heat-cap{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.heat-msg{font-size:12.5px;color:#f5f5f7;margin-top:5px;line-height:1.45;opacity:.85}

/* — THE FOUNDRY (season goal monument) — */
.foundry-card{background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0) 40%),var(--card);border:1px solid var(--hairline);border-radius:20px;padding:18px 18px 16px;margin-bottom:14px;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 12px 32px -14px rgba(0,0,0,.6)}
.foundry-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.foundry-title{font-size:11.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
.foundry-trophy{font-size:13px;color:var(--gold);font-weight:700;font-variant-numeric:tabular-nums}
.ingot-rail{position:relative;height:120px;display:flex;align-items:flex-end;justify-content:center;gap:0;margin-bottom:12px}
.ingot{width:64px;min-width:0;background:linear-gradient(to top,#26262e,#34343e);border:1px solid rgba(255,255,255,.06);border-bottom:none;border-radius:3px 3px 0 0;position:relative;transition:height .9s cubic-bezier(.2,.8,.2,1)}
.ingot.molten{background:linear-gradient(to top,#ff5a1f,#ffb01f);box-shadow:0 0 24px rgba(255,90,31,.45);border-color:rgba(255,176,31,.5)}
.ingot.molten::after{content:'';position:absolute;top:-3px;left:0;right:0;height:6px;background:#ffe89a;border-radius:3px;box-shadow:0 0 12px #ffb01f}
.foundry-bar{height:9px;background:rgba(255,255,255,.08);border-radius:999px;overflow:hidden;margin-bottom:9px}
.foundry-fill{height:100%;background:linear-gradient(90deg,#ff5a1f,#ffb01f);border-radius:999px;width:0;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.foundry-stat{display:flex;justify-content:space-between;align-items:baseline;font-size:13px}
.foundry-stat .n{font-weight:800;color:var(--text);font-size:16px;font-variant-numeric:tabular-nums}
.foundry-stat .g{color:var(--muted)}
.foundry-sub{font-size:12px;color:var(--muted);margin-top:7px;line-height:1.5}

/* — THE STRIKE (log celebration: hammer sparks) — */
@keyframes strikeFlash{0%{transform:scale(0);opacity:0}40%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes sparkFly{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--sx),var(--sy)) scale(0);opacity:0}}
.strike-icon{animation:strikeFlash .55s cubic-bezier(.2,1.4,.4,1) both}
.spark{position:fixed;top:0;left:0;width:7px;height:7px;border-radius:50%;pointer-events:none;z-index:9999;animation:sparkFly var(--sdur,.9s) ease-out forwards}
.cu{font-variant-numeric:tabular-nums}

/* ── CONSENT TAP CARD ── */
.consent-tap-card{display:flex;align-items:center;gap:12px;padding:15px;border-radius:15px;border:1px solid var(--hairline);background:rgba(255,255,255,.04);transition:transform .15s,border-color .2s,background .2s,box-shadow .2s;cursor:pointer;user-select:none}
.consent-tap-card:active{transform:scale(.98)}
.consent-tap-card.selected{border-color:rgba(212,168,67,.55);background:var(--gold-l);box-shadow:0 0 0 1px rgba(212,168,67,.3),0 0 18px -4px rgba(212,168,67,.35)}

/* ── DAY LIST (log step 1) ── */
.day-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:15px;border:1px solid var(--hairline);background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0) 50%),var(--bg-card);cursor:pointer;transition:transform .14s,border-color .18s,background .18s;user-select:none;margin-bottom:7px;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
.day-row:active{transform:scale(.975)}
.day-row.today{border-color:rgba(212,168,67,.5);background:linear-gradient(180deg,rgba(212,168,67,.1),rgba(212,168,67,.04))}
.day-row.disabled{opacity:.35;cursor:default;pointer-events:none}
.day-row-dow{font-size:12px;font-weight:600;color:var(--text-muted);width:32px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em}
.day-row-num{font-size:22px;font-weight:800;color:var(--text);width:34px;flex-shrink:0;text-align:right;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.day-row.today .day-row-dow,.day-row.today .day-row-num{color:var(--accent)}
.day-row:not(.today)::after{content:'›';margin-left:auto;color:var(--muted);font-size:21px;font-weight:500;opacity:.45;line-height:1}

/* ── FEATURED WORKOUT CHIPS ── */
.workout-chip-wrap{margin-bottom:12px}
.workout-feat-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-bottom:10px}
.workout-feat-card{padding:14px 16px;border-radius:15px;font-size:15px;font-weight:600;background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,0) 50%),var(--bg-card-2);border:1px solid var(--hairline);cursor:pointer;transition:transform .15s,border-color .18s,background .18s,color .18s;display:flex;align-items:center;gap:10px;user-select:none;color:var(--text);box-shadow:inset 0 1px 0 rgba(255,255,255,.04);letter-spacing:-.01em}
.workout-feat-card:active{transform:scale(.97)}
.workout-feat-card.sel{background:var(--blue-l);border-color:rgba(64,156,255,.55);color:var(--blue)}
.workout-feat-card.mine{border-color:rgba(212,168,67,.4)}
.chip svg,.workout-feat-card svg{stroke:var(--text-muted);flex-shrink:0;transition:stroke .15s}
.chip.sel svg{stroke:var(--blue)}
.workout-feat-card.sel svg{stroke:var(--blue)}

/* ── LOG BUTTON (sticky FAB) ── */
#subBtn{
  position:fixed;bottom:calc(78px + env(safe-area-inset-bottom));
  left:50%;transform:translateX(-50%);
  width:calc(100% - 48px);max-width:400px;
  z-index:100;border-radius:16px;margin:0;
  pointer-events:auto; /* stay tappable above the fixed backdrop (#ls2::after is pointer-events:none) */
  transition:transform .18s cubic-bezier(.34,1.56,.64,1),filter .16s;
}
#subBtn:active{transform:translateX(-50%) scale(.95)!important}
/* gradient backdrop — only visible while ls2 is shown */
#ls2::after{content:'';position:fixed;bottom:0;left:0;right:0;height:140px;background:linear-gradient(to bottom,transparent,var(--bg) 68%);pointer-events:none;z-index:99}
#ls2{padding-bottom:96px}

/* ── ACCESSIBILITY ── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
