/* Festive campaign: saturated colour, original 3D art, text-only actions. */
:root { --festive-yellow: #ffda32; --festive-green: #006b46; --festive-blue: #123fbd; --festive-red: #c9163b; }
body { background: #073c32; }
.skip-link:not(:focus) { width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.back-to-top { position: fixed; z-index: 20; right: max(22px,env(safe-area-inset-right)); bottom: max(22px,env(safe-area-inset-bottom)); min-width: 100px; min-height: 48px; padding: 12px 20px; border: 2px solid #143f32; border-radius: 14px; background: #ffdf49; color: #10382c; font-size: 14px; font-weight: 700; line-height: 1.2; box-shadow: inset 0 2px 0 #fff4ae,0 6px 22px #001d3540; transition: background-color .18s; }
.back-to-top:hover { background: #fff087; color: #10382c; }
.back-to-top:active { background: #f4ca28; color: #10382c; }
.back-to-top:focus-visible { outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 6px #143f32; }
.site-header { color: #fff5c2; background: #063f33; border-bottom: 1px solid #55a976; }
.site-header::after { content: ''; position: absolute; bottom: -4px; left: 0; right: 0; height: 7px; pointer-events: none; background: radial-gradient(circle at 10% 50%,#ffda32 0 2px,transparent 4px),radial-gradient(circle at 40% 50%,#ff607c 0 2px,transparent 4px),radial-gradient(circle at 70% 50%,#b4ff67 0 2px,transparent 4px),radial-gradient(circle at 95% 50%,#6ac7ff 0 2px,transparent 4px); background-size: 165px 7px; }
.brand:link,.brand:visited { color: #fff5c2; }
.brand-calendar { color: #06382e; background: #b5ff42; box-shadow: 0 0 28px #a5ef441c; }
.desktop-nav button { color: #e8f6ce; }
.desktop-nav button:hover,.desktop-nav button:focus-visible { color: #ffdf41; }
.header-cta:link,.header-cta:visited,.button-primary:link,.button-primary:visited { color: #fff; background: #ce1640; border-color: #ce1640; }
.header-cta:hover,.header-cta:focus-visible,.button-primary:hover,.button-primary:focus-visible { color: #fff; background: #a6092d; border-color: #a6092d; }
.header-cta:active,.button-primary:active { color: #fff; background: #890d2c; border-color: #890d2c; }
.menu-toggle { border-color: #78a792; background: #105541; color: #fff5c2; }
.menu-toggle span { background: #fff5c2; }
.mobile-menu { background: #063f33; border-color: #589677; }
.mobile-menu button { color: #fff5c2; border-color: #3d795e; }
.mobile-menu button:hover,.mobile-menu button:focus-visible { color: #ffe142; background: #0d513e; }
.site-header :focus-visible { outline-color: #ffe142; }
.hero .season-status { border-left-color: #d3ac39; padding-block: 2px; max-width: 525px; }
.hero .season-status p { color: #ffe598; font-size: 13px; line-height: 1.6; }
.hero h1,.hero .hero-line { color: #fff; }
.hero h1 em { color: #bdd9ff; }
.hero .hero-lead { color: #c5d1e0; }
.hero button.quiet-action { color: #fff; background: #10253b; border-color: #6e8199; }
.hero button.quiet-action:hover,.hero button.quiet-action:focus-visible { color: #fff7ca; background: #233d58; border-color: #ffda32; }
.hero button.quiet-action:active { color: #fff; background: #071726; }
.hero a.button:link,.hero a.button:visited,.hero a.button:hover,.hero a.button:focus,.hero a.button:active { color: #fff; }
.hero-art { pointer-events: none; }
.hero::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 70px; background: radial-gradient(ellipse at 15% 0,#ffd85818,transparent 60%),radial-gradient(ellipse at 80% 0,#3496ed20,transparent 65%); pointer-events: none; }

.countdown-wrap.shell { background: #ffda32; color: #102b34; border-bottom: 1px solid #ebbd17; }
.countdown-panel { padding-block: 30px; }
.countdown-intro .eyebrow { color: #244935; }
.countdown-intro h2 { color: #103b31; }
.countdown-intro p { color: #345139; border-color: #bc991f; }
.countdown-clock [data-time] { color: #103b31; font-weight: 650; }
.countdown-clock small { color: #345139; }
.clock-divider { color: #7d6319; }
.countdown-clock { border-color: #bc991f; }

.about-section { padding-block: 80px; background: #ffda32; color: #103a30; }
.about-composition { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,1fr); gap: 70px; align-items: center; }
.tradition-visual { border-radius: 48% 48% 30px 30px; overflow: hidden; box-shadow: 0 20px 45px #7c651d1a; border: 1px solid #eac52b; }
.tradition-visual img { width: 100%; height: auto; }
.about-section .eyebrow { color: #22523b; }
.about-section h2 { color: #103a30; margin-bottom: 25px; }
.about-section h2 em { color: #a51a32; }
.about-section .intro-text { color: #103a30; font-size: 20px; }
.about-section .body-copy>p+p { color: #354b25; font-size: 16px; }
.tradition-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 27px; }
.tradition-tags span { padding: 8px 12px; border: 1px solid #4d772b66; background: #ffe965; border-radius: 8px; font-size: 12px; font-weight: 600; }

.prepare-section { color: #fff4c7; background: #006241; }
.prepare-section>.shell { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 46px 75px; align-items: center; }
.prepare-section .section-heading { grid-column: 1/-1; display: block; text-align: center; }
.prepare-section .section-heading>div { width: 100%; }
.prepare-section h2 { font-size: clamp(37px,3.6vw,52px); color: #fff4c7; }
.prepare-section h2 em { color: #ffda32; }
.prepare-section .eyebrow { color: #c9f197; }
.prepare-visual { grid-column: 1; grid-row: 2 / span 2; border-radius: 32px; overflow: hidden; border: 1px solid #74ca964a; box-shadow: 0 24px 50px #002d282f; }
.prepare-visual img { width: 100%; height: auto; }
.steps-grid { grid-column: 2; gap: 25px; }
.step-card,.step-card:first-child,.step-card:last-child { display: block; border: 0; padding: 0 0 0 23px; border-left: 3px solid #ffe15c; }
.step-card:nth-child(2) { border-color: #78c6ff; }
.step-card:nth-child(3) { border-color: #ff91a7; }
.step-card h3 { color: #ffe460; font-size: 24px; }
.step-card:nth-child(2) h3 { color: #c6eaff; }
.step-card:nth-child(3) h3 { color: #ffd2dc; }
.step-card p { color: #e0f1d9; font-size: 16px; }
.prepare-section .section-bottom { grid-column: 2; border: 0; padding: 0; display: block; }
.prepare-section .section-bottom .button:link,.prepare-section .section-bottom .button:visited { background: #ffda32; border-color: #ffda32; color: #063c30; }
.prepare-section .section-bottom .button:hover { background: #ffe975; border-color: #ffe975; color: #063c30; }

.ticket-section { background: #103bb0; color: #f1f5ff; }
.ticket-copy .eyebrow { color: #ffe577; }
.ticket-copy h2 { color: #f1f5ff; }
.ticket-copy h2 em { color: #ffdf49; }
.ticket-copy>.intro-text { color: #f1f5ff; }
.ticket-copy>p:not(.intro-text),.ticket-copy .ticket-explanation { color: #dce9ff; }
.ticket-switches { border-color: #9abaff; background: #082882; }
.ticket-switches button { color: #e7f0ff; }
.ticket-switches button:hover:not([aria-pressed=true]) { color: #fff; background: #19499d; }
.ticket-switches button[aria-pressed=true],.ticket-switches button[aria-pressed=true]:focus { background: #ffdf49; color: #09285b; box-shadow: none; }
.ticket-section :focus-visible { outline-color: #fff39f; }
.sample-ticket { padding: 29px; color: #10243e; background: #ffdb42; border-color: #ffeb83; border-radius: 22px; box-shadow: 0 18px 0 #082889,0 30px 55px #00165d50; }
.ticket-head { color: #a11231; }
.sample-mark { color: #263e23; background: #f6c927; }
.ticket-subhead { color: #33482a; }
.ticket-field { border-color: #d0a737; }
.ticket-row+.ticket-row { border-color: #d0a737; }
.ticket-row span { color: #122d46; background: #fff1a3; }
.ticket-row span+span { border-color: #d0a737; }
.ticket-row span:empty { background: #edc23c; }
.sample-ticket[data-mode=row] [data-field="1"] .ticket-row:first-child span:not(:empty),.sample-ticket[data-mode=field] [data-field="1"] span:not(:empty),.sample-ticket[data-mode=all] .ticket-field span:not(:empty) { color: #fff; background: #c7193a; }
.ticket-perforation { color: #344726; }
.ticket-perforation span { background: #ffdb42; }
.ticket-perforation::before { border-color: #967923; }
.ticket-foot { color: #324b27; }
.ticket-figure figcaption { color: #dce9ff; margin-top: 32px; }

.rules-section { background: #ffd936; color: #12362b; }
.rules-section .eyebrow { color: #245638; }
.rules-section h2 { color: #103b30; }
.rules-section h2 em { color: #b01534; }
.rules-section .section-heading>p { color: #34512c; }
.rules-grid { gap: 20px; border: 0; }
.rules-grid article,.rules-grid article:first-child,.rules-grid article:last-child { padding: 31px 30px 35px; border: 1px solid #ffffff38; background: #075b40; border-radius: 24px; color: #fff6cb; position: relative; overflow: hidden; box-shadow: 0 12px 0 #af8f1629; }
.rules-grid article:nth-child(2) { background: #1740a7; }
.rules-grid article:nth-child(3) { background: #b51638; }
.rules-grid article::after { content: ''; position: absolute; width: 110px; height: 110px; border: 25px solid #ffffff08; border-radius: 50%; top: -40px; right: -35px; pointer-events: none; }
.rule-kicker { color: #e7f3c0; }
.rule-quantity { color: #ffe15c; font-size: 104px; margin-block: 18px 26px; text-shadow: 0 4px 0 #00000014; }
.rule-quantity>span { color: #fff2c2; font-size: 16px; }
.rules-grid h3 { color: #fff4ce; font-size: 22px; }
.rules-grid p { color: #edf4e0; font-size: 16px; }

.gift-section { color: #fff5cd; background: #9e1938; }
.gift-copy .eyebrow { color: #ffdf72; }
.gift-copy h2 { color: #fff5cd; }
.gift-copy h2 em { color: #ffdf49; }
.gift-copy>.intro-text { color: #fff3d7; }
.gift-copy>p:not(.intro-text),.gift-detail p { color: #f8e1df; }
.gift-detail { border-color: #e49eac; }

.checklist-section { color: #fff2c6; background: #073f32; position: relative; }
.checklist-layout .eyebrow { color: #bbe88c; }
.checklist-layout h2 { color: #fff2c6; }
.checklist-layout h2 em { color: #ffe258; }
.checklist { gap: 25px; }
.checklist li { border: 1px solid #6cab76; border-radius: 22px; background: #07503a; padding: 29px 26px; position: relative; box-shadow: inset 0 1px 0 #bcf0b21a; }
.checklist li:nth-child(2) { background: #093e59; border-color: #518d9f; }
.checklist li:nth-child(3) { background: #911737; border-color: #d98a95; }
.checklist li>span { display: none; }
.checklist li::before { content: ''; display: block; width: 58px; height: 7px; border-radius: 20px; background: #ffdb3e; margin-bottom: 24px; box-shadow: 14px 0 0 #ffffff12; }
.checklist li:nth-child(2)::before { background: #80d5ff; }
.checklist li:nth-child(3)::before { background: #ff9eaf; }
.checklist h3 { color: #ffe773; font-size: 23px; }
.checklist li:nth-child(2) h3 { color: #c5ebff; }
.checklist li:nth-child(3) h3 { color: #ffd3dc; }
.checklist p { color: #e2eee0; font-size: 16px; }

.faq-section { color: #fff1bf; background: #123ba6; }
.faq-intro .eyebrow { color: #ffe373; }
.faq-intro h2 { color: #fff4ce; }
.faq-intro h2 em { color: #ffdf48; }
.faq-intro p { color: #dfeaff; }
.faq-list,.faq-list details { border-color: #8facdb; }
.faq-list summary,.faq-list summary:hover,.faq-list summary:focus { color: #fff4ce; }
.faq-list summary:hover { color: #ffdf48; }
.faq-list summary>span { background: #ffdf48; color: #102b62; border-color: #ffdf48; }
.faq-list details[open] summary>span { background: #f1bf15; }
.faq-list details>div { color: #dfeaff; }
.faq-section :focus-visible { outline-color: #ffeb8a; }

.closing-section { color: #fff1c4; background: #a21231; text-align: left; padding-block: 103px; }
.closing-art { display: block; position: absolute; inset: 0; z-index: -1; font-size: initial; letter-spacing: normal; }
.closing-art img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.closing-art::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg,#980e31 0%,#980e31ef 25%,#980e31a0 45%,transparent 70%); }
.closing-inner>h2 { width: 59%; font-size: clamp(39px,4vw,58px); color: #fff4ca; }
.closing-inner>h2 em { color: #ffe259; }
.closing-inner .eyebrow { color: #ffe477; }
.closing-inner>p { max-width: 525px; margin: 27px 0 30px; color: #ffecdb; }
.closing-section .button:link,.closing-section .button:visited { color: #143828; background: #ffdc3c; border-color: #ffdc3c; }
.closing-section .button:hover,.closing-section .button:focus-visible { color: #143828; background: #ffea85; border-color: #ffea85; }
.closing-section .button:active { color: #143828; background: #f3c41a; }
.site-footer { color: #f6e5cf; background: #680f2d; border-top: 1px solid #e6ae785c; }
.footer-brand { color: #ffe776; }
.footer-top { gap: 40px; border-color: #f0cc9c4a; }
.footer-links { display: flex; flex-direction: column; gap: 9px; margin-left: auto; }
.footer-links a:link,.footer-links a:visited { color: #fbe8c3; font-size: 13px; min-height: 26px; text-decoration: underline; text-underline-offset: 4px; }
.footer-links a:hover,.footer-links a:focus-visible { color: #ffe35a; }
.footer-bottom>p { font-size: 12px; }
.footer-meta { margin-top: 13px; padding-top: 0; border: 0; }
.age-mark { border-color: #eed4b6; color: #fff2c4; }
.error-page { background: #063f33; color: #fff2c4; }
.error-page h1,.error-page p { color: #fff2c4; }
.error-code { color: #ffdf49; }

/* A brief arrival animation only; no continuous snow or distracting flashes. */
.is-celebrating img { animation: festive-arrival 3.6s cubic-bezier(.2,.6,.2,1) both; }
@keyframes festive-arrival { 0% { transform: translateY(10px) scale(1.018); } 45% { transform: translateY(-3px) scale(1.005); } 100% { transform: translateY(0) scale(1); } }

/* Legal pages retain the campaign identity without distracting illustration. */
.legal-page { background: #073f32; color: #f1f3d9; }
.legal-header { padding-block: 25px; border-bottom: 1px solid #619772; }
.legal-header .shell { display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.legal-back { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 20px; border-radius: 10px; color: #123b2c; background: #ffdd40; font-size: 14px; font-weight: 650; }
.legal-back:visited { color: #123b2c; }
.legal-content { width: min(860px,calc(100% - 48px)); margin: 0 auto; padding-block: 65px 75px; }
.legal-content h1 { color: #ffe270; font-size: clamp(34px,4vw,54px); margin-bottom: 28px; line-height: 1.12; overflow-wrap: anywhere; }
.legal-content h2 { font-size: 25px; color: #ffe270; margin: 36px 0 16px; letter-spacing: -.02em; }
.legal-content p,.legal-content li { font-size: 16px; line-height: 1.8; color: #e6f0db; }
.legal-content p+p { margin-top: 14px; }
.legal-content a { text-decoration: underline; text-underline-offset: 3px; color: #fff19a; }
.legal-content ul { padding-left: 22px; }

@media(min-width:601px) and (max-width:1200px) {
  .hero-art { width: 70%; right: -4%; top: 0; }
  .hero-art img { object-fit: contain; }
  .hero-art::after { background: linear-gradient(90deg,var(--night),#081a2c99 27%,transparent 60%),linear-gradient(180deg,var(--night) 12%,transparent 26%,transparent 77%,var(--night) 91%); }
}
@media(max-width:1200px) {
  .about-composition { gap: 44px; }
  .prepare-section>.shell { column-gap: 45px; }
  .step-card h3 { font-size: 22px; }
  .step-card p { font-size: 15px; }
  .rules-grid article,.rules-grid article:first-child,.rules-grid article:last-child { padding: 27px 23px; }
  .checklist li { padding: 25px 22px; }
  .checklist h3 { font-size: 21px; }
}
@media(max-width:900px) {
  .about-composition { grid-template-columns: minmax(0,.8fr) minmax(0,1fr); gap: 35px; }
  .about-section h2 { font-size: 37px; }
  .about-section .intro-text { font-size: 18px; }
  .about-section .body-copy>p+p { font-size: 15px; }
  .tradition-tags { gap: 6px; }
  .tradition-tags span { font-size: 10px; padding: 6px 9px; }
  .prepare-section>.shell { grid-template-columns: minmax(0,.82fr) minmax(0,1fr); gap: 32px; }
  .prepare-section .section-heading { display: block; }
  .prepare-section h2 { font-size: 39px; }
  .prepare-visual { align-self: start; }
  .step-card,.step-card:first-child,.step-card:last-child { padding-left: 17px; }
  .step-card h3 { font-size: 20px; }
  .step-card p { font-size: 14px; }
  .rule-quantity { font-size: 78px; }
  .rules-grid article,.rules-grid article:first-child,.rules-grid article:last-child { padding: 25px 19px; }
  .rules-grid h3 { font-size: 20px; }
  .rules-grid p { font-size: 14px; }
  .gift-copy { padding: 52px 44px; }
  .checklist { gap: 16px; }
  .checklist li { padding: 24px 20px; }
  .checklist p { font-size: 14px; }
  .closing-section { padding-block: 78px; }
  .closing-inner>h2 { width: 65%; font-size: 43px; }
  .closing-inner>p { max-width: 440px; font-size: 16px; }
  .closing-art img { object-position: 57% center; }
  .footer-links { margin-left: auto; }
}
@media(max-width:600px) {
  .back-to-top { right: max(14px,env(safe-area-inset-right)); bottom: max(14px,env(safe-area-inset-bottom)); min-width: 88px; min-height: 44px; padding: 10px 15px; border-radius: 12px; font-size: 13px; }
  .hero .season-status p { font-size: 12px; }
  .about-section { padding-block: 48px 60px; }
  .about-composition { grid-template-columns: 1fr; gap: 32px; }
  .tradition-visual { width: 100%; max-width: 390px; justify-self: center; border-radius: 42% 42% 24px 24px; }
  .about-section h2 { font-size: 36px; }
  .about-section .intro-text { font-size: 19px; }
  .about-section .body-copy>p+p { font-size: 16px; }
  .tradition-tags span { font-size: 11px; padding: 7px 10px; }
  .prepare-section>.shell { grid-template-columns: 1fr; gap: 31px; }
  .prepare-section .section-heading { text-align: left; }
  .prepare-section h2 { font-size: 36px; }
  .prepare-visual { grid-column: 1; grid-row: auto; border-radius: 24px; }
  .steps-grid { grid-column: 1; gap: 28px; }
  .step-card h3 { font-size: 22px; }
  .step-card p { font-size: 15px; }
  .prepare-section .section-bottom { grid-column: 1; }
  .prepare-section .section-bottom .button { width: 100%; }
  .sample-ticket { padding: 20px; }
  .ticket-figure figcaption { margin-top: 32px; }
  .rules-grid { gap: 18px; }
  .rules-grid article,.rules-grid article:first-child,.rules-grid article:last-child { padding: 27px 24px 29px 130px; min-height: 210px; }
  .rule-quantity { font-size: 75px; top: 35px; left: 22px; margin: 0; }
  .rule-quantity>span { font-size: 13px; }
  .rules-grid h3 { font-size: 22px; }
  .rules-grid p { font-size: 15px; }
  .gift-copy { padding: 42px 24px 50px; }
  .checklist { gap: 20px; }
  .checklist li { display: block; padding: 26px; }
  .checklist h3 { font-size: 23px; }
  .checklist p { font-size: 16px; }
  .checklist li::before { height: 6px; margin-bottom: 20px; }
  .closing-section { padding-block: 57px 0; display: flex; flex-direction: column; }
  .closing-inner { order: 1; }
  .closing-inner>h2 { width: 100%; font-size: 38px; }
  .closing-inner>p { font-size: 16px; }
  .closing-art { order: 2; position: relative; z-index: 0; width: 100%; height: 350px; margin-top: 8px; }
  .closing-art img { object-position: 90% center; }
  .closing-art::after { background: linear-gradient(180deg,#a21231,transparent 26%,transparent 86%,#680f2d); }
  .footer-links { width: 100%; order: 3; margin: 0; gap: 10px; }
  .footer-links a:link,.footer-links a:visited { font-size: 13px; padding-block: 3px; }
  .footer-top { gap: 28px; }
  .legal-header .brand { font-size: 13px; }
  .legal-header .brand-calendar { display: none; }
  .legal-back { padding: 10px 13px; font-size: 12px; }
  .legal-content { padding-block: 42px 55px; }
  .legal-content h2 { font-size: 23px; }
}
@media(max-width:350px) {
  .about-section h2,.prepare-section h2,.closing-inner>h2 { font-size: 32px; }
  .rules-grid article,.rules-grid article:first-child,.rules-grid article:last-child { padding: 26px 20px; }
  .rule-quantity { position: static; font-size: 70px; display: flex; margin: 16px 0; }
  .rule-quantity>span { display: inline; margin: 0; }
  .rules-grid h3 { margin-top: 15px; }
  .sample-ticket { padding: 15px; }
  .gift-copy { padding-inline: 20px; }
}
@media(prefers-reduced-motion:reduce) { .is-celebrating img { animation: none; } }
