/* Scroll choreography: native scrolling, procedural forms, no image collage. */
.reality-pin,.reality-copy{display:contents}.reality-art,.reality-console,.reality-kicker,.hero-sculpture{display:none}
.dark .space-scene,.dark .hero::after{display:none}
.dark .hero-sculpture{display:block;position:absolute;right:1%;top:80px;width:clamp(240px,35vw,500px);height:430px;pointer-events:none;z-index:1;opacity:.83}
.hero-sculpture canvas,.reality-art canvas{width:100%;height:100%;display:block}
.dark #reality-lab{height:185svh;max-width:none;padding:0;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 77% 50%,#8ab94312,transparent 62%),#080b10;position:relative;isolation:isolate}
.dark .reality-pin{display:block;position:sticky;top:0;height:100svh;min-height:620px;max-height:1100px;overflow:hidden;padding:90px 5%}
.dark .reality-copy{display:flex;position:relative;z-index:2;max-width:42%;height:100%;flex-direction:column;justify-content:center;pointer-events:none}
.dark .reality-kicker{display:block;font:9px/1.5 monospace;letter-spacing:2px;color:#d6ff71;margin-bottom:28px}
.dark #reality-lab h2{font-size:clamp(52px,7vw,108px);line-height:.94;letter-spacing:-.075em;margin:0 0 34px;transform:translateX(calc(var(--lab-progress,0)*-12px))}
.dark #reality-lab p{font-size:clamp(15px,1.6vw,21px);max-width:400px;line-height:1.55;margin:0;color:#aeb6af}
.dark .reality-art{display:block;position:absolute;inset:2% -4% 6% 35%;z-index:1;cursor:crosshair}
.dark .reality-console{display:flex;position:absolute;bottom:32px;left:5%;right:5%;z-index:3;align-items:center;gap:24px;font:9px/1.5 monospace;letter-spacing:1px;color:#aeb6af}
.reality-state{min-width:125px;color:#d6ff71}.reality-track{width:130px;height:2px;background:#d6ff7122;overflow:hidden}.reality-track i{display:block;width:100%;height:100%;background:#d6ff71;transform-origin:left;transform:scaleX(var(--lab-progress,0))}.reality-hint{margin-right:auto}.reality-console button{border:1px solid #d6ff713f;padding:11px 13px;border-radius:3px;background:#080b10b3;color:#d6ff71;font:9px monospace;letter-spacing:1px;white-space:nowrap}.reality-console button:hover,.reality-console button:focus-visible{background:#d6ff71;color:#080b10}
.reality-fallback{position:absolute;inset:20% 15%;border-radius:50%;border:1px solid #d6ff7133;background:radial-gradient(circle at 32% 30%,#c4d3ba,#526050 9%,#101711 23%,#b4d08d 25%,#121a13 34%,#273a22 53%,#090d0a 67%);transform:rotate(-18deg);box-shadow:0 0 90px #b9ff5912}.webgl-ready .reality-fallback{display:none}
.dark .project .visual{transition:transform .6s cubic-bezier(.2,.65,.2,1),box-shadow .4s;transform-origin:center;transform:perspective(1200px) rotateX(var(--reveal-tilt,0deg)) translateY(var(--reveal-y,0px))}.dark .project:hover .visual{transform:perspective(1200px) rotateX(0deg) translateY(-5px)}
@media(max-width:850px){.dark .hero-sculpture{width:250px;height:270px;top:60px;right:-20px;opacity:.48}.dark .reality-pin{padding:65px 6%;min-height:680px}.dark .reality-copy{max-width:100%;height:auto;justify-content:start;pointer-events:none}.dark #reality-lab h2{font-size:clamp(48px,8vw,70px);margin-bottom:20px;max-width:70%}.dark #reality-lab p{max-width:380px;font-size:15px}.dark .reality-art{inset:29% -20% 5% 5%;opacity:.9}.dark .reality-kicker{margin-bottom:20px;font-size:8px}.dark .reality-console{gap:14px;flex-wrap:wrap;bottom:22px}.reality-hint{display:none}.reality-track{margin-right:auto;width:85px}.reality-console button{font-size:8px;padding:10px}.dark #reality-lab{height:160svh}}
@media(max-width:520px){.dark .reality-pin{padding-top:48px;min-height:690px}.dark #reality-lab h2{max-width:100%;font-size:54px}.dark #reality-lab p{font-size:14px;max-width:95%}.dark .reality-art{inset:38% -28% 4% -14%}.dark .reality-console{gap:10px}.reality-state{min-width:110px;font-size:8px}.reality-track{width:45px}.dark .hero-sculpture{width:180px;height:220px;right:-45px;top:100px;opacity:.35}}
@media(prefers-reduced-motion:reduce){.dark #reality-lab{height:auto}.dark .reality-pin{position:relative;height:800px}.dark .project .visual{transform:none!important;transition:none}.dark #reality-lab h2{transform:none}.pause-reality{display:none}}
.dark #reality-lab{display:block;color:#f8f8f4}.dark #reality-lab h2{color:#f8f8f4}.dark .reality-pin{width:100%}
.dark #reality-lab{height:245svh}.dark .reality-art{inset:2% -4% 6% 35%}.dark .reality-console .reality-state{min-width:140px}
.simulation-cursor{display:none;position:fixed;inset:0;z-index:10000;pointer-events:none}.simulation-cursor i{position:absolute;left:0;top:0;border-radius:50%;will-change:transform}.simulation-cursor .cursor-core{width:6px;height:6px;background:#e4ffad;box-shadow:0 0 13px #c6ff7399}.simulation-cursor .cursor-orbit{width:28px;height:28px;border:1px solid #d6ff7177;transition:width .25s,height .25s,border-radius .25s,background .25s,border-color .25s}.simulation-cursor.over-link .cursor-orbit{width:42px;height:42px;border-radius:11px;border-color:#d6ff71;background:#d6ff7110}.simulation-cursor.over-art .cursor-orbit{width:48px;height:48px;border-style:dashed}
@media(pointer:fine) and (prefers-reduced-motion:no-preference){body.space-active.has-sim-cursor:not(.light-world) .simulation-cursor{display:block}body.space-active.has-sim-cursor #site:not(.light-sim),body.space-active.has-sim-cursor #site:not(.light-sim) *{cursor:none!important}}
@media(max-width:850px){.dark #reality-lab{height:235svh}.dark .reality-art{inset:29% -20% 5% 5%}}
@media(max-width:520px){.dark .reality-art{inset:38% -28% 4% -14%}.dark .reality-console .reality-state{min-width:125px}}
@media(prefers-reduced-motion:reduce){.dark #reality-lab{height:auto}}
/* A dark opening opens into an alien world, then fragments back into the portfolio. */
.hero-pin{display:contents}.hero-world,.hero-story-caption{display:none}
.dark .hero{height:220svh;min-height:0;overflow:visible;max-width:none;padding:0;background:#080b10}.dark .hero::before,.dark .hero::after{display:none}
.dark .hero-pin{display:block;position:sticky;top:0;min-height:680px;height:100svh;overflow:hidden;padding:110px 5% 100px;isolation:isolate;background:#080b10}
.dark .hero-world{display:block;position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--world-opacity,0);will-change:opacity,clip-path}
.world-image,.world-slice{position:absolute;inset:-4%;background:url('world/robot-breakfast-reference.png') center center/cover no-repeat;transform:scale(var(--world-zoom,1.11));will-change:transform}
.world-veil{position:absolute;inset:0;background:linear-gradient(90deg,#080b10c9 0%,#080b1066 40%,transparent 80%),linear-gradient(0deg,#080b1077,transparent 40%)}
.world-slice{opacity:var(--world-break,0);filter:hue-rotate(16deg) contrast(1.15);mix-blend-mode:screen}
.slice-a{clip-path:polygon(0 19%,100% 19%,100% 23%,0 23%,0 42%,100% 42%,100% 47%,0 47%,0 71%,100% 71%,100% 74%,0 74%);transform:translateX(var(--world-shift,0px)) scale(var(--world-zoom,1.11))}
.slice-b{clip-path:polygon(0 34%,100% 34%,100% 36%,0 36%,0 62%,100% 62%,100% 65%,0 65%,0 87%,100% 87%,100% 89%,0 89%);transform:translateX(var(--world-cut,0px)) scale(var(--world-zoom,1.11));filter:hue-rotate(-22deg)}
.dark .hero-story-caption{display:flex;position:absolute;bottom:28px;left:5%;right:5%;justify-content:space-between;gap:24px;color:#d6ff7199;font:9px/1.5 monospace;letter-spacing:1.5px;z-index:2}
.dark .hero h1{max-width:1000px}.dark .hero .hero-bottom{position:relative;z-index:2}.dark .hero .eyebrow{position:relative;z-index:2}
@media(max-width:850px){.dark .hero-pin{padding-top:95px;min-height:660px}.world-image,.world-slice{background-position:62% center}.world-veil{background:linear-gradient(90deg,#080b10bb, #080b1044 70%),linear-gradient(0deg,#080b1088,transparent)}.dark .hero-story-caption{font-size:8px;letter-spacing:.7px}.dark .hero{height:210svh}}
@media(max-width:520px){.dark .hero-pin{padding-top:85px;min-height:650px}.dark .hero-story-caption{font-size:7px}.world-image,.world-slice{background-position:67% center}}
@media(prefers-reduced-motion:reduce){.dark .hero{height:auto}.dark .hero-pin{position:relative;height:auto;min-height:680px}.world-slice{display:none}.dark .hero-world{clip-path:none!important;opacity:0!important}}
.dark .hero .hero-bottom p{color:#d1d7d2;text-shadow:0 1px 16px #0009}.dark .hero .outline-button{background:#080b1077;backdrop-filter:blur(8px)}

.world-veil{background:linear-gradient(90deg,#eff8fa33,transparent 65%)}
.dark .hero.daylight-visible h1{color:#112c36;text-shadow:none}.dark .hero.daylight-visible h1 em{color:#196646;text-shadow:none;animation:none}.dark .hero.daylight-visible .eyebrow,.dark .hero.daylight-visible .hero-story-caption{color:#164954}.dark .hero.daylight-visible .hero-bottom p{color:#173d46;text-shadow:none}.dark .hero.daylight-visible .outline-button{color:#123d35;border-color:#164d3b;background:#f3ffff88}.dark .hero h1,.dark .hero .eyebrow,.dark .hero h1 em,.dark .hero .hero-bottom p{transition:color .3s ease}
@media(max-width:850px){.world-veil{background:linear-gradient(90deg,#eff8fa77,#eff8fa11 80%)}}
/* Full-frame dissolve replaces the directional wipe. */
.dark .hero-world{clip-path:none!important;transition:opacity .24s ease-out;will-change:opacity}.world-image,.world-slice{transition:transform .35s ease-out}.reality-art[data-renderer="realistic-imagery"] canvas{image-rendering:auto}

/* Dark simulation atmosphere, retaining the full-frame ease-in. */
.world-veil{background:linear-gradient(90deg,#050a0fe8 0%,#050b105e 50%,#07100c22 100%),linear-gradient(0deg,#050a0fbb,transparent 55%),repeating-linear-gradient(0deg,transparent 0 5px,#9ed46d08 6px 7px)}
.world-image{filter:saturate(.68) brightness(.72) hue-rotate(8deg)}
.dark .hero .hero-bottom p{color:#d1d7d2;text-shadow:0 1px 16px #000b}.dark .hero .outline-button{background:#080b10aa;border-color:#d6ff71;color:#d6ff71}.dark .hero-story-caption{color:#d6ff71aa}
@media(max-width:850px){.world-veil{background:linear-gradient(90deg,#050a0fca,#050b1055),linear-gradient(0deg,#050a0f99,transparent 65%),repeating-linear-gradient(0deg,transparent 0 5px,#9ed46d08 6px 7px)}}
/* SIM-specific call to action and slower morph pacing. */
.dark .hero .hero-bottom{flex-direction:column;align-items:flex-start;gap:26px;margin-top:35px}.dark .hero .outline-button{display:inline-flex;align-items:center;justify-content:center;position:relative;animation:sim-cta-glitch 8s steps(1,end) infinite;transform-origin:left center}
@keyframes sim-cta-glitch{0%,90%,93%,96%,100%{transform:none;text-shadow:none;box-shadow:none}91%{transform:translateX(-2px) skewX(-3deg);text-shadow:2px 0 #99e9ff,-2px 0 #c092ff;box-shadow:2px 0 #8acbff55}92%{transform:translateX(1px);text-shadow:-1px 0 #c092ff}94%{transform:translateX(-1px);text-shadow:1px 0 #d6ff71}95%{transform:none;text-shadow:none}}
.dark #reality-lab{height:335svh}
@media(max-width:850px){.dark #reality-lab{height:320svh}.dark .hero .hero-bottom{gap:22px;margin-top:28px}.dark .hero-pin{padding-bottom:70px}.dark .hero .hero-bottom p{font-size:17px}}
@media(max-width:520px){.dark .hero .hero-bottom{gap:20px;margin-top:22px}.dark .hero .hero-bottom p{font-size:16px}.dark .hero-pin{padding-bottom:55px}}
@media(prefers-reduced-motion:reduce){.dark .hero .outline-button{animation:none}.dark #reality-lab{height:auto}}

/* The supplied robot-breakfast still breaks quickly into black on scroll. */
.dark .hero{height:160svh}.dark .hero-world{transition:opacity .12s ease-out}.world-image,.world-slice{background-size:auto 100%;background-position:right center;background-repeat:no-repeat}.world-image{filter:saturate(.75) brightness(.82)}
.world-veil{background:linear-gradient(90deg,#080b10 0%,#080b10 44%,#080b10bb 61%,#080b1033 100%),repeating-linear-gradient(0deg,transparent 0 5px,#b8e48f08 6px 7px)}
@media(max-width:850px){.dark .hero{height:155svh}.world-image,.world-slice{background-size:cover;background-position:65% center}.world-veil{background:linear-gradient(90deg,#080b10ec,#080b10a3 50%,#080b1055),linear-gradient(0deg,#080b10aa,transparent 60%)}}
@media(prefers-reduced-motion:reduce){.dark .hero{height:auto}.dark .hero-world{transition:none}}
@media(min-width:851px){.world-image,.world-slice{-webkit-mask-image:linear-gradient(90deg,transparent 48%,#000 73%);mask-image:linear-gradient(90deg,transparent 48%,#000 73%)}}
