@font-face{font-family:Geist;src:url(/fonts/Geist-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/Geist-Medium.ttf)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/Geist-SemiBold.ttf)format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Medium.ttf)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-SemiBold.ttf)format("truetype");font-weight:600;font-style:normal;font-display:swap}:root{--bg:#f5f0eb;--fg:#1a1a1a;--fg-dim:#555;--fg-muted:#888;--line:#d4d0cb;--line-hi:#1a1a1a;--surface:#ebe6e0;--sans:"Geist", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:"Geist Mono", ui-monospace, "Cascadia Mono", "SFMono-Regular", Consolas, monospace;--max-w:960px;--side:clamp(20px, 5vw, 64px)}[data-theme=dark]{--bg:#111110;--fg:#e8e4df;--fg-dim:#aaa;--fg-muted:#666;--line:#2a2a28;--line-hi:#e8e4df;--surface:#1c1c1a}*,:before,:after{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;background:var(--bg);transition:background-color .28s}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.6;transition:background-color .2s ease-out,color .2s ease-out;overflow-x:hidden}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);transition:text-decoration-color .15s ease-out}a:hover,a:focus-visible{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}:focus-visible{outline:2px solid var(--fg);outline-offset:2px}::selection{background:var(--fg);color:var(--bg)}::view-transition-group(root){animation-duration:.48s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}::view-transition-image-pair(root){animation-duration:.48s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}::view-transition-old(root){animation-duration:.48s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}::view-transition-new(root){animation-duration:.48s;animation-timing-function:cubic-bezier(.22,.61,.36,1)}::view-transition-old(root){animation-name:theme-old-page}::view-transition-new(root){animation-name:theme-new-page}@keyframes theme-old-page{to{opacity:0}}@keyframes theme-new-page{0%{opacity:0}}html.view-transitioning body,html.view-transitioning .site-header,html.view-transitioning .site-mark,html.view-transitioning .site-nav a,html.view-transitioning .toggle-btn,html.view-transitioning .section-label,html.view-transitioning .project-num,html.view-transitioning .project-label,html.view-transitioning .project-title,html.view-transitioning .project-desc,html.view-transitioning .project-link,html.view-transitioning .project-figure,html.view-transitioning .video-fallback,html.view-transitioning .other-work-title,html.view-transitioning .other-work-details p,html.view-transitioning .about-body p,html.view-transitioning .contact-block,html.view-transitioning .site-footer,html.view-transitioning .btn,html.view-transitioning .back-to-top{transition:none!important}img{max-width:100%;display:block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{z-index:1;max-width:var(--max-w);padding:0 var(--side);margin:0 auto;position:relative}.site-header{border-bottom:1px solid var(--line);background:var(--bg);z-index:100;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;display:flex;position:sticky;top:0}.site-mark{font-family:var(--mono);letter-spacing:.04em;flex-shrink:0;font-size:18px;font-weight:600;text-decoration:none}.site-nav{gap:28px;padding:0;list-style:none;display:flex}.site-nav a{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-dim);font-size:13px;font-weight:500;text-decoration:none;transition:color .15s ease-out}.site-nav a:hover,.site-nav a:focus-visible{color:var(--fg);outline:none}.header-controls{flex-shrink:0;align-items:center;gap:8px;display:flex}.toggle-btn{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:6px 10px;font-size:11px;font-weight:500;line-height:1;transition:color .15s ease-out,border-color .15s ease-out;display:inline-flex}.toggle-btn:hover{color:var(--fg);border-color:var(--fg)}.toggle-btn[aria-pressed=true]{color:var(--fg);border-color:var(--fg-muted)}.hero{padding:clamp(60px,10vh,120px) 0 clamp(40px,6vh,80px)}.hero-name{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg);margin-bottom:14px;font-size:13px;font-weight:600}.hero-kicker{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:20px;font-size:12px;font-weight:500}.hero h1{letter-spacing:-.02em;max-width:18ch;margin-bottom:24px;font-size:clamp(2.2rem,5vw,3.8rem);font-weight:500;line-height:1.1}.hero-support{color:var(--fg-dim);max-width:52ch;margin-bottom:12px;font-size:clamp(1rem,1.8vw,1.25rem);line-height:1.55}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.btn{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--fg);border:1px solid var(--line-hi);cursor:pointer;background:0 0;align-items:center;gap:6px;padding:12px 22px;font-size:13px;font-weight:600;text-decoration:none;transition:background-color .15s ease-out,color .15s ease-out;display:inline-flex}.btn:hover,.btn:focus-visible{background:var(--fg);color:var(--bg);outline:none}.btn-secondary{border-color:var(--line);color:var(--fg-dim)}.btn-secondary:hover,.btn-secondary:focus-visible{border-color:var(--fg);color:var(--fg);background:0 0}.section{border-top:1px solid var(--line);padding:clamp(40px,6vh,72px) 0}.section-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:32px;font-size:11px;font-weight:600}.project-card{border-bottom:1px solid var(--line);padding:32px 0}.project-card:last-child{border-bottom:none}.project-meta{align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.project-num{font-family:var(--mono);letter-spacing:.1em;color:var(--fg-muted);font-size:11px;font-weight:600}.project-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);font-size:11px;font-weight:600}.project-title{margin-bottom:10px;font-size:clamp(1.4rem,3vw,2rem);font-weight:500;line-height:1.2}.project-desc{color:var(--fg-dim);max-width:56ch;margin-bottom:14px;font-size:15px;line-height:1.55}.project-links{flex-wrap:wrap;gap:16px;margin-bottom:0;display:flex}.project-link{font-family:var(--mono);letter-spacing:.04em;text-underline-offset:3px;font-size:12px;font-weight:600;text-decoration:underline}.project-visuals{gap:12px;margin-top:20px;display:grid}.project-figure{border:1px solid var(--line);aspect-ratio:16/9;border-radius:4px;margin:0;overflow:hidden}.project-image-link{width:100%;height:100%;display:block}.project-figure img{object-fit:cover;width:100%;height:100%;transition:transform .4s ease-out;display:block}.project-figure:hover img{transform:scale(1.03)}.project-visuals--1{grid-template-columns:1fr}.project-visuals--2,.project-visuals--3{grid-template-columns:1fr 1fr}.project-card--wide .project-figure{aspect-ratio:1280/460}.project-card--product .project-figure{aspect-ratio:1262/900}@media (width>=769px){.project-card--large{grid-template-columns:2fr 3fr;align-items:start;gap:40px;display:grid}.project-card--large .project-visuals{margin-top:0}.project-card--large .project-text{padding-top:8px}.project-card--wide{grid-template-columns:1fr 2fr;align-items:start;gap:32px;display:grid}.project-card--wide .project-visuals{margin-top:0}.project-card--wide .project-visuals--2{grid-template-columns:1fr;gap:12px}.project-card--wide .project-text{padding-top:8px}.project-card--medium{grid-template-columns:1fr 1fr;align-items:center;gap:40px;display:grid}.project-card--medium .project-text{order:2}.project-card--medium .project-visuals{order:1;margin-top:0}.project-card--medium .project-desc{max-width:38ch}.project-card--ulp{grid-template-columns:1.2fr 1fr;align-items:center;gap:40px;display:grid}.project-card--ulp .project-visuals{order:2;margin-top:0}.project-card--ulp .ulp-tiles{align-self:center}.project-card--ulp .project-desc{max-width:42ch}.project-card--duo{grid-template-columns:1fr;gap:20px;display:grid}.project-card--duo .project-visuals--2{grid-template-columns:3fr 2fr;gap:12px}.project-card--duo .project-visuals--2 .project-figure:first-child{aspect-ratio:16/10}.project-card--duo .project-visuals--2 .project-figure:last-child{aspect-ratio:640/352}.project-card--product{grid-template-columns:1fr 2fr;align-items:start;gap:32px;display:grid}.project-card--product .project-visuals{margin-top:0}.project-card--product .project-text{padding-top:8px}.project-card--product .project-desc{max-width:38ch}}.other-work-list{flex-direction:column;gap:0;display:flex}.other-work-item{border-bottom:1px solid var(--line)}.other-work-item:last-child{border-bottom:none}.other-work-title{color:var(--fg-dim);cursor:pointer;align-items:center;gap:8px;padding:12px 0;font-size:15px;list-style:none;display:flex}.other-work-title::-webkit-details-marker{display:none}.other-work-title:before{content:"+";font-family:var(--mono);color:var(--fg-muted);font-size:12px;transition:transform .2s ease-out}.other-work-item[open] .other-work-title:before{content:"−"}.other-work-title:hover{color:var(--fg)}.other-work-details{padding:0 0 12px}.other-work-details p{color:var(--fg-dim);margin-bottom:8px;font-size:14px;line-height:1.55}.about-body{max-width:60ch}.about-body p{color:var(--fg-dim);margin-bottom:18px;font-size:clamp(1rem,1.6vw,1.15rem);line-height:1.6}.about-body p:last-child{margin-bottom:0}.about-larp{font-family:var(--mono);color:var(--fg-muted);font-size:12px;font-style:italic}.contact-block{text-align:center;padding:clamp(48px,8vh,96px) 0}.contact-block h2{max-width:20ch;margin-bottom:16px;margin-left:auto;margin-right:auto;font-size:clamp(1.8rem,4vw,3rem);font-weight:500;line-height:1.15}.contact-block p{color:var(--fg-dim);max-width:42ch;margin:0 auto 32px;font-size:1rem;line-height:1.55}.contact-email{font-family:var(--mono);letter-spacing:.02em;font-size:14px;font-weight:600}.site-footer{border-top:1px solid var(--line);text-align:center;color:var(--fg-muted);padding:32px 0;font-size:12px}.reveal{opacity:0;transition:opacity .6s ease-out var(--delay,0s), transform .6s ease-out var(--delay,0s);transform:translateY(12px)}.reveal.visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal,.hero{opacity:1!important;transform:none!important}.project-figure:hover img{transform:none}.video-modal,.video-modal::backdrop{transition-duration:.01ms}}.project-figure--video{aspect-ratio:16/9;border:1px solid var(--line);overflow:hidden}.project-figure--video-short{aspect-ratio:9/16;width:min(100%,292px);margin-left:auto;margin-right:auto}.video-embed{border-radius:4px;width:100%;height:100%;position:relative;overflow:hidden}.video-embed iframe{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.video-fallback{color:var(--fg-muted);margin-top:8px;font-size:12px}.video-fallback a{font-family:var(--mono);font-weight:500}.project-video-item{min-width:0}.ulp-tiles{grid-template-columns:1fr 1fr;gap:12px;margin-top:20px;display:grid}.ulp-tile{cursor:pointer;color:inherit;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;padding:0;display:flex}.ulp-tile-thumb{aspect-ratio:9/16;border:1px solid var(--line);background:var(--surface);border-radius:4px;width:100%;position:relative;overflow:hidden}.ulp-tile-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .3s ease-out;display:block}.ulp-tile:hover .ulp-tile-thumb img{transform:scale(1.04)}.ulp-tile-play{color:#fff;background:#0009;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;transition:background-color .2s ease-out;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ulp-tile:hover .ulp-tile-play{background:#000c}.ulp-tile-label{font-family:var(--mono);color:var(--fg-muted);font-size:12px;font-weight:500}.ulp-tile:focus-visible{outline:2px solid var(--fg);outline-offset:2px;border-radius:4px}@media (width>=769px){.ulp-tiles{grid-template-columns:1fr 1fr;margin-top:0}.ulp-tile-thumb{max-height:320px}}.video-modal{border:1px solid var(--line);background:var(--bg);color:var(--fg);opacity:0;border-radius:8px;width:min(720px,90vw);max-width:90vw;margin:0;padding:0;transition:opacity .22s,transform .22s cubic-bezier(.22,.61,.36,1);position:fixed;top:50vh;left:50vw;transform:translate(-50%,-48%)scale(.97);box-shadow:0 16px 48px #00000040}.video-modal.is-visible{opacity:1;transform:translate(-50%,-50%)scale(1)}.video-modal::backdrop{background:0 0;transition:background-color .22s}.video-modal.is-visible::backdrop{background:#0000008c}.video-modal-inner{flex-direction:column;align-items:center;padding:16px;display:flex;position:relative}.video-modal-close{z-index:2;background:var(--surface);border:1px solid var(--line);width:36px;height:36px;color:var(--fg-dim);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:color .15s ease-out,border-color .15s ease-out;display:flex;position:absolute;top:8px;right:8px}.video-modal-close:hover,.video-modal-close:focus-visible{color:var(--fg);border-color:var(--fg);outline:none}.video-modal-embed{aspect-ratio:16/9;background:#000;border-radius:4px;width:100%;position:relative;overflow:hidden}.video-modal-embed iframe{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.video-modal-fallback{margin-top:10px;margin-bottom:0}.project-status{font-family:var(--mono);letter-spacing:.04em;color:var(--fg-muted);border:1px solid var(--line);background:var(--surface);border-radius:3px;margin-top:8px;padding:4px 10px;font-size:13px;font-weight:600;display:inline-block}.back-to-top{bottom:24px;right:calc(50vw - var(--max-w) / 2 + var(--side));background:var(--surface);border:1px solid var(--line);cursor:pointer;width:40px;height:40px;color:var(--fg-dim);z-index:90;border-radius:50%;justify-content:center;align-items:center;transition:color .15s ease-out,border-color .15s ease-out,background-color .15s ease-out;display:flex;position:fixed}.back-to-top:hover{color:var(--fg);border-color:var(--fg)}@media (width<=768px){.site-header{flex-wrap:nowrap;gap:16px;padding:12px 0}.site-nav{order:1;justify-content:flex-start;gap:18px;width:auto;margin:0}.site-nav a{align-items:center;min-height:44px;font-size:12px;display:inline-flex}.header-controls{order:2;margin-left:auto}.project-visuals--2,.project-visuals--3{grid-template-columns:1fr}.project-card--product .project-figure{aspect-ratio:1262/900}.hero{padding:clamp(36px,6vh,60px) 0 clamp(24px,4vh,40px)}.hero h1{max-width:20ch;margin-bottom:16px;font-size:clamp(1.8rem,6vw,2.8rem)}.hero-support{margin-bottom:10px;font-size:clamp(.9rem,3.5vw,1.05rem)}.hero-actions{flex-direction:row;gap:10px}.hero-actions .btn{flex:1;justify-content:center;padding:10px 16px;font-size:12px}.contact-block h2{max-width:none}.back-to-top{bottom:24px;right:16px}}@media (width<=480px){.site-nav{gap:14px}.site-nav a{letter-spacing:.04em;font-size:11px}.back-to-top{width:36px;height:36px;bottom:16px;right:16px}.ulp-tile-thumb{max-height:240px}.ulp-tile-play{width:40px;height:40px}.ulp-tile-play svg{width:22px;height:22px}}@media (width>=769px){.back-to-top{right:calc(50vw - var(--max-w) / 2 + var(--side))}}
