:root{font:14px/1.45 Helvetica,Arial,sans-serif;color-scheme:dark;--bg:#080808;--panel:#171717;--text:#f2f2f2;--muted:#8c8c8c;--line:#ffffff17;--active:#272727;--input:#202020;--shadow:#0003;background:var(--bg);color:var(--text)}:root[data-theme=light]{color-scheme:light;--bg:#f5f5f3;--panel:#f2f2ef;--text:#111;--muted:#757575;--line:#00000014;--active:#e4e4e1;--input:#e9e9e5;--shadow:#00000008}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,textarea,select{font:inherit;color:inherit}button,a,select{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer;border:0;background:none}button:hover,a:hover{color:var(--text)}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,main:focus-visible{outline:2px solid #7785ff;outline-offset:4px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip:focus{position:fixed;top:8px;left:8px;z-index:100;background:var(--panel);padding:12px}.info-panel{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:5;width:340px;padding:6px;border:1px solid var(--line);border-radius:16px;background:var(--panel);box-shadow:0 12px 32px var(--shadow);overflow:hidden}.identity{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 6px 8px}.profile{display:flex;align-items:center;gap:10px;min-width:0}.profile img{display:block;width:36px;height:36px;object-fit:cover;border-radius:50%}.profile strong{display:block;font-size:13px;font-weight:500;white-space:nowrap}.profile span span{display:block;font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap}.availability{white-space:nowrap;font-size:12px;color:var(--muted)}.availability i{display:inline-block;border-radius:50%;background:#36c78b;width:6px;height:6px;margin-right:6px}.info-nav{display:flex;align-items:center;justify-content:space-between;padding:2px 0 0 4px;gap:8px}.info-nav nav{display:flex;gap:14px;align-items:center}.info-nav button[data-panel]{padding:7px 1px;font-size:12px}.info-nav button[aria-expanded=true]{color:var(--text)}.info-nav button[data-panel]:hover{color:var(--muted)}.languages{display:flex;gap:5px;font-size:9px;align-items:center}.languages a{color:var(--muted)}.languages [aria-current]{color:var(--text)}.theme-switch{display:flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:11px;background:var(--active);flex:none}.theme-switch button{padding:4px;display:grid;place-items:center;width:28px;height:25px;border-radius:8px;color:var(--muted)}.theme-switch button[aria-pressed=true]{color:var(--text);background:var(--panel);box-shadow:0 0 0 1px var(--line)}.theme-switch svg{width:18px;height:18px}.panel-content{padding:12px 8px 15px;max-height:calc(100dvh - 180px);overflow:auto;overscroll-behavior:contain}.panel-content[hidden]{display:none}.panel-content h2{font-size:34px;line-height:1.04;letter-spacing:-1.4px;font-weight:400;margin:20px 0}.panel-content p{line-height:1.65;color:var(--muted);font-size:13px}.panel-content h3{font-size:12px;margin-bottom:4px}.panel-content a.email{display:block;font-size:20px;margin:16px 0 20px;letter-spacing:-.5px}.panel-content a:not(.profile){text-decoration:underline;text-underline-offset:4px}.about-portrait{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;object-position:center 35%;border-radius:8px}.toolbar{position:fixed;z-index:4;bottom:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:3px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:16px;font-size:13px;white-space:nowrap;box-shadow:0 12px 32px var(--shadow)}.toolbar button{padding:9px 12px;border-radius:10px}.toolbar button:hover{background:var(--active)}.toolbar button[aria-pressed=true]{background:var(--active)}.toolbar .views{display:flex;gap:2px}.separator{height:18px;width:1px;background:var(--line);margin:0 5px}.filter select{border:0;background:transparent;padding:9px 22px 9px 10px;font-size:13px;cursor:pointer;max-width:170px}.filter select option{background:var(--panel);color:var(--text)}.wall{min-height:100dvh}.world{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;padding:150px 16px 90px}.project{display:block;width:100%;color:var(--text);user-select:none;position:relative}.project-image{position:relative;aspect-ratio:4/5;border-radius:14px;overflow:hidden;background:var(--active);border:1px solid var(--line)}.project img{width:100%;height:100%;object-fit:cover;pointer-events:none}.project video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.caption{position:absolute;left:12px;bottom:12px;max-width:calc(100% - 24px);padding:6px 9px;background:var(--panel);border-radius:5px;font-size:12px;opacity:0;pointer-events:none}.caption>span:last-child{display:none}.placeholder-tag{display:inline-block;margin-left:8px;font-size:9px;font-weight:400;opacity:.65}.project:hover .caption,.project:focus-visible .caption{opacity:1}.project:hover .project-image{outline:1px solid var(--muted);outline-offset:-1px}.project-number,.project-arrow{display:none}.ready .wall{position:fixed;inset:0;overflow:hidden;touch-action:none;cursor:grab;outline-offset:-6px}.ready .wall.dragging{cursor:grabbing}.ready .world{display:block;position:absolute;top:0;left:0;padding:0;width:0;height:0;will-change:transform}.ready .project{position:absolute}.ready .project[hidden]{display:none}.ready.index .wall{overflow:auto;touch-action:pan-y;cursor:auto;scrollbar-color:var(--line) transparent}.ready.index .world{display:block;position:relative;width:100%;height:auto;padding:150px 24px 110px;transform:none!important}.ready.index .project{position:relative;width:100%!important;transform:none!important;left:auto!important;top:auto!important;display:grid;grid-template-columns:38px 60px minmax(0,1fr) 160px 20px;gap:24px;align-items:center;min-height:88px;padding:8px 0;border-bottom:1px solid var(--line)}.ready.index .project:first-child{border-top:1px solid var(--line)}.ready.index .project[hidden],.ready.index .clone{display:none!important}.ready.index .project-number{display:block;color:var(--muted);font-size:12px;grid-column:1;grid-row:1}.ready.index .project-image{grid-column:2;grid-row:1;width:58px;height:72px;aspect-ratio:4/5;border-radius:3px}.ready.index .caption{display:contents;opacity:1;padding:0;background:none}.ready.index .caption>span:first-child{grid-column:3;grid-row:1;font-size:18px;letter-spacing:-.3px}.ready.index .caption>span:last-child{display:block;grid-column:4;grid-row:1;color:var(--muted);font-size:14px}.ready.index .project-arrow{display:block;grid-column:5;grid-row:1;font-size:18px;color:var(--muted)}.ready.index .project:hover .project-image{outline:none}.ready.index .project:hover .caption>span:first-child{transform:translateX(6px)}.empty{padding:20vh 8vw;width:80vw;color:var(--muted)}.wall-footer{position:fixed;z-index:3;bottom:24px;left:24px;right:24px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted);pointer-events:none}.wall-footer p{margin:0}.wall-footer nav{display:flex;gap:16px;pointer-events:auto}.index .wall-footer{pointer-events:none}.artwork{position:relative;display:flex;width:100%;height:100%;padding:22px;overflow:hidden;flex-direction:column;justify-content:space-between}.artwork b{font-size:clamp(35px,3.8vw,85px);line-height:.92;font-weight:500;letter-spacing:-2px;z-index:1}.artwork small{font-size:8px;letter-spacing:1px;z-index:1}.artwork i{position:absolute;width:95%;height:75%;background:currentColor;border-radius:50%;left:10%;top:25%}.art-0{background:#ee5339;color:#4a1f2a}.art-0 i{border:38px solid #f6cb83;background:none;left:40%;top:30%}.art-1{background:#bfceaa;color:#252a58}.art-1 i{border-radius:0;transform:rotate(35deg);top:55%;left:35%}.art-2{background:#473da0;color:#e5b5d1}.art-2 i{background:repeating-linear-gradient(0deg,currentColor 0 10px,transparent 10px 20px);transform:rotate(-25deg);width:160%;left:-25%;top:35%}.art-3{background:#f5c742;color:#ba3d2f}.art-3 i{top:25%;left:25%;border-radius:35% 65% 30% 70%}.art-4{background:#e6d6be;color:#1b6171}.art-4 i{background:none;border:40px solid currentColor;border-radius:0;transform:rotate(-20deg);top:45%;left:35%}.art-5{background:#efb1c4;color:#b72e38}.art-5 i{left:35%;top:35%;background:repeating-radial-gradient(ellipse at center,currentColor 0 10px,transparent 10px 20px)}.index .artwork{padding:5px}.index .artwork b{font-size:9px;letter-spacing:-.3px}.index .artwork small{display:none}.index .artwork i{border-width:7px}.pixel-frame{display:block;position:relative;width:100%;height:100%;overflow:hidden;border-radius:inherit}.pixel-frame>img{display:block}.profile .pixel-frame{flex:none;width:36px;height:36px;border-radius:50%}.portrait-frame{height:auto;aspect-ratio:4/3;border-radius:8px}.pixel-layer{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;image-rendering:pixelated;object-fit:cover;border-radius:inherit}.contact-form fieldset{border:0;padding:0;margin:0}.contact-row{display:flex;gap:10px}.contact-form input:not([type=checkbox]),.contact-form textarea{border:1px solid var(--line);border-radius:5px;background:var(--input);padding:11px;width:100%;margin:0 0 10px;min-width:0;font-size:12px}.contact-form textarea{resize:vertical}.contact-trap{position:absolute;left:-9999px}.contact-privacy{display:flex;align-items:flex-start;gap:7px;font-size:10px;margin:8px 0 20px;color:var(--muted)}.contact-form button{background:var(--text);color:var(--bg);width:100%;padding:12px;text-align:left;border-radius:6px}.contact-status{font-size:12px!important}dialog{color:var(--text);background:var(--bg);border:0}dialog::backdrop{background:transparent}#project-detail{position:fixed;inset:0;margin:0;width:100%;height:100dvh;max-width:none;max-height:none;padding:0;overflow:auto;overscroll-behavior:contain}.project-header{display:flex;align-items:center;justify-content:space-between;max-width:1600px;margin:0 auto;padding:16px 0 0;gap:20px}.project-header>.profile>span{color:var(--muted);font-size:13px}.project-header>div{display:flex;gap:10px;align-items:center}.project-header #close-detail{display:block;padding:8px 14px;border-radius:30px;background:var(--active);font-size:13px}#detail-body{max-width:1600px;margin:40px auto 0}.project-hero{display:grid;grid-template-columns:1fr 1.08fr;border-radius:16px;overflow:hidden;background:var(--panel)}.hero-media{display:block;position:relative;min-width:0;margin:0;padding:0;width:100%;aspect-ratio:4/5;overflow:hidden;cursor:zoom-in;text-align:left}.hero-media img,.hero-media video{display:block;width:100%;height:100%;object-fit:cover}.hero-media video{cursor:auto}.hero-media .artwork{padding:35px}.hero-media .artwork b{font-size:clamp(45px,6vw,100px)}.project-intro{padding:32px;position:relative;display:flex;flex-direction:column;align-items:stretch}.eyebrow{font-size:12px;color:var(--muted);margin:0 0 18px}#detail-body h1{font-size:clamp(36px,4.2vw,64px);font-weight:500;letter-spacing:-2px;line-height:1.05;margin:0 35px 18px 0}.description{font-size:20px;line-height:1.55;color:var(--muted);max-width:650px}.description p{margin:0 0 16px}.placeholder{font-size:11px;color:var(--muted);margin:0 0 15px}.project-next{position:absolute;right:32px;top:32px;border-radius:50%;background:var(--active);width:34px;height:34px;display:grid;place-items:center;font-size:20px}.project-facts{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px;margin:auto 0 0;padding-top:40px}.project-facts>div{border-top:1px solid var(--line);padding-top:14px}.project-facts dt{color:var(--muted);font-size:12px;margin:0 0 6px}.project-facts dd{font-size:14px;margin:0}.project-chapter{display:grid;grid-template-columns:1fr 1fr;gap:40px;border-top:1px solid var(--line);padding:24px 0;margin:100px 0 0}.project-chapter h2{font-size:14px;font-weight:400;color:var(--muted);margin:0}.project-chapter p{font-size:20px;line-height:1.6;margin:0 0 20px}.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:60px 0}.gallery-image{position:relative;display:block;margin:0;padding:0;cursor:zoom-in;border-radius:10px;overflow:hidden;background:var(--panel)}.gallery-image img{width:100%;height:auto;display:block}.gallery-image .pixel-frame{height:auto}.more-heading{display:flex;justify-content:space-between;align-items:center;margin:60px 0 24px}.more-heading h2{font-size:28px;font-weight:400;margin:0;letter-spacing:-.7px}.more-heading a{font-size:12px;color:var(--muted)}.more-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.more-image{aspect-ratio:4/5;overflow:hidden;border-radius:12px}.more-image img{width:100%;height:100%;object-fit:cover}.more-grid a>span{display:block;margin-top:10px;font-size:14px}.more-image .artwork b{font-size:clamp(24px,3vw,50px)}.back-wall{display:block;width:max-content;margin:65px auto;font-size:13px;border:1px solid var(--line);padding:10px 20px;border-radius:30px}.project-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:24px 0;margin-top:60px;font-size:11px;color:var(--muted)}.project-footer nav{display:flex;gap:20px}.project-open .info-panel,.project-open .toolbar,.project-open .wall-footer{visibility:hidden}#lightbox{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-height:none;max-width:none;padding:40px;overflow:hidden;background:var(--bg)}#lightbox img{width:100%;height:100%;object-fit:contain}#close-lightbox{position:absolute;right:20px;top:15px;z-index:1;width:35px;height:35px;border-radius:50%;background:var(--active);font-size:25px}.nojs-detail{position:relative;padding:30px;max-width:100%;background:var(--panel)}.nojs-detail img{max-width:100%}body:not(.ready) .info-panel{position:relative;margin:0 auto 30px;left:auto;transform:none;top:12px}body:not(.ready) .panel-content[hidden]{display:block}body:not(.ready) .toolbar{display:none}body:not(.ready) .world{padding-top:40px}body:not(.ready):has(.nojs-detail) .wall{display:none}@media(max-width:1700px){.project-header,#detail-body{margin-left:24px;margin-right:24px}}@media(max-width:1000px){.project-intro{padding:24px}.description{font-size:16px}.project-next{top:20px;right:20px}.project-facts{gap:15px;padding-top:25px}.project-facts dd{font-size:12px}.project-chapter{gap:25px;margin-top:60px}.project-chapter p{font-size:17px}}@media(max-width:809px){.info-panel{top:12px;left:12px;right:12px;transform:none;width:auto;max-width:none}.identity{padding:7px 6px 8px}.info-nav nav{gap:18px}.info-nav{justify-content:flex-start}.info-nav .theme-switch{margin-left:auto}.panel-content{max-height:calc(100dvh - 190px)}.toolbar{bottom:max(12px,env(safe-area-inset-bottom,0px))}.wall-footer{bottom:20px;left:16px;right:16px}.wall-footer p{max-width:140px;line-height:1.5}.wall-footer nav{align-items:flex-end;gap:10px}.ready.index .world{padding:135px 16px 140px}.ready.index .project{grid-template-columns:25px 42px minmax(0,1fr) 15px;gap:13px;min-height:76px}.ready.index .project-image{width:42px;height:56px}.ready.index .caption>span:first-child{font-size:15px}.ready.index .caption>span:last-child{display:none}.ready.index .project-arrow{grid-column:4;font-size:15px}.ready.index .placeholder-tag{display:block;font-size:9px;margin:4px 0 0}.artwork{padding:15px}.artwork b{font-size:clamp(34px,7vw,60px)}.artwork small{font-size:6px}.artwork i{border-width:25px}.project-header{margin:0 16px;padding-top:16px}.project-header>.profile>span{display:none}#detail-body{margin:30px 16px 0}.project-hero{grid-template-columns:1fr}.hero-media{aspect-ratio:4/5}.project-intro{padding:25px 20px}#detail-body h1{font-size:42px}.description{font-size:17px}.project-facts{padding-top:35px}.project-chapter{grid-template-columns:1fr;gap:20px;margin-top:55px}.project-gallery{grid-template-columns:1fr;gap:15px;margin:35px 0}.more-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px 15px}.more-image .artwork b{font-size:32px}.more-heading h2{font-size:24px}.project-footer{flex-direction:column;gap:12px}.project-header .theme-switch button{width:25px}.project-header #close-detail{padding:8px 11px;font-size:12px}#lightbox{padding:15px}.caption{font-size:10px;padding:4px 6px;left:8px;bottom:8px}}@media(prefers-reduced-motion:no-preference){.caption{transition:opacity .2s}.ready.index .caption>span:first-child{transition:transform .3s}.panel-content{animation:panel-in .25s cubic-bezier(.22,1,.36,1)}.project-hero{animation:panel-in .45s cubic-bezier(.22,1,.36,1)}@keyframes panel-in{from{transform:translateY(8px);opacity:.2}to{transform:translateY(0);opacity:1}}}
.filter{position:relative}.filter #category-toggle{display:flex;align-items:center;gap:14px;padding:9px 11px}.filter #category-toggle svg{transition:transform .2s}.filter #category-toggle[aria-expanded=true] svg{transform:rotate(180deg)}#category-menu{position:absolute;bottom:calc(100% + 15px);right:-6px;min-width:170px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:0 12px 32px var(--shadow)}#category-menu[hidden]{display:none}#category-menu button{display:flex;justify-content:space-between;width:100%;padding:9px 11px;text-align:left;font-size:13px}#category-menu [aria-checked=true]{background:var(--active)}#category-menu [aria-checked=true]::after{content:'✓';padding-left:20px}

.ready .wall,.ready .wall *{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.ready .wall:not(.index) .project-image,.ready .wall .artwork,.ready .wall .caption,.ready .wall .project-number,.ready .wall .project-arrow{pointer-events:none}.portrait-frame{aspect-ratio:1503/1664;height:auto}.portrait-frame .about-portrait{display:block;width:100%;height:100%;aspect-ratio:auto;object-fit:contain;object-position:center}.about-portrait{max-width:100%}

*:focus,*:focus-visible{outline:none!important;box-shadow:none}.wall:focus,.world:focus,dialog:focus{outline:none!important}a:focus-visible,button:focus-visible{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.project:focus-visible .caption{opacity:1;text-decoration:underline;text-underline-offset:4px}.ready.index .project:focus-visible .caption>span:first-child{text-decoration:underline;text-underline-offset:5px}.theme-switch button:focus-visible svg{border-bottom:1px solid currentColor}.caption{z-index:3}

.ready.index .project-arrow{font-size:13px;line-height:1;transform:none}.project-next{font-size:14px;width:30px;height:30px}.project:hover .project-image{outline:none}.more-heading a,.back-wall{font-size:12px}
.wall a,.wall img,.wall video{-webkit-touch-callout:none}

/* Keep portfolio controls at the viewport edge; legal links live in the top menu. */
.toolbar{bottom:max(12px,env(safe-area-inset-bottom,0px));max-width:calc(100vw - 24px)}.info-nav nav{gap:10px}.legal-links{display:flex;flex-direction:column;align-items:flex-start;gap:18px;padding:8px 0}.legal-links a{font-size:14px}.filter #category-toggle{max-width:min(200px,calc(100vw - 170px));white-space:normal;text-align:left}.filter #category-toggle svg{flex-shrink:0}@media(max-width:809px){.info-nav nav{gap:10px}.wall-footer{display:none}.ready.index .world{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))}}@media(max-width:359px){.info-nav{flex-wrap:wrap}.info-nav nav{flex:1 0 100%;justify-content:space-between}.info-nav .theme-switch{margin-left:0}.info-nav .languages{margin-left:auto}}

/* Prevent browser double-tap zoom while retaining custom two-finger wall zoom. */
html,body,a,button,input,textarea,select,.panel-content,dialog{touch-action:manipulation}

/* Original media proportions in the moving wall. Index thumbnails stay compact. */
body:not(.index) .wall .project-image{aspect-ratio:var(--media-ratio,4/5)}body:not(.index) .wall .project img,body:not(.index) .wall .project video{object-fit:contain}

/* Compact information panels and a quieter About entry. */
#services h2,#about h2{font-size:15px;line-height:1.4;letter-spacing:0;font-weight:500;margin:5px 0 16px}.service-row{padding:12px 0;border-top:1px solid var(--line)}.service-row h3{font-size:12px;font-weight:500;margin:0 0 5px}.service-row p,#about p{font-size:12px;line-height:1.6;margin:0;color:var(--muted)}.service-list{margin-bottom:12px}.panel-content .quiet-button{display:inline-block;width:auto;font-size:11px;line-height:1.4;padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--muted);text-decoration:none}.panel-content .quiet-button:hover{color:var(--text);background:var(--active)}#about .portrait-frame{width:100%;margin:2px 0 16px}.smoss-note{border-top:1px solid var(--line);margin-top:20px;padding-top:14px}.smoss-label{font-size:11px;font-weight:500}.smoss-note p{margin:6px 0 10px!important}.smoss-note .quiet-button{font-size:10px;padding:5px 8px}
