@font-face{font-family:Big Shoulders Display;src:url(/fonts/big-shoulders-display-900.woff2)format("woff2");font-weight:900;font-display:block;font-style:normal}@font-face{font-family:ABC Areal;src:url(/fonts/abc-areal-regular.woff2)format("woff2");font-weight:400;font-display:swap;font-style:normal}@font-face{font-family:ABC Areal;src:url(/fonts/abc-areal-medium.woff2)format("woff2");font-weight:500 600;font-display:swap;font-style:normal}@font-face{font-family:ABC Areal;src:url(/fonts/abc-areal-bold.woff2)format("woff2");font-weight:700;font-display:swap;font-style:normal}@font-face{font-family:ABC Areal Semi Mono;src:url(/fonts/abc-areal-semi-mono-regular.woff2)format("woff2");font-weight:400;font-display:swap;font-style:normal}@font-face{font-family:ABC Areal Semi Mono;src:url(/fonts/abc-areal-semi-mono-medium.woff2)format("woff2");font-weight:500 600;font-display:swap;font-style:normal}@font-face{font-family:ABC Areal Semi Mono;src:url(/fonts/abc-areal-semi-mono-bold.woff2)format("woff2");font-weight:700;font-display:swap;font-style:normal}*{box-sizing:border-box;margin:0;padding:0}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skeleton{background:linear-gradient(90deg, var(--bg-secondary) 25%, var(--bg-color) 50%, var(--bg-secondary) 75%);background-size:200% 100%;animation:1.5s ease-in-out 8 skeleton-loading}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}html.js-ready .img-loading{opacity:1;transition:opacity var(--duration-fast) ease}.img-loaded{opacity:1}@media (prefers-reduced-motion:reduce){.skeleton{background:var(--bg-secondary);animation:none}.img-loading{opacity:1;transition:none}}:root{color-scheme:light;--bg-color:#f5f5f5;--bg-secondary:#ececec;--text-primary:#0f0f0f;--text-secondary:#4d4d4d;--text-muted:#6b6b6b;--accent:#0f0f0f;--red-mark:red;--link-color:#4d4d4d;--radius-lg:4px;--radius:4px;--radius-sm:2px;--radius-pill:999px;--grain-opacity:.03;--status-success:#10b981;--status-warning:#f59e0b;--status-info:#60a5fa;--status-error:#dc3545;--font-family-base:"ABC Areal", "Arial", sans-serif;--font-family-display:"Big Shoulders Display", "Helvetica Neue", sans-serif;--font-family-mono:"ABC Areal Semi Mono", "SF Mono", "Menlo", monospace;--max-width:1600px;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-8:64px;--space-10:80px;--space-12:96px;--space-15:120px;--page-padding-x:120px;--page-padding-top:40px;--page-padding-bottom:80px;--font-h1:44px;--font-h2:26px;--font-xl:22px;--font-h3:18px;--font-lg:17px;--font-body-lg:17px;--font-md:16px;--font-body:15px;--font-sm:13px;--font-caption:12px;--font-xs:11px;--font-mini:10px;--font-micro:10px;--leading-tight:1.05;--leading-normal:1.4;--leading-body:1.5;--leading-relaxed:1.6;--tracking-tight:-.03em;--tracking-normal:0;--tracking-wide:.05em;--shadow-sm:0 2px 8px #0000000a;--shadow-md:0 8px 24px #0000000f;--shadow-lg:0 12px 40px #00000014;--shadow-accent:0 4px 12px #1a1a1a33;--border-light:#0000000f;--border-medium:#0000001a;--overlay-light:#0000000a;--overlay-medium:#00000026;--overlay-heavy:#0006;--font-display-lg:52px;--bg-grouped:#00000005;--duration-fast:.2s;--duration-normal:.3s;--duration-slow:.5s;--duration-reveal:.38s;--duration-instant:.12s;--duration-hover:.24s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:ease-out;--motion-distance-sm:10px;--motion-distance-md:16px;--motion-distance-lg:20px;--motion-line-delay:.12s;--afterimage-offset:3px;--afterimage-offset-lg:5px;--afterimage-shift:4px;--afterimage-lag:60ms;--afterimage-lag-2:.12s;--afterimage-ghost:.28;--afterimage-ghost-2:.14;--afterimage-fade:.45s;--hover-lift:translateY(-2px);--hover-lift-large:translateY(-4px);--hover-shift:translateX(4px);--hover-shift-sm:translateX(2px);--hover-scale-subtle:scale(1.02);--hover-scale-medium:scale(1.03);--hover-scale-emphasis:scale(1.05);--transition-color:color var(--duration-fast) var(--ease-out);--transition-transform:transform var(--duration-hover) var(--ease-out);--transition-opacity:opacity var(--duration-fast) var(--ease-out);--transition-lift:transform var(--duration-hover) var(--ease-out), box-shadow var(--duration-hover) var(--ease-out);--surface-raised:#ecececf5;--surface-soft:#ececece0;--surface-overlay:#f5f5f5f0;--surface-border:#0f0f0f17;--surface-shadow:0 10px 30px #0000000f}[data-theme=dark]{color-scheme:dark;--bg-color:#0f0f0f;--bg-secondary:#191919;--text-primary:#f0f0f0;--text-secondary:#b3b3b3;--text-muted:#8a8a8a;--accent:#f0f0f0;--link-color:#b3b3b3;--status-success:#34d399;--status-warning:#fbbf24;--status-info:#93c5fd;--status-error:#f87171;--border-light:#ffffff0f;--border-medium:#ffffff1a;--overlay-light:#ffffff0a;--overlay-medium:#ffffff1a;--overlay-heavy:#0009;--shadow-sm:0 2px 8px #0003;--shadow-md:0 8px 24px #0000004d;--shadow-lg:0 12px 40px #0006;--shadow-accent:0 4px 12px #0006;--surface-raised:#191919f5;--surface-soft:#1e1e1eeb;--surface-overlay:#161616f0;--surface-border:#ffffff17;--surface-shadow:0 14px 36px #00000057;--bg-grouped:#ffffff08}[data-theme=dark] header{background-color:var(--bg-color)}.site-bg{z-index:-1;pointer-events:none;background:var(--bg-color);position:fixed;inset:0}.glass{background:var(--surface-soft);border:1px solid var(--surface-border);box-shadow:var(--surface-shadow)}html{font-family:var(--font-family-base);overflow-x:clip}body{font-family:var(--font-family-base);background-color:var(--bg-color);color:var(--text-primary);font-weight:400;font-size:var(--font-body);line-height:var(--leading-body);letter-spacing:var(--tracking-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--duration-normal) var(--ease-out), color var(--duration-fast) var(--ease-out);cursor:auto;overflow-x:clip}.data{font-family:var(--font-family-mono);font-size:var(--font-xs);font-variant-numeric:tabular-nums;letter-spacing:.03em;color:var(--text-muted)}html.theme-anim,html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:background-color .35s var(--ease-out), border-color .35s var(--ease-out), color .35s var(--ease-out), fill .35s var(--ease-out), stroke .35s var(--ease-out), box-shadow .35s var(--ease-out)!important}@media (prefers-reduced-motion:reduce){html.theme-anim,html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:none!important}}@media (hover:hover) and (prefers-reduced-motion:no-preference){html.custom-cursor-enabled,html.custom-cursor-enabled body{cursor:none}html.custom-cursor-enabled *,html.custom-cursor-enabled :before,html.custom-cursor-enabled :after{cursor:none!important}}header{transition:opacity .25s}.cursor-dot{background:var(--text-primary);pointer-events:none;z-index:100000;will-change:transform;contain:layout style;width:6px;height:6px;transition:opacity var(--duration-fast) var(--ease-out);border-radius:50%;position:fixed;top:0;left:0}@supports (backdrop-filter:invert(1)){.cursor-dot{backdrop-filter:blur(6px)invert()grayscale()contrast(9);background:0 0}}.cursor-trail{pointer-events:none;z-index:99998;position:fixed;inset:0}.cursor-text{pointer-events:none;z-index:100000;font-size:var(--font-micro);text-transform:lowercase;letter-spacing:.07em;color:var(--text-primary);opacity:0;transition:opacity .15s var(--ease-out);white-space:nowrap;position:fixed;transform:translate(24px,-50%)}.cursor-text.visible{opacity:1}.cursor-text.on-photo{color:var(--red-mark);text-shadow:0 0 5px #fffffff2,0 1px 9px #ffffffd9;transform:translate(12px,-50%)}@media (hover:none),(prefers-reduced-motion:reduce){.cursor-dot,.cursor-trail,.cursor-text{display:none!important}}@media (hover:none){a:active,button:active,[role=button]:active{opacity:.7;transition:opacity var(--duration-instant) var(--ease-out)}}h1,h2,h3{font-family:var(--font-family-base);letter-spacing:var(--tracking-tight);text-transform:none;font-weight:500;line-height:var(--leading-normal)}a{color:var(--link-color);transition:var(--transition-color);text-decoration:underline}a:hover{color:var(--accent)}a,button,[role=button]{cursor:pointer}input,textarea,select{cursor:text}button,input,select,textarea{font:inherit;color:inherit}@media (width<=1024px){:root{--page-padding-x:32px}}@media (width<=768px){:root{--page-padding-x:24px;--page-padding-top:32px;--page-padding-bottom:64px}}@media (width<=480px){:root{--page-padding-x:16px;--page-padding-bottom:48px}}.site-top{justify-content:space-between;align-items:center;gap:var(--space-4);padding:20px var(--page-padding-x);display:flex}.site-name{letter-spacing:-.01em;white-space:nowrap;color:var(--text-primary);padding:6px 0;font-size:18px;font-weight:400;line-height:1.35;text-decoration:none}.site-links{gap:20px;display:flex}.site-links a{color:var(--text-secondary);transition:color var(--duration-fast) var(--ease-out);padding:6px 0;font-size:15px;line-height:1.35;text-decoration:none}.site-links a:hover,.site-links a[aria-current=page]{color:var(--text-primary)}a.site-name[aria-current=page]>.echo,.site-links a[aria-current=page]>.echo{text-decoration:underline 1px var(--accent);text-underline-offset:5px}.site-name:focus-visible,.site-links a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=768px){.site-top{padding:16px}.site-links{gap:16px}.site-name,.site-links a{padding-block:12px}}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--duration-fast);animation-timing-function:var(--ease-out)}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}.persist,.echo,.linger,.ghost{display:inline-block;position:relative}.persist:before,.ghost:before,.ghost:after{content:attr(data-t);content:attr(data-t) / "";white-space:nowrap;pointer-events:none;opacity:0;position:absolute;top:0;left:0}.persist{transition:transform var(--duration-hover) var(--ease-out), color var(--duration-fast) var(--ease-out)}:is(a,button):hover .persist,:is(a,button):focus-visible .persist{transform:translateX(var(--afterimage-shift));color:var(--red-mark)}:is(a,button):hover .persist:before,:is(a,button):focus-visible .persist:before{color:var(--red-mark);transform:translateX(calc(var(--afterimage-shift) * -1));animation:afterimage-persist var(--afterimage-fade) var(--ease-out) both}@keyframes afterimage-persist{0%{opacity:.85}to{opacity:0}}.echo,.linger{isolation:isolate}.echo:before,.echo:after,.linger:before,.linger:after{content:attr(data-t);content:attr(data-t) / "";z-index:-1;color:var(--red-mark);white-space:nowrap;pointer-events:none;position:absolute;top:0;left:0}.echo:before,.linger:before{transform:translate(.111em)}.echo:after,.linger:after{transform:translate(.222em)}.echo:before{opacity:.55}.echo:after{opacity:.28}.linger:before,.linger:after{opacity:0;transition:opacity 1.2s var(--ease-out)}:is(a,button):hover .linger:before,:is(a,button):focus-visible .linger:before{opacity:.55;transition-duration:var(--duration-instant)}:is(a,button):hover .linger:after,:is(a,button):focus-visible .linger:after{opacity:.28;transition-duration:var(--duration-instant)}[data-echo-in-view].echo{color:var(--text-primary)}@keyframes afterimage-ghost-1{0%{opacity:0;transform:translateY(10px)}15%{opacity:var(--afterimage-ghost)}to{opacity:0;transform:none}}@keyframes afterimage-ghost-2{0%{opacity:0;transform:translateY(20px)}15%{opacity:var(--afterimage-ghost-2)}to{opacity:0;transform:none}}.ghost:before,.ghost:after{color:var(--text-primary)}.ghost.is-red:before{color:var(--red-mark)}@supports (animation-timeline:view()) and (animation-range:entry){@media screen and (prefers-reduced-motion:no-preference){html:not([data-motion=reduce]) :is(.reveal,.animate-on-scroll) .ghost:before,html:not([data-motion=reduce]) :is(.reveal,.animate-on-scroll) .ghost:after{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view()}html:not([data-motion=reduce]) :is(.reveal,.animate-on-scroll) .ghost:before{animation-name:afterimage-ghost-1;animation-range:entry 10%}html:not([data-motion=reduce]) :is(.reveal,.animate-on-scroll) .ghost:after{animation-name:afterimage-ghost-2;animation-range:entry 20% cover 30%}}}.afterimage-copy{z-index:99;color:var(--red-mark);white-space:nowrap;pointer-events:none;margin:0;position:fixed}.afterimage-copy--rise{animation:afterimage-rise .7s var(--ease-out) both}.afterimage-copy--smear{animation:afterimage-smear var(--duration-slow) var(--ease-out) both}.afterimage-copy--char{animation:afterimage-char .6s var(--ease-out) both}.afterimage-number-in{animation:afterimage-number-in var(--duration-slow) var(--ease-out) both;display:inline-block}.afterimage-focus-left{animation:afterimage-focus-left 1.2s var(--ease-out) both}@keyframes afterimage-rise{0%{opacity:.6}to{opacity:0;transform:translateY(-18px)}}@keyframes afterimage-smear{0%{opacity:.45}to{opacity:0}}@keyframes afterimage-char{0%{opacity:.7}to{opacity:0;transform:translateY(-16px)}}@keyframes afterimage-number-in{0%{opacity:0;transform:translateY(14px)}}@keyframes afterimage-focus-left{0%{box-shadow:0 0 0 1px var(--red-mark), 2px 2px 0 1px #ff000059}to{box-shadow:0 0 0 1px #0000,2px 2px 0 1px #0000}}@media (prefers-reduced-motion:reduce){.persist,:is(a,button):hover .persist{transition:none;transform:none}:is(a,button):hover .persist:before,:is(a,button):focus-visible .persist:before{animation:none}.linger:before,.linger:after{transition:none}}html[data-motion=reduce] .persist,html[data-motion=reduce] :is(a,button):hover .persist{transition:none;transform:none}html[data-motion=reduce] :is(a,button):hover .persist:before,html[data-motion=reduce] :is(a,button):focus-visible .persist:before{animation:none}html[data-motion=reduce] .linger:before,html[data-motion=reduce] .linger:after{transition:none}.has-strip-ghosts{position:relative}.strip-ghost{z-index:1;pointer-events:none;opacity:0;position:absolute}@keyframes spring{0%{transform:scale(1)}50%{transform:scale(.94)translateY(1px)}to{transform:scale(1)}}main{max-width:var(--max-width);margin:0 auto;padding:0 0 80px}.site-footer{max-width:100%;padding:20px var(--page-padding-x) max(20px, env(safe-area-inset-bottom));border-top:1px solid var(--surface-border);color:var(--text-secondary);justify-content:center;font-size:15px;line-height:1.35;display:flex}.site-footer>.footer-content{max-width:var(--max-width);width:100%}.footer-content{grid-template-columns:auto auto 1fr auto auto;align-items:center;gap:20px;width:100%;display:grid}.footer-links--right{grid-area:1/4}.footer-settings-button{grid-area:1/5}.footer-drawer-toggle{color:var(--text-secondary);cursor:pointer;transition:transform var(--duration-instant) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:none;place-items:center;padding:0;display:grid}.footer-settings-button{min-width:44px;min-height:44px;margin-right:-14px}.footer-drawer-toggle:hover,.footer-drawer-toggle[aria-expanded=true]{color:var(--text-primary)}.footer-drawer-toggle:active{transform:scale(.97)}.footer-drawer-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.footer-signature{aspect-ratio:1866/1285;background:var(--text-primary);height:48px;display:block;mask:url(/signature.svg) 50%/contain no-repeat}.footer-links{--from:-28px;--lean:-12px;align-items:center;gap:20px;display:flex}.footer-links--right{--from:28px;--lean:12px;gap:8px}.js-ready .footer-links>*{opacity:0;transform:translateX(var(--from));visibility:hidden;transition:opacity var(--duration-hover) var(--ease-out), transform var(--duration-hover) var(--ease-out), visibility 0s linear var(--duration-hover), color var(--duration-fast) var(--ease-out)}.js-ready .footer-links.is-open>*{opacity:1;visibility:visible;transition-delay:calc(var(--step,0) * 40ms), calc(var(--step,0) * 40ms), 0s, 0s;transform:none}.footer-links:not(.footer-links--right)>:nth-child(2),.footer-links--right>:nth-last-child(2){--step:1}@media (hover:hover) and (pointer:fine){.js-ready .footer-drawer-toggle:hover+.footer-links:not(.is-open)>*{opacity:.35;transform:translateX(var(--lean));visibility:visible;pointer-events:none;transition-delay:0s}}@media (prefers-reduced-motion:reduce){.js-ready .footer-links>*,.footer-drawer-toggle{transition:none;transform:none!important}}.site-footer a{color:var(--text-secondary);transition:color var(--duration-fast) var(--ease-out), opacity var(--duration-fast) var(--ease-out);align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.site-footer a:hover{color:var(--accent)}.footer-cursor-toggle{min-height:44px;font:inherit;letter-spacing:inherit;color:var(--text-secondary);cursor:pointer;transition:color var(--duration-fast) var(--ease-out);background:0 0;border:none;align-items:center;gap:.3em;padding:0;display:none}@media (hover:hover) and (pointer:fine){.footer-cursor-toggle{display:inline-flex}}@media (prefers-reduced-motion:reduce){.footer-cursor-toggle{display:none}}.footer-cursor-toggle:hover{color:var(--accent)}.footer-cursor-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.footer-cursor-state{color:var(--text-primary)}.footer-cursor-toggle[aria-pressed=false] .footer-cursor-state{color:var(--text-muted)}@media (width<=768px){.site-footer{padding-inline:16px}.footer-content{gap:12px}.footer-signature{height:40px}.footer-links{gap:16px}}.footer-links>[data-t]{position:relative}.footer-links>[data-t]:before{content:attr(data-t);content:attr(data-t) / "";white-space:nowrap;color:var(--red-mark);opacity:0;pointer-events:none;position:absolute;top:50%;left:0;translate:0 -50%}.js-ready .footer-links.is-open>[data-t]:before{animation:footer-trail .55s var(--ease-out) both;animation-delay:calc(var(--step,0) * 40ms)}@keyframes footer-trail{0%{opacity:.5;transform:translateX(var(--from))}to{opacity:0;transform:translateX(calc(var(--from) * -.15))}}@media (prefers-reduced-motion:reduce){.js-ready .footer-links.is-open>[data-t]:before{animation:none}}html[data-motion=reduce] .footer-links.is-open>[data-t]:before{animation:none}.text-button{align-items:baseline;gap:var(--space-1);border-radius:var(--radius-sm);min-height:24px;color:var(--text-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:2px 0;font-weight:500;text-decoration:none;display:inline-flex}.text-button--quiet{font-size:var(--font-sm);color:var(--text-secondary);font-weight:400}.text-button-arrow{color:var(--text-muted);transition:color var(--duration-fast) var(--ease-out)}.text-button:hover .text-button-arrow,.text-button:focus-visible .text-button-arrow{color:var(--red-mark)}.text-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.text-button:disabled{opacity:.6;cursor:not-allowed}.field{border-radius:var(--radius);background:var(--bg-secondary);width:100%;min-height:44px;color:var(--text-primary);font:inherit;font-size:var(--font-body);caret-color:var(--red-mark);border:0;padding:12px 16px}.field::placeholder{color:var(--text-muted);opacity:1}.field:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.field[aria-invalid=true]{outline:1px solid var(--red-mark)}.field-label{margin-bottom:var(--space-1);font-size:var(--font-sm);color:var(--text-secondary);display:block}.check{appearance:none;border-radius:var(--radius-sm);background:var(--bg-secondary);cursor:pointer;width:18px;height:18px;transition:background-color var(--duration-fast) var(--ease-out);place-content:center;margin:0;display:inline-grid}.check[type=radio]{border-radius:var(--radius-pill)}.check:checked{background:var(--text-primary)}.check:after{content:"";border-bottom:1.5px solid var(--bg-color);border-left:1.5px solid var(--bg-color);width:9px;height:5px;transition:transform var(--duration-fast) var(--ease-out);transform:translateY(-1px)rotate(-45deg)scale(0)}.check[type=radio]:after{border-radius:var(--radius-pill);background:var(--bg-color);border:0;width:6px;height:6px;transform:scale(0)}.check:checked:after{transform:translateY(-1px)rotate(-45deg)scale(1)}.check[type=radio]:checked:after{transform:scale(1)}.check:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.loading-bar{background:var(--border-medium);width:100%;max-width:240px;height:1px;position:relative;overflow:hidden}.loading-bar:after{content:"";background:var(--text-primary);width:40%;animation:loading-bar 1.2s var(--ease-out) infinite;position:absolute;inset:0}@keyframes loading-bar{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media (prefers-reduced-motion:reduce){.loading-bar:after{width:100%;animation:none}.check,.check:after,.text-button-arrow{transition:none}}.hero{position:relative}.hero h1:not(.hero-headline){font-family:var(--font-family-base);letter-spacing:var(--tracking-tight);text-transform:none;font-size:clamp(40px,8vw,56px);font-weight:500;line-height:1.15}.meta-item{padding-bottom:var(--space-2);border-bottom:1px solid #1a1a1a1a;justify-content:space-between;display:flex}.meta-label{font-size:var(--font-sm);color:var(--text-secondary)}.meta-value{font-family:var(--font-family-base);font-size:var(--font-body)}@keyframes reveal-up{0%{opacity:0;transform:translateY(var(--motion-distance-md))}}@supports (animation-timeline:view()) and (animation-range:entry){@media screen and (prefers-reduced-motion:no-preference){html:not([data-motion=reduce]) :is(.reveal,.animate-on-scroll){animation-name:reveal-up;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:entry entry 80%}}}.fade-in{opacity:0;transition:opacity var(--duration-slow) var(--ease-out)}.fade-in.loaded{opacity:1}.project-detail-section{width:100%;max-width:var(--max-width);padding:0 var(--space-6);flex-direction:column;margin:0 auto;display:flex}.project-detail-title{font-family:var(--font-family-base);font-size:var(--font-display-lg);letter-spacing:-.03em;margin:0;font-weight:500;line-height:1.1}.project-detail-oneliner{font-family:var(--font-family-base);font-size:var(--font-h3);color:var(--text-secondary);max-width:600px;font-weight:500;line-height:1.4}.gallery-main{aspect-ratio:16/9;border-radius:var(--radius-sm);background:var(--bg-grouped);width:100%;max-width:900px;overflow:hidden}.gallery-main-image{object-fit:cover;width:100%;height:100%;transition:opacity .8s var(--ease-out), transform var(--duration-slow) var(--ease-out)}.gallery-main:hover .gallery-main-image{transform:var(--hover-scale-subtle)}.gallery-dots{gap:var(--space-2);justify-content:center;display:flex}.gallery-dot{background:var(--overlay-medium);cursor:pointer;width:8px;height:8px;transition:background-color var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out);border:none;border-radius:50%;padding:0;position:relative}.gallery-dot:before{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gallery-dot:hover{background:var(--overlay-heavy)}.gallery-dot.active{background:var(--text-primary);transform:scale(1.2)}.section-label{font-size:var(--font-caption);text-transform:lowercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:var(--space-3)}.project-summary{font-family:var(--font-family-base);font-size:var(--font-lg);color:var(--text-primary);max-width:700px;font-weight:500;line-height:1.6}.footer-nav-label{font-size:var(--font-mini);text-transform:lowercase;letter-spacing:.05em;color:var(--text-secondary);display:block}.footer-nav-link{font-family:var(--font-family-base);font-size:var(--font-h2);color:var(--text-primary);transition:var(--transition-color);align-items:center;min-height:44px;font-weight:500;text-decoration:none;display:inline-flex}.footer-nav-link:hover{color:var(--accent)}.meta-item,.meta-label,.meta-value{display:none}.work-card-boo{width:100%;min-height:340px;color:var(--text-primary);font-family:var(--font-family-base);background:#fff;background:radial-gradient(ellipse 80% 60% at 22% 18%, #ff4d6deb, transparent 70%), radial-gradient(ellipse 70% 55% at 82% 28%, #ff2e4de6, transparent 70%), radial-gradient(ellipse 65% 60% at 18% 82%, #ff1a4deb, transparent 70%), radial-gradient(ellipse 75% 65% at 78% 78%, color-mix(in srgb, var(--red-mark) 95%, transparent), transparent 70%), linear-gradient(135deg, #f35 0%, #ff1a3d 35%, #ff1f40 70%, var(--red-mark) 100%);background-position:0 0;background-size:200% 200%;padding:clamp(20px,4.5cqi,32px);animation:16s ease-in-out infinite alternate booGradientDrift;display:grid;position:relative;overflow:hidden;container-type:inline-size}.work-card-boo:after{content:"";pointer-events:none;mix-blend-mode:screen;opacity:.85;background:radial-gradient(50% 40% at 30% 25%,#ffffff52,#0000 70%),radial-gradient(30% 20% at 72% 70%,#ffffff2e,#0000 70%);animation:14s ease-in-out infinite alternate booSheenDrift;position:absolute;inset:0}@keyframes booGradientDrift{0%{filter:hue-rotate()saturate(1.05);background-position:0 0}50%{filter:hue-rotate(-10deg)saturate(1.12);background-position:100%}to{filter:hue-rotate(-3deg)saturate(1.08);background-position:50% 100%}}@keyframes booSheenDrift{0%{opacity:.85;transform:translate(0)scale(1)}to{opacity:.65;transform:translate(8%,6%)scale(1.08)}}@media (prefers-reduced-motion:reduce){.work-card-boo,.work-card-boo:after{animation:none}}.work-card-boo--thumbnail{min-height:100%;padding:clamp(14px,4cqi,22px)}@media (width<=1500px){nav{padding:var(--nav-spacing) 32px}main{padding:0 0 48px}.hero h1:not(.hero-headline){font-size:36px}.project-detail-section{padding:0 var(--space-4)}.gallery-main{max-width:800px}.project-detail-title{font-size:48px}.project-detail-oneliner{font-size:var(--font-body-lg)}}@media (width<=768px){header{-webkit-backdrop-filter:none}nav{padding:calc(12px * var(--nav-scale)) 16px;flex-direction:row;justify-content:center;align-items:center;min-height:56px;position:relative}nav .logo{font-size:calc(32px * var(--nav-scale))}.hero h1:not(.hero-headline){font-size:var(--font-h2);white-space:normal}.project-detail-section{padding:0 var(--space-3)}.project-detail-title{font-size:36px}.project-detail-oneliner,.project-summary{font-size:var(--font-body-lg)}.footer-nav-link{font-size:var(--font-h3)}}@media (width<=380px){nav .logo{font-size:calc(28px * var(--nav-scale))}}img.lazy{opacity:0;background:linear-gradient(135deg, var(--bg-secondary) 0%, var(--surface-border) 100%);transition:opacity var(--duration-normal) var(--ease-out);min-height:200px}img.lazy[src]{opacity:1;background:0 0}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}.theme-toggle{min-width:44px;min-height:44px;color:var(--text-secondary);cursor:pointer;transition:color var(--duration-fast) var(--ease-out), transform var(--duration-hover) var(--ease-out);background:0 0;border:none;place-items:center;padding:0 10px;display:inline-grid}.theme-toggle:hover{color:var(--text-primary);transform:rotate(6deg)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-icon{transition:opacity var(--icon-swap-dur) var(--icon-swap-ease), filter var(--icon-swap-dur) var(--icon-swap-ease), transform var(--icon-swap-dur) var(--icon-swap-ease);will-change:opacity, filter, transform;grid-area:1/1}.theme-icon--moon,[data-theme=dark] .theme-icon--sun{opacity:1;filter:blur();transform:scale(1)}.theme-icon--sun,[data-theme=dark] .theme-icon--moon{opacity:0;filter:blur(var(--icon-swap-blur));transform:scale(var(--icon-swap-start-scale))}@media (prefers-reduced-motion:reduce){.theme-icon{transition:none}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}html[data-motion=reduce]{scroll-behavior:auto!important}html[data-motion=reduce] *,html[data-motion=reduce] :before,html[data-motion=reduce] :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.defer-render{content-visibility:auto;contain-intrinsic-size:auto 600px}@media (width<=768px){.defer-render{contain-intrinsic-size:auto 300px}}:root{--icon-swap-dur:.2s;--icon-swap-blur:2px;--icon-swap-start-scale:.25;--icon-swap-ease:ease-in-out;--digit-dur:.5s;--digit-distance:8px;--digit-stagger:70ms;--digit-blur:2px;--digit-ease:cubic-bezier(.34, 1.45, .64, 1);--digit-dir-x:0;--digit-dir-y:1;--text-swap-dur:.2s;--text-swap-translate-y:8px;--text-swap-blur:2px;--text-swap-ease:ease-out}.skip-link{background:var(--accent);color:var(--bg-color);z-index:9999;font-family:var(--font-family-base);transition:top var(--duration-fast,.2s) var(--ease-out,cubic-bezier(.16, 1, .3, 1));border-radius:0;padding:.75rem 1.5rem;font-size:.875rem;text-decoration:none;position:absolute;top:-100%;left:50%;transform:translate(-50%)}.skip-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;top:1rem}
