:root{--sans:"Be Vietnam Pro",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,monospace;--r-pill:999px;--r-card:18px;--bg-wash:#080a0c;--fg:#ffffff;--fg-mute:rgba(255,255,255,0.65);--fg-dim:var(--fg-mute);--fg-faint:rgba(255,255,255,0.14);--rim:rgba(255,255,255,0.16);--rim-up:rgba(255,255,255,0.22);--surface:#1d1d1d;--accent:#e2b658;--paper:rgba(255,255,255,0.06);--paper-strong:rgba(255,255,255,0.12);--shader-opacity:1;--shadow:0 12px 28px -12px rgba(0,0,0,0.6)}*{box-sizing:border-box}html{height:100%;scroll-snap-type:y mandatory}body{margin:0;padding:0;background:var(--bg-wash);color:var(--fg);font-family:var(--sans);font-weight:400;-webkit-font-smoothing:antialiased;font-feature-settings:"ss01","cv11";overflow-x:hidden}a{text-decoration:none}a,button{color:inherit}button{font:inherit;background:none;border:0;cursor:pointer;padding:0}#bg-root{position:fixed;inset:0;pointer-events:none;opacity:var(--shader-opacity);transition:opacity .6s ease}body[data-mode=contact]{--shader-opacity:0;--bg-wash:#2d2f33}.glass{position:relative;isolation:isolate;background:var(--paper);border:1px solid var(--rim);border-radius:var(--r-card);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);box-shadow:inset 0 1px 0 var(--rim-up),var(--shadow)}@supports ((-webkit-backdrop-filter:url("#liquid-glass")) or (backdrop-filter:url("#liquid-glass"))){.glass{-webkit-backdrop-filter:url(#liquid-glass) blur(18px) saturate(1.4);backdrop-filter:url(#liquid-glass) blur(18px) saturate(1.4)}}.glass-pill{border-radius:var(--r-pill)}.hud{position:fixed;z-index:5;display:flex;align-items:center;gap:12px;padding:9px 14px;font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--fg-dim)}.hud .dot{width:6px;height:6px;border-radius:50%;background:oklch(.55 .18 145);box-shadow:0 0 8px oklch(.65 .18 145);animation:pulse 2.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}.hud-sep{width:1px;height:11px;background:var(--fg-faint)}.hud-tl{top:20px;left:22px}.hud-tr{top:20px;right:22px}.hud-bl{bottom:20px;left:22px}.hud-br{bottom:20px;right:22px}.caret{font-weight:300;display:inline-block;width:0;margin-left:0!important;overflow:visible}.page{position:relative}.hero{height:100vh;height:100svh;justify-content:center;text-align:center;scroll-snap-align:start;scroll-snap-stop:always;padding:0 32px}.hero,.hero-inner{display:flex;align-items:center}.hero-inner{flex-direction:column;gap:20px}.hero-logo{margin:0 0 24px;animation:hero-rise .42s ease-out both;animation-delay:0s;mix-blend-mode:difference}.hero-logo__mask{display:block;width:clamp(80px,12vw,140px);aspect-ratio:364/362;background-color:#ffffff;-webkit-mask-image:url(/assets/ylogo.svg);mask-image:url(/assets/ylogo.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.hero-positioning{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-mute);margin:0;animation:hero-rise .42s ease-out both;animation-delay:60ms}.hero-links{display:flex;gap:24px;flex-wrap:wrap;animation:hero-rise .42s ease-out both;animation-delay:.12s}.hero-link{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-mute);touch-action:manipulation;transition:color .2s ease,transform .2s ease}@media (hover:hover){.hero-link:hover{color:var(--fg);transform:translateY(-1px)}}.hero-link:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:2px}@keyframes hero-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.project-trigger{height:100vh;height:100svh;scroll-snap-align:start;scroll-snap-stop:always}.project-card-fixed{position:fixed;top:50%;left:50%;transform:translateX(-50%) translateY(calc(-50% + 120px));opacity:0;pointer-events:none;z-index:3;width:calc(100% - 120px);max-width:660px;transition:transform .9s cubic-bezier(.22,1,.36,1),opacity .65s ease}.project-card-fixed.is-visible{transform:translateX(-50%) translateY(-50%);opacity:1;pointer-events:auto}.project-card-glass{background:rgba(0,0,0,.82);-webkit-backdrop-filter:blur(20px) saturate(1.3);backdrop-filter:blur(20px) saturate(1.3);border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:40px 44px;box-shadow:0 24px 60px -16px rgba(0,0,0,.7);overflow:hidden}.project-card__content[data-phase=exiting]{animation:pc-exit .2s ease-in both}.project-card__content[data-phase=entering]{animation:pc-enter .4s cubic-bezier(.16,1,.3,1) both}@keyframes pc-exit{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(-28px)}}@keyframes pc-enter{0%{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:none}}.pc__n{font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-mute);margin:0 0 8px}.pc__title{font-family:var(--sans);font-size:clamp(22px,3vw,36px);font-weight:500;letter-spacing:-.025em;color:#ffffff;margin:0 0 14px;text-wrap:balance}.pc__meta{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);margin-bottom:24px}.pc__meta-sep{color:var(--fg-faint)}.pc__gallery{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:8px;gap:8px;margin-bottom:20px}.pc__gallery-img{border-radius:10px;overflow:hidden;aspect-ratio:16/10}.pc__gallery-img img{width:100%;height:100%;object-fit:cover;display:block}.pc__body{font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.65;color:var(--fg-mute);margin:0 0 20px;text-wrap:pretty}.pc__stack{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 20px;padding:0}.pc__chip{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);border:1px solid var(--fg-faint);border-radius:var(--r-pill);padding:3px 10px}.pc__links{display:flex;gap:12px;flex-wrap:wrap}.pc__link{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-mute);border:1px solid var(--rim);border-radius:var(--r-pill);padding:6px 16px;touch-action:manipulation;transition:color .15s ease,border-color .15s ease}.pc__link--accent{color:var(--accent);border-color:var(--accent)}@media (hover:hover){.pc__link:hover{color:#ffffff;border-color:rgba(255,255,255,.6)}.pc__link--accent:hover{color:var(--accent);border-color:var(--accent);opacity:.8}}.pc__link:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:2px}.project-dot-nav{position:fixed;left:28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:5;opacity:0;transition:opacity .4s ease}.project-dot-nav.is-visible{opacity:1}.project-dot{display:block;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.28);transition:background .3s ease,transform .3s ease;cursor:default}.project-dot.is-active{background:#ffffff;transform:scale(1.6)}.section-label{display:block;font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-mute);margin-bottom:12px}.work{margin-top:120px}.work-section__heading{font-family:var(--sans);font-size:clamp(28px,3.6vw,44px);font-weight:500;letter-spacing:-.025em;color:var(--fg);margin:0 0 32px;text-wrap:balance}.work.is-visible .work-section__heading{animation:work-rise .38s ease-out both}.filter-pills{display:flex;flex-wrap:nowrap;gap:8px;margin-bottom:0}.filter-pill{font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;min-height:36px;padding:8px 14px;border-radius:var(--r-pill);border:1px solid var(--fg-faint);background:transparent;color:var(--fg-mute);cursor:pointer;touch-action:manipulation;transition:color .2s ease,background .2s ease,border-color .2s ease}.filter-pill--active{background:var(--surface);border-color:var(--rim);color:var(--fg)}.filter-pill:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:2px}.work-feed{list-style:none;padding:0;margin:24px 0 0}.work-entry{border-top:1px solid var(--fg-faint);transition:border-top-color .2s ease}@media (hover:hover){.work-entry:hover{border-top-color:rgba(0,0,0,.135)}}.work-entry__row{display:block;width:100%;text-align:left;padding:20px 0;cursor:pointer;touch-action:manipulation}.work-entry__row:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:4px}.work-entry__header{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.work-entry__n{font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-mute);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}.work-entry__title{font-family:var(--sans);font-size:22px;font-weight:500;letter-spacing:-.02em;color:var(--fg);margin:0;text-wrap:balance;flex:1 1}.work-entry__year{font-family:var(--mono);font-size:11px;font-weight:400;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.work-entry__role,.work-entry__year{letter-spacing:.12em;text-transform:uppercase;color:var(--fg-mute);flex-shrink:0}.work-entry__role{font-family:var(--mono);font-size:11px;font-weight:400}.work-entry__body{margin-top:10px}.work-entry__excerpt{font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.6;color:var(--fg-mute);margin:0 0 10px;text-wrap:pretty}.work-entry__stack{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.work-stack-chip{font-family:var(--mono);font-size:10px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-mute);border:1px solid var(--fg-faint);border-radius:var(--r-pill);padding:3px 10px}.work-entry__thumb{aspect-ratio:16/10;overflow:hidden;border-radius:8px;margin-bottom:10px}.work-entry__thumb img{width:100%;height:100%;object-fit:cover;display:block}.work-entry[data-dim=true]{opacity:.3;pointer-events:none;transition:opacity .3s ease}.work-entry--open .work-entry__panel{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);border:1px solid var(--rim);padding:28px 24px 24px;position:relative;animation:panel-in .3s ease both}@keyframes panel-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.work-entry__panel-content[data-stage=content]{animation:content-in .3s ease both;animation-delay:.2s}@keyframes content-in{0%{opacity:0}to{opacity:1}}.work-entry__close{position:absolute;top:10px;right:10px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--fg-mute);transition:background .15s ease,color .15s ease;cursor:pointer;touch-action:manipulation}.work-entry__close:before{content:"×";font-size:22px;font-weight:300;line-height:1}@media (hover:hover){.work-entry__close:hover{background:var(--fg-faint);color:var(--fg)}}.work-entry__close:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:50%}.work-entry__body-text{font-family:var(--sans);font-size:15px;font-weight:400;line-height:1.65;color:var(--fg-mute);margin:12px 0;text-wrap:pretty}.work-entry__role-caption{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-mute);margin:10px 0 0}.work-entry__links{display:flex;gap:16px;margin-top:16px;flex-wrap:wrap}.work-entry__link{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-mute);border:1px solid var(--rim);border-radius:var(--r-pill);padding:6px 14px;touch-action:manipulation;transition:color .15s ease,border-color .15s ease}.work-entry__link--accent{color:var(--accent);border-color:var(--accent)}@media (hover:hover){.work-entry__link:hover{color:var(--fg);border-color:var(--fg-mute)}.work-entry__link--accent:hover{color:var(--accent);border-color:var(--accent);opacity:.8}}.work-entry__gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin-bottom:14px}.work-entry__gallery-img{border-radius:8px;overflow:hidden;aspect-ratio:16/10}.work-entry__gallery-img img{width:100%;height:100%;object-fit:cover;display:block}@keyframes work-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.work.is-visible .work-entry{animation:work-rise .38s ease-out both;animation-delay:calc(var(--i, 0) * 80ms)}.work.is-visible .work-section__heading{animation-delay:0s}.contact-zone{scroll-snap-align:start;scroll-snap-stop:always;min-height:100svh;display:flex;flex-direction:column;justify-content:center}.contact{max-width:720px;margin:0 auto;padding:96px 32px 0}.contact__heading{font-family:var(--sans);font-size:clamp(28px,3.6vw,44px);font-weight:500;letter-spacing:-.025em;color:var(--fg);margin:0 0 32px;text-wrap:balance}.contact__closer{font-family:var(--sans);font-size:18px;color:var(--fg-mute);max-width:56ch;margin:0 0 40px;line-height:1.5}.contact__email{font-family:var(--mono);font-size:clamp(22px,3vw,32px);color:var(--fg);display:inline-block;margin:0 0 24px;-webkit-text-decoration:underline 1px from-font;text-decoration:underline 1px from-font;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;touch-action:manipulation;transition:-webkit-text-decoration-color .2s ease;transition:text-decoration-color .2s ease;transition:text-decoration-color .2s ease,-webkit-text-decoration-color .2s ease}@media (hover:hover){.contact__email:hover{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}}.contact__email:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:2px}.contact__secondary{display:flex;gap:16px;align-items:center;margin:0 0 64px}.contact__secondary a{font-family:var(--mono);font-size:12px;color:var(--fg-mute);letter-spacing:.08em;text-decoration:none;touch-action:manipulation}@media (hover:hover){.contact__secondary a:hover{color:var(--fg)}}.contact__secondary a:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:2px}.contact__sep{font-family:var(--mono);font-size:12px;color:var(--fg-faint)}.contact__meta{font-size:10.5px;color:var(--fg-mute);letter-spacing:.08em;margin:0}.contact__meta,.footer{font-family:var(--mono);text-transform:lowercase}.footer{font-size:11px;color:var(--fg-faint);letter-spacing:.16em;padding:96px 32px 48px;max-width:720px;margin:0 auto}.contact .section-label,.contact__closer,.contact__email,.contact__heading,.contact__meta,.contact__secondary{opacity:0}.contact.is-visible .section-label{animation:work-rise .38s ease-out both;animation-delay:0s}.contact.is-visible .contact__heading{animation:work-rise .38s ease-out both;animation-delay:60ms}.contact.is-visible .contact__closer{animation:work-rise .38s ease-out both;animation-delay:.12s}.contact.is-visible .contact__email{animation:work-rise .38s ease-out both;animation-delay:.18s}.contact.is-visible .contact__secondary{animation:work-rise .38s ease-out both;animation-delay:.24s}.contact.is-visible .contact__meta{animation:work-rise .38s ease-out both;animation-delay:.3s}@media (max-width:1023.98px){.contact-zone{justify-content:flex-start}.contact{padding:96px 24px 0}.footer{padding:96px 24px 48px}.project-panel{padding:32px}.project-panel__gallery{grid-template-columns:1fr}}@media (max-width:719px){.contact-zone{justify-content:flex-start}.hero{padding:0 18px}.contact{padding:72px 18px 0}.footer{padding:72px 18px 48px}.hud-bl,.hud-br,.hud-tr{display:none}.hud{padding:7px 12px;font-size:9.5px}.hud-tl{top:14px;left:14px}.project-page{padding:24px 16px}.project-panel{padding:28px 24px}.project-panel__gallery{grid-template-columns:1fr}.project-dot-nav{display:none}.project-card-fixed{width:calc(100% - 32px);top:50%}.project-card-glass{padding:24px 20px;max-height:calc(100svh - 80px);overflow-y:auto;overflow:hidden scroll}.pc__gallery{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}#bg-root,.bg-wash{transition:none!important}.contact .section-label,.contact__closer,.contact__email,.contact__heading,.contact__meta,.contact__secondary,.hero-links,.hero-logo,.hero-positioning,.project-panel>*{opacity:1;transform:none}}.work-entry__print-extra{display:none}@media print{#bg-root,.bg-wash,.hud{display:none!important}body,body[data-mode=focused],html{background:#fff!important;color:#000!important}.page{max-width:none;padding:24px}.work-entry__print-extra{display:block}.contact,.work-entry{break-inside:avoid;page-break-inside:avoid}a{text-decoration:underline}.contact__email,a{color:#000!important}.footer{color:#555!important}}