/* SANDORITHM v25: one type scale for every screen. Fonts are served locally. */
@font-face{
  font-family:"Sandorithm Inter";src:url("/fonts/inter-latin-variable.woff2") format("woff2");
  font-style:normal;font-weight:100 900;font-display:swap;
}
@font-face{
  font-family:"Sandorithm Manrope";src:url("/fonts/manrope-latin-variable.woff2") format("woff2");
  font-style:normal;font-weight:200 800;font-display:swap;
}
:root{
  --font-body:"Sandorithm Inter",Inter,system-ui,-apple-system,"Segoe UI","Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;
  --font-heading:"Sandorithm Manrope",Manrope,var(--font-body);
  --text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;
  --title-size:clamp(1.5rem,1.15rem + 1vw,2rem);
  --question-size:clamp(1.375rem,1.15rem + .7vw,1.75rem);
}
html{font-size:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:1.6;
  letter-spacing:0;word-spacing:normal;font-synthesis:none;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:var(--font-heading);font-weight:750;letter-spacing:-.025em;line-height:1.25;
  text-wrap:balance;overflow-wrap:break-word;
}
h1{font-size:clamp(1.75rem,1.35rem + 1.2vw,2.375rem)}
h2{font-size:var(--title-size)}
h3{font-size:var(--text-xl)}
h4{font-size:var(--text-lg)}
p{line-height:1.65;text-wrap:pretty}
b,strong{font-weight:650}
small{font-size:var(--text-xs);line-height:1.5}
button,input,select,textarea{font-family:var(--font-body);letter-spacing:0}
button{font-weight:650;line-height:1.4}
input,select,textarea{font-size:1rem;line-height:1.5}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #50b7f1;outline-offset:3px}
.brand,.brand>div:last-child,.home-brand-lockup,.home-brand-lockup>div{min-width:0}
.brand{gap:12px}
.brand h1{
  font-family:var(--font-heading);font-size:clamp(1.375rem,1.15rem + 1vw,2rem);
  font-weight:800;letter-spacing:.012em;line-height:1.15;white-space:nowrap;
}
.brand p{font-size:var(--text-xs);font-weight:450;letter-spacing:.005em;line-height:1.5;margin-top:6px}
.topbar{gap:22px}
.stats{gap:6px;max-width:none}
.pill,.tag{font-size:var(--text-xs);font-weight:550;line-height:1.45;letter-spacing:0}
.stats .pill{display:inline-flex;align-items:center;gap:.25em;padding:8px 10px;white-space:nowrap}
.stats b,.mini strong,.achievement-stat strong,.home-snapshot-grid b,.home-rank-score b,.side-stat strong,.podium-rp,.leaderboard-table,.result .score{font-variant-numeric:tabular-nums lining-nums}
.stats b{font-weight:700}
.nav{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;padding:8px 10px}
.nav button{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;line-height:1.4;min-height:44px;padding:11px 10px;white-space:nowrap}
.label,.home-welcome,.home-card-eyebrow,.showcase-kicker{
  font-family:var(--font-body);font-size:var(--text-xs);font-weight:650;letter-spacing:.085em;line-height:1.5;
}
.muted,.hero p{font-size:.9375rem;line-height:1.65}
.hero h2{font-size:clamp(1.875rem,1.3rem + 2vw,3rem);font-weight:750;line-height:1.18;letter-spacing:-.035em}
.section-title{gap:16px}
.section-title h3{font-size:clamp(1.25rem,1.05rem + .5vw,1.5rem);font-weight:750;line-height:1.3}
.section-title p{font-size:var(--text-sm);line-height:1.6;margin-top:6px}
.btn,.term-tab,.auth-tab,.register-submit,.google-auth-btn,.showcase-primary,.showcase-secondary{
  font-family:var(--font-body);font-size:.9375rem;font-weight:650;line-height:1.4;letter-spacing:0;min-height:44px;
}
.btn{padding:12px 17px}
.term-tab{padding:12px 16px}
.term-tabs{max-width:100%}
.curriculum-layout>*{min-width:0}
.field label,.register-field label{font-size:var(--text-xs);font-weight:600;letter-spacing:.015em;line-height:1.5;margin-bottom:7px}
.field input,.field select,.register-field input,.register-field select,.achievement-toolbar input,.achievement-toolbar select,.leaderboard-controls input,.leaderboard-controls select,.mistake-toolbar select{font-size:1rem;line-height:1.5;min-height:46px}
.register-field label{margin-left:0}
.grade-card h4,.mission-card h4,.badge-card h4{font-size:1.0625rem;font-weight:750;line-height:1.35;margin-bottom:8px}
.grade-card p,.mission-card p,.badge-card p,.comp-list{font-size:var(--text-sm);line-height:1.6}
.comp-list li{margin:8px 0}
.domain-chip,.mission-ai-chip,.rarity,.mission-stars span,.mistake-meta span{font-size:var(--text-xs);font-weight:600;line-height:1.4;letter-spacing:.01em}
.grade-chip{font-family:var(--font-heading);font-size:1.125rem;font-weight:750}
.bank-panel h4,.pwa-box h4{font-size:var(--text-lg);font-weight:750;line-height:1.35}
.bank-panel p,.pwa-box p,.bank-disclaimer,.smart-note,.standard-box,.week-row,.q-target,.cloud-note,.device-account-note,.result-learning{font-size:var(--text-sm);line-height:1.65}
.bank-tabs{gap:10px}
.bank-tab{font-size:var(--text-sm);font-weight:650;line-height:1.4;min-height:84px;padding:13px 12px}
.bank-tab small{font-size:var(--text-xs);font-weight:450;line-height:1.5;margin-top:6px}
.ai-fresh-panel{font-size:var(--text-sm);line-height:1.6}
.ai-fresh-panel b{font-size:.9375rem;font-weight:650}
.ai-fresh-panel small{font-size:var(--text-sm);line-height:1.6;margin-top:6px}
.ai-fresh-status,.ai-source-badge,.adaptive-badge{font-size:var(--text-xs);font-weight:600;line-height:1.5}
.question-head{flex-wrap:wrap;align-items:center;row-gap:8px}
#qCount{font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums}
.question{font-family:var(--font-heading);font-size:var(--question-size);font-weight:650;line-height:1.5;letter-spacing:-.01em;margin:20px 0;overflow-wrap:break-word;text-wrap:pretty}
.choice{font-size:1rem;font-weight:550;line-height:1.55;min-height:58px;padding:15px 17px;overflow-wrap:break-word}
.feedback,.ai-mission-story{font-size:.9375rem;line-height:1.7}
.side-stat{font-size:var(--text-sm);line-height:1.5;padding:10px 0}
.side-stat strong{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:700}
.power-title{font-size:var(--text-xs);letter-spacing:.06em;font-weight:650;line-height:1.5;color:#61798e}
.power-btn{font-size:var(--text-sm);font-weight:600;line-height:1.5;padding:12px;min-height:46px;color:#234b6e;background:#f1f7fc;border-color:#d5e4ef}
.power-btn:hover:not(:disabled){background:#e8f4ff;border-color:#65b6e9}
.power-btn:disabled{opacity:.65}
.result .score{font-family:var(--font-heading);font-size:clamp(3rem,2.5rem + 2vw,4.25rem);font-weight:800;line-height:1.15;margin:14px 0 10px;letter-spacing:-.04em}
.result h2{font-size:var(--title-size);line-height:1.3}
.stars{font-size:1.75rem;line-height:1.4;letter-spacing:.1em}
.result>p{max-width:65ch;margin-left:auto;margin-right:auto}
.mastery-table th,.mastery-table td,.leaderboard-table th,.leaderboard-table td{font-size:var(--text-sm);line-height:1.5}
.mastery-table th,.leaderboard-table th{font-size:.8125rem;font-weight:600;letter-spacing:.01em}
.week-row h4{font-size:var(--text-lg);font-weight:750}
.week-row [style]{line-height:1.65}
.quest-title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:750;line-height:1.35}
.quest-meta{font-size:var(--text-sm);line-height:1.6}
.quest-reward{font-size:var(--text-xs);font-weight:600;line-height:1.5}
.mini strong,.achievement-stat strong,.mistake-stat strong{font-family:var(--font-heading);font-size:1.75rem;font-weight:750;line-height:1.2}
.achievement-stat span,.mistake-stat span,.badge-foot{font-size:var(--text-xs);line-height:1.5;font-weight:450}
.badge-foot{gap:10px;flex-wrap:wrap}
.mistake-card h4{font-size:var(--text-lg);font-weight:700;line-height:1.5}
.mistake-card p,.mistake-card .mistake-answer{font-size:var(--text-sm);line-height:1.65}
.rank-name{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:750;line-height:1.35}
.leaderboard-hero{gap:24px;align-items:center}
.leaderboard-hero h2{font-size:var(--title-size);font-weight:750;line-height:1.25;letter-spacing:-.03em;margin:6px 0 10px}
.leaderboard-hero p{max-width:76ch;font-size:.9375rem;line-height:1.65}
.leaderboard-status{font-size:var(--text-xs);font-weight:600;line-height:1.5}
.podium-card{padding:22px 18px;min-width:0}
.podium-name{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:750;line-height:1.35;overflow-wrap:break-word}
.podium-meta{font-size:var(--text-xs);font-weight:450;line-height:1.55}
.podium-rp{font-family:var(--font-heading);font-size:clamp(1.375rem,1.2rem + .4vw,1.75rem);font-weight:800;line-height:1.25;letter-spacing:-.025em;margin-top:10px}
.lb-name{font-size:var(--text-sm);font-weight:650;line-height:1.5}
.lb-sub{font-size:var(--text-xs);line-height:1.6;margin-top:3px}
.rank-num{font-size:var(--text-base);font-weight:700}
.home-brand-name{font-family:var(--font-heading);font-size:clamp(1.25rem,1.15rem + .6vw,1.75rem);font-weight:800;letter-spacing:.015em;line-height:1.2}
.home-brand-tagline{font-size:.6875rem;font-weight:600;letter-spacing:.13em;line-height:1.5;margin-top:5px}
.home-install-mini{font-size:var(--text-xs);font-weight:650;line-height:1.4;padding:10px 12px}
.home-player-copy h2{font-family:var(--font-heading);font-size:clamp(1.375rem,1.15rem + .65vw,1.75rem);font-weight:750;line-height:1.3;letter-spacing:-.025em;margin:4px 0;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word}
.home-player-meta{font-size:var(--text-xs);line-height:1.6;white-space:normal;overflow:visible;text-overflow:clip}
.home-level-badge{font-size:var(--text-xs);font-weight:600;line-height:1.5}
.home-level-badge b{font-family:var(--font-heading);font-size:1.25rem;font-weight:750}
.home-resource-strip span{font-size:var(--text-xs);font-weight:550;line-height:1.4}
.home-resource-strip b{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:700;line-height:1.4}
#homeRankShort{font-size:.9375rem;white-space:normal}
.home-main-cta,.home-bank-cta{grid-template-columns:44px minmax(0,1fr);column-gap:12px;padding:16px 18px}
.home-main-cta b,.home-bank-cta b{font-family:var(--font-heading);font-size:1.25rem;font-weight:750;letter-spacing:.015em;line-height:1.35}
.home-main-cta small,.home-bank-cta small{font-size:var(--text-xs);font-weight:450;line-height:1.5;margin-top:4px}
.home-quick-tile{min-height:110px;padding:14px 10px}
.home-quick-tile b{font-family:var(--font-heading);font-size:var(--text-sm);font-weight:750;line-height:1.4}
.home-quick-tile small{font-size:var(--text-xs);font-weight:450;line-height:1.5;margin-top:4px;opacity:1}
.tile-achievements{color:#10324d}
.tile-daily{color:#092b47}
.tile-bow,.tile-profile{color:#041b2d}
.tile-leaderboard{background:linear-gradient(145deg,#0f76c0,#0b5d9b)}
.tile-progress{background:linear-gradient(145deg,#6847c4,#7655c5)}
.tile-mistakes{background:linear-gradient(145deg,#c32f5a,#9e2c54)}
.home-current-world h3{font-size:1.1875rem;font-weight:750;line-height:1.35}
.home-current-world p{font-size:var(--text-sm)!important;line-height:1.6!important}
.home-mastery-line,.home-rank-score{font-size:var(--text-sm);line-height:1.5}
.home-card-actions .btn{font-size:var(--text-sm);padding:11px 13px}
.home-rank-score b{font-family:var(--font-heading);font-size:1.375rem;font-weight:750}
.home-snapshot-grid span{font-size:var(--text-xs);font-weight:500;line-height:1.5}
.home-snapshot-grid b{font-family:var(--font-heading);font-size:1.375rem;font-weight:750;line-height:1.3;margin-top:6px}
#rankMini{font-size:var(--text-base);white-space:normal}
#rankBreakdownText{font-size:var(--text-sm);line-height:1.6;margin-top:10px}
.home-rank-head .muted{font-size:var(--text-sm);margin-top:4px}
.register-title{font-family:var(--font-heading);font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:800;letter-spacing:.015em;line-height:1.2}
.register-brand>div:last-child{flex:1;min-width:0}
.register-logo{flex-shrink:0}
.register-subtitle{font-size:var(--text-sm);font-weight:400;line-height:1.65;margin-top:9px}
.auth-divider{text-align:center}
.register-note,.register-error,.auth-helper,.auth-divider,.auth-provider-note,.device-account-note{font-size:var(--text-xs);line-height:1.6}
.auth-showcase-word{font-family:var(--font-heading);font-size:clamp(2rem,1.3rem + 3vw,3.5rem);font-weight:800;line-height:1.15;letter-spacing:.005em}
.auth-showcase-tagline{font-size:var(--text-sm);font-weight:600;letter-spacing:.16em;line-height:1.5}
.auth-showcase-owner{font-size:var(--text-sm);font-weight:500;line-height:1.6}
.auth-showcase-features span{font-size:var(--text-xs);font-weight:500;line-height:1.5}
.register-card{max-height:calc(100dvh - 36px);overflow-y:auto}
.install-offer{padding:16px}
.install-offer-card{padding:26px;max-height:calc(100dvh - 32px);overflow-y:auto}
.install-offer-logo{width:88px;height:88px;border-radius:22px;margin-bottom:16px}
.install-offer h2{font-family:var(--font-heading);font-size:clamp(1.5rem,1.3rem + .5vw,1.875rem);font-weight:750;letter-spacing:-.025em;line-height:1.3}
.install-offer p{font-size:.9375rem;font-weight:400;line-height:1.65;margin:12px 0 20px}
.install-offer .install-primary,.install-offer .install-later{font-size:.9375rem;font-weight:650;line-height:1.4;padding:13px 16px;min-height:46px}
.install-help{font-size:.8125rem;line-height:1.65}
.account-chip{font-size:var(--text-sm);line-height:1.6;flex-wrap:wrap}
.cloud-auth-chip,.account-mode-chip{font-size:var(--text-xs);font-weight:550;line-height:1.5}
.footer{font-size:var(--text-xs);line-height:1.8;padding:26px 12px}
.toast{font-size:var(--text-sm);font-weight:550;line-height:1.55;max-width:min(540px,calc(100vw - 32px));overflow-wrap:break-word}
.app-update-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 18px;padding:14px 16px;border:1px solid #b9d8ee;border-radius:14px;background:#eaf5fd;color:#234b6e;font-size:var(--text-sm);line-height:1.6}
.app-update-notice .btn{flex-shrink:0}
.app-update-notice .btn:disabled{opacity:.65;cursor:default}
@media(max-width:1100px){
  .topbar{align-items:flex-start;flex-direction:column;gap:12px}
  .stats{justify-content:flex-start}
  .nav{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:760px){
  .topbar{display:block;padding:16px}
  .stats{margin-top:12px;padding:3px 0 5px;overflow-x:auto;flex-wrap:nowrap}
  .nav{display:flex;position:sticky;top:0;bottom:auto;left:auto;right:auto;gap:6px;padding:8px;margin-bottom:16px;border-radius:14px;scroll-padding:8px}
  .nav button{flex:0 0 auto;min-width:96px;font-size:.8125rem;padding:10px 12px}
  .home-brand-row{align-items:center;flex-wrap:wrap;gap:12px}
  .home-brand-logo{width:46px;height:46px;border-radius:14px}
  .home-command-panel{padding:18px}
  .home-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .home-quick-tile{min-height:106px}
  .home-main-cta b,.home-bank-cta b{font-size:1.125rem}
  .home-side-stack{grid-template-columns:1fr}
  .home-mastery-line{flex-wrap:wrap;gap:6px}
  .leaderboard-hero{gap:16px}
  .leaderboard-podium{gap:12px}
  .podium-card{padding:18px;min-height:154px}
  .leaderboard-controls>.pill{flex-basis:100%}
  .question{margin:18px 0}
}
@media(max-width:480px){
  .app-update-notice{align-items:flex-start;flex-direction:column;gap:10px}
  .brand h1{font-size:1.4375rem}
  .brand p{font-size:var(--text-xs);max-width:28ch}
  .logo.brand-logo{width:50px;height:50px;border-radius:15px;flex-shrink:0}
  .home-brand-name{font-size:1.1875rem}
  .home-brand-tagline{font-size:.6875rem;letter-spacing:.09em}
  .home-brand-lockup{gap:10px}
  .home-install-mini{padding:9px 11px}
  .home-player-card{grid-template-columns:auto minmax(0,1fr);gap:12px}
  .home-level-badge{grid-column:1/-1}
  .home-player-copy h2{font-size:1.3125rem}
  .home-resource-strip{grid-template-columns:1fr 1fr}
  .home-resource-strip>div:nth-child(3){grid-column:1/-1}
  .home-main-cta,.home-bank-cta{padding:15px;grid-template-columns:36px minmax(0,1fr);column-gap:10px}
  .home-main-cta>span,.home-bank-cta>span{font-size:26px}
  .home-snapshot-grid{gap:10px}
  .register-brand{flex-direction:column;align-items:center;text-align:center;gap:12px}
  .register-logo{width:58px;height:58px;border-radius:18px}
  .register-card{padding:24px 20px}
  .install-offer-card{padding:22px}
  .install-offer-logo{width:76px;height:76px;margin-bottom:14px}
  .install-offer p{font-size:var(--text-sm)}
}
@media(max-width:360px){
  .topbar{padding:14px}
  .brand h1{font-size:1.3125rem}
  .home-command-panel{padding:15px}
  .home-brand-row{gap:10px}
  .home-brand-logo{width:40px;height:40px}
  .home-brand-lockup{gap:8px}
  .home-brand-name{font-size:1.0625rem}
  .home-brand-tagline{letter-spacing:.06em}
  .home-install-mini{margin-left:auto}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}}

.rp-rule{font-size:clamp(.8rem,2.6vw,.95rem);line-height:1.6;overflow-wrap:anywhere;padding:.65rem .85rem;border-radius:10px;background:#edf5ff;color:#315477}
