:root{--fg: #1c1c1c;--accent: #5200ff;--bg: #fafafa;--nav-font: "cofo-sans-pixel", sans-serif;--body-font: "argent-pixel-cf", sans-serif;--body-color: #f80d0d;--title-color: #f80d0d;--highlight: #0913ff;--tag-university: var(--highlight);--tag-personal: #d9600a;--grid-gap: clamp(.5rem, 1.5vw, 1.25rem);--grid-pad: clamp(.75rem, 2vw, 1.5rem);--cap: clamp(1.5rem, 2.3vw, 2rem);--marquee-h: clamp(2rem, 4.4vw, 3rem)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased}html{overflow-x:hidden}.landing-page{min-height:100dvh;height:auto;background:var(--bg)}html.view-open{overflow:hidden}.stage{position:relative;height:100dvh;width:100%;overflow:hidden;isolation:isolate}.stage:not(.ready) .landing-grid{visibility:hidden;animation:grid-failsafe 0s 2.5s forwards}@keyframes grid-failsafe{to{visibility:visible}}@media(scripting:none){.landing-grid{visibility:visible!important}}.more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--grid-gap);padding:0 var(--grid-pad) var(--grid-pad);grid-auto-rows:calc((100dvh - 2 * var(--grid-pad) - var(--grid-gap)) / 2)}.more-tile{position:relative;display:flex;align-items:center;justify-content:center;background:#f1f1f1;overflow:hidden}.more-tile--photo{flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;border:none;background:var(--bg);color:inherit;font:inherit;text-align:left;cursor:pointer}.more-tile--photo .tile-media{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--bg)}.more-tile--text{flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:.35rem;padding:clamp(.9rem,2vw,1.6rem);border:none;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--body-color);color:var(--body-color);text-align:left;cursor:pointer;transition:background-color .2s ease,color .2s ease}.more-tile--text:hover,.more-tile--text:focus-visible{background:var(--body-color);color:#fff;outline:none}.more-tile-text-label{font-family:"lores-9-plus-narrow",var(--nav-font);font-weight:700;font-size:clamp(1.6rem,3.6vw,3.2rem);line-height:1.02;letter-spacing:-.03em;text-transform:uppercase}.more-tile-text-hint{font-family:var(--nav-font);font-weight:700;font-size:clamp(.7rem,1.1vw,.95rem);text-transform:lowercase}.landing-grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:var(--grid-gap);padding:var(--grid-pad);height:100%;width:100%}.cell{position:relative;min-width:0;min-height:0}.tile{position:absolute;inset:0;display:flex;flex-direction:column;border:none;margin:0;padding:0;background:var(--bg);font:inherit;color:inherit;text-align:left;cursor:pointer;overflow:hidden}.tile--photo .tile-media{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--bg)}.tile-img{width:100%;height:100%;object-fit:cover;display:block}.placeholder-label{font-family:var(--nav-font);font-weight:700;font-size:clamp(.75rem,1.3vw,1.1rem);text-transform:lowercase;color:var(--body-color)}.tile--photo:focus-visible,.more-tile--photo:focus-visible{outline:2px solid var(--highlight);outline-offset:-2px}.tile--about{cursor:default;background:var(--bg)}.about-card{flex:1;min-height:0;display:flex;flex-direction:column;gap:clamp(.35rem,1vw,.7rem);padding:clamp(.6rem,1.4vw,1.1rem);overflow-y:auto}.about-head{margin:0;font-family:var(--nav-font);font-weight:700;font-size:clamp(.85rem,1.5vw,1.25rem);line-height:1.1;text-transform:lowercase;color:var(--title-color)}.about-body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:space-between;font-family:var(--body-font);font-size:clamp(1.05rem,1.45vw,1.4rem);line-height:1.5;color:var(--body-color)}.about-body p{margin:0}.tile-name{flex:0 0 var(--cap);padding-top:.4rem;font-family:var(--nav-font);font-weight:700;font-size:clamp(.85rem,1.4vw,1.2rem);line-height:1.1;color:var(--body-color);text-transform:lowercase;display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.tile-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-tag{flex:none;align-self:center;font-size:.52em;font-weight:700;letter-spacing:.06em;line-height:1;text-transform:uppercase;color:#fff;background:var(--tag-color, var(--tag-university));padding:.4em .6em;white-space:nowrap}.tile-tag[data-tag=university]{--tag-color: var(--tag-university)}.tile-tag[data-tag=personal]{--tag-color: var(--tag-personal)}.tile-tag--corner{position:absolute;top:clamp(.9rem,2vw,1.6rem);left:clamp(.9rem,2vw,1.6rem);align-self:auto}.uc-badge{position:absolute;top:0;left:0;right:0;z-index:3;font-family:var(--nav-font);font-weight:700;font-size:clamp(.6rem,.95vw,.85rem);line-height:1.7;text-align:center;text-transform:lowercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 .4em;background:#ff4d4d;color:#fff;pointer-events:none}.tile--nav{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:var(--grid-gap);padding:0 0 var(--cap);background:transparent}.nav-box{position:relative;overflow:hidden;border:none;margin:0;background:var(--bg);box-shadow:inset 0 0 0 1.5px #ff4d4d;color:#ff4d4d;font-family:var(--nav-font);font-weight:700;font-size:clamp(.6rem,1vw,.95rem);line-height:1.1;text-transform:lowercase;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.4em;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.nav-box:before{content:"";position:absolute;inset:5px;z-index:1;pointer-events:none;background-image:linear-gradient(#ff4d4d 0 0),linear-gradient(#ff4d4d 0 0),linear-gradient(#ff4d4d 0 0),linear-gradient(#ff4d4d 0 0);background-size:4px 4px;background-repeat:no-repeat;background-position:top left,top right,bottom left,bottom right;animation:nav-corner-pulse 2.8s ease-in-out infinite}@keyframes nav-corner-pulse{0%,to{opacity:.35}50%{opacity:1}}.nav-box:hover,.nav-box:focus-visible{background:var(--highlight);box-shadow:none;color:#fff;outline:none}.nav-box:hover:before,.nav-box:focus-visible:before{opacity:0}.nav-label{display:block}.nav-fill{position:absolute;top:1.5px;left:1.5px;width:calc(100% - 3px);height:calc(100% - 3px);display:block;pointer-events:none}.nav-fill text{fill:currentColor;font-family:var(--nav-font);font-weight:700}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}html.more-open .nav-box--more{background:var(--highlight);box-shadow:none;color:#fff}html.more-open .nav-box--more:before{opacity:0}.nav-quad{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:clamp(.25rem,.7vw,.5rem);min-width:0;min-height:0}.nav-mini{position:relative;display:flex;align-items:center;justify-content:center;border:none;margin:0;padding:0;background:#ff4d4d;color:#fff;cursor:pointer;overflow:hidden;min-width:0;min-height:0;transition:background-color .2s ease}.nav-mini:hover,.nav-mini:focus-visible{background:var(--highlight);outline:none}.nav-mini-icon{width:58%;height:58%;display:block;fill:currentColor}.nav-mini-label{font-family:var(--nav-font);font-weight:700;font-size:clamp(.6rem,1.4vw,1.05rem);line-height:1;text-transform:lowercase}.nav-mini--blank{opacity:.4;cursor:default}.nav-mini--blank:hover{background:#ff4d4d}.more-chevron{position:absolute;left:25%;bottom:calc(var(--cap) * .25);transform:translate(-50%);width:clamp(14px,1.8vw,22px);cursor:pointer;color:var(--body-color);opacity:.7;animation:chevron-bob 1.8s ease-in-out infinite}.more-chevron svg{display:block;width:100%;height:auto;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}@keyframes chevron-bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,30%)}}html.more-open .more-chevron{opacity:0;pointer-events:none}.nav-corner{grid-column:1 / -1;display:flex;flex-direction:column;gap:clamp(.3rem,.8vw,.5rem);min-width:0;min-height:0}.anim-toggle{display:flex;cursor:pointer;user-select:none}.anim-switch{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.anim-toggle-box{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:.32em .6em;background:#ff4d4d;color:#fff;font-family:var(--nav-font);font-weight:700;font-size:clamp(.55rem,.85vw,.72rem);text-transform:lowercase;line-height:1;transition:background-color .2s ease}.anim-switch:not(:checked)+.anim-toggle-box{background:var(--highlight)}.anim-toggle:hover .anim-toggle-box{opacity:.9}.anim-switch:focus-visible+.anim-toggle-box{outline:2px solid var(--highlight);outline-offset:2px}.nav-desc{flex:1 1 auto;display:flex;align-items:flex-start;justify-content:flex-start;text-align:left;background:#fff;border:1.5px solid var(--body-color);padding:clamp(.4rem,1vw,.6rem);overflow:hidden;cursor:default;min-height:0}.nav-desc-text{font-family:var(--body-font);font-size:clamp(.6rem,.95vw,.82rem);line-height:1.4;color:var(--highlight)}html.reduce-motion *,html.reduce-motion *:before,html.reduce-motion *:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.tile--contact{cursor:default;padding:0;container-type:inline-size}.contact-card{display:flex;flex-direction:column;gap:clamp(1.3rem,2.5vw,2.25rem);width:100%;height:100%;min-height:0}.contact-head{flex:0 0 auto;min-height:0;display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;gap:clamp(.5rem,2vw,1.25rem)}.contact-name{flex:0 1 auto;display:flex;flex-direction:column;margin:-.08em 0 0 -.06em;font-family:"lores-9-plus-narrow",var(--nav-font);font-weight:700;font-size:clamp(1.6rem,4.3vw,3.75rem);line-height:1.08;letter-spacing:-.04em;color:var(--title-color);text-transform:uppercase;white-space:nowrap}.contact-info{flex:0 1 auto;max-width:50%;display:flex;flex-direction:column;justify-content:space-between;text-align:right;font-family:var(--body-font);font-size:clamp(.78rem,1.05vw,.98rem);line-height:1.4;color:var(--body-color)}@media(min-width:681px)and (max-width:1024px){.contact-name{font-size:clamp(1.2rem,11cqi,2.6rem)}}.contact-welcome{display:none;flex-direction:column;font-family:var(--body-font);color:var(--body-color)}.contact-welcome p{margin:0}.contact-name[data-focus-message],.contact-welcome[data-focus-message]{cursor:pointer}.contact-form{flex:1 1 0;display:flex;flex-direction:column;gap:clamp(.35rem,.9vw,.55rem);min-height:0}.contact-honey{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.contact-email{flex:0 0 auto;width:100%;border:1.5px solid var(--body-color);background:transparent;font-family:var(--body-font);font-size:clamp(.65rem,1.05vw,.85rem);color:var(--fg);padding:clamp(.4rem,1vw,.6rem);border-radius:0;transition:border-color .18s ease}.contact-message-wrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.contact-message{flex:1 1 auto;width:100%;min-height:0;resize:none;border:1.5px solid var(--body-color);background:transparent;font-family:var(--body-font);font-size:clamp(.65rem,1.05vw,.85rem);color:var(--fg);padding:clamp(.4rem,1vw,.6rem);padding-bottom:calc(var(--cap) + .4rem);border-radius:0;line-height:1.45;transition:border-color .18s ease}.contact-email::placeholder,.contact-message::placeholder{color:var(--body-color);opacity:.6}.contact-email:focus,.contact-message:focus{outline:none;border-color:var(--highlight)}.contact-submit{position:absolute;right:0;bottom:0;height:var(--cap);min-width:0;border:none;background:var(--body-color);color:#fff;font-family:var(--nav-font);font-weight:700;font-size:clamp(.85rem,1.45vw,1.2rem);text-transform:lowercase;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0 .9em;transition:background-color .5s ease,color .5s ease}.contact-submit:hover,.contact-submit:focus-visible,.contact-submit[data-state=working],.contact-submit[data-state=result]{background:var(--highlight);outline:none}.contact-submit-dots{display:none;align-items:center;gap:.32em}.contact-submit[data-state=working] .contact-submit-label{display:none}.contact-submit[data-state=working] .contact-submit-dots{display:inline-flex}.contact-submit-dots i{width:.34em;height:.34em;border-radius:50%;background:currentColor;opacity:.2;animation:send-dot 1.05s infinite ease-in-out}.contact-submit-dots i:nth-child(2){animation-delay:.18s}.contact-submit-dots i:nth-child(3){animation-delay:.36s}@keyframes send-dot{0%,to{opacity:.2}50%{opacity:1}}.pixel-overlay{position:absolute;inset:0;z-index:4;display:grid;pointer-events:none}.pixel-cell{background:var(--bg);box-shadow:0 0 0 1px var(--bg);opacity:0}.stage>.pixel-overlay{z-index:8}.writeups{display:contents}.writeup{position:absolute;inset:0;z-index:6;display:block;overflow-y:auto;background:var(--bg)}.writeup[hidden]{display:none!important}.writeup-inner{padding:var(--grid-pad)}.wrap-hero{float:left;margin:0 var(--grid-gap) var(--grid-gap) 0;overflow:hidden;background:var(--bg)}.wrap-hero-img{display:block;width:100%;height:100%;object-fit:cover}.writeup-bar{position:sticky;top:0;z-index:2;height:var(--marquee-h);display:flex;align-items:center;overflow:hidden;background:var(--bg);border-bottom:1.5px solid var(--body-color);cursor:pointer}.writeup-bar-track{display:flex;flex:none;white-space:nowrap;animation:marquee-scroll 130s linear infinite;will-change:transform}.writeup-bar-item{font-family:"lores-9-plus-narrow",var(--nav-font);font-weight:700;font-size:clamp(1.1rem,2.8vw,2rem);letter-spacing:-.03em;line-height:1;text-transform:uppercase;color:var(--title-color);padding:0 .55em}.writeup-bar:hover .writeup-bar-item{color:var(--highlight)}.stage.animating .writeup-bar-track{animation-play-state:paused}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.writeup-title{font-family:"lores-9-plus-narrow",var(--nav-font);font-weight:700;font-size:clamp(1.6rem,3.6vw,3.2rem);line-height:1.02;letter-spacing:-.03em;text-transform:uppercase;color:var(--title-color);margin:0 0 .45em}.uc-notice{display:inline-block;font-family:var(--nav-font);font-weight:700;font-size:clamp(.7rem,1.2vw,.9rem);line-height:1.4;text-transform:lowercase;color:#fff;background:#ff4d4d;padding:.35em .7em;margin:0 0 .6em}.project-desc{font-family:var(--body-font);font-weight:700;font-size:clamp(.85rem,1.5vw,1.15rem);line-height:1.55;color:var(--fg);margin:0 0 .7em}.project-body{font-family:var(--body-font);font-size:clamp(.85rem,1.5vw,1.1rem);font-weight:400;line-height:1.6;letter-spacing:-.01em;color:var(--body-color);text-align:justify}.project-body p{margin:0 0 .85em}.project-body p:last-child{margin-bottom:0}.project-body h2{display:inline-block;background:var(--title-color);color:#fff;font-family:var(--nav-font);font-weight:700;font-size:clamp(.62rem,1vw,.8rem);letter-spacing:.01em;text-transform:uppercase;line-height:1.4;padding:.34em .7em;margin-top:var(--gap-sm);margin-bottom:.6rem}.project-body h2+.proj-row,.project-body h2+.proj-full,.project-body h2+.proj-split,.project-body h2+.proj-posters,.project-body h2+.carousel,.project-body h2+.img-grid,.project-body h2+.hero-pair,.project-body h2+.hero-trio{margin-top:var(--gap-sm)}.project-body h3{font-family:var(--body-font);font-weight:700;font-size:.65rem;text-transform:uppercase;color:var(--title-color);margin-top:1rem;margin-bottom:.3rem}.project-body ul,.project-body ol{padding-left:1.1rem;margin-bottom:.9rem}.project-body li{margin-bottom:.2rem}.project-body a{color:var(--accent);text-decoration:underline}.project-body strong{font-weight:700}.project-body em{font-style:italic}.project-body img{max-width:100%;height:auto;display:block;margin:1.5rem 0;cursor:zoom-in}.project-body a.cv-download{display:inline-flex;align-items:center;gap:.5em;margin:0 0 var(--gap-sm);padding:.7em 1.2em;background:var(--body-color);color:#fff;font-family:var(--nav-font);font-weight:700;font-size:clamp(.85rem,1.4vw,1.1rem);line-height:1;text-transform:lowercase;text-decoration:none;transition:background-color .2s ease}.project-body a.cv-download:hover,.project-body a.cv-download:focus-visible{background:var(--highlight);outline:none}.cv-download-icon{width:1.15em;height:1.15em;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.project-body img.cv-page{max-width:720px;margin:0 auto var(--gap-sm);border:1.5px solid var(--body-color)}.project-body{--gap-sm: clamp(20px, 2.4vw, 36px);--gap-lg: clamp(54px, 12vw, 240px)}.proj-full{clear:both;margin:var(--gap-lg) calc(-1 * var(--grid-pad)) 0;width:calc(100% + 2 * var(--grid-pad))}.proj-full img{width:100%;height:auto;margin:0;display:block}.project-body .proj-aside{clear:both;max-width:min(52%,30rem);margin:var(--gap-sm) 0 0}.project-body .proj-aside--r{margin-left:auto;text-align:left}.project-body .proj-clear{clear:both}.project-body .proj-full+.proj-aside{margin-top:var(--grid-pad)}.project-body .proj-aside--r+.proj-full{margin-top:var(--gap-sm)}.proj-row{clear:both;display:flex;align-items:center;gap:var(--gap-sm);margin:var(--gap-lg) 0}.proj-row--rev{flex-direction:row-reverse}.proj-media{flex:1 1 56%;margin:0;min-width:0}.proj-media img{width:100%;height:auto;margin:0}.proj-media--a4{flex:0 0 36%}.proj-text{flex:1 1 44%}.proj-media--carousel{flex:0 0 clamp(220px,38%,400px)}.proj-media--carousel .carousel{margin:0}.proj-split{clear:both;display:flex;align-items:center;gap:var(--gap-sm);margin:var(--gap-lg) calc(-1 * var(--grid-pad));width:calc(100% + 2 * var(--grid-pad))}.proj-split .proj-split-img{flex:0 0 auto;height:clamp(300px,40vw,560px);width:auto;max-width:none;margin:0;cursor:zoom-in}.proj-split .proj-text{flex:1 1 auto;align-self:center}.proj-split .proj-split-full{display:none}.project-body .proj-split{margin-bottom:calc(var(--gap-lg) - 2 * var(--gap-sm))}.project-body .proj-split+.proj-row{margin-top:calc(var(--gap-lg) - 2 * var(--gap-sm))}.proj-posters{clear:both;margin:var(--gap-lg) 0 0}.project-body .proj-poster-a4{float:right;width:calc((100% - 2 * var(--gap-sm)) / 3);height:auto;margin:0 0 0 var(--gap-sm)}.proj-poster-squares{display:flex;gap:var(--gap-sm);overflow:hidden}.proj-poster-squares img{flex:1 1 0;width:100%;height:auto;margin:0;min-width:0}.project-body .qa{clear:both;margin:var(--gap-sm) 0;padding:clamp(1rem,2.4vw,1.6rem) 0;border-top:1.5px solid var(--body-color);border-bottom:1.5px solid var(--body-color)}.project-body .qa-kicker{font-family:var(--nav-font);font-weight:700;font-size:clamp(.55rem,.9vw,.72rem);letter-spacing:.04em;text-transform:lowercase;color:var(--body-color);margin:0 0 clamp(.9rem,2vw,1.4rem)}.project-body .qa-list{list-style:none;margin:0;padding:0;counter-reset:qa}.project-body .qa-list li{counter-increment:qa;position:relative;padding-left:clamp(2.6rem,6vw,4.4rem);margin-bottom:clamp(1.1rem,2.6vw,1.7rem)}.project-body .qa-list li:last-child{margin-bottom:0}.project-body .qa-list li:before{content:counter(qa,decimal-leading-zero);position:absolute;left:0;top:-.06em;font-family:"lores-9-plus-narrow",var(--nav-font);font-weight:700;font-size:clamp(1.3rem,3vw,2.2rem);line-height:1;letter-spacing:-.03em;color:var(--highlight)}.project-body .qa-q{display:block;font-family:var(--body-font);font-weight:700;font-size:clamp(.98rem,1.9vw,1.45rem);line-height:1.3;letter-spacing:-.01em;color:var(--body-color);text-align:left;text-wrap:balance}.project-body .qa-a{display:block;margin-top:.55em;font-family:var(--body-font);font-weight:400;font-size:clamp(.82rem,1.3vw,1rem);line-height:1.45;letter-spacing:-.01em;color:var(--fg);text-align:left}.project-body .qa-cite{display:block;margin-top:.3em;font-family:var(--nav-font);font-weight:700;font-size:clamp(.5rem,.82vw,.68rem);letter-spacing:.04em;color:var(--highlight);text-align:left}.project-body:has(>h2)>p:first-of-type{display:flow-root}.project-body:has(>h2)>p:first-of-type+*{clear:both}.img-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2em;width:100%;aspect-ratio:3 / 2;background:repeating-linear-gradient(45deg,#f2f2f2 0 11px,#e9e9e9 11px 22px);border:1.5px dashed var(--body-color);color:var(--body-color);font-family:var(--nav-font);font-weight:700;text-transform:lowercase;font-size:clamp(.72rem,1.1vw,.95rem);text-align:center}.img-placeholder small{font-weight:400;opacity:.6}@media(max-width:680px){.proj-row,.proj-row--rev{flex-direction:column;align-items:stretch;gap:var(--gap-sm)}.proj-media--a4,.proj-media--carousel{flex:1 1 auto}.project-body .proj-aside,.project-body .proj-aside--r{max-width:100%;margin-left:0}.proj-split{flex-direction:column}.proj-split .proj-split-img{display:none}.proj-split .proj-split-full{display:block;height:auto;width:72%;max-width:72%;margin:0 auto}.proj-posters{display:flex;flex-direction:column;gap:var(--gap-sm)}.project-body .proj-poster-a4{float:none;width:100%;margin:0;order:2}.proj-poster-squares{order:1}}.hero-pair{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-bottom:1.5rem}.hero-pair img{aspect-ratio:3 / 2;object-fit:cover;width:100%;margin:0;display:block;cursor:zoom-in}.img-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;margin:1.5rem 0;clear:both}.img-grid img{aspect-ratio:1 / 1;object-fit:cover;width:100%;margin:0;display:block;cursor:zoom-in}.hero-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;margin-bottom:1.5rem}.hero-trio img{aspect-ratio:3 / 2;object-fit:cover;width:100%;margin:0;display:block;cursor:zoom-in}.carousel{position:relative;margin:1.5rem 0;clear:both}.carousel-track{display:flex;align-items:flex-start;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;transition:height .3s ease}.carousel-track::-webkit-scrollbar{display:none}html.reduce-motion .carousel-track{transition:none}.carousel-slide{flex:0 0 100%;scroll-snap-align:center}.carousel-slide img,.carousel>img{width:100%;height:auto;display:block;margin:0;cursor:zoom-in}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);width:2.4rem;height:2.4rem;border:none;background:#1c1c1c8c;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;transition:background .15s ease}.carousel-btn:hover{background:var(--accent)}.carousel-prev{left:.4rem}.carousel-next{right:.4rem}.carousel-counter{position:absolute;bottom:.5rem;right:.5rem;z-index:2;background:#1c1c1c8c;color:#fff;font-family:var(--body-font);font-size:.75rem;line-height:1;padding:.25rem .45rem}.lightbox-overlay{position:fixed;inset:0;background:#000000e6;z-index:200;display:flex;align-items:center;justify-content:center;cursor:zoom-out}.lightbox-overlay[hidden]{display:none}.lightbox-overlay.lb-open{animation:lb-in .18s ease both}.lightbox-overlay.lb-out{animation:lb-out .15s ease both}.lightbox-img{max-width:min(90vw,1200px);max-height:90dvh;object-fit:contain;display:block;pointer-events:none;box-shadow:0 8px 48px #00000080}@keyframes lb-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes lb-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}@media(max-width:680px){.landing-page{height:auto;overflow-y:auto;overflow-x:hidden}.stage{height:auto;min-height:100svh}.landing-grid{grid-template-columns:1fr;grid-template-rows:none;height:auto}.tile{position:relative;inset:auto}.tile--photo{height:68vw}.tile--contact{height:auto;min-height:0}.cell:has(.tile--about){display:none}.tile--nav{height:88vw;padding-bottom:0}.more-tile{height:52vw}.more-chevron{display:none}.project-body a.cv-download{display:flex;justify-content:center;width:100%;padding:.95em 1em}.project-body img.cv-page{max-width:100%}.contact-card{height:auto;gap:clamp(1.6rem,5.5vw,2.4rem);padding:.2rem 0 .6rem}.contact-head{flex:0 0 auto}.contact-name{font-size:clamp(2.4rem,9vw,3.6rem)}.contact-info{font-size:.82rem}.contact-form{flex:0 0 auto;gap:.55rem;margin-top:clamp(1.6rem,5.5vw,2.4rem)}.contact-email,.contact-message{font-size:.92rem}.contact-message{height:clamp(150px,30vw,200px);flex:0 0 auto}.contact-welcome{display:flex;gap:1em;font-size:clamp(1.15rem,5vw,1.4rem);line-height:1.4}.nav-box{font-size:.8rem}.anim-toggle-box{font-size:.7rem}.nav-desc-text{font-size:.78rem}.more-grid{grid-template-columns:1fr;grid-auto-rows:52vw}.writeup{position:fixed;z-index:100}html.view-open .landing-page{overflow:hidden}.wrap-hero{float:none;width:100%!important;height:auto!important;margin:0 0 1rem}.wrap-hero-img{height:auto;aspect-ratio:3 / 2}}
