@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/ibm-plex-mono-400.woff2")format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/ibm-plex-mono-500.woff2")format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/ibm-plex-mono-600.woff2")format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/ibm-plex-mono-700.woff2")format("woff2")}@font-face{font-family:Mountains of Christmas;font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/mountains-of-christmas-700.woff2")format("woff2")}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/vt323-400.woff2")format("woff2")}:root{--bg:#05071f;--cream:#fff6e5;--text-2:#c8cde0;--muted:#9aa3c2;--dim:#7d87a8;--dim-num:#5b6688;--surface-1:#0b0f26;--surface-2:#0e1430;--border:#1f2742;--border-2:#232c4d;--border-dashed:#2a3350;--gold:#ffd22c;--gold-inset:#f5c400;--red:#cf222e;--red-inset:#a3151f;--red-shadow:#8f1019;--red-light:#ff4d5a;--red-lighter:#ff7a7a;--green:#4ade80;--green-dark:#2fae62;--blue:#7ec4e7;--pink:#f07ac0;--violet:#a99cff;--snow:#e6eeff;--wire:#1d2b24;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-pixel:VT323, monospace;--font-festive:"Mountains of Christmas", cursive}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg);min-height:100vh;color:var(--cream);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;background-image:radial-gradient(#ffffff0f 1px,#0000 1px);background-size:24px 24px;margin:0;overflow-x:hidden}a{color:var(--gold)}a:hover{color:var(--cream)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fall{height:calc(100% + 24px);animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-24px}@keyframes fall{0%{transform:translateY(0)}to{transform:translateY(100%)}}.gust{height:calc(100% + 24px);animation-name:gust;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-24px}@keyframes gust{0%{transform:translate(160px)}to{transform:translate(-280px,100%)}}.sway{animation-name:sway;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;display:block}@keyframes sway{0%{transform:translate(-12px)}to{transform:translate(12px)}}.pile{transform-origin:50% 100%;animation:40s cubic-bezier(0,0,.2,1) both pile}@keyframes pile{0%{transform:scaleY(.15)}to{transform:scaleY(1)}}.bulb{animation:1.6s ease-in-out infinite bulb}@keyframes bulb{0%,to{opacity:1;filter:brightness(1.2)}50%{opacity:.35;filter:brightness(.6)}}.chase{position:relative}.chase>span{text-shadow:0 0 10px;animation:1.6s linear infinite chase}.chase>span+span{position:absolute;top:0;left:0}@keyframes chase{0%,to{opacity:1}25%,75%{opacity:0}}.tinsel{text-shadow:0 0 6px #ffd22ccc;animation:1.4s ease-in-out infinite tinsel}@keyframes tinsel{0%,to{opacity:1}50%{opacity:.55}}.glint{position:relative}.glint>span{color:#fff;text-shadow:0 0 12px #fff;opacity:0;animation:6s ease-in-out infinite glint;position:absolute;top:0;left:0}@keyframes glint{0%,90%,to{opacity:0}94%{opacity:1}}.spin{animation:14s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.starpulse{text-shadow:0 0 18px #ffd22c;animation:2.4s ease-in-out infinite starpulse}@keyframes starpulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.starglow{animation:2.4s ease-in-out infinite starglow}@keyframes starglow{0%,to{opacity:0;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}.pop{opacity:0;animation:ease-in-out infinite pop}@keyframes pop{0%,to{opacity:0;transform:scale(0)rotate(0)}45%{opacity:1;transform:scale(1.2)rotate(90deg)}60%{opacity:.8;transform:scale(.9)rotate(120deg)}80%{opacity:0;transform:scale(0)rotate(180deg)}}.blink{animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.strike{animation:.6s cubic-bezier(.4,0,.2,1) .5s both strike}@keyframes strike{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.claude{animation:.7s cubic-bezier(.34,1.56,.64,1) 1.1s both claude;transform:rotate(-4deg)}@keyframes claude{0%{opacity:0;transform:translateY(-16px)rotate(-14deg)scale(.7)}to{opacity:1;transform:rotate(-4deg)}}.wiggle{transform-origin:50% 100%;animation:2.6s ease-in-out infinite wiggle}@keyframes wiggle{0%,72%,to{transform:rotate(0)}78%{transform:rotate(-3deg)}84%{transform:rotate(3deg)}90%{transform:rotate(-1.5deg)}}.swing{animation:1.15s both swing}@keyframes swing{0%{animation-timing-function:ease-in-out;transform:rotateY(0)}14%{animation-timing-function:ease-in-out;transform:rotateY(9deg)}26%{animation-timing-function:cubic-bezier(.2,.7,.3,1);transform:rotateY(-3deg)}70%{animation-timing-function:ease-in-out;transform:rotateY(-100deg)}86%{animation-timing-function:ease-in-out;transform:rotateY(-74deg)}to{transform:rotateY(-80deg)}}.doorlight{opacity:0;animation:1.3s ease-out .25s both doorlight}@keyframes doorlight{0%{opacity:0;transform:scaleX(.2)}35%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1.15)}}.doorpop{animation:.6s cubic-bezier(.34,1.56,.64,1) .3s backwards doorpop}@keyframes doorpop{0%,to{transform:scale(1)}40%{transform:scale(1.06)}}.reveal>*{animation:.45s cubic-bezier(.2,.7,.3,1) both rise}.reveal>:first-child{animation-delay:.45s}.reveal>:last-child{animation-delay:.6s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.unswing{animation:.6s cubic-bezier(.5,0,.75,.6) both unswing}@keyframes unswing{0%{transform:rotateY(-80deg)}to{transform:rotateY(0)}}.sway-tag{transform-origin:50% 0;animation:5s ease-in-out infinite swaytag}@keyframes swaytag{0%,to{transform:rotate(-1deg)}50%{transform:rotate(1deg)}}.shake{animation:.4s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}.starfall{opacity:0;animation:1s cubic-bezier(.55,0,.9,.4) both starfall;transform:translateY(380px)rotate(200deg)}@keyframes starfall{0%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(380px)rotate(200deg)}}.starreturn{animation:.6s cubic-bezier(.34,1.56,.64,1) both starreturn}@keyframes starreturn{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:none}}html[data-temperature=frozen] :is(.bulb,.chase>span,.tinsel,.glint>span,.starpulse,.starglow,.spin,.fall,.gust,.sway,.pop,.wiggle,.sway-tag,.blink){animation-play-state:paused}html[data-temperature=hot] .chase>span{animation-duration:.4s}html[data-temperature=hot] .bulb{animation-duration:.5s}html[data-temperature=hot] .tinsel{animation-duration:.35s}html[data-temperature=hot] .glint>span{animation-duration:1.2s}html[data-temperature=hot] .starpulse{animation-duration:.6s}html[data-temperature=hot] .spin{animation-duration:3s}html[data-temperature=hot] .claude{animation:.5s ease-in-out infinite alternate wobble}@keyframes wobble{0%{transform:rotate(-9deg)scale(1.03)}to{transform:rotate(2deg)scale(.98)}}html[data-temperature=hot] .tree-rows>div:nth-child(odd){animation:.18s steps(2,end) infinite jitter}@keyframes jitter{0%{transform:translate(-2px)}to{transform:translate(2px)}}html[data-hidden] *,html[data-hidden] :before,html[data-hidden] :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.pop,.chase>span+span{display:none}}.calendar-section{flex-wrap:wrap;align-items:flex-start;gap:40px;max-width:1248px;margin:0 auto;padding:56px 24px 64px;display:flex}