:root{--tt-forest:#163a1f;--tt-ink:#141414;--tt-cream:#f4eee2;--tt-muted:#6b6f63;--advent-red:#b3262a;--advent-snow:#fff;--advent-border-radius:16px}*{box-sizing:border-box}html,body{background:var(--tt-forest);color:var(--tt-cream);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:Inter,system-ui,sans-serif}#root{min-height:100vh}h1,h2,h3{margin:0;font-family:Archivo Black,Inter,sans-serif}button{font-family:inherit}.muted{color:var(--tt-muted)}.pill{background:var(--advent-snow);color:var(--tt-ink);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:4px 14px;font-size:.8rem;font-weight:700;display:inline-block}.card{background:var(--tt-cream);color:var(--tt-ink);border-radius:var(--advent-border-radius);padding:20px;box-shadow:0 10px 30px #00000040}.btn{background:var(--advent-red);color:var(--tt-cream);cursor:pointer;border:none;border-radius:999px;padding:10px 20px;font-weight:700;transition:transform .1s,opacity .15s}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.secondary{background:var(--tt-forest);color:var(--tt-cream)}.demo-btn-sm{padding:8px 14px;font-size:.9rem}.demo-stack{flex-direction:column;gap:16px;display:flex}.demo-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.demo-chip-row{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.advent-page{background:radial-gradient(circle at 15% 0,#ffffff14,#0000 45%),radial-gradient(circle at 85% 10%,#b3262a24,#0000 40%);max-width:920px;min-height:100vh;margin:0 auto;padding:28px 16px 56px;position:relative}.advent-lights{justify-content:space-between;height:10px;padding:0 4px;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden}.advent-light{border-radius:50%;width:8px;height:8px;margin-top:1px;animation:1.6s ease-in-out infinite advent-twinkle}.advent-light-0{background:var(--advent-red);animation-delay:0s}.advent-light-1{background:var(--advent-snow);animation-delay:.3s}.advent-light-2{background:#4f9a5a;animation-delay:.6s}.advent-light-3{background:#7e1a1d;animation-delay:.9s}@keyframes advent-twinkle{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}.advent-preview-banner{background:var(--advent-snow);color:var(--tt-ink);border:1px solid var(--advent-red);text-align:center;border-radius:10px;margin:18px 0;padding:10px 14px;font-size:.85rem}.advent-preview-banner code{background:#1414141f;border-radius:4px;padding:1px 6px}.advent-header{text-align:center;padding:24px 0 20px}.advent-mark-wrap{background:var(--advent-snow);border:2px solid var(--advent-red);border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin:0 auto 10px;display:flex;box-shadow:0 6px 16px #00000059}.advent-mark{object-fit:contain;width:68%;height:68%}.advent-brand-label{color:var(--advent-snow);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:700}.advent-title{color:var(--advent-snow);letter-spacing:.03em;text-shadow:0 2px #0006,0 0 20px #b3262a4d;margin:8px 0 10px;font-size:clamp(2.4rem,8vw,3.6rem)}.advent-header .muted{color:#cdd8cd}.advent-grid{grid-template-columns:repeat(6,1fr);gap:10px;margin-top:8px;display:grid}@media (width<=560px){.advent-grid{grid-template-columns:repeat(4,1fr)}}.advent-door{aspect-ratio:1;background:linear-gradient(160deg, #1d4a29, var(--tt-forest));color:var(--tt-cream);cursor:pointer;border:2px solid #f4eee240;border-radius:12px;justify-content:center;align-items:center;font-size:1.4rem;font-weight:800;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex;position:relative}.advent-door-unlocked{border-color:var(--advent-snow);box-shadow:0 0 0 1px #ffffff4d,0 6px 16px #0000004d}.advent-door-unlocked:hover{transform:translateY(-2px)scale(1.03)}.advent-door-locked{cursor:not-allowed;color:#f4eee273;background:linear-gradient(160deg,#10281a,#0d1f14)}.advent-door-completed{border-color:var(--advent-red);background:linear-gradient(160deg, var(--advent-red), #7e1a1d)}.advent-door-number{position:relative}.advent-door-check{color:var(--advent-snow);font-size:.85rem;position:absolute;top:4px;right:6px}.advent-door-lock{opacity:.7;font-size:.75rem;position:absolute;bottom:4px;right:6px}.advent-modal-backdrop{z-index:50;background:#0a100bd1;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.advent-modal{background:var(--tt-ink);border:2px solid var(--advent-snow);border-radius:20px;width:100%;max-width:560px;max-height:92vh;padding:18px;overflow-y:auto}.advent-modal-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.advent-modal-title{color:var(--tt-cream);margin:0;font-weight:800}.advent-modal-body{color:var(--tt-cream)}.advent-result{text-align:center;position:relative;overflow:hidden}.advent-checkmark{color:var(--tt-forest);opacity:0;font-size:2.6rem;transition:transform .4s cubic-bezier(.34,1.56,.64,1),opacity .3s;transform:scale(.4)}.advent-checkmark-in{opacity:1;transform:scale(1)}.advent-result-headline{margin:6px 0;font-size:1.3rem;font-weight:800}.advent-handoff{text-align:center;color:var(--tt-cream);background:var(--tt-forest)}.advent-snowfall{pointer-events:none;position:absolute;inset:0;overflow:hidden}.advent-snowflake{background:#14141440;border-radius:50%;width:6px;height:6px;animation:2.6s linear infinite advent-fall;position:absolute;top:-10px}.advent-snowflake-0{animation-delay:0s;left:4%}.advent-snowflake-1{animation-delay:.3s;left:18%}.advent-snowflake-2{animation-delay:.6s;left:32%}.advent-snowflake-3{animation-delay:.1s;left:50%}.advent-snowflake-4{animation-delay:.45s;left:68%}.advent-snowflake-5{animation-delay:.75s;left:86%}@keyframes advent-fall{0%{opacity:.9;transform:translateY(-10px)translate(0)}to{opacity:0;transform:translateY(260px)translate(12px)}}.game-board{background:var(--tt-ink);margin-top:12px;border-radius:10px;gap:2px;max-width:340px;margin-inline:auto;padding:4px;display:grid}.game-cell{aspect-ratio:1;background:#dfe6da;border-radius:2px}.game-board-snake .snake-body{background:var(--tt-forest)}.game-board-snake .snake-head{background:var(--advent-red)}.game-board-snake .snake-food{background:var(--advent-snow)}.game-board-merge{max-width:280px}.merge-tile{justify-content:center;align-items:center;font-size:1rem;font-weight:800;display:flex}.game-dpad{grid-template-rows:repeat(2,56px);grid-template-columns:repeat(3,56px);justify-content:center;gap:6px;margin-top:12px;display:grid}.game-pad{font-size:1.2rem}.game-board-pairs,.game-board-pattern{max-width:300px;margin-top:12px}.game-card{aspect-ratio:1;background:var(--tt-forest);color:var(--tt-cream);cursor:pointer;border:none;border-radius:10px;font-size:1.4rem}.game-card:disabled{cursor:default}.game-card-up{background:var(--advent-snow);color:var(--tt-ink)}.game-card-matched{color:var(--tt-ink);background:#4f9a5a}.pattern-pad{font-size:1.8rem}.pattern-pad-lit{background:var(--advent-red);color:var(--tt-cream)}.game-result-flash{color:var(--advent-snow);background:#1414148c;border-radius:10px;justify-content:center;align-items:center;font-size:1.4rem;font-weight:800;animation:.5s advent-flash-pop;display:flex;position:absolute;inset:0}@keyframes advent-flash-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.cricket-pitch,.tennis-court{background:linear-gradient(180deg, #1d4a29, var(--tt-forest));border-radius:12px;height:220px;margin-top:12px;position:relative;overflow:hidden}.cricket-wicket{gap:3px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.cricket-wicket span{background:var(--advent-snow);border-radius:1px;width:4px;height:22px}.cricket-batter,.tennis-player{font-size:1.8rem;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.cricket-ball,.tennis-ball{background:var(--advent-red);border-radius:50%;width:14px;height:14px;position:absolute;left:50%;transform:translate(-50%)}.cricket-ball-wide{left:68%}.tennis-net{background:#f4eee266;height:2px;position:absolute;top:48%;left:0;right:0}.tennis-ball-left{left:28%}.tennis-ball-center{left:50%}.tennis-ball-right{left:72%}.tennis-return-row,.penalty-shot-row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.timing-bar{background:#1414141f;border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.timing-bar-fill{background:var(--advent-red);height:100%}.swing-btn{width:100%;margin-top:12px;padding:14px;font-size:1.1rem}.blocks-board{background:var(--tt-ink);border-radius:8px;gap:1px;padding:3px;display:grid}.blocks-cell{background:#dfe6da;width:18px;height:18px}.blocks-preview{background:var(--tt-ink);border-radius:6px;grid-template-columns:repeat(4,14px);gap:1px;padding:3px;display:grid}.blocks-preview-cell{background:#dfe6da;width:14px;height:14px}.blocks-color-1{background:var(--advent-red)}.blocks-color-2{background:var(--advent-snow)}.blocks-color-3{background:var(--tt-forest)}.blocks-color-4{background:#4f9a5a}.blocks-color-5{background:#cfd6cf}.blocks-color-6{background:#7fb382}.blocks-color-7{background:#2c6632}.penalty-pitch{background:linear-gradient(180deg, #1d4a29, var(--tt-forest));touch-action:none;border-radius:12px;height:240px;margin-top:12px;position:relative;overflow:hidden}.penalty-goal{border:3px solid #f4eee280;border-bottom:none;height:50px;position:absolute;top:8px;left:20%;right:20%}.penalty-keeper{font-size:1.6rem;transition:left .3s;position:absolute;top:24px;left:50%;transform:translate(-50%)}.penalty-keeper-left{left:30%}.penalty-keeper-right{left:70%}.penalty-ball{background:var(--tt-cream);border-radius:50%;width:16px;height:16px;transition:left .5s,bottom .5s;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.penalty-ball-aiming{box-shadow:0 0 0 4px #ffffff73}.penalty-ball-left{bottom:60px;left:30%}.penalty-ball-center{bottom:70px;left:50%}.penalty-ball-right{bottom:60px;left:70%}
