/* Decorative layer only: existing portal layouts, logos and authentication stay intact. */
[data-tca-christmas] { box-sizing:border-box; }
.tca-season-lights { position:absolute; left:0; right:0; top:0; height:30px; display:flex; justify-content:space-around; pointer-events:none; z-index:2; }
.topbar > .tca-season-lights { top:100%; }
.tca-season-wire { position:absolute; top:0; left:0; width:100%; height:14px; }
.tca-season-bulb { width:7px; height:12px; flex-shrink:0; border-radius:3px 3px 55% 55%; position:relative; top:var(--bulb-dip,0px); margin-top:6px; transform:rotate(var(--bulb-tilt)); background:linear-gradient(105deg,#ffffff70,#ffffff10 34%,transparent 60%),var(--bulb-colour); box-shadow:0 2px 10px color-mix(in srgb,var(--bulb-colour) 55%,transparent),inset -1px -1px 2px #00000018; animation:tca-fairy-glow var(--bulb-speed) ease-in-out var(--bulb-delay) infinite; }
.tca-season-bulb::before { content:''; position:absolute; width:8px; height:4px; top:-3px; left:-.5px; border-radius:1px; background:#305c43; box-shadow:inset 0 1px 0 #ffffff20; }
.tca-season-bulb::after { content:''; position:absolute; width:1px; height:4px; top:-7px; left:3px; background:#426b50; }
.tca-season-layer { position:fixed; inset:0; overflow:hidden; pointer-events:none; z-index:21; contain:strict; }
.tca-season-flight-lane { position:absolute; top:var(--flight-top,70px); left:0; width:100%; height:114px; overflow:hidden; }
.tca-season-flight { position:absolute; left:0; width:360px; height:112px; opacity:0; animation:tca-sleigh-fly 28s linear 1.5s infinite; }
.tca-season-sleigh { display:block; width:100%; height:auto; animation:tca-sleigh-bob 2.4s ease-in-out infinite alternate; }
.tca-season-snow { position:absolute; inset:0; overflow:hidden; }
.tca-season-flake { position:absolute; top:-28px; left:var(--flake-x); width:var(--flake-size); height:var(--flake-size); color:#f8feff; filter:drop-shadow(0 0 1px #4f859b80); animation:tca-snowfall var(--flake-duration) linear var(--flake-delay) 1 both; }
.tca-season-flake svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; }
.tca-season-flake--dot { border-radius:50%; background:#f8feff; box-shadow:0 0 3px #74a2b366; }
.tca-season-tree { position:absolute !important; width:56px; height:80px; pointer-events:none; z-index:1; }
.login-story > .tca-season-tree { right:14px; bottom:28px; opacity:.75; }
.portal-page-heading > .tca-season-tree { width:28px; height:38px; right:2px; top:50%; transform:translateY(-50%); }
.tca-season-tree b { display:block; position:absolute; }
.tca-season-tree-trunk { width:8%; height:13%; left:46%; bottom:0; border-radius:1px; background:#b69868; }
.tca-season-tree-tier { width:100%; height:54%; left:0; bottom:10%; clip-path:polygon(50% 0,100% 100%,0 100%); background:#2e655b; }
.tca-season-tree-tier--middle { width:79%; height:49%; left:10.5%; bottom:31%; background:#3a7769; }
.tca-season-tree-tier--top { width:56%; height:45%; left:22%; bottom:51%; background:#498977; }
.tca-season-tree-star { position:absolute; top:-8%; left:36%; width:28%; color:#dfc78f; font-size:15px; line-height:1; text-align:center; }
.portal-page-heading .tca-season-tree-star { font-size:9px; }
.tca-season-tree-light { width:4%; height:3%; border-radius:50%; background:#f8dfa1; box-shadow:0 0 4px #ffdf8f99; animation:tca-fairy-glow 3s ease-in-out infinite; }
.tca-season-hat { position:absolute; width:30px; height:23px; top:-12px; right:1px; pointer-events:none; z-index:2; transform:rotate(18deg); }
.tca-season-hat::before { content:''; position:absolute; inset:0; background:#b7554b; clip-path:polygon(0 100%,16% 18%,53% 0,100% 45%,74% 49%,55% 28%,68% 100%); }
.tca-season-hat::after { content:''; position:absolute; height:6px; width:27px; left:-2px; bottom:-1px; background:#fff8ec; border-radius:5px; box-shadow:0 1px 2px #193b4c15; }
.tca-season-hat-pom { position:absolute; right:-2px; top:7px; width:6px; height:6px; border-radius:50%; background:#fff8ec; }
.tca-season-login .login-entry { position:relative; }
.tca-season-toggle { position:absolute; top:50%; right:76px; transform:translateY(-50%); width:28px; height:28px; min-height:28px !important; padding:6px !important; border:0; border-radius:4px; background:transparent; color:#6a8590; display:grid; place-items:center; z-index:3; box-shadow:none; }
.login-entry > .tca-season-toggle { top:20px; right:16px; transform:none; }
.tca-season-toggle svg { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.7; pointer-events:none; }
.tca-season-toggle:hover { background:#087f8b0c; }
.tca-season-paused :is(.tca-season-bulb,.tca-season-tree-light,.tca-season-flight,.tca-season-sleigh) { animation-play-state:paused; }
.tca-season-paused .tca-season-flight { visibility:hidden; }
@keyframes tca-fairy-glow { 0%,100% { opacity:.65; filter:brightness(.9); } 45%,60% { opacity:1; filter:brightness(1.15); } }
@keyframes tca-sleigh-bob { from { transform:translateY(1px) rotate(-1deg); } to { transform:translateY(-3px) rotate(-2deg); } }
@keyframes tca-sleigh-fly { 0% { transform:translateX(calc(100vw + 380px)); opacity:0; } 2% { opacity:.94; } 38% { transform:translateX(-380px) translateY(-8px); opacity:.94; } 39%,100% { transform:translateX(-380px); opacity:0; } }
@keyframes tca-snowfall { 0% { opacity:0; transform:translate3d(0,-28px,0) rotate(0); } 8%,75% { opacity:var(--flake-opacity); } 100% { opacity:0; transform:translate3d(var(--flake-drift),var(--snow-distance),0) rotate(var(--flake-spin)); } }
@media(max-width:760px) { .tca-season-flight { width:280px; height:88px; } .tca-season-toggle { right:70px; } .login-story > .tca-season-tree { width:40px; height:58px; right:9px; bottom:12px; opacity:.5; } }
@media(prefers-reduced-motion:reduce) { .tca-season-flight-lane,.tca-season-snow,.tca-season-toggle { display:none; } .tca-season-bulb,.tca-season-tree-light { animation:none; } }
