/* New Year is a presentation layer, scoped to the homepage and cabinet. */
body.cabinet-newyear {
  --bg:#07121f; --bg-soft:#0c1c2c; --panel:#102333; --panel-strong:#162e3e;
  --accent:#b6e9dc; --accent-dark:#80c7b9; --accent-warm:#f3d49a;
  --text:#f0f7fa; --muted:#a5bac9; --line:#b1dfed22; --line-strong:#b1dfed42;
  background:var(--bg);
}
.cabinet-newyear .page {
  position:relative; isolation:isolate;
  background:radial-gradient(ellipse 60% 620px at 88% 0%,#1a5e6440,transparent),radial-gradient(ellipse 65% 800px at 0% 28%,#163e5930,transparent),#07121f;
}
.cabinet-newyear .page::before {
  content:""; display:block; position:absolute; inset:0 0 auto; height:850px; z-index:-1; pointer-events:none;
  background-image:radial-gradient(circle at 7% 18%,#c7e8ed90 0 1px,transparent 1.5px),radial-gradient(circle at 38% 9%,#f3d49a80 0 1px,transparent 2px),radial-gradient(circle at 63% 31%,#c7e8ed70 0 1px,transparent 1.5px),radial-gradient(circle at 93% 58%,#c7e8ed60 0 1px,transparent 2px);
  background-size:380px 330px;
}
.cabinet-newyear .brand .cosmos-mark { background:radial-gradient(circle at 27% 20%,#f4f4d9,#b6e9dc 40%,#2d7e83 86%); box-shadow:0 0 26px #b6e9dc30; }
.cabinet-newyear .topbar { border-bottom-color:#b6e9dc24; }
.cabinet-newyear .kicker,.cabinet-newyear .section-eyebrow { color:#b6dcd5; }
.cabinet-newyear .kicker-dot { background:#f3d49a; box-shadow:0 0 0 4px #f3d49a12; }
.cabinet-newyear .button.button-primary { background:#b6e9dc; border-color:#b6e9dc; color:#0b292b; box-shadow:0 4px 24px #9cebd812; }
.cabinet-newyear .button.button-primary:hover { background:#d1f5e9; border-color:#d1f5e9; color:#09292a; box-shadow:0 8px 26px #9cebd825; }
.cabinet-newyear .button-secondary { border-color:#b1dfed36; background:#12303a35; color:#e2f0f3; }
.cabinet-newyear :focus-visible { outline-color:#f3d49a; }
.cabinet-newyear .field input:focus,.cabinet-newyear .field select:focus,.cabinet-newyear .field textarea:focus { border-color:#b6e9dc; box-shadow:0 0 0 3px #b6e9dc18; }
.cabinet-newyear .card,.cabinet-newyear .device-card,.cabinet-newyear .plan,.cabinet-newyear .subscription-status-panel { background:linear-gradient(135deg,#132d3b,#0e2030); border-color:#b1dfed26; }
.cabinet-newyear .cabinet-shortcuts a[aria-current="page"] { background:#b6e9dc14; border-color:#b6e9dc70; color:#d4f5ed; }
.cabinet-newyear .card-number { color:#ecd4a7; background:#f3d49a0b; border-color:#f3d49a24; }
.cabinet-newyear .campaign-card { background:radial-gradient(ellipse at 90% 0%,#34645a50,transparent 65%),linear-gradient(120deg,#152f3e,#0d2030); border:1px solid #e5cc9842; box-shadow:0 16px 50px #0002; }
.cabinet-newyear .campaign-card::before { display:none; }
.cabinet-newyear .campaign-label { color:#f3d49a; background:#f3d49a0d; border-color:#f3d49a35; box-shadow:none; }
.cabinet-newyear .campaign-countdown { background:#07121f70; border-color:#f3d49a25; }
.cabinet-newyear .campaign-countdown strong { color:#f4d9aa; }
.cabinet-newyear .campaign-meta > span { color:#d6eee6; background:#b6e9dc0b; border-color:#b6e9dc25; }
.ny-season-tag { display:flex; align-items:center; gap:9px; width:fit-content; color:#f3d49a; font-size:10px; font-weight:650; letter-spacing:.16em; line-height:1.6; }
.ny-season-tag > span { font-size:20px; line-height:1; }
.site-newyear .hero-copy > .ny-season-tag { border:1px solid #f3d49a38; border-radius:30px; padding:9px 14px; background:#f3d49a08; margin-bottom:24px; }
.site-newyear .hero { padding-top:60px; padding-bottom:75px; }
.site-newyear .hero .accent { color:#b6e9dc; }
.site-newyear .orbit-visual { background:radial-gradient(ellipse at 55% 53%,#39817d24,transparent 67%); }
.site-newyear .orbit-label { color:#a9d7d3; font-size:9px; top:0; left:12%; letter-spacing:.24em; }
.site-newyear .ny-home-scene { object-fit:contain; transform:scale(1.08); }
.site-newyear .orbit-device { padding:10px 13px; gap:8px; background:#0c2232ed; border-color:#afded835; box-shadow:0 12px 30px #0003; font-size:11px; }
.site-newyear .orbit-device > span { color:#e9cf9e; font-size:24px; width:26px; height:30px; }
.site-newyear .orbit-phone { left:0; top:37%; }
.site-newyear .orbit-laptop { right:-2%; top:65%; }
.site-newyear .orbit-tv { left:4%; bottom:1%; }
.site-newyear .orbit-caption { color:#a7c9c7; bottom:-7%; }
.ny-welcome { position:relative; isolation:isolate; overflow:hidden; display:flex; align-items:center; min-height:236px; margin:0 0 28px; padding:34px 38px; border:1px solid #b6e9dc3b; border-radius:24px; background:radial-gradient(ellipse at 83% 25%,#245b6370,transparent 60%),linear-gradient(115deg,#132b3c,#0c1c2c 70%); box-shadow:0 20px 50px #0002; }
.ny-welcome::before { content:""; position:absolute; inset:auto -5% -70px; height:100px; border-radius:50%; border-top:1px solid #b8e6ea40; background:#b6e9dc08; pointer-events:none; }
.ny-welcome-copy { position:relative; z-index:1; width:65%; max-width:620px; }
.ny-welcome h2 { margin:17px 0 11px; color:#f1f7f6; font-size:clamp(27px,3.4vw,42px); line-height:1.12; font-weight:650; letter-spacing:-.045em; }
.ny-welcome p { color:#aac7cf; margin:0; font-size:14px; line-height:1.7; max-width:400px; }
.ny-welcome-signature { display:block; margin-top:24px; color:#d6c49e; font-size:11px; letter-spacing:.03em; }
.ny-welcome-signature span { margin-left:7px; color:#f3d49a; }
.ny-welcome-art { position:absolute; pointer-events:none; width:340px; height:auto; max-height:100%; object-fit:contain; right:9px; top:50%; transform:translateY(-50%); }
.ny-snow { position:fixed; inset:0; width:100%; height:100%; pointer-events:none; z-index:5; opacity:.72; }
.ny-snow-toggle { position:fixed; left:16px; bottom:16px; z-index:40; display:inline-flex; align-items:center; gap:8px; padding:10px 13px; min-height:44px; border:1px solid #b6e9dc40; border-radius:25px; background:#0c2232ed; color:#d2e8e7; font-size:11px; box-shadow:0 4px 20px #0003; cursor:pointer; }
.ny-snow-toggle[hidden] { display:none; }
.ny-snow-toggle > span:first-child { color:#f3d49a; font-size:17px; }
.ny-snow-toggle:hover { border-color:#b6e9dc90; background:#173444; }
@media(max-width:900px) { .site-newyear .hero { padding-top:40px; } .ny-welcome-art { width:300px; right:-25px; } .ny-welcome-copy { width:66%; } }
@media(max-width:650px) {
 .site-newyear .hero { padding-top:32px; padding-bottom:48px; }
 .site-newyear .hero-copy > .ny-season-tag { margin-bottom:18px; font-size:9px; padding:7px 11px; }
 .site-newyear .orbit-visual { margin-top:18px; margin-bottom:30px; }
 .site-newyear .orbit-device { padding:8px 10px; font-size:10px; }
 .site-newyear .orbit-device small { font-size:9px; }
 .site-newyear .orbit-laptop { right:0; }
 .ny-welcome { min-height:268px; padding:25px 24px; border-radius:20px; }
 .ny-welcome-copy { width:70%; }
 .ny-welcome .ny-season-tag { max-width:160px; font-size:8px; letter-spacing:.12em; }
 .ny-welcome h2 { max-width:215px; font-size:30px; }
 .ny-welcome p { max-width:185px; font-size:12px; }
 .ny-welcome-signature { max-width:170px; font-size:10px; line-height:1.6; margin-top:18px; }
 .ny-welcome-art { width:225px; right:-18px; top:60%; opacity:.92; }
 .ny-snow-toggle { left:12px; bottom:12px; font-size:10px; padding:9px 11px; }
}
@media(prefers-reduced-motion:reduce) { .ny-snow { display:none; } .cabinet-newyear *, .cabinet-newyear *::before,.cabinet-newyear *::after { animation:none!important; scroll-behavior:auto!important; transition:none!important; } }
@media print { .ny-snow,.ny-snow-toggle,.ny-welcome-art { display:none; } }

/* Seasonal presentation only; reward rules and form actions remain shared. */
.cabinet-newyear .calendar-card { background:radial-gradient(ellipse at 100% 0,#28585640,transparent 55%),linear-gradient(145deg,#122632,#101b2d); border-color:#a5dcd533; }
.cabinet-newyear .calendar-top .page-eyebrow { color:#e6ce91; }
.cabinet-newyear .calendar-day { --gift:#55a998; --ribbon:#f3d594; background:linear-gradient(145deg,#203d46a8,#102332); border-color:#99d8ce30; }
.cabinet-newyear .calendar-day:nth-child(3n) { --gift:#b35d78; }
.cabinet-newyear .calendar-day:nth-child(3n + 1) { --gift:#638eb8; }
.cabinet-newyear .calendar-day.special { --gift:#caa451; --ribbon:#fff0bb; border-color:#e7cd8c70; background:linear-gradient(145deg,#775e2838,#142733); }
.cabinet-newyear .calendar-day-inner { gap:8px; min-height:104px; }
.cabinet-newyear .calendar-day-symbol { height:38px; display:grid; place-items:center; }
.cabinet-newyear .ny-present { position:relative; display:block; width:34px; height:34px; filter:drop-shadow(0 3px 4px #0004); }
.cabinet-newyear .ny-present-box { position:absolute; inset:12px 3px 0; border-radius:2px 2px 4px 4px; background:linear-gradient(90deg,transparent 40%,var(--ribbon) 40% 60%,transparent 60%),linear-gradient(110deg,#ffffff16,#00000018),var(--gift); box-shadow:inset 0 -2px #0002; }
.cabinet-newyear .ny-present-lid { position:absolute; top:9px; left:0; width:34px; height:7px; border-radius:2px; background:linear-gradient(90deg,transparent 42%,var(--ribbon) 42% 58%,transparent 58%),var(--gift); box-shadow:0 2px 2px #0003; transition:transform .25s; }
.cabinet-newyear .ny-present-bow { position:absolute; top:1px; left:7px; width:20px; height:10px; transition:transform .25s; }
.cabinet-newyear .ny-present-bow::before,.cabinet-newyear .ny-present-bow::after { content:''; position:absolute; width:10px; height:8px; border:2px solid var(--ribbon); box-sizing:border-box; }
.cabinet-newyear .ny-present-bow::before { left:0; border-radius:8px 8px 0 8px; transform:rotate(18deg); }
.cabinet-newyear .ny-present-bow::after { right:0; border-radius:8px 8px 8px 0; transform:rotate(-18deg); }
.cabinet-newyear .ny-present-check { display:none; }
.cabinet-newyear .calendar-day.today { border-color:#f2d58f; background:radial-gradient(ellipse at center,#d5b15b30,#18343e); box-shadow:0 0 18px #e6c57220,inset 0 0 0 1px #f5d99930; }
.cabinet-newyear .calendar-day.today :is(time,small) { color:#fff0c6; }
.cabinet-newyear .calendar-day.today .ny-present { animation:ny-present-glow 3s ease-in-out infinite; }
.cabinet-newyear .calendar-day.today button:hover .ny-present-lid,.cabinet-newyear .calendar-day.today button:hover .ny-present-bow { transform:translateY(-3px) rotate(-5deg); }
.cabinet-newyear .calendar-day button:focus-visible { outline:2px solid #fff0bd; outline-offset:-3px; border-radius:10px; }
.cabinet-newyear .calendar-day.claimed { background:#78cdb71a; border-color:#9cdec06b; }
.cabinet-newyear .calendar-day.claimed .ny-present-lid,.cabinet-newyear .calendar-day.claimed .ny-present-bow { transform:translate(-3px,-5px) rotate(-14deg); }
.cabinet-newyear .calendar-day.claimed .ny-present-check { display:grid; place-items:center; position:absolute; right:-4px; bottom:-2px; width:17px; height:17px; border-radius:50%; color:#09271f; background:#b9efce; font:700 12px/1 sans-serif; box-shadow:0 0 0 2px #173239; }
.cabinet-newyear .calendar-day.missed .ny-present { filter:grayscale(1); opacity:.3; }
.cabinet-newyear .calendar-day.missed { background:#0c172780; }
.cabinet-newyear .calendar-day.future .ny-present { opacity:.8; }
.cabinet-newyear .calendar-legend i.today { background:#f2d58f; }
.cabinet-newyear .calendar-finale { border-color:#e9cb8766; background:linear-gradient(120deg,#dcb35a16,#72cab710); }
.cabinet-newyear .calendar-claim .button { max-width:100%; }
@keyframes ny-present-glow { 50% { filter:drop-shadow(0 0 7px #f4d58e88); } }
@media(max-width:600px) {
 .cabinet-newyear .calendar-grid,.cabinet-newyear .calendar-weekdays { gap:4px; }
 .cabinet-newyear .calendar-day-inner { min-height:91px; gap:6px; }
 .cabinet-newyear .calendar-day small { font-size:10px; }
 .cabinet-newyear .ny-present { transform:scale(.8); }
 .cabinet-newyear .calendar-top { flex-wrap:wrap; }
 .cabinet-newyear .calendar-top h2 { font-size:23px; }
}
@media(prefers-reduced-motion:reduce) { .cabinet-newyear .calendar-day.today .ny-present { animation:none; } }
