:root{--font-mono:"DM Mono", monospace;--font-display:"Playfair Display", Georgia, serif;--color-text:#fff7e9;--color-background:#2a0905;--color-accent:#f8b331;--color-heading:#f7ae36;--icon-filter:invert(96%) sepia(12%) saturate(530%) hue-rotate(326deg) brightness(106%);color:var(--color-text);background:var(--color-background);font-synthesis:none;text-rendering:optimizelegibility;font-family:Manrope,sans-serif}*{box-sizing:border-box;scrollbar-width:none}html{scroll-behavior:smooth;background:var(--color-background)}::-webkit-scrollbar{width:0;height:0;display:none}body{background:var(--color-background);overscroll-behavior-y:none;min-width:320px;margin:0}a{color:inherit;text-decoration:none}.scroll-story{isolation:isolate;position:relative}.visual-pin{z-index:-1;background:linear-gradient(90deg,#df5c0c 0%,#f5a821 50%,#df5c0c 100%);width:100%;height:100dvh;min-height:100svh;margin-bottom:-100dvh;position:sticky;top:0;overflow:hidden}.scene-image{--image-offset:0px;width:max(100vw,53.5svh,53.5dvh,53.5lvh);max-width:none;height:auto;transform:translate3d(-50%, var(--image-offset), 0);will-change:transform;display:block;position:absolute;top:0;left:50%}.scene-haze{z-index:1;pointer-events:none;background:linear-gradient(90deg,#5f140738,#0000 30% 70%,#5f140738);position:absolute;inset:0}.scene-shade{z-index:3;pointer-events:none;background:linear-gradient(#26050214,#0000 35%,#1d03026b),radial-gradient(circle,#0000 50%,#2405023d 100%);position:absolute;inset:0}.image-marker{z-index:4;color:#fff8eab8;font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;writing-mode:vertical-rl;margin:0;position:absolute}.marker-top{top:5%;left:clamp(1rem,3vw,3rem)}.marker-bottom{bottom:5%;right:clamp(1rem,3vw,3rem);transform:rotate(180deg)}.year-timeline{z-index:4;color:#fff8ead1;width:1px;font-family:var(--font-mono);letter-spacing:.12em;background:#fff8ea52;position:absolute;top:5%;bottom:calc(5% + 17rem);right:clamp(1.4rem,3.5vw,3.5rem)}.year-timeline:before,.year-timeline:after{content:"";background:currentColor;width:.4rem;height:1px;position:absolute;left:-.2rem}.year-timeline:before{top:0}.year-timeline:after{bottom:0}.timeline-current{top:var(--timeline-position);transition:top .7s cubic-bezier(.22,1,.36,1);position:absolute;left:.8rem;transform:translateY(-50%)}.timeline-current.pulse-a .timeline-year-label{animation:.6s ease-out year-pulse-a}.timeline-current.pulse-b .timeline-year-label{animation:.6s ease-out year-pulse-b}.timeline-year-label{transform-origin:50%;display:inline-block}.timeline-current:after{background:var(--color-text);content:"";border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:50%;left:-1.05rem;transform:translateY(-50%);box-shadow:0 0 0 .2rem #fff7e92e}@keyframes year-pulse-a{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}@keyframes year-pulse-b{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}.social-links{z-index:10;flex-direction:column;align-items:flex-start;display:flex;position:fixed;bottom:clamp(.5rem,1.5vw,1.5rem);left:clamp(.5rem,1.5vw,1.5rem)}.social-links a{color:var(--color-text);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transform-origin:50%;background:#2b07048c;border:1px solid #fff7e959;place-items:center;transition:color .18s,background .18s,transform .18s;display:grid}.social-links img{object-fit:contain;width:100%;height:100%;filter:var(--icon-filter);display:block}.social-links a:hover,.social-links a:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.1)}.social-links a:hover img,.social-links a:focus-visible img{filter:none}.audio-control{order:-1;align-self:flex-start;position:relative}.audio-toggle{color:var(--color-text);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;transform-origin:50%;background:#2b07048c;border:1px solid #fff7e959;place-items:center;margin:0;transition:color .18s,background .18s,transform .18s;display:grid;position:absolute;inset:0}.audio-toggle svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;width:100%}.audio-toggle:hover,.audio-toggle:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.1)}.volume-popover{visibility:hidden;opacity:0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transform-origin:bottom;background:#2b07048c;border:1px solid #fff7e959;place-items:center;width:110%;height:9rem;transition:opacity .18s,transform .18s,visibility .18s;display:grid;position:absolute;bottom:100%;left:50%;transform:translate(-50%)scaleY(.75)}.audio-control:hover .volume-popover{visibility:visible;opacity:1;transform:translate(-50%)scaleY(1)}.audio-control:has(.volume-popover input:focus-visible) .volume-popover{visibility:visible;opacity:1;transform:translate(-50%)scaleY(1)}.volume-popover input{width:1rem;height:7.2rem;accent-color:var(--color-accent);cursor:pointer;writing-mode:vertical-lr;direction:rtl}.story-content{z-index:5;position:relative}.story-panel{min-height:100svh;padding:clamp(6rem,10vw,9rem) clamp(1.25rem,7vw,7rem);display:flex;position:relative}.hero-panel{text-align:center;justify-content:center;align-items:center}.hero-copy{transform:translateY(-5vh)}.section-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;margin:0 0 1.25rem;font-size:clamp(.62rem,.8vw,.75rem)}.hero-panel h1{font-family:var(--font-display);letter-spacing:-.075em;text-transform:uppercase;text-shadow:0 .06em .5em #3605024d;margin:0;font-size:clamp(5rem,min(12vw,18svh),11rem);font-weight:500;line-height:.78}.hero-panel h1:first-line{font-style:italic}.hero-intro{font-family:var(--font-mono);text-shadow:0 2px 14px #34050280;margin:3rem auto 0;font-size:clamp(1.05rem,1.7vw,1.35rem);line-height:1.65}.scroll-cue{bottom:calc(3rem + env(safe-area-inset-bottom,0px));font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;flex-direction:column;align-items:center;transition:color .18s,transform .18s;display:flex;position:absolute;left:50%;transform:translate(-50%)}.scroll-cue:focus-visible{transform:translate(-50%,-.3rem)}@media (hover:hover) and (pointer:fine){.scroll-cue:hover{transform:translate(-50%,-.3rem)}}.scroll-cue svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px;animation:1.8s ease-in-out infinite bounce}.project-panel{justify-content:center;align-items:center;min-height:76svh;padding-top:clamp(2.75rem,6vw,5rem);padding-bottom:clamp(2.75rem,6vw,5rem)}.project-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform-origin:50%;background:#2b07048c;border:1px solid #fff7e947;grid-template-columns:minmax(16rem,.8fr) minmax(25rem,1.2fr);align-items:stretch;gap:clamp(2rem,5vw,6rem);width:100%;max-width:96rem;padding:clamp(1.5rem,3vw,2.6rem);transition:border-color .24s,box-shadow .24s,transform .32s cubic-bezier(.22,1,.36,1);display:grid;box-shadow:0 1.5rem 5rem #21020142}.project-card.has-details{cursor:pointer}@media (hover:hover) and (pointer:fine){.project-card.has-details:hover,.project-card.has-details:focus-visible{border-color:#f8b33185;transform:scale(1.018);box-shadow:0 1.9rem 6rem #21020157}}.project-copy{flex-direction:column;display:flex}.about-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#1b030296;border:1px solid #fff7e947;width:min(58rem,84vw);padding:clamp(1.5rem,3vw,2.6rem);box-shadow:0 1.5rem 5rem #21020142}.project-meta{color:var(--color-heading);font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;justify-content:space-between;gap:2rem;line-height:1.5;display:flex}.project-meta span:last-child{text-align:right}.project-card h2{max-width:9ch;font-family:var(--font-display);letter-spacing:-.055em;margin:clamp(2rem,4vw,3.5rem) 0 1.75rem;font-size:clamp(3rem,5vw,5.5rem);font-weight:500;line-height:.9}.project-card h2:has(+.project-collaboration){margin-bottom:1.5rem}.project-copy>.project-collaboration{max-width:34rem;color:var(--color-heading);font-family:var(--font-mono);letter-spacing:.08em;margin:0 0 1rem;font-size:clamp(.65rem,.85vw,.78rem);line-height:1.5}.project-collaboration-highlight{color:inherit;text-underline-offset:.2em;transform-origin:0;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;transition:color .18s,transform .18s;display:inline-block}a.project-collaboration-highlight{cursor:pointer}.project-collaboration-highlight:focus-visible{color:var(--color-accent);outline-offset:.2rem;outline:1px solid;transform:scale(1.045)}@media (hover:hover) and (pointer:fine){.project-collaboration-highlight:hover{color:var(--color-accent);transform:scale(1.045)}}.project-copy>p{padding-left:.3rem}.project-copy>p,.about-card>p:not(.section-label){color:#fff7e9c7;max-width:34rem;margin:0;font-size:clamp(.9rem,1.2vw,1.05rem);line-height:1.7}.project-card ul,.skill-line{flex-wrap:wrap;gap:.55rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.project-card li,.skill-line span{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid #fff7e940}.project-carousel{align-self:center;width:100%;min-width:0}.carousel-viewport{overscroll-behavior-x:contain;aspect-ratio:16/10;cursor:auto;touch-action:pan-y;transform-origin:50%;background:0 0;border:1px solid #0000;margin-inline:auto;transition:transform .22s;overflow:hidden;container-type:inline-size}.carousel-viewport:has(.carousel-image-clip:hover){transform:scale(1.025)}.carousel-track{height:100%;transition:transform .36s cubic-bezier(.22,1,.36,1);display:flex}.carousel-track.is-dragging,.carousel-track.is-resetting{transition:none}.carousel-track.is-dragging{will-change:transform}.carousel-slide{-webkit-user-select:none;user-select:none;background:0 0;flex:0 0 100%;place-items:center;height:100%;margin:0;display:grid;position:relative;overflow:hidden;container-type:size}.carousel-image-frame{width:min(100cqw, var(--image-width-at-full-height));max-width:100%;max-height:100%;aspect-ratio:var(--image-ratio);background:#2b07046b;border:1px solid #fff7e94d;position:relative;overflow:visible}.carousel-image-skeleton{z-index:1;opacity:1;background:#2b070485;transition:opacity .26s;position:absolute;inset:0;overflow:hidden}.carousel-image-clip{cursor:zoom-in;touch-action:none;position:absolute;inset:0;overflow:hidden}.carousel-viewport.is-zoomed .carousel-image-clip,.lightbox-viewport.is-zoomed .carousel-image-clip{cursor:grab}.carousel-viewport.is-zoomed .carousel-image-clip:active,.lightbox-viewport.is-zoomed .carousel-image-clip:active{cursor:grabbing}.carousel-image-skeleton:after{content:"";filter:blur(5px);background:linear-gradient(90deg,#0000 0%,#f8b33112 32%,#fff7e93b 50%,#f8b33112 68%,#0000 100%);width:32%;animation:1.8s ease-in-out infinite paused carousel-image-shimmer;position:absolute;top:-10%;bottom:-10%;left:0;transform:translate(-125%)}.carousel-image-skeleton.is-hidden{visibility:hidden;opacity:0;pointer-events:none;transition:opacity .26s,visibility 0s .26s}.project-carousel.is-active .carousel-image-skeleton:not(.is-hidden):after,.project-detail-gallery .carousel-image-skeleton:not(.is-hidden):after,.image-lightbox .carousel-image-skeleton:not(.is-hidden):after{animation-play-state:running}@keyframes carousel-image-shimmer{to{transform:translate(345%)}}.carousel-slide figcaption{--caption-inset:clamp(.6rem, 1.25vw, 1rem);z-index:3;bottom:var(--caption-inset);left:var(--caption-inset);text-align:left;text-shadow:0 2px 18px #2a040280;background:#2b07048c;border:1px solid #fff7e947;gap:.3rem;width:max-content;max-width:calc(100cqw - clamp(1.2rem,2.5vw,2rem));padding:clamp(.7rem,1.2vw,1rem) clamp(.85rem,1.5vw,1.25rem);transition:opacity .22s,left .22s,transform .22s;display:grid;position:absolute}.carousel-slide figcaption.is-frame-overflowing{text-align:center;left:50%;transform:translate(-50%)}@media (hover:hover) and (pointer:fine){.carousel-slide figcaption:hover{opacity:0}}.carousel-slide figcaption span{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;font-size:clamp(.32rem,1.1cqw,.406rem)}.carousel-slide figcaption strong{font-family:var(--font-display);font-size:clamp(1rem,5cqw,2.8rem);font-weight:500;line-height:1}.carousel-controls{grid-template-columns:auto 1fr auto;align-items:center;margin-top:.75rem;display:grid}.carousel-controls>button{color:inherit;cursor:pointer;background:#2b0704b5;border:1px solid #fff7e94d;place-items:center;padding:0;transition:color .18s,background .18s,transform .18s;display:grid}.carousel-controls>button:hover,.carousel-controls>button:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.1)}.carousel-dots{justify-content:center;gap:.65rem;display:flex}.carousel-dots button{cursor:pointer;background:0 0;border:0;padding:0}.carousel-dots button:after{content:"";background:#fff7e959;width:100%;height:1px;transition:background .18s,transform .18s;display:block}.carousel-dots button.is-active:after{background:var(--color-accent);transform:scaleY(3)}.about-panel{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:3rem;min-height:72svh;padding-top:clamp(3rem,6vw,5rem);padding-bottom:clamp(2rem,4vw,3rem)}.carousel-image{z-index:2;opacity:0;object-fit:contain;object-position:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;transition:opacity .28s;position:absolute;inset:0}.carousel-image.is-loaded{opacity:1}.image-lightbox{--lightbox-height:min(82dvh, 58rem);z-index:100;background:#120201f0;place-items:center;padding:clamp(1rem,4vw,4rem);animation:.3s backwards image-lightbox-in;display:grid;position:fixed;inset:0}.lightbox-viewport{width:min(86vw, 88rem, var(--lightbox-width-by-height,86vw));overscroll-behavior-x:contain;cursor:grab;touch-action:none;transform-origin:50%;background:0 0;border:1px solid #0000;height:auto;animation:.44s cubic-bezier(.22,1,.36,1) backwards image-lightbox-content-in;overflow:hidden;container-type:inline-size}.image-lightbox.is-closing{pointer-events:none;animation:.26s both image-lightbox-out}.image-lightbox.is-closing .lightbox-viewport{animation:.26s cubic-bezier(.55,0,.78,0) both image-lightbox-content-out}@keyframes image-lightbox-in{0%{opacity:0}}@keyframes image-lightbox-content-in{0%{opacity:0;transform:scale(.82)}}@keyframes image-lightbox-out{to{opacity:0}}@keyframes image-lightbox-content-out{to{opacity:0;transform:scale(.82)}}.lightbox-viewport:active{cursor:grabbing}.lightbox-close,.lightbox-arrow{z-index:2;color:var(--color-text);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;background:#2b07048c;border:1px solid #fff7e959;place-items:center;transition:color .18s,background .18s,transform .18s;display:grid;position:absolute}.lightbox-close{top:max(1rem, env(safe-area-inset-top,0px));right:max(1rem, env(safe-area-inset-right,0px));width:3rem;height:3rem;font-size:1.5rem}.lightbox-arrow{width:3.25rem;height:3.25rem;font-size:1.2rem;top:50%;transform:translateY(-50%)}.lightbox-previous{left:clamp(.5rem,2vw,2rem)}.lightbox-next{right:clamp(.5rem,2vw,2rem)}.lightbox-close:hover,.lightbox-close:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.1)}.lightbox-arrow:hover,.lightbox-arrow:focus-visible{color:var(--color-background);background:var(--color-accent);transform:translateY(-50%)scale(1.1)}.lightbox-count{bottom:max(calc((100dvh - var(--lightbox-height)) / 4), calc(env(safe-area-inset-bottom,0px) + .5rem));font-family:var(--font-mono);letter-spacing:.16em;margin:0;font-size:.65rem;position:absolute;left:50%;transform:translate(-50%)}.hero-specialties{font-family:var(--font-mono);text-shadow:0 2px 14px #34050280;margin:1.25rem 0 0;font-size:clamp(.9rem,1.5vw,1.15rem);line-height:1.65}.hero-specialties span{color:var(--color-accent);margin:0 .35em}.resume-link{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;transform-origin:50%;background:#2b07048c;border:1px solid #fff7e959;align-items:center;transition:color .18s,background .18s,transform .18s;display:grid;position:absolute;top:78%;left:50%;transform:translate(-50%,-50%)}.resume-link svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px}.resume-link>span:last-child{line-height:1}.resume-link:hover,.resume-link:focus-visible{color:var(--color-background);background:var(--color-accent);transform:translate(-50%,-50%)scale(1.1)}.project-links{align-items:flex-end;gap:.75rem;margin-top:auto;display:flex}.project-links ul{flex:1}.project-actions{flex-direction:column;flex:none;align-items:stretch;gap:.55rem;display:flex}.project-action{color:inherit;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;transform-origin:50%;background:#2b070440;border:1px solid #fff7e940;flex:none;justify-content:center;align-items:center;line-height:normal;transition:color .18s,background .18s,transform .18s;display:flex}button.project-action{cursor:pointer}.project-github img{width:.7rem;height:.7rem;filter:var(--icon-filter)}.project-action:hover,.project-action:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.1)}.project-github:hover img,.project-github:focus-visible img{filter:none}body.project-detail-is-open .social-links,body.project-detail-is-open .image-marker,body.project-detail-is-open .year-timeline,body.project-detail-is-open .end-note,body.project-detail-is-open .back-to-top{visibility:hidden;opacity:0;pointer-events:none}body.project-detail-is-open .story-content{opacity:.001;pointer-events:none}body.project-detail-is-returning .project-card>*,body.project-detail-is-returning .about-card>*,body.project-detail-is-returning .hero-copy,body.project-detail-is-returning .resume-link,body.project-detail-is-returning .scroll-cue,body.project-detail-is-returning .end-note,body.project-detail-is-returning .back-to-top{animation:.4s cubic-bezier(.22,1,.36,1) backwards main-ui-content-return}body.project-detail-is-returning .social-links:not(.is-mobile-hidden),body.project-detail-is-returning .image-marker,body.project-detail-is-returning .year-timeline{animation:.36s backwards persistent-ui-return}.project-detail-overlay{z-index:50;isolation:isolate;background:#12020114;place-items:center;padding:clamp(.75rem,2vw,2rem);display:grid;position:fixed;inset:0;overflow:hidden}.project-detail{--detail-divider-inset:clamp(4rem, 9vh, 6rem);isolation:isolate;transform-origin:50%;background:0 0;border:1px solid #fff7e96b;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(2,minmax(0,1fr));width:min(96vw,100rem);height:min(92dvh,62rem);display:grid;position:relative;overflow:hidden;box-shadow:0 2rem 7rem #1202019e}.project-detail:before{z-index:0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);content:"";pointer-events:none;background:#2b0704cc;position:absolute;inset:0}.project-detail-divider-progress{z-index:4;top:var(--detail-divider-inset);bottom:var(--detail-divider-inset);pointer-events:none;background:linear-gradient(#0000 0 .5px,#fff7e938 .5px calc(100% - .5px),#0000 calc(100% - .5px) 100%);width:1px;position:absolute;left:50%;transform:translate(-50%)}.project-detail-divider-progress:before,.project-detail-divider-progress:after{content:"";background:#fff7e938;width:.4rem;height:.5px;position:absolute;left:50%;transform:translate(-50%)}.project-detail-divider-progress:before{top:0}.project-detail-divider-progress:after{bottom:0}.project-detail-divider-current{top:var(--detail-progress);background:var(--color-text);border-radius:50%;width:.5rem;height:.5rem;transition:top .7s cubic-bezier(.22,1,.36,1);position:absolute;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 .2rem #fff7e92e}.project-detail-copy,.project-detail-gallery{z-index:1;min-width:0;min-height:0;padding:clamp(1.25rem,2vw,2.25rem);animation:.4s cubic-bezier(.22,1,.36,1) backwards project-detail-content-in;position:relative}.project-detail-overlay.is-closing{pointer-events:none;animation:.26s both project-detail-backdrop-out}.project-detail-overlay.is-closing .project-detail{animation:.26s cubic-bezier(.55,0,.78,0) both project-detail-collapse}.project-detail-copy{overscroll-behavior:contain;scrollbar-width:none;overflow:hidden auto}.project-detail-copy::-webkit-scrollbar{display:none}.project-detail-sections{gap:clamp(.8rem,1.8vh,1.35rem);padding:clamp(.35rem,1vh,.75rem) 0 clamp(1.5rem,4vh,2.75rem);display:grid}.project-detail-section{align-content:start;gap:clamp(.55rem,1.15vh,.9rem);padding:clamp(.65rem,1.5vh,1rem) 0;display:grid}.project-detail-section-heading{grid-template-columns:2rem auto minmax(0,1fr);align-items:baseline;column-gap:.65rem;display:grid}.project-detail-section-number{color:#fff7e96b;font-family:var(--font-mono);letter-spacing:.14em;font-size:.64rem;transition:color .24s}.project-detail-section.is-active .project-detail-section-number{color:var(--color-accent)}.project-detail-section-dot{opacity:0;background:var(--color-accent);border-radius:50%;align-self:center;width:.42rem;height:.42rem;margin-left:.15rem;transition:opacity .26s,transform .32s cubic-bezier(.22,1,.36,1);transform:scale(.65);box-shadow:0 0 0 .18rem #f8b3311f}.project-detail-section.is-active .project-detail-section-dot{opacity:1;transform:scale(1)}.project-detail-heading{margin-bottom:clamp(.65rem,1.3vh,1rem)}.project-detail .project-meta{padding-right:0}.project-detail h2{max-width:11ch;font-family:var(--font-display);letter-spacing:-.055em;margin:clamp(1rem,2vh,1.75rem) 0 .75rem;font-size:clamp(2.25rem,4.2vw,4.75rem);font-weight:500;line-height:.88}.project-detail .project-collaboration{color:var(--color-heading);font-family:var(--font-mono);letter-spacing:.08em;margin:0;font-size:clamp(.6rem,.72vw,.72rem);line-height:1.5}.project-detail h3{color:var(--color-heading);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:clamp(.68rem,.85vw,.82rem);font-weight:500}.project-detail-section p,.project-detail-section ul{color:#fff7e9cc;max-width:39rem;margin:0 0 0 2.65rem;font-size:clamp(.82rem,1vw,1rem);line-height:1.65}.project-detail-section ul{gap:.65rem;padding:0;list-style:none;display:grid}.project-detail-section li{padding-left:1.2rem;position:relative}.project-detail-section li:before{color:var(--color-heading);content:"→";position:absolute;top:0;left:0}.project-detail-gallery{align-items:center;padding-top:clamp(4.5rem,7vh,6rem);display:flex}.project-detail-gallery .carousel-viewport{aspect-ratio:16/10;width:100%;height:auto;max-height:calc(92dvh - 12rem)}.project-detail-close{z-index:5;color:inherit;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#2b0704bf;border:1px solid #fff7e94d;align-items:center;gap:.65rem;padding:.55rem .7rem;font-size:.62rem;transition:color .18s,background .18s,opacity .22s,transform .22s,visibility .22s;animation:.4s cubic-bezier(.22,1,.36,1) backwards project-detail-content-in;display:flex;position:absolute;top:clamp(.75rem,1.5vw,1.5rem);right:clamp(.75rem,1.5vw,1.5rem)}.project-detail-close span:last-child{font-size:1rem;line-height:.7}.project-detail-close:hover,.project-detail-close:focus-visible{color:var(--color-background);background:var(--color-accent);transform:scale(1.08)}@keyframes project-detail-backdrop-out{to{opacity:0}}@keyframes project-detail-content-in{0%{opacity:0}}@keyframes project-detail-collapse{to{opacity:0;clip-path:inset(14% 16% round .25rem)}}@keyframes main-ui-content-return{0%{opacity:0}}@keyframes persistent-ui-return{0%{opacity:0}}.hero-copy .section-label{color:#fff;margin-bottom:2.25rem;font-size:clamp(.75rem,1vw,.9rem)}.project-panel:last-child{padding-bottom:8.75rem}.about-card .section-label,.about-card>p,.about-card h2{margin-left:auto;margin-right:auto}.about-card .skill-line{justify-content:center}.about-card>p:not(.section-label){text-align:center;margin-inline:auto}.about-card h2,.about-card>p:not(.section-label){transform:translateY(-1rem)}.about-card h2{max-width:11ch;font-family:var(--font-display);letter-spacing:-.055em;margin:clamp(2rem,5vw,4.5rem) auto 1.2rem;font-size:clamp(3rem,6vw,6rem);font-weight:500;line-height:.9}.end-note{font-family:var(--font-mono);letter-spacing:.18em;text-align:center;text-transform:uppercase;margin:0;position:absolute;bottom:5.5rem;left:50%;transform:translate(-50%)}.back-to-top{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;flex-direction:column;align-items:center;transition:color .18s,transform .18s;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.back-to-top:hover,.back-to-top:focus-visible{color:var(--color-accent);transform:translate(-50%,-.3rem)}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(.5rem)}}.image-marker{font-size:clamp(.5rem,.6vw,.62rem)}.year-timeline{font-size:clamp(.65rem,.8vw,.8rem)}.social-links{gap:clamp(.8rem,1.2vw,1.25rem)}.social-links a,.audio-control,.audio-toggle{width:clamp(3.15rem,4vw,3.9rem);height:clamp(3.15rem,4vw,3.9rem);padding:clamp(.7rem,.9vw,.9rem)}.resume-link{grid-template-columns:clamp(1.15rem,1.5vw,1.45rem) 1fr clamp(1.15rem,1.5vw,1.45rem);gap:clamp(.55rem,.8vw,.8rem);width:clamp(10rem,18vw,12rem);min-height:clamp(3rem,5vw,3.6rem);padding:clamp(.65rem,.8vw,.8rem) clamp(.8rem,1vw,1rem);font-size:clamp(.72rem,1vw,.9rem)}.resume-link svg{width:clamp(1.15rem,1.5vw,1.45rem)}.resume-link>span:last-child{font-size:clamp(.95rem,1.25vw,1.15rem)}.project-meta,.end-note{font-size:clamp(.54rem,.65vw,.65rem)}.project-card li,.skill-line span,.project-action{padding:clamp(.38rem,.45vw,.45rem) clamp(.55rem,.7vw,.7rem);font-size:clamp(.52rem,.6vw,.6rem)}.project-action{gap:clamp(.35rem,.5vw,.5rem)}.carousel-controls>button,.carousel-dots button{height:clamp(2.35rem,3vw,2.75rem)}.carousel-controls>button{width:clamp(2.35rem,3vw,2.75rem)}.carousel-dots button{width:clamp(1.3rem,2vw,1.8rem)}.scroll-cue{gap:clamp(.45rem,.7vw,.65rem);font-size:clamp(.52rem,.65vw,.62rem)}.scroll-cue svg{width:clamp(1.1rem,1.5vw,1.4rem)}.back-to-top{gap:clamp(.25rem,.4vw,.4rem);font-size:clamp(.52rem,.6vw,.62rem)}@media (width>=1440px){.about-panel{min-height:auto;padding-bottom:2rem}.project-panel{min-height:auto;padding-top:2rem;padding-bottom:2rem}}@media (width<=900px),(hover:none),(pointer:coarse){.volume-popover,.project-detail-divider-progress{display:none}}@media (width<=900px){.visual-pin{z-index:0;height:100lvh;min-height:100dvh;margin-bottom:0;position:fixed;inset:0 0 auto}.story-panel{padding-left:1rem;padding-right:1rem}.image-marker,.year-timeline{display:none}.social-links{transition:opacity .22s,transform .22s,visibility .22s}.social-links.is-mobile-hidden{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(.75rem)}.project-panel{min-height:auto;padding-top:2rem;padding-bottom:2rem}.project-panel:last-child{padding-bottom:8.25rem}.project-card{background:#2b070496;grid-template-columns:1fr;gap:2.25rem;width:100%}.about-card{width:min(100%,34rem)}.carousel-viewport{aspect-ratio:4/3}.project-detail-overlay{padding:calc(4.5rem + env(safe-area-inset-top,0px)) .75rem .75rem;place-items:start center;overflow:auto}.project-detail{grid-template-rows:none;grid-template-columns:1fr;width:100%;height:auto;max-height:none;overflow:visible}.project-detail-copy,.project-detail-gallery{min-height:0}.project-detail-copy{overflow:visible}.project-detail-sections{gap:1.5rem;padding-bottom:2rem}.project-detail-section{cursor:pointer}.project-detail-gallery{min-height:min(28rem,70dvh);padding-top:1.25rem}.project-detail-close{top:max(.75rem, env(safe-area-inset-top,0px));position:fixed;right:.75rem}.project-detail-close.is-mobile-hidden{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-.65rem)}.project-detail-gallery .carousel-viewport{aspect-ratio:4/3;width:100%;height:auto}.hero-panel h1{font-size:clamp(3.5rem,min(20vw,14svh),6rem)}}@media (height<=760px),(width<=900px){.hero-panel{flex-direction:column;min-height:max(100svh,42rem);padding-top:3rem;padding-bottom:8rem}.hero-copy{transform:none}.resume-link{margin-top:clamp(2rem,5svh,3.5rem);position:static;transform:none}.resume-link:hover,.resume-link:focus-visible{transform:scale(1.1)}}@media (hover:none),(pointer:coarse){.carousel-slide figcaption.is-mobile-hidden{opacity:0}.social-links a:hover,.audio-toggle:hover{color:var(--color-text);background:#2b07048c;transform:none}.social-links a:hover img,.project-github:hover img{filter:var(--icon-filter)}.project-action:hover{transform:none}.carousel-viewport:has(.carousel-image-clip:hover){transform:none}.carousel-controls>button:hover,.lightbox-close:hover,.lightbox-arrow:hover,.project-action:hover{color:inherit;background:#2b0704b5}.carousel-controls>button:hover{transform:none}.project-detail-close:hover{color:inherit;background:#2b0704bf;transform:none}.lightbox-close:hover{transform:none}.lightbox-arrow:hover{transform:translateY(-50%)}.back-to-top:hover{color:inherit;transform:translate(-50%)}}@media (hover:none) and (width<=900px),(pointer:coarse) and (width<=900px){.resume-link:hover{color:inherit;background:#2b07048c;transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
