/* V2 visual polish: responsive, OLED-safe, high-density display tuning */
:root{--aurora-cyan:#66e7f4;--aurora-violet:#a88bff;--aurora-mint:#73e3b4;--aurora-amber:#ffc27a}
body{background-color:#05070b}
@media (min-width:1600px){.hero-visual{transform:scale(1.04)}.project-grid{gap:22px}.project-card{padding:34px}.about-copy>p:not(.eyebrow){font-size:18px}}
@media (min-width:2200px){body{font-size:17px}.hero{min-height:820px}.hero-visual{transform:scale(1.08)}.terminal-card{max-width:560px}.ticker-track{gap:70px}}
@media (max-height:700px) and (orientation:landscape){.hero{grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);align-items:center}.hero h1{font-size:clamp(40px,7vw,64px)}.hero-visual{min-height:300px}.terminal-card{max-height:72svh}.terminal-body{max-height:44svh}}
@media (max-width:360px){.section-pad{padding-left:14px;padding-right:14px}.status{max-width:142px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero h1{font-size:42px}.hero-visual{min-height:260px}.terminal-card{border-radius:18px}.terminal-body{padding:16px;font-size:11px}.project-card h3{font-size:31px}.project-meta{font-size:8px}.tags{gap:5px}.tags span{font-size:9px}}
@media (hover:none){.project-card:hover{transform:none;border-color:var(--line);background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.014))}.btn:hover{transform:none}.project-link:active,.btn:active{opacity:.8}}
:where(a,button):focus-visible{outline:2px solid var(--aurora-cyan);outline-offset:4px;border-radius:6px}
.orb-a{background:rgba(168,139,255,.10)}.orb-b{background:rgba(102,231,244,.05)}.hero h1 em{text-shadow:0 0 28px rgba(102,231,244,.12)}
.project-card,.fact,.btn-ghost{background-color:rgba(12,17,25,.82)}
.hero h1,.section-heading h2,.about h2,.contact h2,.project-card h3,.brand{font-synthesis:none;-webkit-font-smoothing:antialiased}
@media print{body{background:#fff;color:#111}.topbar,.hero-visual,.ticker,.noise,.orb,.hero-actions,.contact-actions{display:none}.section-pad{padding:24px;max-width:none}.project-card,.fact{border:1px solid #999;background:#fff;color:#111;break-inside:avoid}.project-card p:not(.project-kicker),.about-copy>p:not(.eyebrow),.contact p:not(.eyebrow){color:#333}}

/* Motion layer: cinematic, restrained and scroll-aware. */
html{scroll-padding-top:84px}
.scroll-progress{position:fixed;left:0;top:0;width:100%;height:2px;background:var(--aurora-cyan);transform-origin:left center;transform:scaleX(0);z-index:100;box-shadow:0 0 14px rgba(102,231,244,.35);pointer-events:none}
.topbar nav a{position:relative;padding:4px 0;transition:color .25s ease,transform .25s ease}.topbar nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:1px;background:currentColor;transition:right .3s cubic-bezier(.22,1,.36,1)}.topbar nav a:hover,.topbar nav a.active{color:var(--aurora-cyan)}.topbar nav a:hover::after,.topbar nav a.active::after{right:0}
.reveal{transition:opacity .85s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.22,1,.36,1);transition-delay:var(--stagger,0ms)}
.project-grid .project-card,.facts .fact,.hero-actions .btn,.contact-actions .btn{opacity:0;transform:translateY(18px);transition:opacity .75s cubic-bezier(.22,1,.36,1),transform .75s cubic-bezier(.22,1,.36,1),border-color .35s ease,background .35s ease;transition-delay:var(--stagger,0ms)}
.project-grid .project-card.visible,.facts .fact.visible,.hero.visible .hero-actions .btn,.contact.visible .contact-actions .btn{opacity:1;transform:translateY(0)}
.project-card{--mx:0px;--my:0px;transform:translate3d(var(--mx),var(--my),0);will-change:transform}.project-card:hover{transform:translate3d(var(--mx),calc(var(--my) - 6px),0) scale(1.008);box-shadow:0 24px 65px rgba(0,0,0,.24)}.project-card::after{content:"";position:absolute;inset:-1px;background:radial-gradient(220px circle at calc(50% + var(--mx) * 8) calc(50% + var(--my) * 8),rgba(103,232,249,.11),transparent 65%);opacity:0;transition:opacity .35s ease;pointer-events:none}.project-card:hover::after{opacity:1}
.terminal-card{transform:rotate(-2deg) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s ease;will-change:transform}.terminal-card:hover{box-shadow:0 34px 100px rgba(0,0,0,.5)}.orb{transform:translate3d(0,var(--scroll-drift,0px),0)}
.btn-primary{will-change:transform;position:relative}.btn-primary::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(102,231,244,0);transition:box-shadow .35s ease;pointer-events:none}.btn-primary:hover::after{box-shadow:0 0 28px 2px rgba(102,231,244,.10)}
.section-heading h2,.about h2,.contact h2{text-wrap:balance}.ticker-track:hover{animation-play-state:paused}

/* Native wheel/touch scrolling with gentle section snapping. */
html{scroll-snap-type:y proximity}
body{overflow-x:hidden;overflow-y:auto}
main#top>section{scroll-snap-align:start;scroll-snap-stop:normal}
main#top>.ticker{scroll-snap-align:none}
/* script moves the ticker into the hero, making #top one continuous view. */
.hero>.ticker{grid-column:1/-1;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);align-self:end}
#work{min-height:0;height:auto;overflow:visible}
#work .project-grid{min-height:0}

@media (max-width:880px){.hero>.ticker{margin-top:4px}.hero{padding-bottom:0}.hero>.ticker{position:relative}}
@media (pointer:coarse){.project-card{transform:none!important}.project-card:hover{box-shadow:none}.btn-primary:hover{transform:none}.ticker-track:hover{animation-play-state:running}}
@media (prefers-reduced-motion:reduce){.scroll-progress{display:none}.project-grid .project-card,.facts .fact,.hero-actions .btn,.contact-actions .btn{opacity:1;transform:none;transition:none}.terminal-card,.project-card,.orb{transform:none!important}.topbar nav a::after{transition:none}.btn-primary::after,.project-card::after{display:none}html{scroll-behavior:auto;scroll-snap-type:none}}
