@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}.garden-stage{position:sticky;bottom:0;background:var(--bg);font-size:16px;letter-spacing:-.02em}.footer-note{padding:0 24px 64px;color:var(--text-tertiary);font-weight:500;line-height:1.5;text-align:center}.footer-title{color:var(--text)}.footer-note a{color:var(--text);text-decoration-color:var(--underline);text-underline-offset:3px;transition:text-decoration-color .16s ease}.garden{position:relative;height:clamp(300px,33.75vw,600px);overflow:hidden}.garden-paint{position:absolute;inset:0}.garden-paint canvas,.garden-leaving canvas{position:absolute;inset:0;display:block;width:100%;height:100%;-webkit-mask-size:320px;mask-size:320px}.garden-leaving{position:absolute;inset:0;pointer-events:none}.garden-leaving[data-cover]{z-index:1}.garden-glitter{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.garden-sprite,.garden [data-idle]{transform-box:fill-box;transform-origin:center}.garden-butterfly{filter:drop-shadow(0 1px 1.5px rgb(20 50 30 / 25%))}.garden-arrive{opacity:0;transform-box:fill-box;transform-origin:center}.garden-arrive[data-entered]{opacity:1}.garden-arrive[data-entered][data-kind=bokeh]{animation:garden-glow-in 2.4s ease-out both}.garden-arrive[data-entered][data-kind=sparkle]{animation:garden-sparkle-in .9s cubic-bezier(.2,.7,.3,1) both}.garden-arrive[data-entered][data-kind=butterfly]{animation:garden-fly-in 2.6s cubic-bezier(.25,.6,.3,1) both}.garden-arrive[data-entered][data-kind=butterfly] [data-idle]{animation-play-state:running}@keyframes garden-glow-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}@keyframes garden-sparkle-in{0%{opacity:0;transform:scale(.15) rotate(-35deg)}35%{opacity:1;transform:scale(.3,1.15) rotate(-10deg)}70%{transform:scale(1.1,.95) rotate(4deg)}to{opacity:1;transform:none}}@keyframes garden-fly-in{0%{opacity:0;transform:translate(var(--from-x),var(--from-y))}12%{opacity:1}55%{transform:translate(calc(var(--from-x) * .3),calc(var(--from-y) * .15 - 16px))}to{opacity:1;transform:none}}.garden [data-idle]{animation-play-state:paused}.garden[data-bloomed=true][data-ambient=true] [data-idle]{animation-play-state:running}.garden-twinkle{animation:garden-twinkle 3.2s steps(8) calc(var(--delay) + var(--wake, 0s)) infinite}.garden-breathe{animation:garden-breathe 5s steps(12) calc(var(--delay) + var(--wake, 0s)) infinite}.garden-flutter{animation:garden-flutter 2.6s ease-in-out calc(var(--delay) + var(--wake, 0s)) infinite}.garden-bask{animation:garden-bask 6s ease-in-out calc(var(--delay) + var(--wake, 0s)) infinite}.garden-bob{animation:garden-bob .52s ease-in-out calc(var(--delay) + var(--wake, 0s)) infinite alternate}.garden-flight{animation:garden-flight 18s ease-in-out calc(var(--delay) + var(--wake, 0s)) infinite}@keyframes garden-twinkle{0%,to{transform:scale(1) rotate(0);opacity:1}50%{transform:scale(.45) rotate(20deg);opacity:.5}}@keyframes garden-breathe{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.45}}@keyframes garden-flutter{0%,to{transform:scaleX(1)}7%,21%,35%,49%{transform:scaleX(.16)}14%,28%,42%{transform:scaleX(.95)}56%,92%{transform:scaleX(.82)}}.garden-flee[data-startled] .garden-flutter,.garden-flee[data-startled] .garden-bask{animation:garden-flurry .2s ease-in-out infinite alternate}@keyframes garden-flurry{0%{transform:scaleX(1)}to{transform:scaleX(.16)}}@keyframes garden-bask{0%,45%,to{transform:scaleX(1)}58%,74%{transform:scaleX(.1)}}@keyframes garden-bob{0%{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes garden-flight{0%,to{transform:translate(0) rotate(0)}14%{transform:translate(24px,-12px) rotate(9deg)}29%{transform:translate(50px,-3px) rotate(-6deg)}43%{transform:translate(68px,-20px) rotate(11deg)}57%{transform:translate(44px,-30px) rotate(-12deg)}72%{transform:translate(16px,-14px) rotate(7deg)}86%{transform:translate(-10px,-20px) rotate(-8deg)}}@media(hover:hover)and (pointer:fine){.footer-note a:hover{text-decoration-color:currentColor}}@media(prefers-reduced-motion:no-preference){.garden[data-bloomed=true]{cursor:pointer}}@media(prefers-reduced-motion:reduce){.garden [data-idle],.garden-arrive[data-entered]{animation:none!important}}.portrait-button{display:block;padding:0;border:0;border-radius:50%;background:transparent;isolation:isolate}.portrait-button img{-webkit-user-select:none;user-select:none;transition:transform .16s cubic-bezier(.22,1,.36,1)}.portrait-button:active img{transform:scale(.96)}.portrait-doodle{position:absolute;inset:-32%;display:block;width:164%;height:164%;overflow:hidden;pointer-events:none}.portrait-announcement{position:absolute;width:1px;height:1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){.portrait-button img{transition:none}.portrait-button:active img{transform:none}}.portrait-canvas{touch-action:none}.portrait-canvas:active img{transform:none}.portrait-draw{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='1.5' stroke-linejoin='round'%3E%3Cpath d='M3 21l1.5-5L16 4.5a2.1 2.1 0 0 1 3 3L7.5 19z' fill='%23fff'/%3E%3Cpath d='M14 6.5l3 3'/%3E%3C/svg%3E") 2 22,crosshair}.portrait-ink{position:absolute;inset:-32%;width:164%;height:164%;overflow:visible;pointer-events:none;mix-blend-mode:multiply}:root[data-theme=dark] .portrait-ink{mix-blend-mode:normal}.portrait-ink .is-fading{animation:portrait-ink-fade ease-in forwards}@keyframes portrait-ink-fade{to{opacity:0}}.portrait-peel{cursor:grab}.portrait-peel:active{cursor:grabbing}.portrait-sticker{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.portrait-note{fill:#8a70be;font:italic 600 20px Inter,sans-serif;letter-spacing:-.03em}.portrait-pond{position:absolute;inset:-32%;width:164%;height:164%;pointer-events:none}.portrait-pond-button:active img{transform:none}.portrait-wreath{position:absolute;inset:-32%;pointer-events:none;transition:opacity .6s ease}.portrait-wreath-back{z-index:-1}.portrait-wreath[data-leaving]{opacity:0}.portrait-wreath canvas{position:absolute;inset:0;display:block;width:100%;height:100%;-webkit-mask-size:320px;mask-size:320px}.portrait-wreath svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.portrait-wreath [data-idle]{transform-box:fill-box;transform-origin:center;animation-play-state:paused}.portrait-wreath[data-bloomed=true] [data-idle]{animation-play-state:running}.portrait-wreath-button:active img{transform:none}.portrait-wreath-arrive{opacity:0;transform-box:fill-box;transform-origin:center}.portrait-wreath-arrive[data-entered]{opacity:1}.portrait-wreath-arrive[data-entered][data-kind=bokeh]{animation:garden-glow-in 2.4s ease-out both}.portrait-wreath-arrive[data-entered][data-kind=sparkle]{animation:garden-sparkle-in .9s cubic-bezier(.2,.7,.3,1) both}.portrait-wreath-arrive[data-entered][data-kind=butterfly]{animation:garden-fly-in 2.6s cubic-bezier(.25,.6,.3,1) both}.portrait-butterflies-button{z-index:3}.portrait-butterflies{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.portrait-fly .garden-butterfly{transition:filter .3s ease}.portrait-fly[data-flying] .garden-butterfly{filter:drop-shadow(0 6px 2.5px rgb(20 50 30 / 16%))}.portrait-fly-bask{transform-box:fill-box;transform-origin:center}[data-basking]>.portrait-fly-bask{animation:garden-bask 6s ease-in-out var(--delay) infinite}.follow-overlay{position:fixed;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:4}.follow-petal{filter:drop-shadow(0 5px 2px rgb(20 50 30 / 14%))}.follow-garden{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}@media(prefers-reduced-motion:reduce){.portrait-wreath{transition:none}.portrait-wreath [data-idle],.portrait-wreath-arrive[data-entered],[data-basking]>.portrait-fly-bask{animation:none!important}}.video-player{position:relative;width:100%;height:100%;isolation:isolate;color:#fff;container-type:inline-size;outline:none}.player-video{display:block;width:100%;height:100%;object-fit:contain;cursor:pointer}.video-player:focus-visible{outline:2px solid #fff;outline-offset:-4px}.player-controls{position:absolute;z-index:2;inset-inline:20px;bottom:20px;display:flex;align-items:center;gap:4px;width:calc(100% - 40px);max-width:580px;margin-inline:auto;padding:5px;border:1px solid rgb(255 255 255 / 16%);border-radius:18px;background:#18181bcc;box-shadow:0 8px 28px #00000029,inset 0 1px #ffffff0d;backdrop-filter:blur(24px) saturate(130%);-webkit-backdrop-filter:blur(24px) saturate(130%);opacity:1;transform:translateY(0);transition:opacity .18s ease-out,transform .18s ease-out,visibility .18s}.video-player[data-controls-visible=false] .player-controls{opacity:0;transform:translateY(6px);visibility:hidden;pointer-events:none}.video-player:focus-within .player-controls,.video-player:focus-visible .player-controls{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.player-button{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;padding:0;border:0;border-radius:12px;background:transparent;color:#ffffffd1;transition:background-color .15s ease,color .15s ease,transform .15s ease}.player-toggle{background:#ffffff1c;color:#fff;margin-right:5px}.player-button:active{transform:scale(.94)}.player-button:disabled{opacity:.4;cursor:default}.player-button:focus-visible,.player-center-play:focus-visible,.player-message button:focus-visible{outline:2px solid #fff;outline-offset:-3px}.player-time{flex-shrink:0;min-width:4ch;color:#fff;text-align:center;font-size:11px;font-weight:450;font-variant-numeric:tabular-nums;letter-spacing:.015em;-webkit-user-select:none;user-select:none}.player-duration{color:#ffffff94}.player-divider{flex:0 0 1px;height:16px;margin-inline:5px;background:#ffffff21}.player-seek{position:relative;display:flex;align-items:center;flex:1;height:44px;min-width:44px;margin-inline:10px}.player-seek-track{position:absolute;inset-inline:0;height:3px;overflow:hidden;border-radius:3px;background:#ffffff2e;pointer-events:none}.player-seek-buffer,.player-seek-progress{position:absolute;inset:0 auto 0 0;height:100%;border-radius:inherit}.player-seek-buffer{width:var(--buffered);background:#fff3}.player-seek-progress{width:var(--played);background:#fff}.player-seek input{appearance:none;-webkit-appearance:none;position:relative;width:100%;height:44px;margin:0;border:0;padding:0;background:transparent;cursor:pointer;touch-action:none}.player-seek input:disabled{cursor:default}.player-seek input::-webkit-slider-runnable-track{height:3px;background:transparent}.player-seek input::-moz-range-track{height:3px;background:transparent}.player-seek input::-webkit-slider-thumb{appearance:none;width:9px;height:9px;margin-top:-3px;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 5px #0003}.player-seek input::-moz-range-thumb{width:9px;height:9px;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 5px #0003}.player-seek input:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:4px}.player-seek-preview{display:none;position:absolute;bottom:45px;transform:translate(-50%);padding:6px 8px;border:1px solid rgb(255 255 255 / 12%);border-radius:7px;background:#27272a;color:#fff;font-size:11px;font-variant-numeric:tabular-nums;pointer-events:none}.player-center-play{position:absolute;z-index:1;inset:0;display:grid;place-items:center;width:64px;height:64px;margin:auto;padding:0;border:1px solid rgb(255 255 255 / 30%);border-radius:50%;background:#18181b8c;color:#fff;box-shadow:0 4px 20px #0000001f;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:background-color .18s ease,transform .18s ease}.player-center-play svg{width:24px;height:24px}.player-center-play:active{transform:scale(.95)}.player-loading{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.player-spinner{width:30px;height:30px;border:2px solid rgb(255 255 255 / 30%);border-top-color:#fff;border-radius:50%;opacity:0;filter:drop-shadow(0 1px 3px rgb(0 0 0 / 40%));animation:player-show 0s .6s forwards,player-spin .8s linear infinite}.player-message{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0f0f12bf;font-size:13px}.player-message button{min-height:44px;padding:0 16px;border:1px solid rgb(255 255 255 / 20%);border-radius:10px;background:#ffffff1f;color:#fff}.player-message button span{margin-left:10px}.player-notice{position:absolute;inset-inline:16px;bottom:88px;width:fit-content;margin-inline:auto;border-radius:8px;padding:10px 14px;background:#18181be5;font-size:12px;text-align:center}.player-sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.video-player:fullscreen{width:100vw;height:100dvh;background:#0b0b0c}.video-player:fullscreen .player-controls{bottom:max(28px,env(safe-area-inset-bottom))}@keyframes player-spin{to{transform:rotate(360deg)}}@keyframes player-show{to{opacity:1}}@media(hover:hover)and (pointer:fine){.video-player .player-controls:hover{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto}.player-button:not(:disabled):hover{background:#ffffff26;color:#fff}.player-center-play:hover{background:#18181bb8;transform:scale(1.05)}.player-seek:hover .player-seek-preview{display:block}.video-player[data-controls-visible=false]:not(:has(:focus-visible)):not(:focus-visible) .player-video{cursor:none}}@media(hover:none),(pointer:coarse){.video-player[data-controls-visible=false] .player-controls{opacity:1;transform:none;visibility:visible;pointer-events:auto}}@container (max-width: 480px){.player-controls{inset-inline:10px;bottom:10px;width:calc(100% - 20px);padding:3px;gap:0;border-radius:15px}.player-toggle{margin-right:4px}.player-seek{margin-inline:8px}.player-divider{margin-inline:4px}.player-center-play{bottom:40px;width:52px;height:52px}}@container (max-width: 340px){.player-duration,.player-divider{display:none}.player-time{font-size:10px}}@media(prefers-reduced-motion:reduce){.player-controls,.player-button,.player-center-play{transition:none}.player-spinner{animation:none;opacity:1}}:root{color-scheme:light;--bg: #fff;--text: #111;--text-secondary: #5a5a5a;--text-tertiary: #959595;--text-quiet: #b3b3b3;--underline: #d4d4d4;--surface: #f3f3f3;--switch-track: #e6e6e6;--switch-track-hover: #dcdcdc;--switch-knob: #fff;--switch-knob-shadow: 0 1px 2px rgb(0 0 0 / 16%), 0 0 0 .5px rgb(0 0 0 / 6%);--switch-icon: #737373;--focus: #2672cc;--iconcraft: #24aeea;--tileai: #5d7af1;--glow-strength: 38%;--flow-neutral: #6f6f6f, #a8a8a8, #4a4a4a, #6f6f6f;--flow-iconcraft: var(--iconcraft), #26cef4, #7fdffa, #2d69ac, var(--iconcraft);--flow-tileai: var(--tileai), #79aff9, #c3b9f2, #8e85e3, var(--tileai);--panel-bg: #fff;--panel-border: #e5e5e5;--panel-text: #222;--panel-shadow: 0 8px 32px #0002;font-family:Inter,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}:root[data-theme=dark]{color-scheme:dark;--bg: #111;--text: #f2f2f2;--text-secondary: #c4c4c4;--text-tertiary: #a1a1a1;--text-quiet: #7c7c7c;--underline: #555;--surface: #1c1c1c;--switch-track: #303030;--switch-track-hover: #3a3a3a;--switch-knob: #e8e8e8;--switch-knob-shadow: 0 1px 2px rgb(0 0 0 / 50%);--switch-icon: #2b2b2b;--focus: #5a9df2;--glow-strength: 50%;--flow-neutral: #b5b5b5, #f0f0f0, #909090, #b5b5b5;--flow-iconcraft: var(--iconcraft), #26cef4, #7fdffa, #4295dd, var(--iconcraft);--panel-bg: #1a1a1a;--panel-border: #2c2c2c;--panel-text: #f0f0f0;--panel-shadow: 0 8px 32px #0008}.theme-switching,.theme-switching *,.theme-switching *:before,.theme-switching *:after{transition:none!important}*{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-padding-block:24px calc(24px + env(safe-area-inset-bottom));-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:5px}.media-card{scroll-margin-block:24px}.media-card:focus,.gallery:focus{outline:none}p,h1{margin:0}.portfolio{--u: min(1px, 100vw / 1728);--space-group: clamp(8px, calc(12 * var(--u)), 12px);--space-related: 16px;--space-section: clamp(40px, calc(64 * var(--u)), 64px);--tap-inset: 6px;display:grid;grid-template-columns:minmax(0,25%) minmax(0,1fr);column-gap:calc(140 * var(--u));align-items:start;max-width:1728px;margin-inline:auto;padding:calc(64 * var(--u)) calc(116 * var(--u)) 120px calc(80 * var(--u))}.intro{font-size:16px;letter-spacing:-.02em}.portrait{position:relative}.portrait img{width:100%;height:100%;display:block;border-radius:50%;object-fit:cover}.identity h1{font:inherit;font-weight:500;line-height:1.2}.identity>p{margin-top:var(--space-group);color:var(--text-tertiary);font-weight:500;line-height:1.2}.bio{color:var(--text-secondary);line-height:1.5;text-wrap:pretty}.work-filters{--flow-nudge: 4px 0;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(var(--space-section) - var(--tap-inset))}.work-filters button{--flow: var(--flow-neutral);--flow-glow: transparent;--flow-dot: var(--text);--flow-duration: 2.4s;--flow-pop: filter .24s ease, translate .42s cubic-bezier(.34, 1.56, .64, 1);--flow-lit: filter-whoosh .65s cubic-bezier(.2, .8, .6, .88), filter-flow var(--flow-duration) linear .65s infinite;position:relative;min-height:44px;margin-block:calc(-1 * var(--tap-inset));padding:0;border:0;font-weight:400;letter-spacing:inherit;line-height:1.2;text-align:left;background:linear-gradient(90deg,var(--flow)) 0 0 / 200% 100%;-webkit-background-clip:text;background-clip:text;color:var(--text-quiet);-webkit-text-fill-color:var(--text-quiet);filter:drop-shadow(0 0 0 transparent);transition:-webkit-text-fill-color .18s ease,var(--flow-pop)}.work-filters button[data-category=Iconcraft]{--flow: var(--flow-iconcraft);--flow-dot: var(--iconcraft);--flow-glow: color-mix(in srgb, var(--iconcraft) var(--glow-strength), transparent);--flow-duration: 2s}.work-filters button[data-category=TileAI]{--flow: var(--flow-tileai);--flow-dot: var(--tileai);--flow-glow: color-mix(in srgb, var(--tileai) var(--glow-strength), transparent);--flow-duration: 2.4s}.work-filters button[aria-pressed=true]{color:var(--text);-webkit-text-fill-color:var(--text)}.work-filters button:before{content:"";position:absolute;top:50%;left:-14px;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--flow-dot);scale:0;transition:scale 90ms ease-out}.work-filters button[aria-pressed=true]:before{scale:1;transition:scale .18s cubic-bezier(.3,1.6,.5,1)}.work-filters button:focus-visible{-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 10px var(--flow-glow));translate:var(--flow-nudge);animation:var(--flow-lit)}@keyframes filter-whoosh{0%{background-position:200% 0}to{background-position:0 0}}@keyframes filter-flow{0%{background-position:0 0}to{background-position:-200% 0}}:root[data-theme=dark] .work-filters button{background-size:0 0;transition:-webkit-text-fill-color .18s ease,background-size 0s .18s,var(--flow-pop)}:root[data-theme=dark] .work-filters button:focus-visible{background-size:200% 100%;transition:-webkit-text-fill-color .18s ease,var(--flow-pop)}.social-link{display:inline-flex;align-items:center;min-width:44px;min-height:44px;padding-right:28px;color:var(--text);text-decoration:none;vertical-align:top}:root[data-theme=dark] .social-link img{filter:invert(.93)}.theme-switch{position:fixed;z-index:10;top:calc(64*min(1px,100vw / 1728) - 12px);right:32px;display:flex;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px;padding:0;border:0;background:none}.theme-switch:focus-visible{outline:none}.theme-switch:focus-visible .switch-track{outline:2px solid var(--focus);outline-offset:3px}.switch-track{display:flex;width:36px;height:20px;padding:2px;border-radius:10px;background:var(--switch-track);transition:background-color .15s ease}.switch-knob{display:grid;width:16px;height:16px;overflow:hidden;border-radius:50%;background:var(--switch-knob);box-shadow:var(--switch-knob-shadow);color:var(--switch-icon)}.switch-icon{display:grid;place-items:center}.switch-icon>*{grid-area:1 / 1;border-radius:50%}.switch-core{width:10px;height:10px;background:currentColor}.switch-bite{width:9px;height:9px;background:var(--switch-knob)}.switch-rays>svg{display:block}.portfolio .intro{position:sticky;top:calc(64 * var(--u));margin-left:calc(32px - max(0px,(100vw - 1728px) / 2) - 80 * var(--u));width:100%;height:calc(100dvh - 128 * var(--u) + 14px);min-height:360px;display:flex;flex-direction:column;align-items:flex-start}.portfolio .portrait{width:65px;height:65px;flex-shrink:0}.identity{margin-top:var(--space-section)}.portfolio .bio{margin-top:auto;max-width:387px}@media(not (max-width:1000px))and (not (max-height:500px)){.portfolio .bio :is(a,button){scroll-margin-bottom:calc(-24px - env(safe-area-inset-bottom))}}.portfolio .gallery{column-gap:calc(57 * var(--u));row-gap:calc(56 * var(--u))}.gallery-stage{position:relative;overflow:clip;overflow-clip-margin:16px}.media-card{display:block;position:absolute;top:0;left:0;padding:0;overflow:hidden;border:0;border-radius:12px;background:var(--surface);isolation:isolate}.media-card-surface{position:relative;width:100%;height:100%;overflow:hidden}.media-card img,.media-card video{display:block;width:100%;height:100%;object-fit:contain}.media-card .preview-video{position:absolute;inset:0;height:100%}.bio p+p{margin-top:var(--space-related)}.bio p+div{margin-top:calc(var(--space-related) + 2px)}.skip-link{position:fixed;top:12px;left:12px;z-index:20;background:var(--bg);padding:12px;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.lightbox{--lightbox-padding: 32px;--lightbox-top: max(var(--lightbox-padding), env(safe-area-inset-top));--lightbox-bottom: max(var(--lightbox-padding), env(safe-area-inset-bottom));position:fixed;inset:0;z-index:20;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;border:0;padding:0;overflow:hidden;overscroll-behavior:contain;background:transparent}.lightbox[data-closing=true]{pointer-events:none}.lightbox-stage[data-exiting=true],.lightbox-stage[data-exiting=true] *{pointer-events:none!important}.lightbox::backdrop{background:transparent}.lightbox-stage{display:grid;place-items:center;width:100%;height:100%;padding:var(--lightbox-top) max(var(--lightbox-padding),env(safe-area-inset-right)) var(--lightbox-bottom) max(var(--lightbox-padding),env(safe-area-inset-left));isolation:isolate}.lightbox-backdrop{position:absolute;inset:0;z-index:-1;background:#0c0c0cd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;will-change:opacity}.lightbox-content{--heading-space: 60px;--controls-space: 0px;--available-media-height: max(1px, 100dvh - var(--lightbox-top) - var(--lightbox-bottom) - var(--heading-space) - var(--controls-space));width:min(var(--media-width),100%,var(--available-media-height) * var(--media-ratio));min-width:0}.lightbox-heading{display:flex;align-items:center;justify-content:flex-end;margin-bottom:16px}.lightbox-close{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;padding:0;border:1px solid rgb(255 255 255 / 16%);border-radius:50%;background:#ffffff1a;color:#fff;transition:background-color .16s ease,border-color .16s ease,transform .16s ease}.lightbox-close:focus{outline:none}.lightbox-close:active{transform:scale(.94)}.lightbox-media{position:relative;width:100%;aspect-ratio:var(--media-ratio)}.lightbox-content[data-docked-controls=true]{--controls-space: 72px;width:100%}.lightbox-content[data-docked-controls=true] .lightbox-media{width:min(var(--media-width),100%,var(--available-media-height) * var(--media-ratio));margin-inline:auto}.lightbox-player-controls{container-type:inline-size;width:100%;max-width:580px;height:56px;margin:16px auto 0}.lightbox-player-controls .player-controls{position:relative;inset:auto;width:100%;opacity:1;transform:none;visibility:visible;pointer-events:auto}.lightbox-card{position:absolute;inset:0;container-type:inline-size;touch-action:pinch-zoom;-webkit-user-select:none;user-select:none}.lightbox-shadow{position:absolute;inset:0;box-shadow:0 3cqw 8cqw -1cqw #000;opacity:0;pointer-events:none}.lightbox-surface{position:absolute;inset:0;overflow:hidden;background:var(--surface)}.lightbox-surface>img,.lightbox-surface>video{display:block;width:100%;height:100%;object-fit:contain}.lightbox-image,.lightbox-image>img{display:block;width:100%;height:100%;object-fit:contain}.video-preview-frame{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.video-preview-frame>canvas{display:block;width:100%;height:100%;object-fit:contain}.animation-controls{position:fixed;top:calc(64*min(1px,100vw / 1728) + 40px);right:16px;z-index:30;width:min(300px,calc(100vw - 32px));border:1px solid var(--panel-border);border-radius:14px;background:var(--panel-bg);color:var(--panel-text);box-shadow:var(--panel-shadow);font-size:13px;pointer-events:auto}.animation-controls>summary{min-height:44px;padding:14px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.animation-controls>summary:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:14px}.animation-controls-body{max-height:calc(100dvh - (64*min(1px,100vw / 1728)) - 124px);overflow-y:auto;overscroll-behavior:contain;border-radius:0 0 14px 14px}@media(hover:hover)and (pointer:fine){.lightbox-close:hover{background:#fff3;border-color:#ffffff47}.theme-switch:hover .switch-track{background:var(--switch-track-hover)}.work-filters button:hover{-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 10px var(--flow-glow));translate:var(--flow-nudge);animation:var(--flow-lit)}:root[data-theme=dark] .work-filters button:hover{background-size:200% 100%;transition:-webkit-text-fill-color .18s ease,var(--flow-pop)}}@media(max-width:1000px){.portfolio{--space-section: 40px;display:block;padding:max(48px,env(safe-area-inset-top)) max(32px,env(safe-area-inset-right)) calc(110px + env(safe-area-inset-bottom)) max(32px,env(safe-area-inset-left))}.portfolio .intro{position:static;margin-left:0;padding-top:0;height:auto;min-height:0;max-width:520px}.portfolio .bio{margin-top:calc(var(--space-section) - 2px);max-width:440px}.portfolio .work-filters{--flow-nudge: 0 -2px;flex-direction:row;gap:28px;scroll-margin-top:calc(max(48px,env(safe-area-inset-top)) - 24px)}.portfolio .gallery{margin-top:20px;column-gap:20px;row-gap:24px}.theme-switch{position:absolute;top:calc(max(48px,env(safe-area-inset-top)) - 12px);right:max(32px,env(safe-area-inset-right))}.animation-controls{top:auto;bottom:calc(88px + env(safe-area-inset-bottom));right:max(16px,env(safe-area-inset-right))}.animation-controls:not([open]){width:auto}.animation-controls-body{max-height:calc(100dvh - 180px - env(safe-area-inset-bottom) - env(safe-area-inset-top))}}@media(max-width:640px){.portfolio{--space-section: 32px;padding:max(40px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) calc(110px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.portfolio .intro{position:static;height:auto;min-height:0;padding:0 4px}.portfolio .bio{max-width:420px}.portfolio .work-filters{scroll-margin-top:calc(max(40px,env(safe-area-inset-top)) - 24px)}.portfolio .gallery{gap:20px}.media-card{border-radius:9px}.theme-switch{top:calc(max(40px,env(safe-area-inset-top)) - 12px);right:calc(max(20px,env(safe-area-inset-right)) + 4px)}.lightbox{--lightbox-padding: 16px}}@media(max-height:500px){.lightbox{--lightbox-padding: 12px}.lightbox-content{--heading-space: 0px;width:100%}.lightbox-heading{position:absolute;top:var(--lightbox-top);right:max(var(--lightbox-padding),env(safe-area-inset-right));margin:0}.lightbox-content .lightbox-media{width:min(var(--media-width),100%,var(--available-media-height) * var(--media-ratio));max-width:calc(100% - 112px);margin-inline:auto}.portfolio .intro{position:static;height:auto;min-height:0}.portfolio .work-filters+.bio{margin-top:calc(var(--space-section) - 10px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}.work-filters button{animation:none!important;translate:none!important}}
