:root{--paper: #f4f2ec;--paper-2: #edebe3;--ink: #23211b;--ink-pure: #111110;--muted: #8c8678;--line: rgba(35, 33, 27, .12);--font-sans: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--step-mono: .7rem;--step-body: clamp(.92rem, .88rem + .2vw, 1.02rem);--step-lead: clamp(1.05rem, .95rem + .5vw, 1.35rem);--step-h3: clamp(1rem, .95rem + .25vw, 1.18rem);--step-h2: clamp(1.3rem, 1.05rem + 1vw, 2rem);--step-display: clamp(1.7rem, 1.25rem + 1.9vw, 3rem);--gutter: clamp(1.25rem, .6rem + 2.4vw, 3.25rem);--maxw: 1560px;--section-y: clamp(3.5rem, 2rem + 6vw, 8rem);--tr: .52s cubic-bezier(.16, 1, .3, 1);--img-hero-max: 820px;--img-band-max: 1080px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-body);line-height:1.62;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}::selection{background:var(--ink);color:var(--paper)}h1,h2,h3,h4{font-weight:400;line-height:1.12;letter-spacing:-.01em;text-wrap:balance}.mono{font-family:var(--font-mono);font-size:var(--step-mono);font-weight:400;letter-spacing:.1em;text-transform:uppercase}.lead{font-size:var(--step-lead);font-weight:400;line-height:1.45;letter-spacing:-.005em}.display{font-size:var(--step-display);font-weight:400;line-height:1.08;letter-spacing:-.015em}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-y)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;padding-bottom:1rem;margin-bottom:clamp(1.75rem,3.5vw,3rem);border-bottom:1px solid var(--line)}.section-head .mono{color:var(--muted)}.link{background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;transition:background-size var(--tr),opacity var(--tr)}.link:hover{background-size:0 1px}.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--font-mono);font-size:var(--step-mono);letter-spacing:.1em;text-transform:uppercase;padding:.95em 1.5em;border:1px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;transition:background var(--tr),color var(--tr)}.btn:hover,.btn--solid{background:var(--ink);color:var(--paper)}.btn--solid:hover{background:transparent;color:var(--ink)}.btn .arrow{transition:transform var(--tr)}.btn:hover .arrow{transform:translate(.25em)}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 90%,transparent);-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid transparent;transition:border-color .32s ease;padding-top:env(safe-area-inset-top,0px)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:2rem;height:109px;transition:height .32s cubic-bezier(.16,1,.3,1)}.site-header__logo img{height:88px;width:auto;transition:height .32s cubic-bezier(.16,1,.3,1)}.site-header.is-scrolled{border-bottom-color:var(--line)}.site-header.is-scrolled .site-header__inner{height:72px}.site-header.is-scrolled .site-header__logo img{height:48px}.site-nav{display:flex;align-items:center;gap:clamp(1.25rem,2.5vw,2.75rem)}.site-nav a{font-family:var(--font-mono);font-size:var(--step-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);position:relative;padding-block:.4rem;transition:opacity var(--tr)}.site-nav a:not(.site-nav__phone):hover{opacity:.55}.site-nav a[aria-current=page]{color:var(--muted)}.site-nav__phone{color:var(--muted)!important}.site-nav__phone:hover{opacity:.6}.nav-toggle{display:none}@media(max-width:860px){.site-header__inner{height:71px}.site-header__logo img{height:48px}.site-header.is-scrolled .site-header__inner{height:58px}.site-header.is-scrolled .site-header__logo img{height:38px}.site-header.is-scrolled .site-nav{top:calc(58px + env(safe-area-inset-top,0px))}.nav-toggle{display:inline-flex;font-family:var(--font-mono);font-size:var(--step-mono);letter-spacing:.1em;text-transform:uppercase;background:none;border:none;color:var(--ink);cursor:pointer}.site-nav{display:none;position:fixed;inset:calc(71px + env(safe-area-inset-top,0px)) 0 auto 0;flex-direction:column;align-items:flex-start;gap:0;background:var(--paper);border-bottom:1px solid var(--line);padding:var(--gutter)}.site-nav[data-open=true]{display:flex;animation:navIn var(--tr) cubic-bezier(.16,1,.3,1)}@keyframes navIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.site-nav a{font-size:1.05rem;padding-block:.7rem;letter-spacing:.06em}}.project-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(2rem,1rem + 2.5vw,3.5rem) clamp(1.25rem,.5rem + 1.6vw,2rem)}@media(max-width:1100px){.project-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:720px){.project-grid{grid-template-columns:repeat(2,1fr);gap:2.25rem 1.25rem}}.card{display:block}.card__frame{position:relative;overflow:hidden;background:var(--paper-2);aspect-ratio:4 / 3}.card__frame img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.16,1,.3,1),opacity var(--tr)}.card:hover .card__frame img{transform:scale(1.03)}.card__cap{margin-top:.85rem}.card__idx{color:var(--muted);display:block;margin-bottom:.4rem}.card__title{font-size:var(--step-h3);font-weight:400;letter-spacing:-.01em;line-height:1.2;transition:opacity var(--tr)}.card:hover .card__title{opacity:.55}.card__place{color:var(--muted);display:block;margin-top:.35rem}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center}.filter-bar button{font-family:var(--font-mono);font-size:var(--step-mono);letter-spacing:.1em;text-transform:uppercase;background:none;border:none;cursor:pointer;color:var(--muted);padding:.3rem 0;position:relative;transition:color var(--tr)}.filter-bar button:hover,.filter-bar button[aria-pressed=true]{color:var(--ink)}.filter-bar button[aria-pressed=true]:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--ink)}.card.is-hidden{display:none}.figure-hero{max-width:var(--img-hero-max);margin-inline:auto}.figure-hero img{width:100%;height:auto}.site-footer{background:var(--ink-pure);color:var(--paper)}.site-footer a{color:var(--paper)}.site-footer__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(2rem,5vw,5rem);padding-block:clamp(3rem,6vw,5rem)}@media(max-width:760px){.site-footer__grid{grid-template-columns:1fr;gap:2.5rem}}.site-footer__logo{width:clamp(170px,18vw,240px)}.footer-col h4{font-family:var(--font-mono);font-size:var(--step-mono);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--paper) 50%,transparent);font-weight:400;margin-bottom:1rem}.footer-col p,.footer-col a{line-height:1.7}.footer-col a:hover{opacity:.6}.site-footer__bar{border-top:1px solid rgba(255,255,255,.14);padding-block:1.4rem;display:flex;flex-wrap:wrap;gap:.75rem 2rem;justify-content:space-between}.site-footer__bar .mono{color:color-mix(in srgb,var(--paper) 45%,transparent)}.site-footer__credit{text-align:center;padding-bottom:clamp(1.4rem,3vw,2.25rem)}.site-footer__credit .mono{color:color-mix(in srgb,var(--paper) 30%,transparent)}.site-footer__credit a{color:color-mix(in srgb,var(--paper) 55%,transparent);transition:color var(--tr)}.site-footer__credit a:hover{color:var(--paper)}[data-reveal]{opacity:0;transform:translateY(10px);transition:opacity .7s ease,transform .7s ease}[data-reveal].is-in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}[data-reveal]{opacity:1;transform:none}}.cmodal[data-astro-cid-nxxydibx]{width:min(92vw,560px);border:none;padding:0;background:var(--paper);color:var(--ink);box-shadow:0 30px 80px -20px #0006;margin:auto}.cmodal[data-astro-cid-nxxydibx]::backdrop{background:#1011108c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.cmodal__inner[data-astro-cid-nxxydibx]{padding:clamp(1.75rem,4vw,2.75rem);position:relative}.cmodal__close[data-astro-cid-nxxydibx]{position:absolute;top:.9rem;right:1.1rem;background:none;border:none;cursor:pointer;font-size:1.6rem;line-height:1;color:var(--muted);transition:color var(--tr)}.cmodal__close[data-astro-cid-nxxydibx]:hover{color:var(--ink)}.cmodal__kicker[data-astro-cid-nxxydibx]{color:var(--muted);margin-bottom:.85rem}.cmodal__title[data-astro-cid-nxxydibx]{font-size:var(--step-h2);font-weight:400;letter-spacing:-.015em;line-height:1.1}.cmodal__lead[data-astro-cid-nxxydibx]{color:var(--muted);margin-top:.85rem;margin-bottom:1.75rem;max-width:42ch}.cform[data-astro-cid-nxxydibx]{display:flex;flex-direction:column;gap:1rem}.cform__field[data-astro-cid-nxxydibx]{display:flex;flex-direction:column;gap:.4rem}.cform__field[data-astro-cid-nxxydibx] span[data-astro-cid-nxxydibx]{color:var(--muted)}.cform__field[data-astro-cid-nxxydibx] em[data-astro-cid-nxxydibx]{font-style:normal;opacity:.7}.cform__field[data-astro-cid-nxxydibx] input[data-astro-cid-nxxydibx],.cform__field[data-astro-cid-nxxydibx] textarea[data-astro-cid-nxxydibx]{font-family:var(--font-sans);font-size:var(--step-body);color:var(--ink);background:transparent;border:1px solid var(--line);padding:.7em .8em;border-radius:0;transition:border-color var(--tr);resize:vertical}.cform__field[data-astro-cid-nxxydibx] input[data-astro-cid-nxxydibx]:focus,.cform__field[data-astro-cid-nxxydibx] textarea[data-astro-cid-nxxydibx]:focus{outline:none;border-color:var(--ink)}.cform__submit[data-astro-cid-nxxydibx]{margin-top:.5rem;align-self:flex-start}.cform__status[data-astro-cid-nxxydibx]{margin-top:.25rem;color:var(--muted);min-height:1em}.cform__status[data-astro-cid-nxxydibx][data-state=error]{color:#9a3324}@media(prefers-reduced-motion:no-preference){.cmodal[data-astro-cid-nxxydibx][open]{animation:cmodalIn .28s cubic-bezier(.16,1,.3,1)}@keyframes cmodalIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}
