/* GENERATED by scripts/dc2js.py: the design's base styles and keyframes. */
html{background:#16130d;scroll-behavior:smooth}body{margin:0;background:#16130d;color:#ece2cd;font-family:'Hanken Grotesk',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:#e8705a;text-decoration:none}a:hover{color:#ece2cd}
@keyframes apPenBob{0%,100%{transform:translateY(0)}45%{transform:translateY(-6px)}60%{transform:translateY(-5px)}}
@keyframes apPenSquash{0%,100%{transform:scale(1.04,.95)}12%{transform:scale(.97,1.04)}30%,80%{transform:scale(1,1)}}
@keyframes apPenSway{0%,100%{transform:rotate(-4deg)}35%{transform:rotate(3deg)}55%{transform:rotate(2deg)}75%{transform:rotate(-1deg)}}
@keyframes apPenPeek{0%,86%,100%{transform:rotate(0) translateX(0)}89%{transform:rotate(-10deg) translateX(-2px)}93%{transform:rotate(6deg) translateX(1px)}96%{transform:rotate(-2deg)}}
@keyframes apLeafFall{0%{transform:translate(0,-30px) rotate(0deg);opacity:0}10%{opacity:.8}100%{transform:translate(60px,105vh) rotate(320deg);opacity:0}}
@keyframes apShine{0%,55%{transform:translateX(-120%) skewX(-20deg)}85%,100%{transform:translateX(320%) skewX(-20deg)}}
@keyframes apLand{0%{transform:scale(1.18,.8)}35%{transform:scale(.92,1.1)}65%{transform:scale(1.04,.97)}100%{transform:scale(1,1)}}
@keyframes apPop{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}
@keyframes apGlow{0%,100%{box-shadow:0 0 0 0 rgba(212,79,58,0)}50%{box-shadow:0 0 0 6px rgba(212,79,58,.18),0 18px 40px rgba(212,79,58,.18)}}
@keyframes apDust{0%{transform:translate(0,0);opacity:0}15%{opacity:.7}85%{opacity:.5}100%{transform:translate(var(--dx),-220px);opacity:0}}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
/* The app's leaf field (seasonal-fx.js leafField) marks itself with .fx-mark and sets --s/--c.
   These are the only rules it needs from styles.css, and they must live here: dc2js regenerates
   next/landing.css from this template, so rules appended to the generated file are lost. */
.fx-mark{position:absolute;line-height:0;font-size:var(--s);color:var(--c);opacity:0;will-change:transform}
.fx-mark svg{display:block;width:1em;height:1em}
.fx-mark.back{filter:blur(1.2px)}
.ap-sticky{position:fixed;left:12px;right:12px;bottom:12px;z-index:70;display:none;align-items:center;justify-content:center;gap:8px;padding:15px 18px;border-radius:8px;font:600 16px "Hanken Grotesk",system-ui,sans-serif;color:#1b1610;text-decoration:none;background:linear-gradient(135deg,var(--acc2,#e07158),#f0943c);box-shadow:0 10px 30px rgba(0,0,0,.45);transform:translateY(150%);transition:transform .32s cubic-bezier(.3,1.2,.4,1)}
@media (max-width:759px){.ap-sticky{display:flex}}
.ap-sticky.is-on{transform:translateY(0)}
