:root{--text:#566b72;--text-h:#393939;--bg:#fdf6e3;--card-bg:#f0eada;--card-bg-hover:#e6dece;--border:#566b72;--display:"Gasoek One", sans-serif;--sans:"Geist", sans-serif;--heading:"Geist", sans-serif;--serif:"EB Garamond", serif;--mono:ui-monospace, Consolas, monospace;font:16px/155% var(--sans);letter-spacing:.01em;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-scheme=wine]{--text:#f2d645;--text-h:#ffe87a;--bg:#6b0e0e;--card-bg:#7d1010;--card-bg-hover:#8f1515;--border:#a01a1a}[data-scheme=midnight]{--text:#c9a84c;--text-h:#f0d080;--bg:#0d1b2a;--card-bg:#162232;--card-bg-hover:#1e2e3e;--border:#1e2e3e}[data-scheme=chalk]{--text:#b0b0b0;--text-h:#f0f0f0;--bg:#161616;--card-bg:#222;--card-bg-hover:#2c2c2c;--border:#2c2c2c}[data-scheme=forest]{--text:#8aab80;--text-h:#cce8c0;--bg:#1a2e1a;--card-bg:#213221;--card-bg-hover:#293e29;--border:#293e29}body{margin:0;transition:background .25s,color .25s}a{color:var(--text)}.theme-toggle{border:1px solid var(--border);width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .18s,border-color .18s;display:flex}.theme-toggle:hover{color:var(--text-h);border-color:var(--text-h)}@keyframes scheme-hint{0%{border-color:var(--border);transform:rotate(0)scale(1);box-shadow:0 0 #0000}7%{box-shadow:0 0 5px 1px var(--text);border-color:var(--text);transform:rotate(-18deg)scale(1.15)}16%{box-shadow:0 0 4px 1px var(--text);border-color:var(--text);transform:rotate(14deg)scale(1.1)}24%{box-shadow:0 0 2px 0px var(--text);border-color:var(--text);transform:rotate(-9deg)scale(1.05)}30%{border-color:var(--border);transform:rotate(5deg)scale(1.02);box-shadow:0 0 #0000}36%{border-color:var(--border);transform:rotate(-2deg)scale(1);box-shadow:0 0 #0000}42%,to{border-color:var(--border);transform:rotate(0)scale(1);box-shadow:0 0 #0000}}.scheme-toggle--hint{animation:4s ease-in-out 2s infinite scheme-hint}.lang-toggle{border:1px solid var(--border);width:32px;height:32px;color:var(--text);cursor:pointer;font-size:.65rem;font-family:var(--mono,monospace);letter-spacing:.03em;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .18s,border-color .18s;display:flex}.lang-toggle:hover{color:var(--text-h);border-color:var(--text-h)}.page{box-sizing:border-box;flex-direction:column;align-items:center;width:100%;max-width:1248px;min-height:100dvh;margin:0 auto;padding:0 24px;display:flex;position:relative}@media (width<=600px){.page{padding:0 12px}}.page:after{content:"";pointer-events:none;z-index:900;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");transition:opacity .25s;position:fixed;inset:0}[data-scheme=midnight] .page:after,[data-scheme=chalk] .page:after,[data-scheme=forest] .page:after{opacity:.06}.site-footer{align-items:center;width:100%;margin-top:auto;padding:20px 0 24px;display:flex}.site-footer-text{font-family:var(--sans);color:var(--text);white-space:nowrap;letter-spacing:.04em;text-transform:lowercase;align-items:center;gap:14px;width:100%;font-size:clamp(.7rem,1.2vw,.9rem);font-weight:300;display:flex}.site-footer-rule{background:var(--text);opacity:.35;flex:1;height:1px;display:block}.site-footer-toggles{flex-shrink:0;align-items:center;gap:8px;margin-left:14px;display:flex}.home{flex-direction:column;flex:1;align-items:center;width:100%;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.page-header{z-index:100;background:var(--bg);width:100%;margin-bottom:8px;padding-bottom:2px;animation:.8s cubic-bezier(.25,1,.4,1) both header-drop;position:sticky;top:0;container-type:inline-size}.page-header .page-title{animation:.85s cubic-bezier(.25,1,.4,1) both title-slam}.page-header--compact{margin-bottom:0;position:relative}.page-header--compact+.site-nav{z-index:100;background:var(--bg);margin-bottom:8px;animation:.7s cubic-bezier(.25,1,.4,1) .25s both nav-rise;position:sticky;top:0;container-type:inline-size}@keyframes header-drop{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0 0 0%)}}@keyframes title-slam{0%{opacity:0;transform:translateY(-12px)scaleY(.92)}to{opacity:1;transform:translateY(0)scaleY(1)}}@keyframes nav-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-content{flex-direction:column;flex:1;align-items:center;width:100%;display:flex}.page-title{width:100%;color:var(--text-h);margin:0;display:block}.page-title svg{display:block;overflow:visible}.page-header .page-title{height:calc(18cqw * (1 - .4 * var(--stretch,0)));position:relative}.page-header .page-title svg{transform:scaleY(calc(1 + .4 * var(--stretch,0)));transform-origin:50% 100%;position:absolute;bottom:0;left:0}.page-header--compact .page-title{height:11.16cqw}.page-header--compact .page-title svg{transform:scaleY(.62)}.home-tagline{font-family:var(--sans);color:var(--text);text-align:center;letter-spacing:.01em;margin:0 0 1rem;font-size:clamp(.8rem,1.8cqw,1.2rem);font-weight:300}.home-tagline-facts:before{content:"|";margin:0 .8em}@media (width<=600px){.home-tagline-facts{display:block}.home-tagline-facts:before{content:none}}.home-grid{grid-template-rows:auto 220px 160px;grid-template-columns:2fr 1fr;gap:10px;width:100%;max-width:1200px;display:grid}.home-card{background:var(--card-bg);cursor:pointer;align-items:center;transition:background .2s,transform .18s;display:flex;position:relative;overflow:hidden}.home-card:hover{background:var(--card-bg-hover);transform:scale(1.012)}.home-card--about,.home-card--contact,.home-card--pong,.home-card--playground{justify-content:center}.home-card--pong-active{cursor:grab}.home-card--pong-active:hover{transform:none}.home-card--pong-label{font-size:clamp(28px,5vw,64px)}.home-card-label{font-family:var(--display);color:var(--text-h);-webkit-user-select:none;user-select:none;text-align:center;font-weight:400;line-height:1}.home-card--playground .home-card-label{font-size:clamp(24px,3.4vw,44px)}.home-card--about .home-card-label{font-size:clamp(28px,5vw,64px)}.home-card--contact .home-card-label{font-size:clamp(28px,4vw,56px)}@keyframes rise{0%{opacity:0;clip-path:inset(100% 0 0);transform:translateY(24px)}to{opacity:1;clip-path:inset(0% 0 0);transform:translateY(0)}}@media (width<=600px){.home-grid{grid-template-rows:auto;grid-template-columns:1fr;gap:8px}.home-card{min-height:120px}.home-card--about,.home-card--contact{justify-content:center}.home-card--pong{grid-column:1;min-height:140px}}@media (prefers-reduced-motion:reduce){.home{animation:none}.home-card{transition:background .2s}}.site-nav{justify-content:space-between;align-items:baseline;width:100%;margin:4px 0 0;display:flex}.nav-item{font-family:var(--display);text-align:center;color:var(--text);cursor:pointer;background:0 0;border:none;padding:12px;font-size:clamp(14px,2.5cqw,32px);font-weight:400;line-height:1;text-decoration:none;transition:color .15s}.nav-item:hover{background:var(--text);color:var(--bg);cursor:crosshair}.nav-item--active{background:var(--text);color:var(--bg)}.nav-item--active:hover{color:var(--bg);opacity:.9}@media (width<=480px){.site-nav{flex-wrap:wrap;justify-content:space-around}.nav-item{white-space:nowrap;padding:10px 5px;font-size:12px}}.portfolio{flex-direction:column;align-items:flex-start;width:100%;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.project-list{flex-direction:column;gap:10px;width:100%;margin:16px 0 0;padding:0;list-style:none;display:flex}.project-card{background:var(--card-bg);justify-content:space-between;align-items:stretch;min-height:180px;padding:12px 16px 16px 12px;transition:background .2s;display:flex}.project-card-link{color:inherit;flex:1;justify-content:space-between;align-items:stretch;min-width:0;text-decoration:none;display:flex}.project-card:hover{background:var(--card-bg-hover)}.project-info{flex-direction:column;flex:1;min-width:0;display:flex}.project-name{font-family:var(--display);color:var(--text-h);margin:0;font-size:clamp(26px,4.2cqw,48px);font-weight:400;line-height:1}.project-name-link{color:inherit;text-decoration:none}.project-name-link:hover{text-underline-offset:3px;text-decoration:underline}.project-subtitle{font-family:var(--sans);color:var(--text);margin:auto 0 0;font-size:clamp(12px,1.7cqw,20px);font-weight:400;line-height:1.3}.project-folder{width:clamp(60px,14cqw,170px);color:var(--text);flex-shrink:0;justify-content:flex-end;align-items:flex-end;padding-left:16px;display:flex}.project-folder-icon{width:100%;height:auto}@media (width<=480px){.project-card{min-height:140px;position:relative}.project-card-link{position:static}.project-folder{opacity:.12;pointer-events:none;width:120px;padding:0;position:absolute;bottom:16px;right:16px}}@media (prefers-reduced-motion:reduce){.portfolio{animation:none}}.project-page-back{font-family:var(--sans);color:var(--text);font-size:clamp(.85rem,1.2cqw,1rem);text-decoration:none;transition:color .15s;display:inline-block}.project-page-back:hover{color:var(--text-h)}.project-page-link{color:var(--text);text-underline-offset:3px;text-decoration:underline;transition:color .15s}.project-page-link:hover{color:var(--text-h)}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation-duration:.01ms!important}}::view-transition-old(root){animation-duration:.7s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-new(root){animation-duration:.7s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-old(root){animation-name:vt-fade-out}::view-transition-new(root){animation-name:vt-fade-in}@keyframes vt-fade-out{0%{opacity:1}to{opacity:0}}@keyframes vt-fade-in{0%{opacity:0}to{opacity:1}}.about{--about-body:clamp(16px, 1.6cqw, 19px);--about-small:clamp(14px, 1.3cqw, 16px);flex-direction:column;align-items:flex-start;width:100%;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.about-bio{font-family:var(--sans);font-size:var(--about-body,clamp(16px, 1.6cqw, 19px));color:var(--text-h);background:var(--card-bg);box-sizing:border-box;width:100%;margin:0;padding:12px;line-height:1.45;animation:.85s cubic-bezier(.25,1,.4,1) .15s both rise}.about-bio p{margin:0 0 12px}.about-bio p:last-child{margin-bottom:0}.about-bio .about-facts{font-size:var(--about-small);color:var(--text);margin-bottom:14px}.about strong{color:var(--text-h);font-weight:600}.about-columns{grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:10px;animation:.85s cubic-bezier(.25,1,.4,1) .28s both rise;display:grid}.about-col{background:var(--card-bg);flex-direction:column;gap:6px;padding:12px;display:flex}.about-col-label{font-family:var(--display);color:var(--text-h);margin-bottom:14px;font-size:clamp(20px,2.2cqw,28px);line-height:1;display:block}.about-col-main{font-family:var(--sans);font-size:var(--about-body);color:var(--text-h);margin:0 0 4px;font-weight:400;line-height:1.45}.about-col-list{flex-direction:column;gap:4px;margin:6px 0 0;padding:0;list-style:none;display:flex}.about-col-list li{font-family:var(--sans);font-size:var(--about-small);color:var(--text);padding-left:14px;font-weight:400;line-height:1.45;position:relative}.about-col-list li:before{content:"–";position:absolute;left:0}.about-whatsup{background:var(--card-bg);box-sizing:border-box;width:100%;margin-top:10px;padding:12px;animation:.85s cubic-bezier(.25,1,.4,1) .42s both rise}.about-whatsup-list{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.about-whatsup-item{border-bottom:1px solid var(--border);align-items:baseline;gap:16px;padding:10px 0;display:flex}.about-whatsup-item:last-child{border-bottom:none}.about-whatsup-num{font-family:var(--display);color:var(--text);opacity:.25;text-align:right;flex-shrink:0;width:clamp(44px,6cqw,72px);font-size:clamp(24px,4cqw,48px);line-height:1}.about-whatsup-text{font-family:var(--sans);font-size:var(--about-body);color:var(--text-h);font-weight:400;line-height:1.45}.about-quote{background:var(--text);flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:160px;margin:10px 0 0;padding:0;animation:.85s cubic-bezier(.25,1,.4,1) .55s both rise;display:flex;position:relative;overflow:hidden}.about-quote-text{font-family:var(--serif);font-style:italic;font-size:var(--about-body);color:var(--bg);text-align:center;z-index:1;margin:0;padding:32px 48px 12px;line-height:1.5;position:relative}.about-quote-cite{font-family:var(--display);font-size:var(--about-small);color:var(--bg);letter-spacing:.05em;z-index:1;padding-bottom:32px;font-style:normal;position:relative}.about-links{gap:0;width:100%;margin-top:10px;animation:.85s cubic-bezier(.25,1,.4,1) .68s both rise;display:flex}.about-links a{font-family:var(--display);color:var(--text);background:var(--card-bg);border-right:1px solid var(--border);flex:1;justify-content:center;align-items:center;padding:22px 0;font-size:clamp(14px,2cqw,24px);line-height:1;text-decoration:none;transition:background .18s,color .18s;display:flex}.about-links a:last-child{border-right:none}.about-links a:hover{background:var(--text-h);color:var(--bg)}@media (width<=560px){.about-columns{grid-template-columns:1fr}.about-quote-text{padding:28px 24px 12px}.about-links{flex-wrap:wrap}.about-links a{border-right:none;border-bottom:1px solid var(--border);flex:50%}.about-links a:nth-child(odd){border-right:1px solid var(--border)}.about-links a:last-child,.about-links a:nth-last-child(2):nth-child(odd){border-bottom:none}}@media (prefers-reduced-motion:reduce){.about,.about-bio,.about-columns,.about-whatsup,.about-quote,.about-links{animation:none}}.contact{flex-direction:column;align-items:flex-start;width:100%;padding-bottom:60px;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.contact-grid{flex-direction:column;gap:10px;width:100%;margin-top:0;display:flex}.contact-row{gap:10px;width:100%;display:flex}.contact-card{background:var(--card-bg);cursor:pointer;border:none;justify-content:center;align-items:center;min-height:200px;padding:0;text-decoration:none;transition:background .2s,transform .18s;display:flex;overflow:hidden}.contact-card:hover{background:var(--card-bg-hover);transform:scale(1.012)}.contact-card-label{font-family:var(--display);color:var(--text-h);text-align:center;-webkit-user-select:none;user-select:none;font-size:clamp(22px,5.5cqw,64px);font-weight:400;line-height:1}.contact-card--email .contact-card-label{font-size:clamp(20px,4.5cqw,48px)}.contact-tagline{font-family:var(--sans);color:var(--text);text-align:center;letter-spacing:.01em;width:100%;margin:28px 0 0;font-size:clamp(.8rem,1.8cqw,1.2rem);font-weight:300}@media (width<=520px){.contact-row{flex-direction:column}.contact-card{width:100%;min-height:120px;flex:none!important}}@media (prefers-reduced-motion:reduce){.contact{animation:none}.contact-card{transition:background .2s}}.playground{flex-direction:column;align-items:flex-start;width:100%;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.pg-section{background:var(--card-bg);box-sizing:border-box;width:100%;margin-top:10px;padding:12px;animation:.85s cubic-bezier(.25,1,.4,1) .2s both rise}.pg-text{font-family:var(--sans);color:var(--text);max-width:72ch;margin:0 0 12px;font-size:clamp(14px,1.4cqw,18px);font-weight:300;line-height:1.45}.pg-text a{color:var(--text-h);text-underline-offset:3px}.pg-footnote{font-family:var(--sans);color:var(--text);text-align:center;align-self:center;margin:24px 0 8px;font-size:.85rem;font-weight:300}.pg-gap-canvas{touch-action:pan-y;cursor:crosshair;outline:1px solid var(--border);outline-offset:-1px;width:100%;height:clamp(260px,40cqw,420px);display:block}.pg-break{grid-template-columns:1fr 1fr;gap:10px;display:grid}.pg-controls,.pg-police{background:var(--bg);flex-direction:column;gap:6px;padding:12px;display:flex}.pg-group-label{font-family:var(--mono);color:var(--text);text-transform:lowercase;letter-spacing:.06em;opacity:.8;margin-top:6px;font-size:.75rem}.pg-group-label:first-child{margin-top:0}.pg-token{cursor:pointer;align-items:center;gap:10px;min-height:32px;display:flex}.pg-token input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;width:32px;height:32px;padding:0;overflow:hidden}.pg-token input[type=color]::-webkit-color-swatch-wrapper{padding:0}.pg-token input[type=color]::-webkit-color-swatch{border:none;border-radius:50%}.pg-token input[type=color]::-moz-color-swatch{border:none;border-radius:50%}.pg-token-name{font-family:var(--mono);color:var(--text-h);min-width:9ch;font-size:.85rem}.pg-token-value{font-family:var(--mono);color:var(--text);font-size:.8rem}.pg-select{font-family:var(--mono);color:var(--text-h);background:var(--card-bg);border:1px solid var(--border);cursor:pointer;padding:4px 8px;font-size:.8rem}.pg-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.pg-button{font-family:var(--mono);color:var(--text-h);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:6px 16px;font-size:.8rem;transition:color .18s,border-color .18s,background .18s}.pg-button:hover:not(:disabled){background:var(--card-bg);border-color:var(--text-h)}.pg-button--fix:not(:disabled),.pg-button--fix:hover:not(:disabled){color:#111;background:#fff;border-color:#111;font-family:ui-monospace,Consolas,monospace}.pg-button:disabled{opacity:.4;cursor:default}.pg-pairs{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.pg-pair{font-family:var(--sans);color:var(--text-h);grid-template-columns:40px 1fr auto 72px;align-items:center;gap:10px;font-size:.9rem;display:grid}.pg-swatch{height:32px;font-family:var(--sans);outline:1px solid var(--border);justify-content:center;align-items:center;font-weight:500;display:flex}.pg-ratio{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.85rem}.pg-stamp{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;text-align:center;color:var(--text);border:1px solid;padding:3px 0;font-size:.7rem}.pg-defs{width:0;height:0;position:absolute}.pg-stamp--fine{color:#c0392b;filter:url(#pg-ink);background:#fdecea;border:2px solid #c0392b;border-radius:3px;flex-direction:column;align-items:center;font-weight:700;line-height:1.1;animation:.5s cubic-bezier(.2,.9,.3,1) both stamp-drop;display:flex;transform:rotate(-4deg)}.pg-stamp-no{letter-spacing:.04em;font-size:.55rem;font-weight:400}@keyframes stamp-drop{0%{opacity:0;transform:translateY(-40px)rotate(-16deg)scale(2.4)}50%{opacity:1;transform:translateY(0)rotate(-3deg)scale(.88)}68%{transform:rotate(-5deg)scale(1.05)}to{transform:rotate(-4deg)scale(1)}}.pg-pair--fail{animation:.22s ease-out .25s both stamp-thud}@keyframes stamp-thud{0%{transform:translate(0)}30%{transform:translate(-2px,2px)}65%{transform:translate(2px,-1px)}to{transform:translate(0)}}[data-passion] .page-title svg{filter:drop-shadow(3px 3px #0ff)drop-shadow(3px 3px #60f)}.pg-button--passion:not(:disabled){font-family:Comic Sans MS,Comic Neue,cursive}.pg-verdict{font-family:var(--sans);color:var(--text-h);margin:10px 0 0;font-size:.9rem;font-style:italic}@media (width<=720px){.pg-break{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.playground,.pg-section,.pg-pair--fail,.pg-stamp--fine{animation:none}}.case{flex-direction:column;gap:10px;width:100%;max-width:960px;padding-top:24px;animation:.85s cubic-bezier(.25,1,.4,1) both rise;display:flex;container-type:inline-size}.case-header{background:var(--card-bg);flex-direction:column;align-items:flex-start;gap:12px;padding:12px 16px 20px 12px;display:flex}.case-meta{font-family:var(--mono);color:var(--text);text-transform:lowercase;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:8px 0 0;font-size:.8rem;display:flex}.case-tag{background:color-mix(in srgb, var(--text) 22%, var(--card-bg));color:var(--text-h);clip-path:polygon(9px 0,100% 0,100% 100%,9px 100%,0 50%);border-radius:0 3px 3px 0;padding:3px 10px 3px 20px;-webkit-mask:radial-gradient(3px at 10px,#0000 95%,#000);mask:radial-gradient(3px at 10px,#0000 95%,#000)}.case-status{color:var(--bg);background:var(--text);padding:0 6px}.case-title{font-family:var(--display);color:var(--text-h);max-width:22ch;margin:0;font-size:clamp(28px,4.6cqw,44px);font-weight:400;line-height:1}.case-subtitle{font-family:var(--sans);color:var(--text);margin:0;font-size:clamp(1rem,1.8cqw,1.3rem);font-weight:300}.case-figure{flex-direction:column;gap:8px;margin:0;display:flex}.case-figure img{outline:1px solid var(--border);outline-offset:-1px;width:100%;height:auto;display:block}.case-figure--narrow{align-self:center;width:min(100%,360px)}.case-figure figcaption{font-family:var(--mono);color:var(--text);font-size:.8rem}.case-code-panels{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.case-code-panel{background:var(--card-bg);flex-direction:column;min-width:0;display:flex}.case-code-file{font-family:var(--mono);color:var(--text);border-bottom:1px solid color-mix(in srgb, var(--text) 25%, transparent);padding:8px 12px;font-size:.75rem}.case-code-panel pre{font-family:var(--mono);color:var(--text-h);margin:0;padding:12px;font-size:.78rem;line-height:1.55;overflow-x:auto}.case-code-panel mark{color:inherit;background:#f2c20073}@media (width<=720px){.case-code-panels{grid-template-columns:1fr}}.case-figure--todo{border:2px dashed var(--text);min-height:160px;font-family:var(--mono);color:var(--text);text-align:center;opacity:.7;justify-content:center;align-items:center;padding:24px;font-size:.85rem}.case-tldr{background:var(--card-bg);padding:12px 16px 16px 12px}.case-tldr dl{flex-direction:column;margin:0;display:flex}.case-tldr-row{border-top:1px solid color-mix(in srgb, var(--text) 25%, transparent);grid-template-columns:9ch 1fr;gap:16px;padding:8px 0;display:grid}.case-tldr-row:first-child{border-top:none}.case-tldr dt{font-family:var(--mono);color:var(--text);text-transform:lowercase;padding-top:3px;font-size:.8rem}.case-tldr dd{font-family:var(--sans);color:var(--text-h);margin:0;font-size:clamp(.95rem,1.4cqw,1.05rem);line-height:1.5}.case-body{flex-direction:column;gap:32px;padding:32px 12px;display:flex}.case-section{max-width:72ch}.case-heading{font-family:var(--display);color:var(--text-h);margin:0 0 14px;font-size:clamp(22px,3cqw,34px);font-weight:400;line-height:1.05}.case-section p,.case-list,.case-callout p{font-family:var(--sans);color:var(--text-h);margin:0 0 1em;font-size:clamp(1rem,1.4cqw,1.1rem);line-height:1.6}.case-section p:last-child{margin-bottom:0}.case-list{flex-direction:column;gap:6px;padding-left:1.2em;display:flex}.case-body code,.case-tldr code{font-family:var(--mono);background:var(--card-bg);padding:1px 4px;font-size:.9em}.case-body a,.case-tldr a{color:var(--text-h);text-underline-offset:3px}.case-callout{border-left:3px solid #f2c200;max-width:72ch;margin:0;padding:4px 0 4px 20px}.case-callout p{font-family:var(--serif);margin:0;font-size:clamp(1.15rem,2cqw,1.45rem);font-style:italic;line-height:1.4}.case-section:has(.case-stats){max-width:none}.case-stats{grid-template-columns:repeat(3,1fr);gap:10px;margin:0;padding:0;list-style:none;display:grid}.case-stat{background:var(--card-bg);flex-direction:column;gap:8px;padding:14px 12px;display:flex}.case-stat-value{font-family:var(--display);color:var(--text-h);font-variant-numeric:tabular-nums;font-size:clamp(32px,5cqw,56px);line-height:1}.case-stat-label{font-family:var(--sans);color:var(--text);font-size:.95rem;line-height:1.45}.case-next{background:var(--card-bg);flex-direction:column;gap:4px;padding:16px 16px 24px 12px;text-decoration:none;transition:background .2s;display:flex}.case-next:hover{background:var(--card-bg-hover)}.case-next-title{font-family:var(--display);color:var(--text-h);font-size:clamp(22px,3.6cqw,34px);line-height:1}@media (width<=720px){.case-stats{grid-template-columns:1fr}.case-tldr-row{grid-template-columns:1fr;gap:2px}.case-body{padding:24px 4px}}@media (prefers-reduced-motion:reduce){.case{animation:none}}.gap{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:baseline;margin:0;padding:0;font-style:italic;display:inline-flex;position:relative}.gap:focus-visible{outline:1px dashed var(--text-h);outline-offset:4px}.gap-door{display:inline-block}.gap-door--left{margin-right:.28em}.gap-reveal{grid-template-columns:0fr;transition:grid-template-columns .45s cubic-bezier(.3,1.4,.5,1);display:inline-grid}.gap-reveal-clip{min-width:0;overflow:hidden}.gap-reveal-text{white-space:nowrap;font-family:var(--mono);color:var(--text-h);background:linear-gradient(#f2c200,#f2c200) bottom/100% 3px no-repeat;margin-right:.28em;padding:0 .45em 3px;font-size:.85em;font-style:normal;display:inline-block}.gap--open .gap-reveal,.gap:focus-visible .gap-reveal{grid-template-columns:1fr}@media (hover:hover){.gap:hover .gap-reveal{grid-template-columns:1fr}}.gap-notes{width:0;display:inline-block;position:relative}.gap-note{font-family:var(--serif);color:var(--text-h);opacity:0;pointer-events:none;font-size:.9em;font-style:normal;position:absolute;bottom:.9em}.gap-note--1{left:-.5em}.gap-note--2{bottom:.6em;left:.25em}.gap--hint .gap-door--left{animation:4s ease-in-out 2s infinite gap-door-left}.gap--hint .gap-door--right{animation:4s ease-in-out 2s infinite gap-door-right}.gap--hint .gap-note--1{animation:4s ease-out 2s infinite gap-note}.gap--hint .gap-note--2{animation:4s ease-out 2.4s infinite gap-note}@keyframes gap-door-left{0%,30%,to{transform:translate(0)}6%{transform:translate(-4px)}12%{transform:translate(0)}18%{transform:translate(-3px)}24%{transform:translate(0)}}@keyframes gap-door-right{0%,30%,to{transform:translate(0)}6%{transform:translate(4px)}12%{transform:translate(0)}18%{transform:translate(3px)}24%{transform:translate(0)}}@keyframes gap-note{0%,to{opacity:0;transform:translateY(0)}4%{opacity:1;transform:translateY(-2px)}14%{opacity:0;transform:translateY(-8px)}}@media (prefers-reduced-motion:reduce){.gap-reveal{transition:none}.gap--hint .gap-door--left,.gap--hint .gap-door--right,.gap--hint .gap-note--1,.gap--hint .gap-note--2{animation:none}}.case-phones{background:var(--card-bg);grid-template-columns:repeat(3,minmax(0,260px));justify-content:center;gap:clamp(10px,3cqw,32px);padding:clamp(16px,4cqw,40px);display:grid}.case-phones img{outline:1px solid var(--border);outline-offset:-1px;border-radius:14px;width:100%;height:auto;display:block}.folder{width:100%;height:auto;display:block;overflow:visible}.home-card--work{grid-column:1/-1;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(16px,3cqw,40px);padding:20px clamp(16px,2.4cqw,28px);display:grid}.home-card--work:hover{transform:none}.home-card--work .home-card-label{font-size:clamp(28px,5vw,64px)}.home-folders{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.6cqw,18px);margin:0;padding:0;list-style:none;display:grid}.home-folder{--folder:color-mix(in srgb, var(--text) 75%, var(--text-h));--tab:16px;isolation:isolate;height:clamp(230px,24cqw,270px);color:var(--bg);flex-direction:column;justify-content:flex-end;text-decoration:none;display:flex;position:relative}.home-folder-back{z-index:0;background:color-mix(in srgb, var(--folder) 55%, var(--text-h));clip-path:polygon(0 3px, 3px 0, calc(40% - 3px) 0, calc(40% + var(--tab)) var(--tab), 100% var(--tab), 100% 100%, 0 100%);position:absolute;inset:0}.home-folder-sheet{z-index:1;top:calc(var(--tab) + 10px);border:1px solid var(--border);background:var(--bg);height:58%;transition:translate .3s cubic-bezier(.3,1.4,.5,1);position:absolute;left:7%;right:7%;overflow:hidden}.home-folder-sheet img{object-fit:cover;object-position:top left;filter:grayscale()contrast(.9);width:100%;height:100%;transition:filter .3s;display:block}.home-folder-sheet:after{content:"";background:var(--text);mix-blend-mode:color;transition:opacity .3s;position:absolute;inset:0}.home-folder-front{z-index:2;background:var(--text);min-height:56%;box-shadow:0 -2px 0 color-mix(in srgb, var(--text-h) 18%, transparent);flex-direction:column;gap:8px;padding:14px 16px 16px;transition:background .2s;display:flex;position:relative}.home-folder-name{font-family:var(--display);font-size:clamp(18px,2cqw,24px);line-height:1}.home-folder-summary{font-family:var(--sans);font-size:clamp(13px,1.2cqw,15px);line-height:1.4}@media (hover:hover){.home-folder:hover .home-folder-sheet{translate:0 -14px}.home-folder:hover .home-folder-sheet img{filter:none}.home-folder:hover .home-folder-sheet:after{opacity:0}.home-folder:hover .home-folder-front{background:var(--text-h)}}.home-folder:focus-visible{outline:1px dashed var(--text-h);outline-offset:4px}@media (width<=720px){.home-card--work{grid-template-columns:1fr;justify-items:center}.home-folders{grid-template-columns:1fr;width:100%}.home-folder{height:200px}}@media (width>=481px){.project-folder{position:relative}}.project-folder-icon{z-index:1;position:relative}.project-folder-preview{z-index:0;border:1px solid var(--border);transform-origin:bottom;width:66%;height:66%;transition:transform .3s cubic-bezier(.3,1.4,.5,1);position:absolute;bottom:30%;right:14%;overflow:hidden;transform:rotate(-4deg)}.project-folder-preview img{object-fit:cover;object-position:top left;filter:grayscale()contrast(.9);width:100%;height:100%;transition:filter .3s;display:block}.project-folder-preview:after{content:"";background:var(--text);mix-blend-mode:color;transition:opacity .3s;position:absolute;inset:0}.project-card:hover .project-folder-preview{transform:translateY(-14px)rotate(-7deg)}.project-card:hover .project-folder-preview img{filter:none}.project-card:hover .project-folder-preview:after{opacity:0}@media (width<=480px){.project-folder-preview{display:none}}@media (prefers-reduced-motion:reduce){.home-folder-sheet,.home-folder-sheet img,.home-folder-sheet:after,.home-folder-front,.project-folder-preview,.project-folder-preview img,.project-folder-preview:after{transition:none}}
