/* Extra features: season countdown, pace, badges, unwrap, game, guess, snow mode */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.card a{color:var(--leaf);font-weight:600}
.snow-toggle{margin-top:14px;font:inherit;font-weight:600;font-size:16px;color:var(--cream);background:#ffffff1a;border:2px solid #ffffff66;border-radius:999px;padding:10px 20px;min-height:44px;cursor:pointer}
.snow-toggle[aria-pressed="true"]{background:#fffdf8;color:var(--green);border-color:var(--gold)}
.snow-toggle:disabled{opacity:.55;cursor:not-allowed}
.snow-note{font-size:13px;opacity:.85;margin:8px auto 0;max-width:36ch}
.snowfall{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:49}
.snowfall svg{position:absolute;top:-30px;will-change:transform;animation:sf-fall linear infinite;filter:drop-shadow(0 0 2px #0006)}
@keyframes sf-fall{from{transform:translate3d(0,0,0) rotate(0)}to{transform:translate3d(var(--dx,0),calc(100vh + 60px),0) rotate(var(--rot,360deg))}}
/* season */
.season-row{display:flex;gap:16px;align-items:center}
.season-big{flex:none;background:var(--red);color:#fff;border-radius:18px;padding:10px 14px;text-align:center;min-width:104px}
.season-big b{display:block;font-size:clamp(44px,12vw,64px);line-height:1;font-weight:700;font-variant-numeric:tabular-nums}
.season-big span{font-size:13px;letter-spacing:1px;text-transform:uppercase}
.season-txt{min-width:0}
.se-head{margin:0;font-family:"Mountains of Christmas",Georgia,serif;font-weight:700;font-size:24px;color:var(--leaf);line-height:1.1}
.se-sub{margin:6px 0 0;color:#34503c;font-size:15px}
.se-fill{background:repeating-linear-gradient(135deg,var(--leaf) 0 10px,#2fa862 10px 20px)}
.se-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);gap:8px}
/* pace */
.pace-head{margin:0 0 8px;font-size:20px;font-weight:600;color:var(--ink)}
.pace-head b{color:var(--red);font-size:1.25em}
.pace-chart{width:100%;min-height:200px}
.pace-chart svg{display:block;width:100%;height:auto;overflow:visible}
.pace-chart text{font-family:"Fredoka",sans-serif;font-size:12px;fill:#5a6b5f}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--muted);margin-top:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.lg{display:inline-block;width:22px;height:0;border-top:4px solid var(--leaf);border-radius:2px}
.lg.dash{border-top:4px dashed var(--red)}
.lg.shade{height:12px;border:0;background:repeating-linear-gradient(135deg,#c8202b33 0 4px,transparent 4px 8px)}
/* badges */
.badge-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.badge{text-align:center;background:#f4efe1;border-radius:16px;padding:10px 6px 12px;min-width:0}
.badge svg{width:84px;height:84px;display:block;margin:0 auto 4px}
.badge.locked svg{filter:grayscale(1) brightness(1.15);opacity:.45}
.badge-name{font-weight:600;font-size:15px;line-height:1.15;color:var(--ink)}
.badge-desc{font-size:12px;color:var(--muted);margin-top:3px}
.badge-state{display:inline-block;margin-top:5px;font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;border-radius:999px;padding:2px 9px;background:var(--leaf);color:#fff}
.badge.locked .badge-state{background:#cfc8b3;color:#4b5a50}
/* unwrap */
.unwrap-row{display:flex;gap:8px;justify-content:center;margin-bottom:14px}
.ucake{position:relative;flex:1;max-width:100px;min-width:0;background:#f4efe1;border:2px solid #e3dcc6;border-radius:16px;padding:8px 2px 4px;cursor:pointer;font:inherit}
.ucake:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.ucake svg{display:block;width:100%;height:auto;overflow:visible}
.ucake .wl,.ucake .wr{transition:transform .6s cubic-bezier(.3,1.3,.5,1),opacity .6s}
.ucake .wl{transform-origin:0 70px}.ucake .wr{transform-origin:100px 70px}
.ucake.open .wl{transform:translate(-40px,-6px) rotate(-55deg);opacity:0}
.ucake.open .wr{transform:translate(40px,-6px) rotate(55deg);opacity:0}
.ucake.open{background:#fff;border-color:var(--gold);cursor:default}
.ucake .bursts{position:absolute;inset:0;pointer-events:none;overflow:visible}
.spr{position:absolute;left:50%;top:45%;width:10px;height:4px;border-radius:2px}
.unwrap-fortune{min-height:76px}
.unwrap-fortune.flip{animation:fadein .5s ease both}
/* game */
.game-hud{display:flex;justify-content:space-between;gap:8px;font-weight:600;color:var(--ink);margin-bottom:8px;font-size:16px}
.game-hud b{color:var(--red);font-size:1.15em}
.game-wrap{max-width:360px;margin:0 auto}
#game-cv{display:block;width:100%;height:auto;aspect-ratio:3/4;border-radius:16px;border:3px solid var(--leaf);touch-action:pan-y;background:#0d3b2a;cursor:none;outline:none}
#game-cv:focus-visible{border-color:var(--gold)}
.game-ctl{display:flex;gap:10px;justify-content:center;margin:12px 0 4px}
.btn.pad{min-width:64px;font-size:22px;background:var(--green2);touch-action:none;user-select:none;-webkit-user-select:none}
#gc-play{min-width:120px;background:var(--leaf)}
/* guess */
.g-status{font-size:15px;color:#34503c;margin-bottom:10px}
.guess-form{display:grid;grid-template-columns:1fr 130px auto;gap:10px;align-items:end}
.guess-form label{display:grid;gap:4px;font-size:13px;font-weight:600;color:var(--muted);min-width:0}
.guess-form input{font:inherit;font-size:18px;padding:10px 12px;border-radius:12px;border:2px solid #cfc8b3;background:#fff;color:var(--ink);min-height:46px;min-width:0;width:100%}
.guess-form input:focus-visible{outline:3px solid var(--gold);border-color:var(--leaf)}
.guess-form[hidden],.g-soon[hidden]{display:none}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.g-msg{min-height:1.4em;margin:10px 0 0;font-size:15px;font-weight:600}
.g-msg.bad{color:var(--red)}.g-msg.ok{color:var(--leaf)}
.g-soon{display:flex;gap:16px;align-items:center;background:#f4efe1;border-radius:14px;padding:14px}
.g-soon p{margin:0;font-size:15px;color:#34503c}
.soon-stamp{flex:none;font-family:"Mountains of Christmas",Georgia,serif;font-weight:700;font-size:22px;line-height:1.05;text-align:center;padding:10px 12px;border:4px double var(--red);color:var(--red);border-radius:12px;transform:rotate(-5deg)}
.g-board ol{margin:10px 0 0;padding:0 0 0 24px;font-size:17px}
.g-board li{padding:3px 0}
@media (max-width:640px){
 .badge-grid{grid-template-columns:repeat(2,1fr)}
 .season-row{flex-direction:column;align-items:stretch;gap:10px}
 .season-big{display:flex;align-items:baseline;justify-content:center;gap:10px;min-width:0}
 .season-big b{display:inline}
 .guess-form{grid-template-columns:1fr 1fr}
 .guess-form #g-submit{grid-column:1/-1}
 .g-soon{flex-direction:column;align-items:flex-start}
 .pace-head{font-size:18px}
}
@media (prefers-reduced-motion:reduce){.snowfall{display:none}}
