/* Theme motion: compositor-friendly loops plus short, user-triggered effects. */
.theme-loader{position:fixed;inset:0;z-index:90;background:var(--paper);color:var(--ink);display:grid;place-items:center;padding:24px;transition:opacity .45s var(--ease),transform .45s var(--ease);isolation:isolate}
html:not(.loading-active) .theme-loader:not(.loader-leaving){display:none}
html.loading-active body{overflow:hidden}
html.loading-active .hero-copy>*,html.loading-active .hero-art{animation-play-state:paused!important}
html.loading-active [data-loop-scene] *{animation-play-state:paused!important}
.theme-loader.loader-leaving{opacity:0;transform:translateY(-14px);pointer-events:none}
.theme-loader-card{width:min(420px,100%);text-align:center;position:relative}
.loader-kicker{font-size:10px;letter-spacing:.23em;color:var(--accent);margin-bottom:12px}
.loader-scene{width:290px;height:230px;margin:0 auto 22px;position:relative;display:grid;place-items:center}
.loader-scene>img{width:185px;height:166px;object-fit:contain;position:relative;z-index:2;animation:loader-float 3s ease-in-out infinite}
.theme-loader h2{font:italic 38px/1.2 var(--serif);margin-bottom:14px}
.loader-message{font-size:12px;line-height:1.8;color:var(--muted)}
.loader-meter{height:4px;width:100%;position:relative;background:var(--line);margin:23px 0 12px;overflow:visible;border-radius:4px}
.loader-meter>span{display:block;width:100%;height:100%;transform:scaleX(var(--loader-progress,0));transform-origin:left;background:var(--accent);border-radius:4px}
.loader-meta{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font:10px var(--mono)}
[data-loader-percent]{color:var(--accent);min-width:32px;text-align:right}
.loader-skip{font-size:11px;color:var(--muted);background:transparent;border-bottom:1px solid var(--line);min-height:44px;margin-top:24px;padding:8px 16px}
.loader-skip:hover{color:var(--accent)}
.loader-ring{position:absolute;left:18px;right:18px;top:25px;bottom:25px;border:1px solid #e8d28a70;border-radius:50%;transform:rotate(-28deg);animation:loader-orbit 12s linear infinite}
.loader-ring:after{content:'';position:absolute;top:24px;left:30px;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px #e8d28a80}
.loader-ring.ring-two{inset:38px 3px;animation-duration:17s;animation-direction:reverse;border-color:#7aa4c366}
.loader-ring.ring-three{inset:6px 56px;animation-duration:22s;opacity:.4}
.loader-spark{position:absolute;right:25px;bottom:22px;font-size:37px;color:var(--accent);animation:star-breathe 2s ease-in-out infinite}
.loader-paper{width:220px;padding:16px 16px 12px;background:#fffbf3;transform:rotate(-7deg);box-shadow:0 12px 36px #68492418;position:relative;animation:paper-rock 3.5s ease-in-out infinite}
.loader-paper:before{content:'';position:absolute;top:-11px;left:62px;width:75px;height:22px;background:#d2bd9190;transform:rotate(-6deg)}
.loader-paper img{width:160px;height:143px;object-fit:contain;margin:auto}
.loader-paper>span{font:italic 19px var(--serif);display:block;margin-top:14px;color:#79533d}
.loader-postmark{position:absolute;right:0;top:20px;width:75px;height:75px;border:3px double var(--accent);border-radius:50%;display:grid;place-content:center;transform:rotate(16deg);font:9px/1.8 var(--mono);color:var(--accent);animation:postmark-breathe 4s ease-in-out infinite}
.loader-autumn-leaf{position:absolute;left:10px;bottom:4px;font-size:42px;color:var(--accent);animation:leaf-sway 4s ease-in-out infinite}
.loader-warm .loader-meter{height:2px}
.loader-warm .loader-meter>span:after{content:'❧';position:absolute;right:-6px;top:-15px;font-size:23px;color:var(--accent)}
.loader-darkroom{border:1px solid var(--line);height:225px;overflow:hidden;background-image:radial-gradient(#245edb22 1px,transparent 1px);background-size:13px 13px}
.loader-darkroom>img{width:155px;height:139px}
.loader-aperture{position:absolute;inset:6px;display:grid;place-items:center;color:var(--blue)}
.loader-aperture svg{width:205px;height:205px;stroke-width:.6;animation:aperture-spin 7s linear infinite;opacity:.55}
.loader-camera-label{position:absolute;bottom:8px;font:8px var(--mono);letter-spacing:.15em;color:var(--blue)}
.loader-studio h2{font:700 38px/1 var(--display);color:var(--blue);letter-spacing:-.01em}
.loader-studio .loader-meter{height:7px;border-radius:0;background:repeating-linear-gradient(90deg,#14273718 0,#14273718 13px,transparent 13px,transparent 17px)}
.loader-studio .loader-meter>span{background:var(--blue);border-radius:0}
.loader-studio [data-loader-percent]{color:var(--blue)}
.scene-trigger{background:none;cursor:pointer;padding:0;color:var(--accent);white-space:nowrap;position:relative;overflow:hidden}
.scene-trigger:hover{color:var(--ink)}
.orbit{--orbit-angle:-32deg;animation:orbit-precess 24s ease-in-out infinite alternate}
.orbit.second{--orbit-angle:27deg;animation-duration:31s;animation-direction:alternate-reverse}
.orbit-runner{position:absolute;left:0;top:0;width:9px;height:9px;border-radius:50%;background:#f6d98d;box-shadow:0 0 11px #edd28b80;offset-path:ellipse(50% 50% at 50% 50%);offset-anchor:center;offset-rotate:0deg;animation:orbit-travel 18s linear infinite;offset-distance:0%}
.runner-two{width:5px;height:5px;background:#a6cbea;animation-delay:-9s;offset-distance:50%;box-shadow:0 0 12px #a6cbea90}
.runner-three{background:#b8d6ea;animation-duration:26s;animation-delay:-3s;offset-distance:12%}
.runner-four{width:5px;height:5px;animation-duration:26s;animation-delay:-16s;offset-distance:62%}
.orbit-photo{animation:photo-breathe 9s ease-in-out infinite}
.orbit-wish{background:none;padding:0;min-width:64px;min-height:76px;cursor:pointer;border:0;transition:scale .3s,color .3s;transform-origin:center}
.orbit-wish:hover{scale:1.15;color:#fff5c9}
.orbit-wish:focus-visible{outline-offset:10px;outline-color:var(--accent)}
.stellar-hero .orbit-symbol{animation:wish-glow 4s ease-in-out infinite}
.stellar-hero .orbit-symbol:hover{animation-play-state:paused}
.stellar-hero.is-celebrating .orbit-photo{box-shadow:0 0 0 1px #edda92,0 0 40px #ddc68822}
.fx-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:5;contain:layout paint}
.meteor-sky{position:fixed;inset:0;z-index:18;pointer-events:none;overflow:hidden;contain:strict}
.meteor-sky .meteor-ray{position:absolute;width:210px;height:2px;background:linear-gradient(90deg,transparent,#94caf988,#fff2bc);border-radius:50%;box-shadow:0 0 5px #d8e9ff44;filter:none;transform-origin:right center;animation:meteor-sky-pass 1.2s cubic-bezier(.16,.55,.5,1) both}
@keyframes meteor-sky-pass{0%{opacity:0;transform:translate3d(0,0,0) rotate(var(--meteor-angle))}10%{opacity:1}82%{opacity:1}100%{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) rotate(var(--meteor-angle))}}
.meteor-ray:after{content:'';position:absolute;right:-1px;top:-2px;width:6px;height:6px;background:#fff8dc;border-radius:50%}
.fx-particle{position:absolute;width:7px;height:7px;color:var(--accent);font-size:12px;line-height:1;animation:particle-bloom .95s var(--ease) both;transform-origin:center}
.fx-particle.spark{background:var(--accent);clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%)}
.fx-particle.leaf{width:22px;height:22px;color:#b2753e;animation-duration:1.8s}
.fx-particle svg{width:100%;height:100%;fill:currentColor;stroke:none}
.hero-art{translate:var(--scene-x,0px) var(--scene-y,0px);transition:translate .35s var(--ease)}
.warm-art .polaroid.primary{animation:paper-float 7s ease-in-out infinite}
.warm-art .polaroid.secondary{animation:paper-float 8.5s -3s ease-in-out infinite}
.warm-art .warm-stamp{animation:stamp-rock 9s ease-in-out infinite}
.warm-art .doodle{stroke-dasharray:175;stroke-dashoffset:0;animation:doodle-draw 9s ease-in-out infinite}
.leaf-weather{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1;contain:layout paint}
.weather-leaf{position:absolute;left:var(--leaf-x);top:-30px;width:var(--leaf-size,18px);height:var(--leaf-size,18px);color:var(--leaf-color,#b17741);opacity:0;animation:autumn-fall var(--leaf-time,18s) var(--leaf-delay,0s) linear infinite}
.weather-leaf svg{width:100%;height:100%;fill:currentColor;stroke:none}
.warm-hero.is-windy .polaroid.primary{animation:gust-paper .9s var(--ease)}
.warm-hero.is-windy .polaroid.secondary{animation:gust-paper 1.2s .08s var(--ease)}
.season-card{transition:translate .35s var(--ease),border-color .35s}
.season-card:hover{translate:0 -4px;border-color:#a66d443f}
.postcard.stamped .postmark{animation:stamp-land .65s var(--ease)}
.studio-art .viewfinder>img{animation:camera-breathe 12s ease-in-out infinite}
.viewfinder:after{content:'';position:absolute;left:11px;right:11px;top:11px;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,#fff9,transparent);animation:camera-scan 9s linear infinite;opacity:0;z-index:2}
.finder-cross{transition:left .18s,top .18s,width .35s,height .35s,border-color .35s}
.camera-shutter{position:absolute;inset:0;pointer-events:none;z-index:4;overflow:hidden}
.camera-shutter:before,.camera-shutter:after{content:'';position:absolute;left:0;right:0;height:51%;background:#102638;transform:translateY(-102%);top:0}
.camera-shutter:after{top:auto;bottom:0;transform:translateY(102%)}
.is-shuttering .camera-shutter:before{animation:shutter-top .52s var(--ease)}
.is-shuttering .camera-shutter:after{animation:shutter-bottom .52s var(--ease)}
.viewfinder.is-focused .focus-corners{border-color:#c8f1a04d}
.studio-ticker{display:block;overflow:hidden;padding:21px 0}
.ticker-track{display:flex;width:max-content;animation:film-marquee 38s linear infinite}
.ticker-group{display:flex;min-width:100vw;justify-content:space-around;align-items:center;gap:50px;padding:0 35px;flex-shrink:0}
.studio-ticker:hover .ticker-track{animation-play-state:paused}
.pill{position:relative;overflow:hidden;isolation:isolate;translate:var(--mag-x,0px) var(--mag-y,0px);transition:translate .2s var(--ease),transform .25s var(--ease),background .25s}
.pill:before{content:'';position:absolute;inset:0;width:45%;background:linear-gradient(110deg,transparent,#ffffff26,transparent);transform:translateX(-230%) skewX(-15deg);pointer-events:none;z-index:-1}
.pill:hover:before{animation:button-glint .7s var(--ease)}
.contact,.filter,.save-card,.scene-trigger,.loader-skip{position:relative;overflow:hidden}
.press-ripple{position:absolute;width:14px;height:14px;border:1px solid currentColor;background:currentColor;border-radius:50%;pointer-events:none;opacity:.1;animation:press-ripple .65s var(--ease) both}
.avatar{transition:rotate .4s var(--ease),scale .4s var(--ease)}
.person-heading:hover .avatar{rotate:-5deg;scale:1.04}
.photo-card{animation-delay:var(--photo-delay,0ms)}
.photo-open img{translate:var(--photo-x,0px) var(--photo-y,0px);transition:translate .4s var(--ease),transform .8s var(--ease),filter .4s}
.photo-open:hover img{transform:scale(1.055)}
.photo-card figcaption{transition:color .25s,translate .25s}
.photo-card:hover figcaption{translate:2px 0;color:var(--accent)}
.world-link .world-title .arrow{display:inline-block;transition:translate .3s,rotate .3s}
.world-link:hover .world-title .arrow{translate:3px -3px;rotate:6deg}
.lightbox-photo-ready{animation:lightbox-arrive .35s var(--ease)}
.ambient-cursor{position:fixed;left:0;top:0;width:27px;height:27px;border:1px solid #e4d49c70;border-radius:50%;pointer-events:none;z-index:80;opacity:0;transition:opacity .25s,scale .25s;translate:-50% -50%;will-change:transform}
.ambient-cursor.is-visible{opacity:.7}
.ambient-cursor.is-over-control{scale:1.55;opacity:.45}
.warm-page .ambient-cursor{width:18px;height:18px;border-color:#a8664e66;border-radius:3px 14px 3px 14px;rotate:-25deg}
.studio-page .ambient-cursor{width:22px;height:22px;border-color:#255ddc66;border-radius:0}
.studio-page .ambient-cursor:before,.studio-page .ambient-cursor:after{content:'';position:absolute;background:#255ddc66;left:50%;top:50%;translate:-50% -50%}
.studio-page .ambient-cursor:before{width:8px;height:1px}.studio-page .ambient-cursor:after{height:8px;width:1px}
[data-loop-scene].scene-paused *,[data-loop-scene].scene-paused *:before,[data-loop-scene].scene-paused *:after{animation-play-state:paused!important}
html[data-fx-suspended=true] *,html[data-fx-suspended=true] *:before,html[data-fx-suspended=true] *:after{animation-play-state:paused!important}
.motion-off .ambient-cursor,.motion-off .leaf-weather,.motion-off .fx-layer{display:none}
.motion-off .hero-art,.motion-off .pill,.motion-off .photo-open img{translate:0 0}
.motion-off .ticker-track{transform:translateX(0)}
.motion-off .loader-ring,.motion-off .loader-aperture svg{transform:none}
@keyframes loader-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(2deg)}}
@keyframes loader-orbit{from{transform:rotate(-28deg)}to{transform:rotate(332deg)}}
@keyframes paper-rock{0%,100%{transform:rotate(-7deg) translateY(0)}50%{transform:rotate(-3deg) translateY(-6px)}}
@keyframes aperture-spin{to{transform:rotate(360deg)}}
@keyframes postmark-breathe{0%,100%{scale:1}50%{scale:1.055}}
@keyframes orbit-precess{from{transform:rotate(calc(var(--orbit-angle) - 5deg))}to{transform:rotate(calc(var(--orbit-angle) + 5deg))}}
@keyframes orbit-travel{from{offset-distance:0%}to{offset-distance:100%}}
@keyframes photo-breathe{0%,100%{translate:0 0}50%{translate:0 -5px}}
@keyframes wish-glow{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 12px #eacf8833)}}
@keyframes meteor-pass{0%{transform:translate(-70px,-35px) rotate(24deg);opacity:0}15%{opacity:1}80%{opacity:.8}100%{transform:translate(var(--meteor-x,360px),var(--meteor-y,160px)) rotate(24deg);opacity:0}}
@keyframes particle-bloom{0%{transform:translate(0,0) scale(.3) rotate(0deg);opacity:0}15%{opacity:.8}100%{transform:translate(var(--burst-x),var(--burst-y)) scale(.8) rotate(var(--burst-turn));opacity:0}}
@keyframes paper-float{0%,100%{translate:0 0}50%{translate:0 -8px}}
@keyframes stamp-rock{0%,100%{rotate:-2deg}50%{rotate:3deg}}
@keyframes doodle-draw{0%,10%,100%{stroke-dashoffset:175;opacity:.2}35%,80%{stroke-dashoffset:0;opacity:1}}
@keyframes autumn-fall{0%{transform:translate3d(0,-20px,0) rotate(-20deg);opacity:0}12%,75%{opacity:.35}100%{transform:translate3d(var(--leaf-drift),var(--weather-height,900px),0) rotate(var(--leaf-turn));opacity:0}}
@keyframes gust-paper{0%,100%{translate:0 0;rotate:0deg}30%{translate:5px -10px;rotate:3deg}60%{translate:-3px -3px;rotate:-1deg}}
@keyframes stamp-land{0%{transform:scale(1.8) rotate(-28deg);opacity:0}70%{transform:scale(.93) rotate(-18deg);opacity:.9}100%{transform:scale(1) rotate(-18deg);opacity:.75}}
@keyframes camera-breathe{0%,100%{scale:1}50%{scale:1.025}}
@keyframes camera-scan{0%,55%{translate:0 0;opacity:0}60%{opacity:.7}85%{opacity:.2}100%{translate:0 410px;opacity:0}}
@keyframes shutter-top{0%,100%{transform:translateY(-102%)}32%,44%{transform:translateY(0)}}
@keyframes shutter-bottom{0%,100%{transform:translateY(102%)}32%,44%{transform:translateY(0)}}
@keyframes film-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes button-glint{to{transform:translateX(330%) skewX(-15deg)}}
@keyframes press-ripple{from{transform:translate(-50%,-50%) scale(.5);opacity:.13}to{transform:translate(-50%,-50%) scale(14);opacity:0}}
@keyframes lightbox-arrive{from{opacity:.35;scale:.99}to{opacity:1;scale:1}}
@supports not (offset-path:ellipse(50% 50% at 50% 50%)){.orbit-runner{left:48%;top:0;animation:star-breathe 3s ease-in-out infinite}.runner-two{left:5%;top:45%}.runner-three{left:48%;top:100%}.runner-four{left:93%;top:45%}}
@media(max-width:760px){.loader-scene{width:240px;height:205px}.loader-scene>img{width:155px;height:139px}.theme-loader-card{max-width:330px}.theme-loader h2{font-size:33px}.loader-message{font-size:11px}.loader-kicker{font-size:9px}.loader-meta{font-size:9px}.loader-paper{width:190px;padding:12px}.loader-paper img{width:140px;height:126px}.loader-paper>span{font-size:17px}.loader-postmark{right:-3px;top:9px;width:65px;height:65px;font-size:8px}.loader-darkroom{height:200px}.loader-darkroom>img{width:140px;height:126px}.loader-aperture svg{width:175px;height:175px}.loader-studio h2{font-size:33px}.scene-trigger{font-size:11px}.hero-actions{column-gap:16px;row-gap:8px}.orbit-wish{min-width:44px;min-height:57px}.meteor-ray{width:110px}.orbit-runner{width:6px;height:6px;box-shadow:none}.runner-two,.runner-four{width:4px;height:4px}.ambient-cursor{display:none}.ticker-group{gap:28px;padding:0 24px}.ticker-track{animation-duration:30s}.studio-ticker{padding:18px 0}.studio-art .viewfinder>img{animation-duration:16s}.camera-scan{animation-duration:12s}}
@media(pointer:coarse){.ambient-cursor{display:none}.hero-art,.pill,.photo-open img{translate:0 0!important}.photo-open:after{opacity:.8;transform:none;width:30px;height:30px;font-size:15px}}
@media(prefers-reduced-motion:reduce){.ambient-cursor,.leaf-weather,.fx-layer{display:none}.theme-loader{transition:none}.hero-art,.pill,.photo-open img{translate:0 0!important}.ticker-track{animation:none}.loader-ring,.loader-aperture svg{animation:none}}
