:root{--ink:#0b0d0c;--paper:#f1f0ea;--lime:#c9ff3d;--blue:#4967ff;--muted:#a5a7a2;--line:rgba(241,240,234,.18);--pad:clamp(1.25rem,4vw,4.75rem)}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:82px}body{margin:0;background:var(--ink);color:var(--paper);font-family:Manrope,system-ui,sans-serif;font-size:16px;overflow-x:hidden}.noise{position:fixed;inset:0;pointer-events:none;opacity:.035;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E")}.site-header{height:82px;padding:0 var(--pad);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);position:sticky;top:0;left:0;right:0;z-index:30;background:rgba(11,13,12,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:.7rem;font-weight:700}.brand span{display:grid;place-items:center;background:var(--lime);color:var(--ink);width:34px;height:34px;border-radius:50%;font-size:.72rem}a{color:inherit;text-decoration:none}.site-header nav{display:flex;gap:2rem;font-family:"DM Mono";font-size:.78rem;text-transform:uppercase}.site-header nav a{position:relative;color:var(--muted);transition:.25s}.site-header nav a:hover,.site-header nav a.active{color:var(--paper)}.site-header nav a.active:after{content:"";position:absolute;left:0;right:0;bottom:-1.05rem;height:2px;background:var(--lime)}.section-status{justify-self:end;text-align:right;text-transform:uppercase;font-family:"DM Mono"}.section-status span{display:block;color:var(--muted);font-size:.6rem;letter-spacing:.08em}.section-status b{font-size:.75rem;font-weight:500;color:var(--lime)}.hero{min-height:calc(100vh - 82px);padding:clamp(5rem,10vh,8rem) var(--pad) 0;display:flex;flex-direction:column;overflow:hidden}.eyebrow,.kicker,.project-no{font:400 .75rem/1.4 "DM Mono",monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--lime)}.hero h1{font-size:clamp(4.2rem,10.8vw,10.5rem);line-height:.84;letter-spacing:-.075em;margin:clamp(2rem,6vh,4rem) 0 0;font-weight:600}.hero h1 em{font-weight:400;color:var(--lime);font-style:normal}.hero-bottom{margin-top:auto;display:grid;grid-template-columns:minmax(280px,.8fr) 1.4fr;align-items:end;gap:clamp(3rem,8vw,8rem);padding:3rem 0}.hero-bottom>p{max-width:510px;font-size:clamp(1.05rem,1.6vw,1.45rem);line-height:1.55;margin:0}.hero-jumps{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}.hero-jumps a{min-height:112px;padding:1rem;border-right:1px solid var(--line);display:grid;grid-template-columns:1fr auto;align-content:space-between;font:500 .78rem "DM Mono";text-transform:uppercase;transition:.25s}.hero-jumps a:last-child{border-right:0}.hero-jumps a span{grid-column:1/-1;color:var(--muted);font-size:.65rem}.hero-jumps a b{color:var(--lime);font-size:1.2rem}.hero-jumps a:hover{background:var(--lime);color:var(--ink)}.hero-jumps a:hover span,.hero-jumps a:hover b{color:var(--ink)}.ticker{margin:0 calc(var(--pad)*-1);background:var(--lime);color:var(--ink);padding:.75rem 0;font:500 .73rem "DM Mono";white-space:nowrap;overflow:hidden}.ticker div{width:max-content;animation:ticker 24s linear infinite}@keyframes ticker{to{transform:translateX(-50%)}}.section{padding:clamp(6rem,12vw,11rem) var(--pad);scroll-margin-top:82px}.section-head{display:grid;grid-template-columns:1fr 2.35fr;gap:2rem;margin-bottom:clamp(3rem,7vw,6rem)}.section-head h2,.about h2,.contact h2{font-size:clamp(2.8rem,6vw,6rem);line-height:.95;letter-spacing:-.055em;margin:0;font-weight:600}.section-head h2 span{color:var(--muted)}.project{border-top:1px solid var(--line);padding-top:1.25rem}.project-featured{display:grid;grid-template-columns:minmax(260px,.8fr) 1.65fr;gap:clamp(2rem,5vw,5rem)}.project-copy{display:flex;flex-direction:column;align-items:flex-start}.project h3{font-size:clamp(1.8rem,3vw,3rem);line-height:1.08;letter-spacing:-.035em;margin:2rem 0 1rem}.project-copy>p:not(.project-no),.mini>p{color:var(--muted);line-height:1.7}.project-copy ul{padding:0;margin:1.5rem 0 2rem;list-style:none;font:400 .76rem "DM Mono"}.project-copy li{border-top:1px solid var(--line);padding:.65rem 0;width:100%}.text-button{margin-top:auto;background:none;border:0;color:var(--paper);font:500 .8rem "DM Mono";text-transform:uppercase;border-bottom:1px solid var(--paper);padding:.5rem 0;cursor:pointer}.text-button span{color:var(--lime)}.lab{min-height:520px;position:relative;background:#181b19;overflow:hidden;cursor:crosshair}.lab canvas{width:100%;height:100%;display:block}.lab-ui{position:absolute;left:1rem;right:1rem;bottom:1rem;display:flex;justify-content:space-between;align-items:center;font:400 .68rem "DM Mono"}.lab-ui button{background:var(--lime);border:0;padding:.6rem .8rem;font:500 .67rem "DM Mono";cursor:pointer}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,3vw,3rem);margin-top:clamp(4rem,7vw,7rem)}.mini-visual{height:360px;margin-bottom:1.25rem;position:relative;overflow:hidden}.visual-one{background:var(--blue);display:grid;place-items:center}.orb{width:150px;height:150px;border-radius:50%;background:var(--lime);filter:blur(2px);box-shadow:0 0 0 30px rgba(201,255,61,.12),0 0 0 70px rgba(201,255,61,.06);transition:.5s}.visual-one:hover .orb{transform:scale(1.4);filter:blur(12px)}.metric{position:absolute;bottom:1.4rem;left:1.4rem;font-size:3.7rem;line-height:.85;font-weight:700}.metric small{display:block;font:400 .7rem "DM Mono";text-transform:uppercase;margin-top:.65rem}.visual-two{background:var(--paper);color:var(--ink);padding:2rem}.plot{height:100%;display:flex;align-items:end;gap:3%;border-bottom:1px solid var(--ink)}.plot i{display:block;flex:1;background:var(--ink);height:20%;transition:.5s}.plot i:nth-child(2){height:38%}.plot i:nth-child(3){height:26%}.plot i:nth-child(4){height:72%;background:var(--blue)}.plot i:nth-child(5){height:55%}.plot i:nth-child(6){height:82%;background:var(--lime)}.plot i:nth-child(7){height:66%}.visual-two:hover .plot i{height:var(--h,90%)}.plot-label{position:absolute;top:1rem;left:1rem;font:500 .68rem "DM Mono"}.about{background:var(--paper);color:var(--ink);display:grid;grid-template-columns:1fr 2.35fr;gap:clamp(2rem,6vw,7rem)}.about .kicker{color:var(--blue)}.portrait-placeholder{margin-top:4rem;aspect-ratio:4/5;max-width:330px;background:var(--ink);color:var(--paper);display:flex;flex-direction:column;justify-content:space-between;padding:1.2rem;font:500 1.8rem/1 "DM Mono";background-image:linear-gradient(135deg,transparent 49.5%,var(--lime) 50%,transparent 50.5%)}.portrait-placeholder small{font-size:.65rem}.about-copy .lead{font-size:clamp(1.35rem,2.2vw,2.1rem);line-height:1.35;margin:3rem 0}.about-copy>p:not(.lead){max-width:690px;color:#525551;font-size:1.05rem;line-height:1.8}.principles{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:3rem}.principles span{border:1px solid #a8aaa6;border-radius:99px;padding:.65rem 1rem;font:500 .7rem "DM Mono";text-transform:uppercase}.timeline details{border-top:1px solid var(--line)}.timeline details:last-child{border-bottom:1px solid var(--line)}.timeline summary{display:grid;grid-template-columns:.55fr 1.4fr 1fr auto;gap:1rem;align-items:center;padding:1.6rem 0;cursor:pointer;list-style:none}.timeline summary::-webkit-details-marker{display:none}.timeline summary span,.timeline summary i{font:400 .72rem "DM Mono";color:var(--muted);font-style:normal}.timeline summary b{font-size:clamp(1.05rem,1.8vw,1.45rem)}.timeline summary em{font-size:1.5rem;font-style:normal;color:var(--lime);transition:.3s}.timeline details[open] summary em{transform:rotate(45deg)}.timeline details div{padding:0 25% 2rem}.timeline details div p{color:var(--muted);line-height:1.7}.contact{background:var(--lime);color:var(--ink);padding:clamp(5rem,10vw,9rem) var(--pad)}.contact .kicker{color:var(--ink)}.contact h2{font-size:clamp(4rem,10vw,9rem);margin:2rem 0 4rem}.contact>a{font-size:clamp(1.1rem,2.5vw,2rem);border-bottom:2px solid;padding-bottom:.4rem}.contact>a span{color:var(--blue)}footer{padding:2rem var(--pad);display:flex;justify-content:space-between;font:400 .68rem "DM Mono";text-transform:uppercase;color:var(--muted)}dialog{width:min(800px,calc(100% - 2rem));max-height:90vh;background:var(--paper);color:var(--ink);border:0;padding:clamp(2rem,5vw,5rem);box-shadow:0 30px 100px rgba(0,0,0,.6)}dialog::backdrop{background:rgba(11,13,12,.82);backdrop-filter:blur(8px)}.dialog-close{position:absolute;right:1.5rem;top:1.2rem;border:0;background:none;font-size:2rem;cursor:pointer}.dialog-lead{font-size:1.3rem;line-height:1.5}.case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;border-block:1px solid #bbb;padding:1.4rem 0;margin:2.5rem 0}.case-grid span,.case-grid b{display:block}.case-grid span{font:.65rem "DM Mono";text-transform:uppercase;color:#737672;margin-bottom:.4rem}dialog h2{font-size:clamp(2.5rem,6vw,5rem);letter-spacing:-.05em;margin:1rem 0 2rem}dialog h3{margin-top:2.5rem}dialog p{line-height:1.75}.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}@media(max-width:760px){.site-header{grid-template-columns:1fr auto}.site-header nav{position:fixed;left:0;right:0;bottom:0;height:58px;background:rgba(11,13,12,.96);display:grid;grid-template-columns:repeat(3,1fr);align-items:center;text-align:center;gap:0;border-top:1px solid var(--line);z-index:40}.site-header nav a.active:after{bottom:-.95rem}.section-status{display:none}.hero{min-height:calc(100vh - 82px)}.hero h1{font-size:clamp(3.6rem,17vw,6.4rem)}.hero-bottom{grid-template-columns:1fr;gap:2rem}.hero-jumps a{min-height:88px;padding:.75rem;font-size:.68rem}.section-head,.project-featured,.about{grid-template-columns:1fr}.section-head{gap:1rem}.project-featured{gap:2rem}.lab{min-height:390px}.project-grid{grid-template-columns:1fr}.mini-visual{height:300px}.about-label{display:grid;grid-template-columns:1fr 1fr}.portrait-placeholder{margin:0;justify-self:end}.timeline summary{grid-template-columns:.6fr 1.4fr auto}.timeline summary i{display:none}.timeline details div{padding:0 0 2rem 25%}.case-grid{grid-template-columns:1fr}footer{padding-bottom:5rem;gap:1rem;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ticker div{animation:none}.reveal{opacity:1;transform:none;transition:none}*{transition-duration:.01ms!important}}
main{display:flex;flex-direction:column}.hero{order:0}.about{order:1}.hobbies{order:2}.path{order:3}.work{order:4}.contact{order:5}
.project-index{border-top:1px solid var(--line)}.project-row{display:grid;grid-template-columns:5rem minmax(0,1fr) 15rem auto;gap:1.5rem;align-items:center;padding:clamp(1.5rem,3vw,2.5rem) 0;border-bottom:1px solid var(--line);transition:padding .28s ease,color .28s ease}.project-row:hover{padding-left:1.2rem;color:var(--lime)}.project-row h3{margin:0;font-size:clamp(1.35rem,2.5vw,2.45rem);line-height:1.08;letter-spacing:-.035em}.project-row p{margin:0;color:var(--muted);font:400 .72rem "DM Mono";text-transform:uppercase}.project-number{color:var(--lime);font:400 .72rem "DM Mono"}.project-row i{font-style:normal;font-size:1.5rem}@media(max-width:760px){.project-row{grid-template-columns:2rem 1fr auto;gap:.8rem}.project-row p{grid-column:2/4}.project-row:hover{padding-left:.4rem}}
.project-expanded{border-bottom:1px solid var(--line)}.project-row-open{border-bottom:0;color:var(--lime)}.project-row-open:hover{padding-left:0}.cnc-case{padding:clamp(1rem,3vw,3rem) 0 clamp(5rem,9vw,9rem)}.case-intro{display:grid;grid-template-columns:1fr 2fr;gap:2rem;margin:0 0 clamp(2rem,5vw,4rem);padding-top:1.5rem;border-top:1px solid var(--line)}.case-intro>p:last-child{max-width:720px;margin:0;font-size:clamp(1.3rem,2.4vw,2.2rem);line-height:1.35;letter-spacing:-.025em}.cnc-case figure{margin:0}.cnc-case img{display:block;width:100%;height:auto}.cnc-case figcaption{font:400 .8rem/1.6 "DM Mono";color:var(--muted)}.cnc-case figcaption span{color:var(--lime);margin-right:.6rem}.media-feature{display:grid;grid-template-columns:1.65fr .65fr;align-items:end;gap:clamp(1.5rem,4vw,4rem);margin-bottom:clamp(4rem,8vw,8rem)!important}.media-feature img{max-height:850px;object-fit:cover;object-position:center}.media-feature figcaption{font-size:clamp(1rem,1.5vw,1.3rem);color:var(--paper);padding-bottom:1rem}.media-screen{background:var(--paper);padding:clamp(1rem,3vw,3rem);margin-bottom:clamp(4rem,8vw,8rem)!important}.media-screen img{border:1px solid rgba(11,13,12,.18)}.media-screen figcaption{color:#555955;margin-top:1rem}.media-screen figcaption span{color:var(--blue)}.calculation-flow{display:grid;grid-template-columns:1fr auto 1fr;gap:clamp(1rem,3vw,3rem);align-items:center;margin-bottom:clamp(4rem,8vw,8rem)!important}.flow-image{position:relative}.flow-image>span{position:absolute;left:1rem;top:1rem;z-index:2;background:var(--ink);padding:.5rem .7rem;font:500 .65rem "DM Mono";text-transform:uppercase}.flow-image img{aspect-ratio:4/3;object-fit:cover}.flow-arrow{display:flex;flex-direction:column;align-items:center;color:var(--lime);font:500 .65rem "DM Mono";text-transform:uppercase}.flow-arrow b{font-size:clamp(2rem,5vw,5rem);line-height:1}.calculation-flow>figcaption{grid-column:1/-1;font-size:clamp(1rem,1.5vw,1.3rem);color:var(--paper);margin-top:1rem}.cnc-media-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}.cnc-media-grid figure:first-child img{aspect-ratio:4/5;object-fit:cover}.cnc-media-grid figure:last-child img{background:var(--paper);aspect-ratio:4/5;object-fit:contain}.cnc-media-grid figcaption{margin-top:1rem}@media(max-width:760px){.case-intro,.media-feature{grid-template-columns:1fr}.media-feature{align-items:start}.calculation-flow{grid-template-columns:1fr}.flow-arrow{transform:none;flex-direction:row;justify-content:center;gap:.8rem;padding:.5rem}.flow-arrow b{transform:rotate(90deg)}.cnc-media-grid{grid-template-columns:1fr}.cnc-case{padding-bottom:4rem}}
.cnc-case{max-width:1240px;margin-inline:auto}.case-intro{align-items:end}.media-feature{display:block;position:relative;margin-bottom:clamp(3rem,7vw,6.5rem)!important}.media-feature img{width:100%;aspect-ratio:16/8.4;max-height:none;object-fit:cover;border-radius:2px}.media-feature figcaption{display:grid;grid-template-columns:8rem minmax(0,42rem);gap:1rem;margin-top:1.25rem;padding:0;font-size:clamp(.95rem,1.35vw,1.15rem);line-height:1.55}.media-feature figcaption span,.calculation-flow>figcaption span{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em}.media-screen{max-width:1080px;margin-inline:auto!important;margin-bottom:clamp(4rem,8vw,7rem)!important;padding:clamp(.75rem,2vw,1.4rem);border-radius:2px;box-shadow:0 28px 80px rgba(0,0,0,.22)}.media-screen img{width:100%;aspect-ratio:1110/826;object-fit:cover}.media-screen figcaption{display:grid;grid-template-columns:2rem 1fr;max-width:720px}.calculation-flow{grid-template-columns:minmax(0,1fr) clamp(3.5rem,7vw,7rem) minmax(0,1fr);gap:clamp(.7rem,2vw,2rem);align-items:center;padding:clamp(.75rem,2vw,1.5rem);background:#171a18;border:1px solid var(--line);margin-bottom:clamp(4rem,8vw,7rem)!important}.flow-image{overflow:hidden;background:var(--paper)}.flow-image img{width:100%;aspect-ratio:4/3;object-fit:cover}.flow-arrow{gap:.4rem}.flow-arrow b{font-size:clamp(2.5rem,5vw,4.5rem);font-weight:300}.calculation-flow>figcaption{display:grid;grid-template-columns:8rem 1fr;gap:1rem;padding:.4rem .25rem 0;margin-top:0}.cnc-media-grid{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(1.25rem,3vw,3rem)}.cnc-media-grid figure{padding:clamp(.6rem,1vw,1rem);background:#171a18;border:1px solid var(--line)}.cnc-media-grid figure:first-child img,.cnc-media-grid figure:last-child img{aspect-ratio:4/4.5;object-fit:cover}.cnc-media-grid figure:last-child img{object-fit:contain}.cnc-media-grid figcaption{padding:.25rem .15rem 0;display:grid;grid-template-columns:2rem 1fr}@media(max-width:760px){.media-feature figcaption,.calculation-flow>figcaption{grid-template-columns:1fr}.calculation-flow{grid-template-columns:minmax(0,1fr) 2rem minmax(0,1fr);padding:.45rem;gap:.35rem}.flow-arrow{flex-direction:column;padding:0;gap:.2rem}.flow-arrow b{transform:none;font-size:1.8rem}.flow-arrow span{font-size:.48rem;writing-mode:vertical-rl}.flow-image>span{left:.35rem;top:.35rem;padding:.3rem;font-size:.5rem}.flow-image img{aspect-ratio:1/1;object-fit:cover}.cnc-media-grid{grid-template-columns:1fr}.media-feature img{aspect-ratio:4/3}.case-intro{grid-template-columns:1fr}}
.media-feature{max-width:1020px;margin-inline:auto!important}.media-screen{max-width:900px}.cnc-media-grid{align-items:stretch}.cnc-media-grid figure{display:flex;flex-direction:column;height:100%}.cnc-media-grid figure:first-child img,.cnc-media-grid figure:last-child img{aspect-ratio:4/4.25}.cnc-media-grid figcaption{grid-template-columns:9rem 1fr;align-items:start;flex:1;min-height:4.5rem}.cnc-media-grid figcaption span{font-size:.62rem;text-transform:uppercase;letter-spacing:.07em}@media(max-width:760px){.media-feature,.media-screen{max-width:92%}.cnc-media-grid figcaption{grid-template-columns:7.5rem 1fr;min-height:0}}
.site-header{height:64px}.hero{min-height:calc(100vh - 64px)}html{scroll-padding-top:64px}.section{scroll-margin-top:64px}.project-expanded>.project-row-open{position:sticky;top:64px;z-index:18;background:rgba(11,13,12,.96);backdrop-filter:blur(14px);padding:.65rem 0;border-block:1px solid var(--line);grid-template-columns:3rem minmax(0,1fr) 12rem auto}.project-expanded>.project-row-open h3{font-size:clamp(1rem,1.5vw,1.3rem);letter-spacing:-.02em}.project-expanded>.project-row-open p{font-size:.62rem}.project-expanded>.project-row-open i{font-size:1rem}.cnc-media-grid figure:first-child img,.cnc-media-grid figure:last-child img{width:100%;height:clamp(360px,38vw,560px);aspect-ratio:auto;flex:none}.cnc-media-grid figure:first-child img{object-fit:cover}.cnc-media-grid figure:last-child img{object-fit:contain}.cnc-media-grid figcaption{min-height:5.25rem}@media(max-width:760px){.project-expanded>.project-row-open{top:64px;grid-template-columns:2rem 1fr auto;padding:.55rem 0}.project-expanded>.project-row-open p{display:none}.cnc-media-grid figure:first-child img,.cnc-media-grid figure:last-child img{height:360px}.cnc-media-grid figcaption{min-height:0}}
.project-expanded>.project-row-open{padding:clamp(1.5rem,3vw,2.5rem) 0;border-top:0;grid-template-columns:5rem minmax(0,1fr) 15rem auto;transition:padding .28s ease,grid-template-columns .28s ease,box-shadow .28s ease}.project-expanded>.project-row-open h3{font-size:clamp(1.35rem,2.5vw,2.45rem);letter-spacing:-.035em;transition:font-size .28s ease,letter-spacing .28s ease}.project-expanded>.project-row-open p{font-size:.72rem;transition:font-size .28s ease}.project-expanded>.project-row-open i{font-size:1.5rem;transition:font-size .28s ease,transform .28s ease}.project-expanded>.project-row-open.is-stuck{padding:.58rem 0;grid-template-columns:3rem minmax(0,1fr) 12rem auto;box-shadow:0 12px 28px rgba(0,0,0,.18)}.project-expanded>.project-row-open.is-stuck h3{font-size:clamp(1rem,1.5vw,1.3rem);letter-spacing:-.02em}.project-expanded>.project-row-open.is-stuck p{font-size:.62rem}.project-expanded>.project-row-open.is-stuck i{font-size:1rem;transform:rotate(-90deg)}@media(max-width:760px){.project-expanded>.project-row-open{grid-template-columns:2rem 1fr auto;padding:1.15rem 0}.project-expanded>.project-row-open p{display:none}.project-expanded>.project-row-open.is-stuck{grid-template-columns:2rem 1fr auto;padding:.48rem 0}.project-expanded>.project-row-open.is-stuck h3{font-size:.95rem}}
.project-subsection{display:grid;grid-template-columns:5rem minmax(0,1fr) auto;gap:1.5rem;align-items:end;padding:clamp(4rem,8vw,8rem) 0 clamp(2rem,4vw,4rem);border-bottom:1px solid var(--line)}.project-subsection .kicker{margin:0}.project-subsection h3{margin:0;max-width:760px;font-size:clamp(1.8rem,4vw,4rem);line-height:1.05;letter-spacing:-.045em}.project-subsection>span{font:400 .68rem "DM Mono";color:var(--muted);text-transform:uppercase}.hobbies{background:var(--blue);color:#fff}.hobbies .kicker{color:var(--lime)}.hobbies .section-head h2 span{color:rgba(255,255,255,.58)}.hobby-list{border-top:1px solid rgba(255,255,255,.28)}.hobby-card{border-bottom:1px solid rgba(255,255,255,.28)}.hobby-card summary{position:relative;display:grid;grid-template-columns:5rem minmax(0,1fr) auto;gap:1.5rem;align-items:center;padding:clamp(1.5rem,3vw,2.5rem) 0;cursor:pointer;list-style:none;transition:background .25s ease,padding .25s ease}.hobby-card summary::-webkit-details-marker{display:none}.hobby-card summary:hover{padding-inline:1.2rem;background:rgba(11,13,12,.13)}.hobby-card summary>span{align-self:start;font:400 .7rem "DM Mono";color:var(--lime)}.hobby-card summary h3{margin:0 0 .55rem;font-size:clamp(1.6rem,3.2vw,3.2rem);letter-spacing:-.04em}.hobby-card summary p{max-width:760px;margin:0;color:rgba(255,255,255,.74);line-height:1.65}.hobby-card summary em{grid-column:3;grid-row:1;font-size:2.25rem;font-style:normal;color:var(--lime);transition:transform .3s ease}.hobby-card summary small{grid-column:3;grid-row:1;align-self:end;margin-bottom:.05rem;font:400 .58rem "DM Mono";text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.6);transform:translateY(1rem);opacity:0;transition:transform .25s ease,opacity .25s ease}.hobby-card summary:hover small{transform:translateY(1.35rem);opacity:1}.hobby-card[open] summary em{transform:rotate(45deg)}.hobby-content{padding:0 0 clamp(2rem,5vw,5rem) 5rem}.video-frame{position:relative;aspect-ratio:16/9;max-width:1040px;background:var(--ink);box-shadow:0 26px 60px rgba(11,13,12,.28)}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.hobby-text p{max-width:700px;margin:0;font-size:clamp(1.2rem,2vw,1.8rem);line-height:1.5}.chess-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.chess-gallery figure{margin:0;background:rgba(11,13,12,.18);overflow:hidden}.chess-gallery img,.chess-gallery video{display:block;width:100%;height:440px;object-fit:cover;background:var(--ink)}.chess-gallery .gallery-wide{grid-column:span 2}.chess-gallery .gallery-wide img{height:560px}.chess-gallery .gallery-video{grid-column:span 2}.chess-gallery .gallery-video video{height:auto;max-height:680px}.chess-gallery figcaption{padding:.85rem 1rem;font:400 .68rem/1.5 "DM Mono";color:rgba(255,255,255,.78)}@media(max-width:760px){.project-subsection{grid-template-columns:2rem 1fr}.project-subsection>span{grid-column:2}.hobby-card summary{grid-template-columns:2rem minmax(0,1fr) auto;gap:.8rem}.hobby-card summary:hover{padding-inline:.5rem}.hobby-card summary small{display:none}.hobby-content{padding-left:0}.chess-gallery{grid-template-columns:1fr 1fr}.chess-gallery .gallery-wide,.chess-gallery .gallery-video{grid-column:1/-1}.chess-gallery img{height:300px}.chess-gallery .gallery-wide img{height:380px}}
.project-sticky-trigger{height:0;pointer-events:none}
.running-gallery{display:grid;grid-template-columns:1.1fr 1.15fr .8fr 1.05fr;gap:1rem;margin-top:1rem;max-width:1240px}.running-gallery figure{margin:0;background:rgba(11,13,12,.18);overflow:hidden}.running-gallery img{display:block;width:100%;height:360px;object-fit:cover}.running-gallery .running-sf img{object-fit:contain;background:rgba(11,13,12,.12)}.running-gallery figcaption{padding:.85rem 1rem;font:400 .68rem/1.5 "DM Mono";color:rgba(255,255,255,.78)}@media(max-width:760px){.running-gallery{grid-template-columns:1fr 1fr}.running-gallery img{height:260px}}
.chess-gallery{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.chess-gallery figure{align-self:start}.chess-gallery img,.chess-gallery video,.chess-gallery .gallery-wide img{width:100%;height:auto;object-fit:contain}.challenge-pair{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.challenge-pair figure{height:auto}.chess-puzzle{grid-column:1/-1;display:grid;grid-template-columns:minmax(240px,.65fr) minmax(320px,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:center;padding:clamp(1.25rem,3vw,2.5rem);background:var(--ink);color:var(--paper)}.puzzle-copy h4{margin:.6rem 0 1rem;font-size:clamp(2rem,4vw,4rem);line-height:1;letter-spacing:-.045em}.puzzle-copy>p:not(.kicker){color:var(--muted);line-height:1.6}.puzzle-feedback{min-height:3.2rem}.puzzle-copy button,.puzzle-copy a{display:inline-block;margin:.6rem .6rem 0 0;padding:.7rem .9rem;border:1px solid var(--lime);background:transparent;color:var(--lime);font:500 .68rem "DM Mono";text-transform:uppercase;cursor:pointer}.puzzle-board{width:min(100%,620px);aspect-ratio:1;display:grid;grid-template-columns:repeat(8,1fr);border:1px solid rgba(255,255,255,.3)}.puzzle-square{position:relative;display:grid;place-items:center;padding:0;border:0;font-size:clamp(1.7rem,4.4vw,4rem);line-height:1;cursor:pointer}.puzzle-square.light{background:#e5e1cf}.puzzle-square.dark{background:#687d51}.puzzle-square.selected{box-shadow:inset 0 0 0 5px var(--lime)}.puzzle-square.target{box-shadow:inset 0 0 0 5px #ffcc3d}.puzzle-square small{position:absolute;left:3px;bottom:2px;font:500 .52rem "DM Mono";color:rgba(11,13,12,.6)}@media(max-width:760px){.challenge-pair{grid-template-columns:1fr 1fr}.chess-puzzle{grid-template-columns:1fr}.puzzle-board{justify-self:center}.chess-gallery{grid-template-columns:1fr}.challenge-pair,.chess-puzzle{grid-column:1}.running-gallery .running-sf img{object-fit:contain}}
.puzzle-piece{font-family:"Times New Roman","DejaVu Serif",serif;font-weight:400;transform:translateY(-2%)}.puzzle-piece.black{color:#10120f;text-shadow:0 1px 0 rgba(255,255,255,.28)}.puzzle-piece.white{color:#fffdf3;-webkit-text-stroke:1.5px #111;text-shadow:0 2px 2px rgba(0,0,0,.45)}
.language-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,5vw,4rem)}.language-gallery figure{margin:0;background:rgba(11,13,12,.18);align-self:start}.language-gallery img{display:block;width:100%;height:auto}.language-gallery .language-feature,.language-gallery .language-certificate{grid-column:1/-1}.language-gallery figcaption{padding:.85rem 1rem;font:400 .68rem/1.5 "DM Mono";color:rgba(255,255,255,.78)}.language-certificate{background:#fff!important}.language-certificate figcaption{background:rgba(11,13,12,.88)}@media(max-width:760px){.language-gallery{grid-template-columns:1fr}.language-gallery .language-feature,.language-gallery .language-certificate{grid-column:1}}

/* Denser hobby galleries keep more of each story visible in one viewport. */
@media(min-width:761px){.language-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.language-gallery img{height:300px;object-fit:contain}.language-gallery .language-certificate{grid-column:span 2}.chess-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.chess-gallery>figure img{height:320px;object-fit:contain}.challenge-pair figure img{max-height:380px;object-fit:contain}}

.portfolio-case{padding:clamp(2rem,5vw,5rem) 0 clamp(4rem,8vw,8rem);border-bottom:1px solid var(--line)}.portfolio-case .case-intro{margin-bottom:clamp(2rem,4vw,4rem)}.case-media{margin:0;border:1px solid var(--line);background:#171a18;overflow:hidden}.case-media img{display:block;width:100%;height:auto}.case-media figcaption{padding:1rem 1.2rem;font:400 .75rem/1.6 "DM Mono";color:var(--muted)}.case-media figcaption span{display:block;margin-bottom:.3rem;color:var(--lime);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em}.case-media-wide{max-width:1180px;margin-inline:auto}.case-media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem;align-items:start}.case-media-grid .case-media img{aspect-ratio:16/10;object-fit:contain;background:#fff}.case-media-grid-gifs .case-media img{aspect-ratio:auto;background:#f5f7f8}.architecture-overview img{background:#fff}.dot-case{display:grid;grid-template-columns:minmax(250px,.75fr) minmax(320px,1.25fr);gap:clamp(2rem,6vw,6rem);align-items:start}.dot-case .case-intro{position:sticky;top:150px}.dot-field-photo{max-width:760px}.dot-field-photo img{max-height:820px;object-fit:cover;object-position:center 42%}@media(max-width:760px){.case-media-grid,.dot-case{grid-template-columns:1fr}.dot-case .case-intro{position:static}.dot-field-photo img{max-height:none}.portfolio-case{padding-top:1.5rem}}

.portrait-photo{margin:4rem 0 0;max-width:360px;aspect-ratio:4/5;overflow:hidden;background:var(--ink)}.portrait-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 28%}@media(max-width:760px){.portrait-photo{margin:0;justify-self:end;width:min(42vw,230px)}}

.dot-field-photo-wide{max-width:760px;margin:clamp(2rem,5vw,4rem) auto 0}.dot-field-photo-wide img{max-height:820px;object-fit:cover;object-position:center 42%}

.workflow-summary{max-width:980px;margin:0 0 clamp(2rem,5vw,4rem);padding:clamp(1.25rem,3vw,2rem);border-left:3px solid var(--lime);background:#171a18}.workflow-summary p{margin:0;color:var(--paper);font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.7}.app-workflow-grid{margin-bottom:clamp(2rem,5vw,4rem)}.app-workflow-grid .case-media img{height:560px;object-fit:contain;background:#f4f4f4}.language-gallery .language-certificate{grid-column:1/-1}.language-gallery .language-certificate img{height:auto;max-height:720px;object-fit:contain}@media(max-width:760px){.app-workflow-grid .case-media img{height:auto}.language-gallery .language-certificate img{max-height:none}}

.rag-logic{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;margin-bottom:clamp(2rem,5vw,4rem);border-block:1px solid var(--line)}.rag-logic>div{padding:1.25rem}.rag-logic>b{align-self:center;color:var(--lime);font-size:1.4rem}.rag-logic span{display:block;margin-bottom:.65rem;font:500 .64rem "DM Mono";color:var(--lime);text-transform:uppercase;letter-spacing:.07em}.rag-logic p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.55}.rag-story{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);max-width:1180px;margin-bottom:clamp(2rem,5vw,4rem)}.rag-story p{margin:0;color:var(--muted);font-size:clamp(1rem,1.35vw,1.18rem);line-height:1.75}.rag-story strong{color:var(--paper)}.rag-gallery .case-media img{aspect-ratio:auto;background:#f6f7f8}.rag-gallery figcaption{color:var(--paper);font-size:.78rem}@media(max-width:760px){.rag-logic{grid-template-columns:1fr}.rag-logic>b{display:none}.rag-logic>div{border-bottom:1px solid var(--line)}.rag-logic>div:last-child{border-bottom:0}.rag-story{grid-template-columns:1fr}.rag-gallery{grid-template-columns:1fr}}

.fun-case{padding:clamp(2rem,5vw,5rem);background:var(--paper);color:var(--ink);border-bottom:1px solid #b8bab5}.fun-case-head{display:flex;justify-content:space-between;align-items:end;gap:2rem;padding-bottom:2rem;border-bottom:1px solid #b8bab5}.fun-case .kicker{color:var(--blue)}.fun-case h3{margin:.5rem 0 0;font-size:clamp(3rem,7vw,7rem);line-height:.9;letter-spacing:-.055em}.fun-case-head>a{flex:none;padding:.8rem 1rem;border:1px solid var(--ink);font:500 .68rem "DM Mono";text-transform:uppercase;transition:.2s}.fun-case-head>a:hover{background:var(--ink);color:var(--paper)}.fun-case-copy{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:clamp(1.5rem,4vw,4rem);padding:clamp(2rem,5vw,4rem) 0}.fun-case-copy p{margin:0;color:#555954;line-height:1.75}.fun-case-copy .fun-lead{color:var(--ink);font-size:clamp(1.25rem,2vw,1.9rem);line-height:1.45}.fun-features{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:clamp(2rem,5vw,4rem)}.fun-features span{padding:.65rem .9rem;border:1px solid #aaa;font:500 .65rem "DM Mono";text-transform:uppercase;border-radius:99px}.fun-media{margin:0;background:#151715;color:var(--paper);overflow:hidden}.fun-media img{display:block;width:100%;height:auto}.fun-media figcaption{padding:1rem 1.2rem;font:400 .72rem/1.55 "DM Mono";color:var(--muted)}.fun-media figcaption span{display:block;margin-bottom:.3rem;color:var(--lime);font-size:.63rem;text-transform:uppercase}.fun-media-wide{margin-bottom:1rem}.fun-mobile-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:start}.fun-mobile-gallery img{height:680px;object-fit:cover;object-position:top}@media(max-width:760px){.fun-case{padding:1.25rem}.fun-case-head{align-items:start;flex-direction:column}.fun-case-copy,.fun-mobile-gallery{grid-template-columns:1fr}.fun-mobile-gallery img{height:auto}}
