:root{--bg:#131218;--surface:#1D1C25;--ink:#E9E5F0;--accent:#9A7BB5;--button-ink:#1A1620}
:root{--accent-hi:#CBAEE6}
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..600;1,9..144,300..600&family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{color-scheme:dark;--line:color-mix(in srgb,var(--ink) 16%,transparent);--soft:color-mix(in srgb,var(--ink) 58%,var(--bg));--serif:'Fraunces',Georgia,serif;--sans:'Instrument Sans',Helvetica,Arial,sans-serif;--mono:'IBM Plex Mono',monospace}
:root{--p1:#EFC3DA;--p2:#F4D4B4;--p3:#F0E6B2;--p4:#C4E4C9;--p5:#BAD3EE;--p6:#DACDEA}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
button:focus-visible,a:focus-visible{outline:2px solid var(--accent-hi);outline-offset:4px}
.skip{position:absolute;left:-9999px;top:0;background:var(--accent-hi);color:var(--button-ink);padding:10px 16px;z-index:200;font:500 12px var(--mono)}
.skip:focus{left:0}
.grain{pointer-events:none;position:fixed;inset:0;opacity:.12;z-index:10;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");animation:grainShift 1.1s steps(4) infinite}
@keyframes grainShift{0%,100%{background-position:0 0}25%{background-position:-60px 40px}50%{background-position:40px -70px}75%{background-position:-30px -50px}}
.scroll-progress{position:fixed;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--p1),var(--p2),var(--p3),var(--p4),var(--p5),var(--p6));transform-origin:0 50%;transform:scaleX(0);z-index:900;pointer-events:none}
header{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px clamp(24px,5vw,90px);border-bottom:1px solid var(--line)}
.brand{font:500 19px/1.2 var(--serif);letter-spacing:-.02em;text-decoration:none}
.brand .mark{font:11px var(--mono);letter-spacing:.15em;vertical-align:top;margin-left:5px}
.menu{display:none;background:none;border:0;color:inherit;font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
nav{display:flex;gap:clamp(14px,2vw,32px);align-items:center}
nav a{font:500 10.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;transition:background-size .4s ease;padding-bottom:3px}
nav a::after{content:attr(data-label);display:block;font-weight:700;height:0;visibility:hidden;overflow:hidden}
:root{--c-home:#8A0F14;--c-notes:#4B4B4B;--c-closet:#8E4FA8;--c-invest:#16696F;--c-admissions:#D2B783}
nav a.n-home{--hc:color-mix(in srgb,var(--c-home) 55%,white)}nav a.n-notes{--hc:#F2F2F0}nav a.n-closet{--hc:color-mix(in srgb,var(--c-closet) 60%,white)}nav a.n-invest{--hc:color-mix(in srgb,var(--c-invest) 45%,white)}nav a.n-admissions{--hc:var(--c-admissions)}
@media(hover:hover){nav a:hover{background-size:100% 1px;font-weight:700;color:var(--hc,var(--accent-hi))}}
.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,56px)}
.hero{position:relative;min-height:82vh;display:flex;flex-direction:column;justify-content:center;padding:80px 0 60px;border-bottom:1px solid var(--line)}
.side-note{position:absolute;right:clamp(8px,1.5vw,24px);top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font:500 10px var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--soft)}
h1{font:340 clamp(56px,9vw,124px)/0.98 var(--serif);letter-spacing:-.03em;font-optical-sizing:auto}
h1 em,h2 em{font-style:italic;font-weight:400;background:linear-gradient(100deg,var(--p1),var(--p3),var(--p5));-webkit-background-clip:text;background-clip:text;color:transparent}
.line-indent{display:inline-block;margin-left:clamp(28px,6vw,110px)}
.lead{max-width:560px;margin-top:26px;font-size:clamp(16px,1.6vw,19px)}
.muted{color:var(--soft)}
.small{font-size:13px}
.hero-foot{margin-top:36px}
.text-link{font:500 11px var(--mono);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:6px;transition:border-color .3s,color .3s}
.text-link:hover{color:var(--accent-hi);border-color:var(--accent-hi)}
.hero-meta{display:flex;gap:26px;margin-top:56px;font:500 10px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--soft)}
.artifact{position:absolute;right:clamp(20px,6vw,110px);top:50%;transform:translateY(-50%);width:clamp(180px,22vw,300px);aspect-ratio:1;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none}
.artifact-inner{width:62%;aspect-ratio:1;border:1px solid var(--line);border-radius:32% 68% 55% 45%/48% 40% 60% 52%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,color-mix(in srgb,var(--p1) 26%,transparent),transparent 60%),radial-gradient(circle at 70% 74%,color-mix(in srgb,var(--p5) 24%,transparent),transparent 60%)}
.artifact-inner span{font:italic 300 clamp(60px,8vw,110px) var(--serif);color:var(--ink)}
.section{padding:clamp(70px,10vh,120px) 0}
.rule{border-bottom:1px solid var(--line)}
.section-head{margin-bottom:40px}
.eyebrow{display:block;text-align:right;font:500 10.5px var(--mono);letter-spacing:.24em;text-transform:uppercase;color:var(--accent-hi);margin-bottom:18px}
h2{font:340 clamp(34px,4.6vw,58px)/1.05 var(--serif);letter-spacing:-.02em}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease;transition-delay:calc(var(--i,0)*90ms)}
.reveal.visible{opacity:1;transform:none}
h1 .w{display:inline-block;vertical-align:bottom;white-space:nowrap}
h1 .l{display:inline-block;overflow:hidden;vertical-align:bottom}
h1 .l>span{display:inline-block;transform:translateY(115%) rotate(4deg);animation:rise .95s cubic-bezier(.19,.66,.22,1) forwards;animation-delay:calc(.12s + var(--i,0)*34ms)}
@keyframes rise{to{transform:none}}
.footer{display:flex;justify-content:space-between;gap:34px;padding:56px 0 64px;flex-wrap:wrap}
.footer-links{display:flex;gap:22px;flex-wrap:wrap;align-items:start}
.footer-links a{font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;transition:background-size .4s ease;padding-bottom:3px}
.footer-links a:hover{background-size:100% 1px}
.site-clock{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;margin-top:10px}
.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:999;border-radius:50%;transform:translate(-100px,-100px)}
.cursor-dot{width:6px;height:6px;background:var(--accent-hi);margin:-3px 0 0 -3px}
.cursor-ring{width:34px;height:34px;border:1px solid var(--accent-hi);margin:-17px 0 0 -17px;mix-blend-mode:difference;transition:scale .25s}
@media(pointer:coarse){.cursor-dot,.cursor-ring{display:none}}
.gallery-wrap{display:grid;grid-template-columns:1.12fr .88fr;gap:34px;align-items:start;margin-top:8px}
.g-map svg{width:100%;height:auto;display:block;background:linear-gradient(160deg,color-mix(in srgb,var(--surface) 88%,var(--p5)),var(--surface) 45%);border:1px solid var(--line)}
.g-land circle{fill:color-mix(in srgb,var(--ink) 30%,transparent)}
.g-pin .pin-dot{fill:var(--pc,var(--accent-hi))}
.g-pin .pin-ring{fill:none;stroke:var(--pc,var(--accent-hi));stroke-width:1;opacity:.3}
.g-pin.active .pin-ring{animation:pinPulse 1.7s ease-out infinite;transform-origin:center;transform-box:fill-box}
@keyframes pinPulse{0%{transform:scale(.45);opacity:.95}100%{transform:scale(2);opacity:0}}
.g-info{margin-top:14px;font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;border-left:2px solid var(--pc,var(--accent-hi));padding-left:12px}
.g-info .g-cap{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:13px;margin:6px 0 0}
.g-info .g-date{margin-left:10px;color:var(--soft)}
.g-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:calc((100cqw - 30px)/4);gap:10px;grid-auto-flow:dense;container-type:inline-size}
.g-tile{position:relative;border:1px dashed color-mix(in srgb,var(--pc,var(--ink)) 55%,transparent);background:color-mix(in srgb,var(--pc,var(--surface)) 13%,var(--surface));display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:transform .3s,border-color .3s,background .3s}
.g-tile.span2{grid-column:span 2;grid-row:span 2}
.g-tile .g-ph{font:300 30px var(--serif);color:color-mix(in srgb,var(--pc,var(--soft)) 70%,var(--soft))}
.g-tile .g-tag{position:absolute;left:9px;bottom:7px;font:500 8.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.g-tile .g-sample{position:absolute;top:7px;right:9px;font:500 8px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--pc,var(--accent-hi)) 80%,var(--ink))}
.g-tile:hover{transform:translateY(-3px)}
.g-tile.active{border:1px solid var(--pc,var(--accent-hi));background:color-mix(in srgb,var(--pc,var(--surface)) 24%,var(--surface))}
.g-empty{grid-column:1/-1;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;min-height:180px}
@media(max-width:900px){.gallery-wrap{grid-template-columns:1fr}.g-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:calc((100cqw - 20px)/3)}}
@media(max-width:760px){nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--surface);border-bottom:1px solid var(--line);padding:25px;flex-direction:column;align-items:start}nav.open{display:flex}.menu{display:block}.hero{min-height:70vh}.artifact{display:none}.hero-meta{flex-direction:column;gap:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}h1 .l>span{transform:none;animation:none}.grain{animation:none}.g-pin.active .pin-ring{opacity:.6}}
