.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-cyrillic-ext-300-normal.D8IReVS-.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-ext-300-normal.B5wCrnbP.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-cyrillic-300-normal.DZNkLIMe.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-300-normal.KEduutn5.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-vietnamese-300-normal.BTzPAsHw.woff2) format("woff2"),url(/_astro/cormorant-garamond-vietnamese-300-normal.ByHlPz7v.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-latin-ext-300-normal.BsCYHBWC.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-ext-300-normal.DueGyF8j.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:300;src:url(/_astro/cormorant-garamond-latin-300-normal.Cw-E_7L1.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-300-normal.BuXLI6C0.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-cyrillic-ext-500-normal.Yta7XZ9C.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-ext-500-normal.lsPpqi9g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-cyrillic-500-normal.CyAY5ZLS.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-500-normal.DkJXBcIH.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-vietnamese-500-normal.BZGLGj12.woff2) format("woff2"),url(/_astro/cormorant-garamond-vietnamese-500-normal.DqXqCC0q.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-ext-500-normal.CH1kM7og.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-ext-500-normal.DYeaGGzO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-500-normal.BsRWmXhO.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-500-normal.zIXX3Q-H.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-cyrillic-ext-500-italic.ClXnudBg.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-ext-500-italic.DakTmaFY.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-cyrillic-500-italic.DVnfXoMy.woff2) format("woff2"),url(/_astro/cormorant-garamond-cyrillic-500-italic.C9gO-8KC.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-vietnamese-500-italic.D3igDnAQ.woff2) format("woff2"),url(/_astro/cormorant-garamond-vietnamese-500-italic.C-296ow0.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-ext-500-italic.CE7zdTnu.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-ext-500-italic.CalKM9tT.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-500-italic.Y14P-dkT.woff2) format("woff2"),url(/_astro/cormorant-garamond-latin-500-italic.DhNIfkTX.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #04060a;--bg-2: #0a0f16;--line: #172230;--text: #e4ebf1;--muted: #8794a2;--teal: #3fd0c9;--teal-dim: #1f8f8a;--frame: #f3f2ee;--serif: "Cormorant Garamond", Georgia, serif;--sans: "Inter Variable", system-ui, sans-serif;--gutter: clamp(16px, 4vw, 56px);--ease: cubic-bezier(.22, .61, .36, 1)}*,*:before,*:after{box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}body{margin:0;background:radial-gradient(1200px 600px at 85% -10%,rgba(63,208,201,.06),transparent 60%),radial-gradient(900px 500px at 0% 40%,rgba(31,143,138,.05),transparent 60%),var(--bg);background-attachment:fixed;color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:var(--teal);text-decoration:none;transition:color .2s}a:hover{color:#8ef0ea}h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.1;margin:0}::selection{background:var(--teal-dim);color:#fff}:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.site-header{position:absolute;inset:0 0 auto;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:22px var(--gutter)}.site-header.solid{position:relative;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--serif);font-size:1.7rem;font-weight:500;letter-spacing:.04em;color:var(--text)}.wordmark b{color:var(--teal);font-weight:500}.wordmark:hover{color:var(--text)}nav.main{display:flex;gap:clamp(16px,3vw,36px)}nav.main a{color:var(--text);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;padding:4px 0;border-bottom:1px solid transparent}nav.main a:hover,nav.main a[aria-current=page]{border-color:var(--teal);color:var(--teal)}.site-footer{margin-top:120px;padding:40px var(--gutter);border-top:1px solid var(--line);color:var(--muted);font-size:.8rem;display:flex;justify-content:space-between;gap:16px 40px;flex-wrap:wrap}.site-footer .sub{display:block;margin-top:4px}.site-footer .credit-note{margin:0;max-width:460px;text-align:right}.site-footer a{color:var(--teal-dim)}.site-footer a:hover{color:var(--teal)}.credit{text-align:center;margin:16px 0 0;color:#a9b6c2;font-size:.88rem;letter-spacing:.04em}.credit a,.credit a:hover{color:var(--teal)}.frame{background:var(--frame);padding:clamp(8px,1.1vw,16px);box-shadow:0 1px #fff6 inset,0 20px 50px -20px #000000e6;transition:transform .5s var(--ease),box-shadow .5s var(--ease)}.frame img{width:100%;height:auto}.hero{position:relative;height:100svh;min-height:560px;overflow:hidden;background:#000}.slide{position:absolute;inset:0;opacity:0;transition:opacity 2s ease-in-out}.slide.active{opacity:1}.slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.02);transform-origin:var(--ox, 50%) var(--oy, 50%)}.slide.active img{animation:drift 14s ease-out forwards}@keyframes drift{to{transform:scale(1.12)}}.hero:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(4,6,10,.65) 0%,transparent 28%,transparent 55%,rgba(4,6,10,.92) 100%),radial-gradient(ellipse at center,transparent 40%,rgba(4,6,10,.45) 100%)}.hero-copy{position:absolute;z-index:5;left:var(--gutter);right:var(--gutter);bottom:clamp(48px,10vh,110px);display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap}.hero-copy h1{font-size:clamp(3.2rem,9vw,7.5rem);font-weight:300;letter-spacing:.02em}.hero-copy h1 span{color:var(--teal)}.hero-copy p.tag{margin:14px 0 0;color:#c3ced8;letter-spacing:.28em;text-transform:uppercase;font-size:.78rem}.caption{text-align:right;min-width:200px}.caption small{display:block;color:var(--muted);letter-spacing:.2em;text-transform:uppercase;font-size:.68rem}.caption a{font-family:var(--serif);font-size:1.5rem;color:var(--text)}.caption a:hover{color:var(--teal)}.dots{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.dots button{width:22px;height:2px;border:0;padding:0;background:#ffffff4d;cursor:pointer;position:relative}.dots button:before{content:"";position:absolute;inset:-10px 0}.dots button.active{background:var(--teal)}.scroll-cue{position:absolute;z-index:5;left:50%;bottom:18px;transform:translate(-50%);width:1px;height:40px;background:linear-gradient(var(--teal),transparent);animation:cue 2.4s ease-in-out infinite}@keyframes cue{0%,to{opacity:.2;transform:translate(-50%,-6px)}50%{opacity:1;transform:translate(-50%,6px)}}.wrap{padding-inline:var(--gutter);max-width:1500px;margin-inline:auto}.section-head{margin:clamp(70px,12vh,130px) 0 40px;display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap}.section-head h2{font-size:clamp(2rem,4vw,3rem);font-weight:300}.eyebrow{color:var(--teal);letter-spacing:.3em;text-transform:uppercase;font-size:.72rem}.gallery{columns:3 340px;column-gap:clamp(20px,3vw,44px)}.tile{break-inside:avoid;margin:0 0 clamp(24px,3.4vw,48px);display:block;color:var(--text)}.tile:hover{color:var(--text)}.tile:hover .frame{transform:translateY(-6px);box-shadow:0 0 0 1px var(--teal),0 0 38px -4px #3fd0c973,0 28px 50px -20px #000}.tile .meta{padding:14px 4px 0;display:flex;justify-content:space-between;gap:12px;align-items:baseline}.tile h3{font-size:1.45rem}.tile .meta span{color:var(--muted);font-size:.78rem;letter-spacing:.08em;text-align:right}.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.in{opacity:1;transform:none}.project{padding-top:40px}.project-hero{max-width:1250px;margin:0 auto;position:relative}.zoom-btn{position:absolute;right:clamp(18px,2.4vw,34px);bottom:clamp(18px,2.4vw,34px);background:#04060ac7;color:var(--text);border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(6px);padding:10px 18px;font:inherit;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;cursor:zoom-in;transition:all .25s}.zoom-btn:hover{border-color:var(--teal);color:var(--teal)}.project-title{text-align:center;margin:56px auto 12px}.project-title h1{font-size:clamp(2.6rem,6vw,4.6rem);font-weight:300}.project-title p{color:var(--muted);margin:10px 0 0;letter-spacing:.06em}.project-body{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(32px,6vw,90px);max-width:1150px;margin:56px auto 0}.project-body .desc{font-size:1.08rem;color:#c8d3dc}.specs{margin:0;display:grid;grid-template-columns:auto 1fr;gap:10px 22px;font-size:.9rem;align-content:start}.specs dt{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-size:.68rem;padding-top:4px}.specs dd{margin:0}.pager{display:flex;justify-content:space-between;max-width:1150px;margin:90px auto 0;padding-top:28px;border-top:1px solid var(--line);gap:20px}.pager a{font-family:var(--serif);font-size:1.4rem;color:var(--text)}.pager a:hover{color:var(--teal)}.pager small{display:block;color:var(--muted);font:.68rem var(--sans);letter-spacing:.2em;text-transform:uppercase}.print-cta{text-align:center;margin-top:28px}.print-dialog{background:var(--bg-2);color:var(--text);border:1px solid var(--line);padding:0;width:min(520px,calc(100vw - 32px));max-height:calc(100svh - 32px);overflow:auto}.print-dialog::backdrop{background:#020408d1;backdrop-filter:blur(3px)}.print-dialog form{position:relative;display:grid;gap:16px;padding:30px clamp(20px,4vw,34px) 28px}.print-dialog h2{font-size:2rem;font-weight:300}.print-dialog .dialog-sub{margin:-6px 0 4px;color:var(--muted);font-size:.88rem}.print-dialog .dialog-close{position:absolute;top:12px;right:14px;background:none;border:0;color:var(--muted);font-size:1.1rem;cursor:pointer;padding:6px}.print-dialog .dialog-close:hover{color:var(--teal)}.print-dialog fieldset{border:0;padding:0;margin:0;display:grid;gap:10px}.print-dialog legend{padding:0 0 8px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.print-dialog label:not(.choice){display:grid;gap:6px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.print-dialog input:not([type=radio]),.print-dialog textarea{background:var(--bg);border:1px solid var(--line);color:var(--text);font:1rem var(--sans);padding:11px 12px;letter-spacing:normal;text-transform:none;transition:border-color .2s}.print-dialog select{background:var(--bg);border:1px solid var(--line);color:var(--text);font:1rem var(--sans);padding:11px 12px;letter-spacing:normal;text-transform:none;width:100%}.print-dialog input:focus,.print-dialog textarea:focus,.print-dialog select:focus{border-color:var(--teal);outline:none}.print-dialog .row-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.print-dialog textarea{resize:vertical}.print-dialog .hp{position:absolute;left:-9999px}.choice{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);padding:12px 14px;cursor:pointer;transition:border-color .2s}.choice:has(input:checked){border-color:var(--teal)}.choice input{margin-top:5px;accent-color:var(--teal)}.choice strong{display:block;font-weight:500;font-size:1rem}.choice small{display:block;color:var(--muted);font-size:.8rem}.print-dialog form.sent>:not(h2):not([data-print-status]):not(.dialog-close){display:none}.viewer{position:fixed;inset:0;z-index:100;background:#000;display:none}.viewer.open{display:block}.viewer .osd{position:absolute;inset:0}.viewer .viewer-ui{position:absolute;z-index:5;top:18px;right:18px;display:flex;gap:10px;align-items:center}.viewer .viewer-ui button,.viewer .hint{background:#04060abf;color:var(--text);border:1px solid rgba(255,255,255,.25);padding:9px 16px;font:inherit;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer}.viewer .viewer-ui button:hover{border-color:var(--teal);color:var(--teal)}.viewer .hint{border:0;cursor:default;color:var(--muted)}.prose{max-width:720px;margin:0 auto}.prose p{color:#c8d3dc}.page-title{text-align:center;padding:70px 0 40px}.page-title h1{font-size:clamp(2.6rem,6vw,4.4rem);font-weight:300}form.contact{display:grid;gap:18px;max-width:640px;margin:0 auto}form.contact label{display:grid;gap:6px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}form.contact input,form.contact textarea{background:var(--bg-2);border:1px solid var(--line);color:var(--text);font:1rem var(--sans);padding:13px 14px;letter-spacing:normal;text-transform:none;transition:border-color .2s}form.contact input:focus,form.contact textarea:focus{border-color:var(--teal);outline:none}form.contact textarea{min-height:170px;resize:vertical}form.contact .hp{position:absolute;left:-9999px}.btn{justify-self:start;background:transparent;color:var(--teal);border:1px solid var(--teal);padding:13px 30px;font:inherit;font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;transition:all .25s}.btn:hover{background:var(--teal);color:#031112}.btn:disabled{opacity:.5;cursor:wait}.notice{padding:14px 16px;border:1px solid var(--line);background:var(--bg-2)}.notice.ok{border-color:var(--teal-dim);color:#9eeae5}.notice.err{border-color:#7a3a3a;color:#f0b0b0}@media(max-width:800px){.project-body{grid-template-columns:1fr}.caption,.site-footer .credit-note{text-align:left}.dots{justify-content:flex-start}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.slide{transition-duration:.01s}.slide.active img{animation:none}.reveal{opacity:1;transform:none;transition:none}.scroll-cue{animation:none}.frame,.tile:hover .frame{transition:none;transform:none}}
