/* A continuous city panorama replaces the repeating hero artwork. */
body{isolation:isolate}
.living-city{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:#0a090b;image-rendering:pixelated}
.city-lamp--near{left:21.4%;top:58.15%;width:6.7%;height:.95%;animation-delay:-4s}
.city-lamp--middle{left:70.3%;top:64.7%;width:6.2%;height:.8%;animation-duration:9s;animation-delay:-1s}
.city-lamp--far{left:32.4%;top:77%;width:4.6%;height:.65%;animation-duration:13s;animation-delay:-8s}
@keyframes city-lamp-out{0%,56%,62%,100%{opacity:0}57%,61%{opacity:.7}58%,60%{opacity:.25}78%,85%{opacity:.94}86%{opacity:0}}
@keyframes city-bat-flight{0%{transform:translate(0,0)}25%{transform:translate(calc(25vw + 30px),-15px)}50%{transform:translate(calc(50vw + 60px),18px)}75%{transform:translate(calc(75vw + 90px),-8px)}100%{transform:translate(calc(100vw + 120px),0)}}
@keyframes city-bat-wings{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.28)}}
/* Keep the scene visible between and through the content surfaces. */
/* The hero has its own artwork; block the fixed panorama beneath it. */
.hero{background:#0a090b;isolation:isolate}
.hero-content{z-index:1}
.section{background:#0a090bbd;border-color:#68404d80}
.about-section{background:linear-gradient(110deg,#100a0ed9,#0a090bb5)}
.writing-section{background:#0a090bc9}
.project-card{background:#141114e8}
.hero-content,.section-heading,.contact-row{text-shadow:2px 2px 2px #080609}
footer{background:#0a090be0;padding-inline:20px}
.city-hidden .living-city *,.city-hidden .living-city *::before{animation-play-state:paused!important}
@media(max-width:760px){.section{background:#0a090bd1}}
@media(prefers-reduced-motion:reduce){}
