/* Orbital refinement · native scrolling, deliberate movement, no dependencies. */
.hero { --hero-shift:0px; --hero-fade:1; --scene-scale:1; --scene-shift:0px; }
.hero-copy { translate:0 var(--hero-shift); opacity:var(--hero-fade); }
.hero h1>span { animation-name:title-emerge; animation-duration:1.3s; }
.hero h1>span:nth-child(2) { animation-delay:.16s; }
.hero-intro { animation-duration:1.25s; animation-delay:.36s; }
.hero-actions { animation-duration:1.25s; animation-delay:.46s; }
.hero-eyebrow { animation:enter-up 1s .12s var(--ease) both; }
.hero-footnote { animation:enter-up 1.2s .6s var(--ease) both; }
.hero-visual { animation:scene-emerge 1.9s .15s var(--ease) both; }
.visual-grid { opacity:.2; background-size:38px 38px; }
.visual-glow { inset:17%; background:radial-gradient(ellipse,#c2e98b33,transparent 68%); filter:blur(24px); }
.sculpture { transform:translateY(var(--scene-shift)) scale(var(--scene-scale)); transition:none; }
.atom-canvas,.atom-fallback { position:absolute; inset:0; width:100%; height:100%; display:block; }
.atom-canvas { opacity:0; transition:opacity .8s; }
.canvas-ready .atom-canvas { opacity:1; }
.canvas-ready .atom-fallback { display:none; }
.atom-caption { position:absolute; right:1%; bottom:32px; display:flex; align-items:flex-start; gap:9px; color:var(--muted); font:7px monospace; letter-spacing:.75px; animation:enter-up 1.3s .8s var(--ease) both; }
.atom-caption small { display:block; margin-top:6px; font:9px "PingFang SC",sans-serif; letter-spacing:1px; opacity:.7; }
.atom-caption-line { width:27px; height:1px; background:var(--muted); opacity:.5; margin-top:4px; }
.orbit-label { bottom:28px; left:18px; padding:10px 13px; font-size:9px; background:transparent; box-shadow:none; backdrop-filter:none; border-color:transparent; }
.coordinate-top { top:22px; left:31px; font-size:7px; letter-spacing:1.3px; }
.coordinate-bottom { display:none; }
.cross-one { right:18px; top:79px; font-size:14px; opacity:.55; }
.cross-two { left:26px; bottom:93px; font-size:14px; opacity:.55; }
.brand-mark { display:inline-block; transition:transform .9s var(--ease); }
.brand:hover .brand-mark { transform:rotate(90deg); }
.site-header { transition:background .4s,box-shadow .4s,border-color .4s; }
.site-header.is-scrolled { box-shadow:0 5px 25px #18251b05; }
.primary-button { position:relative; overflow:hidden; isolation:isolate; }
.primary-button:before { content:""; position:absolute; width:65%; height:170%; left:-85%; top:-35%; background:linear-gradient(90deg,transparent,#ffffff1f,transparent); rotate:20deg; z-index:-1; transition:left .8s var(--ease); }
.primary-button:hover:before { left:140%; }
.primary-button>span { transition:transform .4s var(--ease); }
.primary-button:hover>span { transform:translate(3px,-3px); }
.collection { border-top:1px solid transparent; }
.collection-heading h2 { overflow:hidden; }
.collection-heading h2>span { display:inline-block; transition:translate 1.1s .12s var(--ease),opacity 1.1s .12s; }
.collection-heading.is-awaiting h2>span { translate:0 18px; opacity:0; }
.reveal { transition:opacity 1s var(--ease),transform 1s var(--ease),filter 1s var(--ease); }
.reveal.is-awaiting { opacity:0; transform:translate3d(0,34px,0); filter:blur(3px); }
.reveal.is-visible { opacity:1; transform:none; filter:none; }
.project.reveal.is-awaiting { transform:translate3d(0,38px,0) scale(.985); filter:blur(2px); }
.project-art>svg { translate:0 var(--art-drift,0px); }
.project-art:after { content:""; pointer-events:none; position:absolute; inset:0; background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,30%),#ffffff22,transparent 65%); opacity:0; transition:opacity .6s; z-index:2; }
.project a:hover .project-art:after { opacity:1; }
.project-copy { transition:translate .6s var(--ease); }
.project a:hover .project-copy { translate:0 -1px; }
.project a:hover .project-open svg { transform:rotate(-45deg); }
.contact-orb { position:relative; }
.contact-orb:before,.contact-orb:after { content:""; position:absolute; inset:-10px; border:1px solid currentColor; border-radius:50%; opacity:.09; pointer-events:none; transition:inset .8s var(--ease),opacity .8s; }
.contact-orb:after { inset:-20px; opacity:.04; }
.contact-orb:hover:before { inset:-16px; opacity:.15; }
.contact-orb:hover:after { inset:-32px; opacity:.08; }
.contact-orb .orb-arrow { transition:transform .6s var(--ease); }
.contact-orb:hover .orb-arrow { transform:translate(4px,-4px); }
.visit-section { position:relative; overflow:hidden; }
.visit-section:before { content:""; position:absolute; width:460px; height:460px; border:1px solid #a9c18b22; border-radius:50%; right:-220px; top:-220px; pointer-events:none; }
.footer-wordmark.reveal.is-awaiting { transform:translateY(24px); filter:none; }
.footer-ticker { padding:15px 0; border-top:1px solid var(--line); background:var(--bg); color:var(--muted); }
.footer-ticker .ticker-track { gap:0; animation:marquee 48s linear infinite; font-size:11px; letter-spacing:1.6px; animation-play-state:paused; }
.footer-ticker.is-in-view .ticker-track { animation-play-state:running; }
.ticker-group { display:flex; align-items:center; gap:34px; padding-right:34px; }
.ticker-group>span { color:#88a966; font-size:17px; }
[data-theme=dark] .footer-ticker { background:var(--bg); color:var(--muted); }
[data-theme=dark] .visual-glow { background:radial-gradient(ellipse,#8fb66b22,transparent 68%); }
@keyframes title-emerge { from { opacity:0; transform:translateY(34px); filter:blur(7px); } to { opacity:1; transform:none; filter:blur(0); } }
@keyframes scene-emerge { from { opacity:0; transform:translateY(15px) scale(.94); filter:blur(8px); } to { opacity:1; transform:none; filter:blur(0); } }
[data-motion=paused] .hero-copy { translate:none; opacity:1; }
[data-motion=paused] .hero-eyebrow,[data-motion=paused] .hero-footnote,[data-motion=paused] .atom-caption { animation:none; opacity:1; transform:none; }
[data-motion=paused] .hero h1>span,[data-motion=paused] .hero-visual,[data-motion=paused] .reveal { filter:none; }
[data-motion=paused] .reveal.is-awaiting,[data-motion=paused] .collection-heading h2>span { opacity:1; transform:none; translate:none; }
[data-motion=paused] .project-art>svg,[data-motion=paused] .magnetic { translate:none!important; }
@media(max-width:800px) { .atom-caption{font-size:5.5px;right:0;bottom:12px;gap:5px}.atom-caption small{font-size:8px}.atom-caption-line{width:15px}.orbit-label{font-size:8px;left:4px;bottom:10px;padding:8px 0;gap:5px}.orbit-label>span{margin-left:3px}.coordinate-top{top:10px;font-size:6px;left:20px}.cross-one{top:42px}.cross-two{left:15px;bottom:64px} }
@media(max-width:600px) { .hero-visual{height:355px;margin-top:6px}.coordinate-top{top:22px;font-size:6px;left:8px}.atom-caption{right:0;bottom:20px;font-size:6px}.atom-caption small{font-size:8px}.orbit-label{left:0;bottom:19px;font-size:8px}.cross-one{top:40px;right:4px}.cross-two{bottom:63px;left:6px}.hero-copy{translate:none;opacity:1}.hero-visual{animation-duration:1.4s}.reveal.is-awaiting{transform:translate3d(0,22px,0);filter:none}.project.reveal.is-awaiting{transform:translate3d(0,25px,0);filter:none}.footer-ticker{padding:13px 0}.footer-ticker .ticker-track{font-size:9px}.ticker-group{gap:25px;padding-right:25px}.ticker-group>span{font-size:14px} }
@media(prefers-reduced-motion:reduce) { .hero-copy{translate:none;opacity:1}.hero-visual,.hero h1>span,.reveal{filter:none}.hero-eyebrow,.hero-footnote,.atom-caption{opacity:1;transform:none}.reveal.is-awaiting,.collection-heading.is-awaiting h2>span{opacity:1;transform:none;translate:none}.project-art>svg,.magnetic{translate:none!important} }
.project:not(.is-in-view) .bubble,.project:not(.is-in-view) .typing i,.project:not(.is-in-view) .news-sun { animation-play-state:paused; }
.page-hidden *, .page-hidden *:before, .page-hidden *:after { animation-play-state:paused!important; }
.entrance-complete .hero h1>span,.entrance-complete .hero-intro,.entrance-complete .hero-actions,.entrance-complete .hero-eyebrow,.entrance-complete .hero-footnote,.entrance-complete .hero-visual,.entrance-complete .atom-caption { animation:none; opacity:1; transform:none; filter:none; }
[data-motion=paused] .project.reveal.is-awaiting { opacity:1; transform:none; filter:none; translate:none; }
@media(prefers-reduced-motion:reduce) { .project.reveal.is-awaiting { opacity:1; transform:none; filter:none; translate:none; } }
