/* Technigator Christmas V6 — readable, consistently white winter palette.
   Final stylesheet: deliberately supersedes incompatible green-mode rules.
   All text-bearing surfaces in Snow Mode use dark text, and dark CTAs use white.
   Keep the WebGL artwork visible through a pale, not opaque, hero backdrop. */
html.xmas-snow-mode {
  color-scheme:light!important;
  --bg:#f4fbff!important;
  --bg2:#e9f5fa!important;
  --ink:#163945!important;
  --muted:#466977!important;
  --green:#28758b!important;
  --green2:#236781!important;
  --cyan:#3f8599!important;
}
html.xmas-snow-mode,html.xmas-snow-mode body,
html.xmas-snow-mode #root,
html.xmas-snow-mode body main.page-shell,
html.xmas-snow-mode body .site-footer {
  color:#173b48!important;
  background-color:#f1faff!important;
}
/* Unify section surfaces, including original inner pages and injected scenes. */
html.xmas-snow-mode body main.page-shell :is(
  .hero,.page-hero,.section-pad,.transformation,.experience,.final-cta,
  .service-index,.service-orbit-section,.service-detail-hero,.service-detail-section,
  .deliverable-story,.detail-system-panel,.about-v18-hero,.about-v18-belief,
  .about-v18-statement,.about-v18-pillars,.xw-workshop,.xcf-city,.xcf-frozen,
  .xpro-gift-hunt,.xmas-home-feature,.contact-section,.contact-form-wrap,
  .work-stack,.work-hero,.work-showcase,.capabilities,.testimonials
) {
  background-color:#f1faff!important;
  color:#173b48!important;
}
/* Glass panels have genuinely pale backgrounds, no inherited dark gradient. */
html.xmas-snow-mode body main.page-shell :is(
 .service-index-row,.orbit-service-card,.metric,.chart-card,.experience-panel,
 .experience-browser,.browser-window,.browser-frame,.dash-top>div,.dash-bottom>div,
 .phone-shell,.phone-screen,.transform-state,.transform-label,.transform-stat-row>span,
 .xw-visual,.xw-copy,.xpro-present,.xpro-hunt-reveal,.xmas-feature-card,.xmas-feature-art,
 .xul-countdown,.xcf-city-shell,.xcf-city-viewport,.xcf-city-detail,.xcf-city-chip,
 .xcf-freeze-shell,.xcf-ice-stage,.xcf-before,.xcf-after,.xcf-insight,
 .deliverable-anchor-inner,.detail-live-meta,.detail-system-panel,.contact-form,
 .service-hero-panel,.about-node,.about-v18-pillar-grid article,
 .xmas-feature-copy,.xmas-feature-panel,.xmas-offer-dialog
) {
  background:linear-gradient(145deg,#fff 0%,#f4fbff 59%,#e5f3f9 100%)!important;
  color:#183d4b!important;
  border-color:rgba(84,144,165,.33)!important;
}
/* Global high-contrast text in Snow Mode. This includes span-only UI labels that
   the earlier mode overrides missed. Icons and SVGs are not recoloured. */
html.xmas-snow-mode body main.page-shell :is(
 h1,h2,h3,h4,h5,h6,p,small,span,strong,b,label,legend,li,dt,dd,
 blockquote,figcaption,time,em,a,button,i,summary,th,td
),
html.xmas-snow-mode body :is(.site-header,.site-footer,.nav-drawer,.preloader,
 .xmas-offer-dialog,.xul-countdown,.audio-controller) :is(
 h1,h2,h3,h4,p,small,span,strong,b,label,legend,li,em,a,button,i
) {
 color:#173c4a!important;
 text-shadow:none!important;
}
html.xmas-snow-mode body main.page-shell :is(.kicker,.xmas-kicker,.xpro-eyebrow,.xcf-kicker,.eyebrow,.section-label,.xul-time-label,.helper-note),
html.xmas-snow-mode body main.page-shell :is(h1,h2,h3,h4,h5) em {
 color:#286c84!important;
}
/* High contrast on inverse dark actions; direct children and nested labels. */
html.xmas-snow-mode body :is(
 .mega-button,.pill-button.primary,.xmas-offer-submit,.xmas-feature-button,
 .xcf-city-detail a,.xpro-fallback-actions a,.xul-mode-switch[aria-pressed="false"],
 .xmas-feature-cta,.xmas-game-button
) {
 background:#18546b!important;
 border-color:#14546a!important;
 color:#fff!important;
 box-shadow:0 7px 22px rgba(20,83,110,.13)!important;
}
html.xmas-snow-mode body :is(
 .mega-button,.pill-button.primary,.xmas-offer-submit,.xmas-feature-button,
 .xcf-city-detail a,.xpro-fallback-actions a,.xul-mode-switch[aria-pressed="false"],
 .xmas-feature-cta,.xmas-game-button
) :is(span,strong,b,small,em,i,svg) {color:#fff!important}
/* The active city chip is dark and must never have dark text. */
html.xmas-snow-mode body main.page-shell .xcf-city-chip.is-current,
html.xmas-snow-mode body main.page-shell .xcf-city-chip.is-current :is(span,strong,b,em,small){background:#215a71!important;color:#fff!important}
html.xmas-snow-mode body :is(input,textarea,select,option){background:#fff!important;color:#153e4b!important;border-color:#9bc3d1!important}
html.xmas-snow-mode body :is(input,textarea)::placeholder {color:#567a88!important;opacity:1!important}
html.xmas-snow-mode body :is(input,textarea,select,a,button):focus-visible{outline:3px solid #438ca4!important;outline-offset:3px!important}
/* Snow mode needs a readable header and logo, with no dark bars. */
html.xmas-snow-mode body .site-header,
html.xmas-snow-mode body .nav-drawer{background:#f4fcfffa!important;color:#173d4c!important;border-color:#a1c9d7!important}
html.xmas-snow-mode body .site-header :is(.main-nav a,.menu-toggle,.header-contact){color:#153e4c!important}
html.xmas-snow-mode body .site-header>.brand{background:transparent!important;border:0!important;box-shadow:none!important}
html.xmas-snow-mode body .site-header>.brand img{content:url('/christmas-logo-snow.webp')!important;object-fit:contain!important;background:transparent!important;filter:none!important}
html.xmas-snow-mode body .site-header>.xul-mode-switch{background:#f7fdff!important;color:#173d4c!important;border-color:#9ec4d1!important}
html.xmas-snow-mode body .site-header>.xul-mode-switch :is(b,span){color:#173d4c!important}
html.xmas-snow-mode body .site-header>.xpro-light-switch{background:#e5f6fc!important;color:#164656!important;border-color:#a2c6d5!important}
/* The transparent WebGL canvas must remain visible behind the snowy hero. */
html.xmas-snow-mode body .immersive-scene.scene-home,
html.xmas-snow-mode body .immersive-scene.scene-home .immersive-stage{
 background:radial-gradient(ellipse at 49% 45%,#d1eef7 0%,#eaf9fd 36%,#f3fbff 78%)!important;
 opacity:1!important;
}
html.xmas-snow-mode body .immersive-scene.scene-home .webgl-canvas{opacity:1!important;visibility:visible!important}
html.xmas-snow-mode body main.page-shell.is-home>.hero-cinematic,
html.xmas-snow-mode body main.page-shell :is(.hero-cinematic){
 background:linear-gradient(180deg,rgba(245,252,255,.08) 0%,rgba(247,252,255,.02) 56%,rgba(236,249,253,.35) 100%)!important;
}
html.xmas-snow-mode body main.page-shell .hero-cinematic::before{
 background:linear-gradient(90deg,rgba(243,251,255,.18),transparent 25%,transparent 75%,rgba(244,251,255,.20))!important;
}
html.xmas-snow-mode body .xpro-winter-scene{opacity:.26!important}
html.xmas-snow-mode body .scene-home .home-ecg{opacity:.11!important}
/* Green mode remains unchanged. Keep interactions while avoiding costly filters. */
html.xmas-active body .immersive-scene.scene-home .webgl-canvas{will-change:auto!important;filter:none!important}
@media(max-width:760px){
 html.xmas-snow-mode body .immersive-scene.scene-home{opacity:1!important}
 html.xmas-snow-mode body .site-header>.brand img{max-height:57px!important}
}

/* V6 verified contrast override: previous V4 selectors had more specificity
   and left white text on pale phone/city panels. #root is intentional. */
html.xmas-snow-mode body #root main.page-shell{
  background:transparent!important;
  background-color:transparent!important;
}
html.xmas-snow-mode body #root main.page-shell :is(
 h1,h2,h3,h4,h5,h6,p,small,span,strong,b,label,legend,li,dt,dd,
 blockquote,figcaption,time,em,a,button,i,summary,th,td
){color:#183e4b!important;text-shadow:none!important}
/* Darker accent headings remain legible on icy backgrounds. */
html.xmas-snow-mode body #root main.page-shell :is(h1,h2,h3,h4,h5) em,
html.xmas-snow-mode body #root main.page-shell :is(.kicker,.xmas-kicker,.xpro-eyebrow,.xcf-kicker,.eyebrow,.section-label,.xul-time-label){color:#286b83!important}
/* Correct every inverse action after the global text rule. */
html.xmas-snow-mode body #root main.page-shell :is(
 .mega-button,.pill-button.primary,.xmas-feature-button,.xmas-offer-submit,
 .xcf-city-detail a,.xmas-feature-cta,.xpro-fallback-actions a
),
html.xmas-snow-mode body #root main.page-shell :is(
 .mega-button,.pill-button.primary,.xmas-feature-button,.xmas-offer-submit,
 .xcf-city-detail a,.xmas-feature-cta,.xpro-fallback-actions a
) :is(span,b,strong,small,em,i){color:#fff!important}
/* Active city chip: white text on its deliberate dark blue fill. */
html.xmas-snow-mode body #root main.page-shell .xcf-city-chip.is-current,
html.xmas-snow-mode body #root main.page-shell .xcf-city-chip.is-current :is(span,strong,b,small,em){color:#fff!important}
/* Avoid the inherited dark phone art text on snowy light device screens. */
html.xmas-snow-mode body #root main.page-shell :is(
 .phone-screen,.phone-shell,.xcf-city-detail,.xcf-before,.xcf-after,.xw-visual,
 .xmas-feature-art,.experience-browser,.browser-window
) :is(h1,h2,h3,h4,p,small,span,strong,b,em,label,i){color:#173c4a!important}
/* If an action is inside a device mock, keep its inverse action treatment. */
html.xmas-snow-mode body #root main.page-shell :is(.phone-screen,.xw-visual,.xcf-city-detail) :is(.mega-button,.xmas-feature-button),
html.xmas-snow-mode body #root main.page-shell :is(.phone-screen,.xw-visual,.xcf-city-detail) :is(.mega-button,.xmas-feature-button) *{color:white!important}

@keyframes xmas-fallback-logo-tilt{0%,100%{transform:perspective(900px) rotateY(-9deg) rotateZ(-1.5deg)}50%{transform:perspective(900px) rotateY(9deg) rotateZ(1.5deg)}}
.xmas-webgl-fallback .xpro-fallback-gator{animation:xmas-fallback-logo-tilt 7s ease-in-out infinite alternate;transform-style:preserve-3d}
@media(prefers-reduced-motion:reduce){.xmas-webgl-fallback .xpro-fallback-gator{animation:none!important}}
