:root{--bg:#242424;--paper:#f5f4f1;--muted:#aaa9a6;--line:rgba(245,244,241,.17);--accent:#c5f467;--mono:'DM Mono',monospace;--sans:'Manrope',Arial,sans-serif;--ease:cubic-bezier(.22,.75,.22,1)}
*{box-sizing:border-box}html{height:100%;scroll-behavior:smooth;scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}body{margin:0;background:var(--bg);color:var(--paper);font-family:var(--sans);overflow:hidden;scrollbar-width:none}a{color:inherit;text-decoration:none}.grain{position:fixed;inset:0;z-index:20;pointer-events:none;opacity:.055;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='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.topbar,.bottom-bar{position:fixed;left:0;right:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:28px 5.2vw}.topbar{top:0}.bottom-bar{bottom:0}.wordmark{font-size:22px;font-weight:800;letter-spacing:-1.5px}.wordmark span,.accent{color:var(--accent)}.top-meta,.menu-link,.copyright,.scroll-hint,.portrait-caption,.eyebrow,.text-link,.chips,.project-num{font:10px var(--mono);letter-spacing:.09em}.top-meta{color:var(--muted);display:flex;align-items:center;gap:10px}.status-dot{height:6px;width:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #c5f46766}.meta-divider{color:#666;margin:0 7px}.menu-link{border-bottom:1px solid var(--line);padding:0 0 7px;transition:color .25s,border-color .25s}.menu-link span{color:var(--accent);margin-left:9px}.menu-link:hover,.text-link:hover{color:var(--accent)}.stage{height:100svh;position:relative;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;overscroll-behavior-y:contain}.stage::-webkit-scrollbar{display:none}.panel{height:100svh;min-height:650px;position:relative;display:flex;align-items:center;padding:110px 5.2vw 100px;scroll-snap-align:start;scroll-snap-stop:always;isolation:isolate}.copy{width:min(51%,660px);position:relative;z-index:3;transform:translateY(24px);opacity:.28;transition:opacity .75s var(--ease),transform .75s var(--ease)}.panel.is-active .copy{opacity:1;transform:translateY(0)}.eyebrow{color:var(--muted);margin:0 0 30px}.eyebrow span{color:var(--accent);margin-right:8px}h1,h2{font-size:clamp(62px,8.7vw,130px);line-height:.86;letter-spacing:-.095em;margin:0;font-weight:800}h1 span,h2 span{display:block}.hello{color:var(--paper)}.outline{color:transparent;-webkit-text-stroke:1.4px var(--paper);text-stroke:1.4px var(--paper)}.roles{font-size:clamp(15px,1.7vw,23px);font-weight:800;letter-spacing:.005em;margin:24px 0 0;color:#d4d3d0}.intro,.body-copy{font-size:14px;line-height:1.9;color:#c1c0bd;max-width:400px}.intro{margin:22px 0 34px}.text-link{display:inline-flex;align-items:center;gap:18px;margin-top:30px;padding-bottom:9px;border-bottom:1px solid var(--line);transition:color .25s}.text-link span{font-size:15px;color:var(--accent)}.body-copy{max-width:440px;margin:27px 0 0}.body-copy.muted{color:#898986;margin-top:13px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}.chips span{border:1px solid var(--line);padding:8px 10px;color:#c6c5c1;font-size:9px}.project-list{margin-top:25px;border-top:1px solid var(--line);max-width:480px}.project-row{display:flex;align-items:center;gap:17px;padding:16px 0;border-bottom:1px solid var(--line);transition:padding .25s,color .25s}.project-row:hover{padding-left:8px;color:var(--accent)}.project-num{color:var(--accent);font-size:9px}.project-info{display:flex;flex:1;flex-direction:column;gap:5px}.project-info strong{font-size:13px;font-weight:700}.project-info small{font-size:11px;color:var(--muted)}.arrow{font-size:17px}.social-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:470px;margin-top:27px}.social-grid a{min-height:105px;border:1px solid var(--line);padding:14px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto;position:relative;transition:background .25s,border-color .25s,transform .25s}.social-grid a:hover{background:#ffffff08;border-color:#c5f4677a;transform:translateY(-3px)}.social-grid a>span{font:10px var(--mono);color:var(--accent);grid-column:1}.social-grid strong{font-size:13px;margin-top:7px;grid-column:1}.social-grid small{font-size:10px;color:var(--muted);grid-column:1}.social-grid b{grid-column:2;grid-row:1/4;font-weight:400;color:var(--muted)}.signoff{font-size:12px;color:var(--muted);margin-top:23px}.portrait-wrap{position:fixed;z-index:2;right:5.5vw;bottom:0;height:min(89vh,940px);width:min(48vw,700px);display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.portrait{position:relative;z-index:2;display:block;height:100%;width:100%;object-fit:contain;object-position:center bottom;filter:grayscale(1) contrast(1.04);transform:translate3d(0,0,0) scale(1);transform-origin:50% 100%;transition:filter .65s var(--ease),transform .9s var(--ease);will-change:filter,transform}.portrait-wrap:hover .portrait{filter:grayscale(0) contrast(1);transform:translate3d(0,-5px,0) scale(1.015)}.portrait-halo{position:absolute;width:78%;height:58%;right:3%;bottom:8%;border-radius:50%;background:radial-gradient(ellipse,rgba(197,244,103,.085),transparent 68%);opacity:.65;filter:blur(24px);transition:opacity .5s}.portrait-wrap:hover .portrait-halo{opacity:1}.portrait-caption{position:absolute;z-index:4;bottom:24px;right:0;left:0;display:flex;justify-content:space-between;color:#a3a29e;font-size:9px}.section-indicator{display:flex;align-items:center;gap:8px}.indicator{height:4px;width:18px;background:#666;transition:width .35s,background .35s}.indicator.active{width:36px;background:var(--accent)}.copyright,.scroll-hint{color:#777;font-size:9px}.scroll-hint{display:flex;align-items:center;gap:10px}.scroll-line{display:block;width:27px;height:1px;background:var(--accent)}
@media(min-width:1500px){.copy{width:48%}.portrait-wrap{right:8vw;width:min(45vw,760px)}}
@media(max-width:900px){.panel{padding-left:6vw;padding-right:6vw}.copy{width:56%}.portrait-wrap{right:-1vw;width:51vw;height:78vh;opacity:.9}.topbar,.bottom-bar{padding-left:6vw;padding-right:6vw}.top-meta{font-size:8px}.scroll-hint{font-size:8px}h1,h2{font-size:clamp(58px,9vw,95px)}}
@media(max-width:620px){body{overflow:hidden}.topbar{padding:20px 6vw}.bottom-bar{padding:17px 6vw}.wordmark{font-size:20px}.top-meta{display:none}.menu-link{font-size:9px}.panel{min-height:600px;padding:100px 7vw 90px;align-items:center}.copy{width:100%;max-width:520px;transform:translateY(18px)}.panel:after{content:"";position:absolute;inset:25% 0 0;z-index:1;pointer-events:none;background:linear-gradient(90deg,var(--bg) 0%,rgba(36,36,36,.95) 36%,rgba(36,36,36,.48) 100%)}.portrait-wrap{right:-17vw;width:85vw;height:67vh;opacity:.44}.portrait{object-position:center bottom}.portrait-caption{display:none}.eyebrow{font-size:9px;margin-bottom:25px}h1,h2{font-size:clamp(56px,14vw,84px)}.roles{font-size:16px;margin-top:20px}.intro,.body-copy{font-size:13px;max-width:340px}.intro{max-width:300px}.text-link{font-size:9px;margin-top:25px}.social-grid{max-width:360px}.social-grid a{min-height:96px}.project-list{max-width:370px}.project-row{gap:12px;padding:14px 0}.project-info strong{font-size:12px}.project-info small{font-size:10px}.copyright{font-size:8px}.copyright .meta-divider{margin:0 3px}.section-indicator{gap:5px}.indicator{width:10px}.indicator.active{width:22px}.scroll-hint{font-size:0;gap:0}.scroll-line{width:22px}.signoff{font-size:11px}}
@media(max-height:720px) and (min-width:621px){.portrait-wrap{height:82vh}.panel{padding-top:90px;padding-bottom:80px}.eyebrow{margin-bottom:20px}h1,h2{font-size:clamp(58px,7.2vw,100px)}.intro,.body-copy{font-size:12px}.text-link{margin-top:20px}.project-row{padding:11px 0}.social-grid a{min-height:88px}}
@media(hover:none){.portrait{filter:grayscale(.35)}.portrait-wrap:hover .portrait{filter:grayscale(.35)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
.portrait-wrap.colour-on .portrait{filter:grayscale(0) contrast(1);transform:translate3d(0,-5px,0) scale(1.015)}
