:root{--paper:#F5F4EF;--paper-dim:#ECE9E0;--ink:#14161A;--ink-70:rgba(20,22,26,.7);--ink-45:rgba(20,22,26,.45);--cobalt:#2F4CFF;--ochre:#C9861F;--line:#D9D6CC;--mute:#6E6C63;--max:1180px}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--paper);color:var(--ink);font-family:Public Sans,sans-serif;font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Fraunces,serif;font-weight:650;letter-spacing:-.01em;margin:0}a{color:inherit}.mono{font-family:JetBrains Mono,monospace;letter-spacing:.02em}.wrap{max-width:var(--max);margin:0 auto;padding:0 40px}@media (max-width:640px){.wrap{padding:0 22px}}::selection{background:var(--cobalt);color:var(--paper)}a:focus-visible,button:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px;border-radius:2px}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}.reveal.in-view{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}}header{position:fixed;top:0;left:0;right:0;z-index:50;background:#f5f4efdb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.header-row{display:flex;align-items:center;justify-content:space-between;height:72px}.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:14px}.logo-mark{width:30px;height:30px;border:1.5px solid var(--ink);display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:500}.logo-name{font-weight:600}nav{display:flex;align-items:center;gap:34px}nav a{text-decoration:none;font-size:12.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-70);font-family:JetBrains Mono,monospace;transition:color .2s ease}nav a:hover{color:var(--cobalt)}.nav-cta{border:1px solid var(--ink);padding:9px 16px;color:var(--ink)!important}.nav-cta:hover{background:var(--ink);color:var(--paper)!important}@media (max-width:800px){nav .nav-link{display:none}}.hero{position:relative;padding:168px 0 96px;overflow:hidden}.crop{position:absolute;width:22px;height:22px;pointer-events:none}.crop:before,.crop:after{content:"";position:absolute;background:var(--ink-45)}.crop:before{width:100%;height:1px;top:50%}.crop:after{width:1px;height:100%;left:50%}.crop.tl{top:78px;left:14px}.crop.tr{top:78px;right:14px}.ruler{position:absolute;left:14px;top:112px;bottom:64px;width:14px;display:flex;flex-direction:column;justify-content:space-between}.ruler span{display:block;width:7px;height:1px;background:var(--ink-45)}@media (max-width:900px){.crop,.ruler{display:none}}.coord-badge{position:absolute;top:82px;right:20px;font-size:11px;color:var(--mute);border:1px solid var(--line);background:var(--paper);padding:5px 9px;white-space:nowrap}@media (max-width:900px){.coord-badge{display:none}}.eyebrow{font-size:12.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin-bottom:22px;display:flex;align-items:center;gap:10px}.eyebrow:before{content:"";width:26px;height:1px;background:var(--cobalt);display:inline-block}.hero h1{font-size:clamp(2.6rem,3.4vw + 1.6rem,5.1rem);line-height:1.04;max-width:14ch}.hero-sub{margin-top:30px;max-width:46ch;font-size:18px;color:var(--ink-70)}.hero-actions{margin-top:44px;display:flex;gap:16px;flex-wrap:wrap;align-items:center}.btn{font-family:JetBrains Mono,monospace;font-size:13px;text-transform:uppercase;letter-spacing:.06em;text-decoration:none;padding:14px 22px;display:inline-flex;align-items:center;gap:8px;transition:all .2s ease;border:1px solid var(--ink)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--cobalt);border-color:var(--cobalt)}.btn-ghost{background:transparent;color:var(--ink)}.btn-ghost:hover{color:var(--cobalt);border-color:var(--cobalt)}.principles{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper-dim)}.principles .wrap{display:grid;grid-template-columns:repeat(3,1fr);gap:0}.principle{padding:38px 30px;border-left:1px solid var(--line)}.principle:first-child{border-left:none;padding-left:0}@media (max-width:760px){.principles .wrap{grid-template-columns:1fr}.principle{border-left:none;border-top:1px solid var(--line);padding:28px 0}.principle:first-child{border-top:none}}.principle .num{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--cobalt);display:block;margin-bottom:12px}.principle p{margin:8px 0 0;color:var(--ink-70);font-size:14.5px}.principle h3{font-size:19px;font-weight:600}section{padding:110px 0}.sec-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:64px;gap:24px;flex-wrap:wrap}.sec-head h2{font-size:clamp(2rem,2.4vw + 1rem,3rem)}.sec-head .eyebrow{margin-bottom:16px}.sec-note{max-width:32ch;color:var(--mute);font-size:14.5px;text-align:right}@media (max-width:700px){.sec-note{text-align:left}}.project{display:grid;grid-template-columns:110px 1fr 200px 140px 26px;align-items:center;gap:28px;padding:34px 0;border-top:1px solid var(--line);text-decoration:none;color:var(--ink);position:relative}.project:last-child{border-bottom:1px solid var(--line)}.project-code{font-size:12.5px;color:var(--mute)}.project-title{font-family:Fraunces,serif;font-weight:600;font-size:clamp(1.3rem,1.6vw + .8rem,1.9rem)}.project-desc{font-size:13.5px;color:var(--ink-70)}.project-tags{font-size:11.5px;color:var(--mute);text-align:right}.project-arrow{font-size:20px;text-align:right;transition:transform .25s ease}.swatch{position:absolute;right:0;top:50%;width:150px;height:96px;transform:translateY(-50%) translate(0);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:34px;color:#f5f4ef80}@media (hover:hover) and (pointer:fine){.project:hover .swatch{opacity:1;transform:translateY(-50%) translate(-210px)}.project:hover .project-arrow{transform:translate(4px)}.project:hover .project-title{color:var(--cobalt)}}.swatch-1{background:linear-gradient(135deg,#2f4cff,#14161a)}.swatch-2{background:linear-gradient(135deg,#c9861f,#3a2c12)}.swatch-3{background:linear-gradient(135deg,#14161a,#2f4cff 140%)}.swatch-4{background:linear-gradient(135deg,#6e6c63,#c9861f)}@media (max-width:900px){.project{grid-template-columns:70px 1fr;row-gap:8px}.project-desc,.project-tags,.project-arrow{grid-column:2;text-align:left}.swatch{display:none}}.contact{background:var(--ink);color:var(--paper);border-top:1px solid var(--line)}.contact .eyebrow{color:#f5f4ef8c}.contact .eyebrow:before{background:var(--ochre)}.contact h2{color:var(--paper);font-size:clamp(2.1rem,3vw + 1rem,3.6rem);max-width:16ch}.contact-email{display:inline-block;margin-top:46px;font-family:Fraunces,serif;font-weight:500;font-style:italic;font-size:clamp(1.5rem,2.6vw + 1rem,2.6rem);color:var(--paper);text-decoration:none;border-bottom:1.5px solid var(--ochre);padding-bottom:6px;transition:color .2s ease,border-color .2s ease}.contact-email:hover{color:var(--ochre);border-color:var(--paper)}.contact-meta{margin-top:38px;display:flex;gap:40px;flex-wrap:wrap;font-size:13px;color:#f5f4ef99}.contact-meta .mono{color:#f5f4efd9;display:block;margin-bottom:4px;font-size:11.5px}footer{background:var(--ink);color:#f5f4efb3}.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:32px;padding:64px 0 32px;border-top:1px solid rgba(245,244,239,.15)}@media (max-width:700px){.foot-grid{grid-template-columns:1fr 1fr}}.foot-col h4{font-family:JetBrains Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#f5f4ef73;margin:0 0 18px;font-weight:500}.foot-col a{display:block;text-decoration:none;font-size:14px;color:#f5f4efd9;margin-bottom:11px;transition:color .2s ease}.foot-col a:hover{color:var(--ochre)}.foot-brand p{font-size:13.5px;max-width:28ch;color:#f5f4ef8c;margin-top:14px}.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:22px 0 40px;font-family:JetBrains Mono,monospace;font-size:11px;color:#f5f4ef66}
