:root{--bg:#0d0c0b;--bg-2:#14110d;--ink:#ece6da;--ink-dim:#978f81;--ink-faint:#5f594f;--line:#2a251d;--line-2:#1c1813;--accent:#ff6a1a;--accent-2:#ffb070;--accent-soft:#ff6a1a1f;--maxw:1180px;--gutter:clamp(1.25rem, 5vw, 5rem);--ease:cubic-bezier(.22, 1, .36, 1);--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--serif:"Fraunces", Georgia, "Times New Roman", serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-weight:380;line-height:1.5;overflow-x:hidden}::selection{background:var(--accent);color:#1a0e05}a{color:inherit;text-decoration:none}em{color:var(--accent-2);font-style:italic}.grain{z-index:0;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.gridlines{z-index:0;pointer-events:none;opacity:.5;background-image:linear-gradient(to right, var(--line-2) 1px, transparent 1px), linear-gradient(to bottom, var(--line-2) 1px, transparent 1px);background-size:clamp(60px,8vw,110px) clamp(60px,8vw,110px);position:fixed;inset:0;-webkit-mask-image:radial-gradient(90% 70% at 50% 0,#000 25%,#0000 78%);mask-image:radial-gradient(90% 70% at 50% 0,#000 25%,#0000 78%)}.glow{z-index:0;pointer-events:none;background:radial-gradient(50% 50% at 50% 50%, var(--accent-soft) 0%, transparent 70%);filter:blur(20px);width:120vw;height:80vh;position:fixed;top:-30vh;left:50%;transform:translate(-50%)}.topbar,main,.footer{z-index:2;position:relative}.skip{z-index:50;background:var(--accent);color:#1a0e05;font-family:var(--mono);padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip:focus{top:1rem;left:1rem}.topbar{padding:1.1rem var(--gutter);border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px)saturate(120%);backdrop-filter:blur(12px)saturate(120%);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.monogram{font-family:var(--mono);letter-spacing:.18em;align-items:center;font-size:.82rem;font-weight:700;display:inline-flex}.monogram .cursor{color:var(--accent);animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.nav{font-family:var(--mono);gap:clamp(.8rem,2vw,2rem);font-size:.72rem;display:flex}.nav a{color:var(--ink-dim);letter-spacing:.06em;transition:color .3s var(--ease);padding:.2rem 0;position:relative}.nav a i{color:var(--ink-faint);transition:color .3s var(--ease);margin-right:.35em;font-style:normal}.nav a:after{content:"";background:var(--accent);width:0;height:1px;transition:width .35s var(--ease);position:absolute;bottom:-2px;left:0}.nav a:hover{color:var(--ink)}.nav a:hover i{color:var(--accent)}.nav a:hover:after{width:100%}.status{font-family:var(--mono);color:var(--ink-dim);align-items:center;gap:.6rem;font-size:.7rem;display:flex}.status .dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 0 var(--accent);border-radius:50%;animation:2.4s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #ff6a1a80}70%{box-shadow:0 0 0 7px #ff6a1a00}to{box-shadow:0 0 #ff6a1a00}}.status .clock{border-left:1px solid var(--line);color:var(--ink-faint);padding-left:.6rem}@media (width<=760px){.nav,.status-txt{display:none}}main{max-width:var(--maxw);padding:0 var(--gutter);margin:0 auto}.hero,.block{scroll-margin-top:4.75rem}.block{border-top:1px solid var(--line);grid-template-columns:minmax(120px,1fr) minmax(0,3.4fr);gap:clamp(1.5rem,5vw,5rem);padding:clamp(3.5rem,9vw,7rem) 0;display:grid}.block-label{font-family:var(--mono);letter-spacing:.08em;color:var(--ink-dim);flex-direction:column;align-self:start;gap:.4rem;height:fit-content;font-size:.72rem;display:flex;position:sticky;top:6rem}.block-label i{color:var(--accent);font-style:normal;font-weight:700}.block-label span{text-transform:uppercase}@media (width<=760px){.block{grid-template-columns:1fr;gap:1.2rem}.block-label{flex-direction:row;gap:.6rem;position:static}}.hero{padding:clamp(3.5rem,11vw,9rem) 0 clamp(2rem,6vw,4rem)}.kicker{font-family:var(--mono);letter-spacing:.1em;color:var(--ink-dim);text-transform:uppercase;margin:0 0 1.6rem;font-size:.78rem}.name{font-family:var(--serif);letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:clamp(3rem,13vw,9.5rem);font-weight:560;line-height:.92}.name span{display:block}.accentline{color:var(--accent)}.lede{max-width:30ch;color:var(--ink);margin:clamp(1.8rem,4vw,3rem) 0 0;font-size:clamp(1.15rem,2.4vw,1.7rem);font-weight:360;line-height:1.45}.hero-meta{flex-wrap:wrap;gap:.9rem;margin-top:2.4rem;display:flex}.btn{font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--accent);color:#1a0e05;background:var(--accent);transition:transform .3s var(--ease), background .3s var(--ease), color .3s var(--ease);padding:.85rem 1.4rem;font-size:.8rem}.btn:hover{background:var(--accent-2);transform:translateY(-2px)}.btn.ghost{color:var(--ink);border-color:var(--line);background:0 0}.btn.ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.marquee{border-block:1px solid var(--line);padding:.9rem 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.marquee-track{white-space:nowrap;font-family:var(--mono);color:var(--ink-dim);letter-spacing:.05em;will-change:transform;gap:1.6rem;font-size:.85rem;animation:28s linear infinite scroll;display:inline-flex}.marquee-track span:nth-child(2n){color:var(--accent)}@keyframes scroll{to{transform:translate(-50%)}}.marquee:hover .marquee-track{animation-play-state:paused}.prose p{max-width:60ch;color:var(--ink-dim);margin:0 0 1.3rem;font-size:1.05rem}.prose .big{color:var(--ink);max-width:26ch;font-size:clamp(1.3rem,2.6vw,1.9rem);font-weight:360;line-height:1.4}.prose strong{color:var(--ink);font-weight:560}.projects{margin:0;padding:0;list-style:none}.project{border-top:1px solid var(--line)}.project:last-child{border-bottom:1px solid var(--line)}.project-link{transition:padding-left .4s var(--ease);grid-template-columns:auto 1fr auto;align-items:start;gap:clamp(1rem,3vw,2.4rem);padding:clamp(1.6rem,3vw,2.4rem) 0;display:grid}.project-link:hover{padding-left:clamp(.4rem,1.5vw,1.2rem)}.p-index{font-family:var(--mono);color:var(--ink-faint);transition:color .35s var(--ease);padding-top:.5rem;font-size:.78rem}.project-link:hover .p-index{color:var(--accent)}.p-title{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 .7rem;font-size:clamp(1.5rem,3.6vw,2.6rem);font-weight:520;line-height:1.05}.p-year{font-family:var(--mono);color:var(--ink-faint);letter-spacing:.08em;vertical-align:middle;margin-left:.6rem;font-size:.7rem;font-weight:400}.p-desc{color:var(--ink-dim);max-width:58ch;margin:0 0 1rem;font-size:1.02rem}.tags{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.tags li{font-family:var(--mono);letter-spacing:.03em;color:var(--ink-dim);border:1px solid var(--line);transition:border-color .35s var(--ease), color .35s var(--ease);border-radius:2px;padding:.28rem .6rem;font-size:.68rem}.project-link:hover .tags li{border-color:color-mix(in srgb, var(--accent) 35%, var(--line))}.p-arrow{font-family:var(--mono);color:var(--ink-faint);transition:transform .4s var(--ease), color .35s var(--ease);padding-top:.4rem;font-size:1.3rem}.project-link:hover .p-arrow{color:var(--accent);transform:translate(4px,-4px)}.project.is-empty{opacity:.5}.project.is-empty .p-main{grid-template-columns:auto 1fr;align-items:baseline;gap:2rem;padding:clamp(1.6rem,3vw,2.4rem) 0;display:grid}.project.is-empty{grid-template-columns:auto 1fr;gap:clamp(1rem,3vw,2.4rem);padding-left:0;display:grid}.project.is-empty .p-index{padding-top:.4rem}.project.is-empty .p-title{font-size:clamp(1.3rem,3vw,1.9rem)}.spec{margin:0}.spec-row{border-top:1px solid var(--line-2);grid-template-columns:minmax(120px,.5fr) 2fr;align-items:baseline;gap:1.5rem;padding:1.1rem 0;display:grid}.spec-row:first-child{border-top:none}.spec dt{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-size:.74rem}.spec dd{color:var(--ink);margin:0;font-size:1.08rem;line-height:1.6}.hint,.l-val .hint{font-family:var(--mono);color:var(--ink-faint);opacity:.7;font-size:.66rem}.contact-h{font-family:var(--serif);letter-spacing:-.02em;margin:0 0 2.6rem;font-size:clamp(2rem,6vw,4.2rem);font-weight:520;line-height:1.02}.links{margin:0;padding:0;list-style:none}.links li{border-top:1px solid var(--line)}.links li:last-child{border-bottom:1px solid var(--line)}.links a{transition:padding-left .35s var(--ease), background .35s var(--ease);align-items:baseline;gap:1.5rem;padding:1.15rem .2rem;display:flex}.links a:hover{background:linear-gradient(90deg, var(--accent-soft), transparent);padding-left:1rem}.l-key{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);flex-shrink:0;width:5.5rem;font-size:.72rem}.l-val{color:var(--ink);font-size:clamp(1.1rem,2.6vw,1.6rem)}.links a:hover .l-val{color:var(--accent)}.footer{max-width:var(--maxw);padding:2rem var(--gutter) 3rem;border-top:1px solid var(--line);font-family:var(--mono);color:var(--ink-faint);letter-spacing:.04em;flex-wrap:wrap;justify-content:space-between;gap:.6rem;margin:0 auto;font-size:.7rem;display:flex}.reveal{opacity:0;animation:rise .9s var(--ease) forwards;animation-delay:var(--d,0s);transform:translateY(18px)}@keyframes rise{to{opacity:1;transform:none}}.in-view{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(24px)}.in-view.shown{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal,.in-view{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}.marquee-track,.status .dot,.cursor{animation:none!important}}.project.is-loading .ph{background:var(--line);opacity:.5;animation:ph-pulse 1.4s var(--ease) infinite;border-radius:2px}.ph-title{width:42%;height:1.8rem;margin:.2rem 0 .9rem}.ph-line{width:90%;height:.9rem;margin:.35rem 0}.ph-line.short{width:60%}@keyframes ph-pulse{50%{opacity:.2}}@media (prefers-reduced-motion:reduce){.project.is-loading .ph{animation:none}}
