/* Figtree is the only UI family. Pages stay usable offline with system fallbacks. */
@import url('https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&display=swap');
*,*::before,*::after{box-sizing:border-box}
html{font-family:var(--font-body);font-size:100%;line-height:var(--line-height);letter-spacing:var(--letter-spacing);font-weight:var(--weight-regular);font-variant-numeric:tabular-nums;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
body{margin:0} h1,h2,h3,h4,h5,h6,p,figure{margin:0} h1,h2,h3,h4,h5,h6{font-weight:var(--weight-bold);line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-tight);overflow-wrap:anywhere}
h1{font-size:var(--text-5xl);line-height:var(--line-height-tight)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-md)}
a{color:var(--fg-brand-primary);text-underline-offset:.2em}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed}
img,svg{max-width:100%;vertical-align:middle}img{height:auto}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
::selection{background:var(--selection);color:var(--on-citron)}input,textarea{caret-color:var(--caret)}
:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-offset)}
[hidden]{display:none!important}button svg,.icon{width:1.25rem;height:1.25rem;flex:none}svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.muted{color:var(--fg-muted)}.small{font-size:var(--text-body-sm)}
/* Shared kickers: uppercase, wide tracking. .text-kicker is the small hub-card kicker. */
.text-label,.eyebrow{font:var(--weight-bold) var(--text-2xs)/var(--line-height-normal) var(--font-body);letter-spacing:var(--letter-spacing-wider);text-transform:uppercase}.eyebrow{color:var(--fg-muted)}
.text-kicker{font:var(--weight-semibold) var(--text-3xs)/var(--line-height-normal) var(--font-body);letter-spacing:var(--letter-spacing-widest);text-transform:uppercase;color:var(--fg-muted)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:fixed;top:var(--space-2);left:var(--space-2);z-index:100;background:var(--bg);padding:var(--space-3);transform:translateY(-200%)}.skip-link:focus{transform:none}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Shared text styles: twenty-two sizes, five weights, five line-height options, eight tracking steps. */
.text-3xs{font-size:var(--text-3xs)}.text-2xs{font-size:var(--text-2xs)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}
.text-body-sm{font-size:var(--text-body-sm)}.text-body{font-size:var(--text-body)}.text-md{font-size:var(--text-md)}.text-body-lg{font-size:var(--text-body-lg)}
.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}
.text-4xl{font-size:var(--text-4xl)}.text-5xl{font-size:var(--text-5xl)}.text-6xl{font-size:var(--text-6xl)}.text-7xl{font-size:var(--text-7xl)}
.text-8xl{font-size:var(--text-8xl)}.text-9xl{font-size:var(--text-9xl)}.text-10xl{font-size:var(--text-10xl)}.text-11xl{font-size:var(--text-11xl)}
.text-12xl{font-size:var(--text-12xl)}.text-13xl{font-size:var(--text-13xl)}
.font-regular{font-weight:var(--weight-regular)}.font-medium{font-weight:var(--weight-medium)}.font-semibold{font-weight:var(--weight-semibold)}.font-bold,strong,b{font-weight:var(--weight-bold)}.font-extrabold{font-weight:var(--weight-extrabold)}
code,kbd,samp,pre{font-family:var(--font-mono);font-size:inherit}

/* Size recipes supply line-height and tracking defaults; utilities allow deliberate overrides. */
.text-lg,.text-xl,.text-2xl,.text-3xl{line-height:var(--line-height-snug);letter-spacing:var(--letter-spacing-tight)}
.text-4xl,.text-5xl,.text-6xl,.text-7xl{line-height:var(--line-height-tight);letter-spacing:var(--letter-spacing-tight)}
.text-8xl,.text-9xl,.text-10xl,.text-11xl,.text-12xl,.text-13xl{line-height:var(--line-height-none);letter-spacing:var(--letter-spacing-tightest)}
.leading-none{line-height:var(--line-height-none)}.leading-tight{line-height:var(--line-height-tight)}.leading-snug{line-height:var(--line-height-snug)}.leading-normal{line-height:var(--line-height-normal)}.leading-relaxed{line-height:var(--line-height-relaxed)}
.tracking-tightest{letter-spacing:var(--letter-spacing-tightest)}.tracking-tighter{letter-spacing:var(--letter-spacing-tighter)}.tracking-tight{letter-spacing:var(--letter-spacing-tight)}.tracking-snug{letter-spacing:var(--letter-spacing-snug)}.tracking-normal{letter-spacing:var(--letter-spacing)}.tracking-wide{letter-spacing:var(--letter-spacing-wide)}.tracking-wider{letter-spacing:var(--letter-spacing-wider)}
/* Win and loss colors carry score meaning; always pair with a sign or word. */
.text-win{color:var(--win)}.text-loss{color:var(--loss)}.text-hit{color:var(--hit)}

/* Phosphor SVGs use filled paths, including regular outlines and duotone layers. */
svg.ph-icon{fill:currentColor;stroke:none}
