/* Groundwork components. Every value comes from tokens.css. Class prefix: gw- */
.gw-ground{background-color:var(--ground);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:22px;
  background-image:
    radial-gradient(120% 70% at 50% -10%,rgba(255,255,255,.10),transparent 60%),
    radial-gradient(140% 90% at 50% 120%,rgba(0,0,0,.5),transparent 60%),
    repeating-linear-gradient(90deg,var(--groove) 0 3px,var(--slat-edge) 3px 5px,var(--slat) 5px 22px,var(--slat-b) 22px 44px,var(--slat-c) 44px 58px,var(--slat-d) 58px 62px)}
.gw-ground *{box-sizing:border-box}
.gw-ground :focus-visible{outline:2px solid var(--sodium);outline-offset:2px}

/* Surfaces */
.gw-tile{background:var(--glass);-webkit-backdrop-filter:blur(var(--blur-glass)) saturate(135%);backdrop-filter:blur(var(--blur-glass)) saturate(135%);border:1px solid var(--glass-line);border-radius:var(--radius-md);box-shadow:var(--shadow-float);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}
.gw-cat{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-inline:4px;margin-bottom:var(--space-6)}
.gw-cat__t{font-family:var(--font-display);font-weight:800;font-size:19px;line-height:24px;letter-spacing:.07em;text-transform:uppercase;text-shadow:0 2px 8px rgba(0,0,0,.55)}
.gw-cat__a{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}

/* Actions */
.gw-btn{min-height:var(--tap-min);min-width:var(--tap-min);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 18px;border-radius:var(--radius-sm);border:1px solid var(--glass-line);background:var(--glass);color:var(--ink);font:600 15px/1 var(--font-sans);cursor:pointer;box-shadow:0 6px 14px -6px rgba(0,0,0,.5);transition:transform .12s ease}
.gw-btn:active{transform:translateY(2px)}
.gw-btn--primary{background:var(--sodium);border-color:var(--sodium);color:var(--on-sodium);box-shadow:0 4px 0 var(--sodium-deep),var(--glow-sodium)}
.gw-btn--primary:active{transform:translateY(4px);box-shadow:0 0 0 var(--sodium-deep),var(--glow-sodium)}
.gw-btn--ghost{background:transparent;border-color:transparent;box-shadow:none}
.gw-btn[disabled]{opacity:.45;cursor:not-allowed}
.gw-chip{min-height:var(--tap-min);display:inline-flex;align-items:center;gap:6px;padding:0 16px;border-radius:var(--radius-pill);border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur-glass));backdrop-filter:blur(var(--blur-glass));color:var(--ink);font:500 14px/1 var(--font-sans);cursor:pointer}
.gw-chip small{font-size:11px;color:var(--ink-muted)}
.gw-chip[aria-pressed="true"]{background:var(--sodium);border-color:var(--sodium);color:var(--on-sodium);font-weight:600;box-shadow:var(--glow-sodium)}
.gw-chip[aria-pressed="true"] small{color:var(--on-sodium)}
.gw-status{min-height:36px;display:inline-flex;align-items:center;gap:6px;padding:0 14px;border-radius:var(--radius-pill);font:600 13px/1 var(--font-sans);border:1px solid var(--glass-line);background:var(--well);color:var(--ink-muted)}
.gw-status[data-s="filmed"]{color:var(--amber);border-color:rgba(239,171,98,.35);background:rgba(239,171,98,.12)}
.gw-status[data-s="edited"]{color:var(--sodium);border-color:rgba(var(--sodium-rgb),.35);background:rgba(var(--sodium-rgb),.12)}
.gw-status[data-s="posted"]{color:var(--go);border-color:rgba(127,214,162,.35);background:rgba(127,214,162,.12)}

/* Progress */
.gw-xp{display:flex;flex-direction:column;gap:6px}
.gw-xp__row{display:flex;justify-content:space-between;font:500 13px/18px var(--font-mono);color:var(--ink-muted)}
.gw-xp__track{height:var(--bar-h);border-radius:var(--radius-pill);background:var(--well);box-shadow:0 1px 2px rgba(0,0,0,.45) inset;overflow:hidden}
.gw-xp__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--sodium-deep),var(--sodium));box-shadow:var(--glow-sodium);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.gw-xp--near .gw-xp__row b{color:var(--sodium)}
.gw-xp--done .gw-xp__fill{background:var(--go);box-shadow:0 0 14px rgba(127,214,162,.5)}
@media (prefers-reduced-motion:no-preference){.gw-xp--near .gw-xp__fill{animation:gw-pulse 1.6s ease-in-out infinite}}
@keyframes gw-pulse{50%{filter:brightness(1.25)}}
.gw-streak{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:4px 16px}
.gw-streak__num{font-family:var(--font-display);font-weight:800;font-size:104px;line-height:84px;color:var(--sodium);font-variant-numeric:tabular-nums;text-shadow:0 0 28px rgba(var(--sodium-rgb),.45),0 6px 18px rgba(0,0,0,.5)}
.gw-streak__lbl{font-family:var(--font-display);font-weight:800;font-size:28px;line-height:1;text-transform:uppercase;padding-bottom:4px}
.gw-streak__sub{grid-column:1/-1;color:var(--ink-muted);margin-top:8px}
.gw-streak--frozen .gw-streak__num{color:var(--ice);text-shadow:0 0 24px rgba(191,227,242,.4)}
.gw-level{display:flex;align-items:center;gap:var(--space-4)}
.gw-level__hex{width:64px;height:72px;flex:none;display:grid;place-items:center;background:var(--sodium);color:var(--on-sodium);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);font:800 30px/1 var(--font-display);box-shadow:var(--glow-sodium)}
.gw-level__name{font:800 44px/44px var(--font-display);text-transform:uppercase}
.gw-level__meta{font:600 11px/16px var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}
.gw-league{--league:var(--league-driveway);display:inline-flex;flex-direction:column;align-items:center;gap:8px}
.gw-league__shield{position:relative;width:72px;height:84px;background:var(--league);clip-path:polygon(50% 0,100% 14%,100% 60%,50% 100%,0 60%,0 14%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--on-sodium)}
.gw-league__shield b{font:800 26px/1 var(--font-display)}
.gw-league__stripes{display:flex;gap:2px}
.gw-league__stripes i{width:5px;height:10px;background:var(--on-sodium);opacity:.75;clip-path:polygon(0 0,100% 30%,100% 100%,0 70%)}
.gw-league__name{font:800 19px/24px var(--font-display);letter-spacing:.07em;text-transform:uppercase}
.gw-league--locked .gw-league__shield{background:var(--well);color:var(--ink-muted);outline:2px dashed var(--glass-line)}
.gw-ladder{display:flex;flex-direction:column;gap:2px}
.gw-ladder__row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:12px;min-height:var(--tap-min);padding:0 12px;border-radius:var(--radius-sm)}
.gw-ladder__dot{width:22px;height:22px;border-radius:6px;background:var(--league);clip-path:polygon(50% 0,100% 14%,100% 60%,50% 100%,0 60%,0 14%)}
.gw-ladder__row span{font-weight:600}
.gw-ladder__row em{font:500 13px var(--font-mono);font-style:normal;color:var(--ink-muted)}
.gw-ladder__row--now{background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px var(--glass-line)}
.gw-ladder__row--done span,.gw-ladder__row--done em{color:var(--ink-muted)}
.gw-zones{position:relative;height:14px;border-radius:var(--radius-pill);background:var(--well);overflow:hidden;display:grid;grid-template-columns:40% 60%}
.gw-zones__drop{background:rgba(239,171,98,.18);border-right:2px solid rgba(239,171,98,.6)}
.gw-zones__fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--sodium-deep),var(--sodium));border-radius:inherit;box-shadow:var(--glow-sodium)}
.gw-zones__labels{display:flex;justify-content:space-between;font:500 12px var(--font-mono);color:var(--ink-muted)}
.gw-quest{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:12px;min-height:56px}
.gw-quest__icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--well);font:700 16px var(--font-sans)}
.gw-quest--done .gw-quest__icon{background:var(--go);color:var(--on-sodium)}
.gw-quest__t{font-weight:600}
.gw-quest__bar{height:6px;border-radius:99px;background:var(--well);margin-top:6px;overflow:hidden}
.gw-quest__bar i{display:block;height:100%;background:var(--sodium);border-radius:inherit}
.gw-quest--done .gw-quest__bar i{background:var(--go)}
.gw-quest__xp{font:500 13px var(--font-mono);color:var(--ink-muted)}
.gw-chest{display:flex;align-items:center;gap:12px;padding:12px;border-radius:var(--radius-sm);background:var(--well)}
.gw-chest__box{width:40px;height:32px;border-radius:6px;background:linear-gradient(var(--sodium) 0 40%,var(--sodium-deep) 40% 46%,var(--sodium) 46%);box-shadow:var(--glow-sodium)}
.gw-chest--locked .gw-chest__box{filter:grayscale(1) brightness(.6);box-shadow:none}
.gw-ach{display:flex;flex-direction:column;align-items:center;gap:8px;width:96px;text-align:center}
.gw-ach__medal{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,var(--sodium-light),var(--sodium) 55%,var(--sodium-deep));color:var(--on-sodium);font:800 22px var(--font-display);box-shadow:0 0 0 4px rgba(var(--sodium-rgb),.25),var(--shadow-float)}
.gw-ach__t{font-weight:600;font-size:13px;line-height:16px}
.gw-ach__d{font-size:11px;line-height:14px;color:var(--ink-muted)}
.gw-ach--locked .gw-ach__medal{background:var(--well);color:var(--ink-muted);box-shadow:inset 0 0 0 2px var(--glass-line)}
.gw-wax{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px 0 6px;border-radius:var(--radius-pill);background:var(--glass);border:1px solid var(--glass-line);font:600 13px var(--font-sans)}
.gw-wax__puck{width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffffff,#bfe3f2 50%,#7fb4c9);box-shadow:0 0 10px rgba(191,227,242,.5)}
.gw-wax--empty .gw-wax__puck{background:var(--well);box-shadow:inset 0 0 0 2px var(--glass-line)}

/* Feedback */
.gw-toast{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border-radius:14px;background:var(--sodium);color:var(--on-sodium);font:600 15px var(--font-sans);box-shadow:0 0 30px rgba(var(--sodium-rgb),.5),0 14px 30px rgba(0,0,0,.5)}
.gw-toast b{font:800 22px/1 var(--font-display);text-transform:uppercase}
.gw-celebrate{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-4);padding:32px 24px;border-radius:var(--radius-lg);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur-glass));backdrop-filter:blur(var(--blur-glass));border:1px solid var(--glass-line);box-shadow:var(--shadow-float)}
.gw-celebrate__eyebrow{font:600 11px/16px var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--sodium)}
.gw-celebrate__title{font:800 44px/44px var(--font-display);text-transform:uppercase;margin:0}
.gw-celebrate__body{color:var(--ink-muted);max-width:32ch;margin:0}
@media (prefers-reduced-motion:no-preference){.gw-celebrate{animation:gw-pop .5s cubic-bezier(.2,1.4,.4,1)}}
@keyframes gw-pop{from{transform:scale(.88);opacity:0}}

/* Navigation */
.gw-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:6px;border-radius:var(--radius-lg);background:rgba(24,25,28,.6);-webkit-backdrop-filter:blur(22px) saturate(150%);backdrop-filter:blur(22px) saturate(150%);border:1px solid var(--glass-line);box-shadow:0 18px 40px -10px rgba(0,0,0,.7)}
.gw-tabs button{min-height:var(--tap-min);border:0;border-radius:14px;background:none;color:var(--ink-muted);font:600 13px var(--font-sans);cursor:pointer}
.gw-tabs button[aria-selected="true"]{background:var(--sodium);color:var(--on-sodium);box-shadow:var(--glow-sodium)}

/* Video graphics */
.gw-step{display:inline-flex;align-items:center;gap:10px;padding:8px 18px 8px 8px;border-radius:var(--radius-pill);background:var(--sodium);color:var(--on-sodium);font:800 19px/24px var(--font-display);letter-spacing:.07em;text-transform:uppercase;box-shadow:0 8px 20px rgba(0,0,0,.45)}
.gw-step__n{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--on-sodium);color:var(--sodium);font-size:15px}
.gw-slowmo{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur-glass));backdrop-filter:blur(var(--blur-glass));border:1px solid var(--glass-line);font:600 11px/16px var(--font-sans);letter-spacing:.14em;text-transform:uppercase}
.gw-slowmo::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--sodium)}
.gw-thumb{position:relative;aspect-ratio:16/9;max-width:100%;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-float)}
.gw-thumb__series{position:absolute;left:14px;top:12px;font:600 11px/16px var(--font-sans);letter-spacing:.14em;text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-pill);background:var(--glass);border:1px solid var(--glass-line)}
.gw-thumb__words{position:absolute;left:14px;bottom:10px;font:800 56px/.9 var(--font-display);text-transform:uppercase;text-shadow:0 4px 18px rgba(0,0,0,.6)}
.gw-thumb__words em{font-style:normal;color:var(--sodium);display:block}
