/* Motion enhances the existing geometry; interactive orbit nodes stay still. */
#hero-particles { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; opacity:.9; z-index:1; }
.experience-controls { position:fixed; z-index:20; right:20px; bottom:18px; display:flex; gap:2px; padding:4px; border:1px solid #52624c; border-radius:30px; background:#101810f2; box-shadow:0 8px 28px #0004; }
.experience-controls button { display:flex; align-items:center; gap:8px; border:0; background:transparent; padding:10px 12px; min-height:36px; border-radius:24px; font:10px var(--mono); color:var(--muted); }
.experience-controls button:hover { background:#c2d6b314; color:var(--text); }
.experience-controls button[aria-pressed=true] { color:var(--accent); }
.experience-controls button:disabled { cursor:default; opacity:.65; }
.sound-bars { display:flex; align-items:center; gap:2px; width:15px; height:14px; }
.sound-bars i { display:block; width:2px; height:3px; background:currentColor; }
.sound-bars i:nth-child(2) { height:9px; }.sound-bars i:nth-child(3) { height:6px; }.sound-bars i:nth-child(4) { height:12px; }
.motion-on #sound-toggle[aria-pressed=true] .sound-bars i { animation:equalize .9s ease-in-out infinite alternate; }
.sound-bars i:nth-child(2) { animation-delay:-.4s!important; }.sound-bars i:nth-child(3) { animation-delay:-.7s!important; }
.motion-icon { font-size:15px; }
.hero-backdrop img { transform:scale(1.035); }
.motion-on .hero.scene-visible .hero-backdrop img { animation:chamber-breathe 12s ease-in-out infinite alternate; }
.orbit-ring::after { content:''; position:absolute; width:8px; height:8px; left:50%; top:-4px; border-radius:50%; background:var(--accent); box-shadow:0 0 18px #c2d6b3aa; }
.orbit-ring-middle::after { width:6px; height:6px; opacity:.85; }.orbit-ring-inner::after { opacity:.65; }
.motion-on .orbit-map.scene-visible .orbit-ring { animation:orbit-trace 14s linear infinite; }
.motion-on .orbit-map.scene-visible .orbit-ring-middle { animation-duration:11s; animation-direction:reverse; }
.motion-on .orbit-map.scene-visible .orbit-ring-inner { animation-duration:18s; }
.motion-on .orbit-map.scene-visible .orbit-center { animation:core-breathe 3s ease-in-out infinite; }
.orbit-enhanced.is-preview-open .orbit-center { border-color:var(--accent); }
.node-marker { transition:border-color .22s, background .22s, box-shadow .22s; }
.orbit-node[aria-expanded=true] .node-marker { box-shadow:0 0 0 7px #c2d6b30a, 0 0 24px #c2d6b322; }
.motion-on .orbit-enhanced.is-preview-open .universe-preview .project-media { animation:preview-arrive .32s cubic-bezier(.2,.7,.2,1); }
.motion-on .orbit-enhanced.is-preview-open .universe-preview .project-copy { animation:preview-arrive .4s cubic-bezier(.2,.7,.2,1); }
.button span,.text-link span,.nav-contact span { display:inline-block; transition:transform .25s; }
.motion-on .button:hover span,.motion-on .text-link:hover span,.motion-on .nav-contact:hover span { transform:translate(3px,-3px); }
.principle { transition:border-color .3s; }.principle:hover { border-color:#809575; }
.page-hidden *, .page-hidden *::before, .page-hidden *::after { animation-play-state:paused!important; }
html:not(.motion-on) *,html:not(.motion-on) *::before,html:not(.motion-on) *::after { animation:none!important; transition:none!important; }
html:not(.motion-on) { scroll-behavior:auto; }
@keyframes chamber-breathe { from { transform:scale(1.035) translate(-.4%,0); } to { transform:scale(1.15) translate(1.3%,-1.6%); } }
@keyframes orbit-trace { from { transform:translate(-50%,-50%) rotate(0); } to { transform:translate(-50%,-50%) rotate(360deg); } }
@keyframes core-breathe { 0%,100% { box-shadow:0 0 0 12px #b5cba005,0 0 45px #b5cba009; } 50% { box-shadow:0 0 0 18px #b5cba009,0 0 65px #b5cba016; } }
@keyframes preview-arrive { from { opacity:0; translate:0 20px; } to { opacity:1; translate:0 0; } }
@keyframes equalize { to { transform:scaleY(.35); } }
@media(max-width:760px) { .experience-controls { right:12px; bottom:12px; }.experience-controls button { padding:10px; }.site-footer { padding-bottom:82px; } }
@media(prefers-reduced-motion:reduce) { .hero-backdrop img { transform:none; } }

/* More visible motion: light trails, a moving type band, and selection ripples. */
.reading-progress { position:fixed; top:0; left:0; width:100%; height:3px; z-index:30; background:var(--accent); transform:scaleX(0); transform-origin:left; pointer-events:none; box-shadow:0 0 12px #c2d6b370; }
.signal-band { overflow:hidden; border-bottom:1px solid var(--line); background:#131b14; padding-block:22px; }
.signal-track { display:flex; width:max-content; }
.signal-group { display:flex; align-items:center; gap:48px; padding-right:48px; font-size:clamp(20px,3vw,38px); letter-spacing:-.035em; color:#b6c8aa; white-space:nowrap; }
.signal-group b { font-size:24px; font-weight:400; color:#78916b; }
.motion-on .signal-track { animation:signal-flow 24s linear infinite; }
.orbit-ring::before { content:''; position:absolute; inset:-1px; border-radius:50%; border:2px solid transparent; border-top-color:#c2d6b350; transform:rotate(-24deg); }
.orbit-center::after { content:''; position:absolute; inset:-10px; border:1px solid #c2d6b350; border-radius:50%; opacity:0; pointer-events:none; }
.motion-on .is-preview-open .orbit-center::after { animation:selection-wave 1.6s ease-out infinite; }
.motion-on .contact.scene-visible .contact-orbits i { animation:contact-wave 5s ease-in-out infinite; }
.motion-on .contact.scene-visible .contact-orbits i:nth-child(2) { animation-delay:-1.6s; }
.motion-on .contact.scene-visible .contact-orbits i:nth-child(3) { animation-delay:-3.2s; }
.section-label { position:relative; padding-bottom:14px; }
.section-label::after { content:''; position:absolute; bottom:0; left:0; right:0; height:1px; background:linear-gradient(90deg,#a1b78f,var(--line)); transform-origin:left; }
.motion-on .section-label.is-revealed::after { animation:rule-draw 1.2s cubic-bezier(.2,.7,.2,1) both; }
@keyframes signal-flow { to { transform:translateX(-50%); } }
@keyframes selection-wave { 0% { transform:scale(.96); opacity:.8; } 100% { transform:scale(1.45); opacity:0; } }
@keyframes contact-wave { 0%,100% { scale:1; opacity:.45; } 50% { scale:1.1; opacity:1; } }
@keyframes rule-draw { from { transform:scaleX(0); } to { transform:scaleX(1); } }
@media(max-width:760px) { .signal-band { padding-block:18px; }.signal-group { gap:28px; padding-right:28px; } }
/* Keep rotated decorative ring bounds inside the orbit at phone widths. */
.orbit-map { overflow:clip; }
