/* Lighting and motion experiment; no changes to page layout or the approved train. */
.hero-cube-wrap{position:relative}
.cube-studio-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .35s ease}
.cube-webgl-ready .cube-studio-canvas{opacity:1}
.cube-webgl-ready .cube-spin{visibility:hidden}
.effects-ready.sections-anim .panel .panel-inner{opacity:1;transition:none;position:relative;z-index:1}
.effects-ready.sections-anim [data-reveal]{opacity:1;translate:none;transition:none}
.effects-ready .rv-in{transform:none;transition:none}
.effects-ready.sections-anim .trait-row .chip,
.effects-ready.sections-anim .skill-grid .sk-card{opacity:1;transform:none;transition-delay:0s}
body.effects-ready .panel.fx-waiting .fx-item{opacity:0}
.effects-ready .xp-list{position:relative}
.effects-ready .xp-list::after{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--teal),transparent);transform:scaleX(0);transform-origin:left;opacity:.8}
.effects-ready .fx-entered .xp-list::after{animation:timeline-draw .85s cubic-bezier(.16,1,.3,1) both}
@keyframes timeline-draw{to{transform:scaleX(1)}}
.effects-ready .kicker{position:relative}
@media(prefers-reduced-motion:reduce){.cube-studio-canvas{transition:none}body.effects-ready .panel.fx-waiting .fx-item{opacity:1}.effects-ready .xp-list::after{animation:none}}
@media print{.cube-studio-canvas{display:none}body.effects-ready .panel.fx-waiting .fx-item{opacity:1}}

.ascii-title{font-weight:600;text-shadow:none;line-height:1;letter-spacing:-.035em}
.ascii-name{display:block;position:relative;width:100%;height:clamp(76px,11.4vw,146px);font-weight:700;text-transform:uppercase;line-height:1;font-size:clamp(76px,11.4vw,146px)}
.ascii-name-fallback{display:block;white-space:nowrap}
.ascii-name-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0}
.ascii-name-ready .ascii-name-canvas{opacity:1}
.ascii-name-ready .ascii-name-fallback{color:transparent;text-shadow:none}
.ascii-surname{display:block;font-size:clamp(30px,3.8vw,51px);letter-spacing:-.025em;line-height:1.15;margin-top:7px}
@media(max-width:860px){.ascii-name{height:clamp(72px,20vw,110px);font-size:clamp(72px,20vw,110px)}.hero-panel .panel-inner{gap:20px}.hero-cube-wrap{height:165px}.ascii-surname{font-size:clamp(28px,7.9vw,44px)}}
@media(prefers-reduced-motion:reduce){.ascii-name-canvas{display:none}.ascii-name-ready .ascii-name-fallback{color:var(--foam)}}
@media print{.ascii-name-canvas{display:none}.ascii-name-ready .ascii-name-fallback{color:inherit}.ascii-name{height:auto;font-size:36pt}.ascii-surname{font-size:24pt}}
