:root{--bone:#ece6da;--bone-2:#e4dccc;--ink:#141311;--ink-2:#2a2622;--muted:#7a746b;--line:#14131124;--accent:oklch(62% .16 45);--accent-soft:oklch(78% .09 60);--easing:cubic-bezier(.65, 0, .35, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bone);color:var(--ink)}body{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Hanken Grotesk,-apple-system,system-ui,sans-serif;font-size:16px;font-weight:400;line-height:1.45;overflow-x:hidden}::selection{background:var(--ink);color:var(--bone)}.serif{font-family:DM Serif Display,serif;font-weight:400}.italic{font-style:italic}.mono{letter-spacing:.04em;text-transform:uppercase;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}#root{min-height:100vh;position:relative}.cursor{background:var(--ink);pointer-events:none;z-index:9999;width:14px;height:14px;transition:width .25s var(--easing), height .25s var(--easing), background .25s var(--easing);mix-blend-mode:difference;filter:invert();border-radius:50%;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor.is-hover{background:var(--accent);width:56px;height:56px}.cursor-label{pointer-events:none;z-index:9999;color:var(--bone);letter-spacing:.08em;text-transform:uppercase;opacity:0;transition:opacity .2s var(--easing);font-size:11px;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor-label.show{opacity:1}@media (hover:none){.cursor,.cursor-label{display:none}}.case-study-grid{grid-template-columns:1fr 1fr;gap:32px;display:grid}.case-study-details{grid-template-columns:repeat(3,1fr);gap:32px;display:grid}.case-study-overview{grid-template-columns:1fr 1.5fr;gap:80px;display:grid}.case-study-copy{flex-direction:column;justify-content:center;padding:0 32px;display:flex}@media (width<=760px){.case-study-grid,.case-study-details,.case-study-overview{grid-template-columns:1fr}.case-study-overview{gap:48px}.case-study-copy{padding:40px 0 0}.project-title{overflow-wrap:anywhere;font-size:clamp(56px,20vw,80px)!important}}.page-enter{animation:pageIn .9s var(--easing) both}@keyframes pageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;transition:opacity .9s var(--easing), transform .9s var(--easing);transform:translateY(28px)}.reveal.in{opacity:1;transform:translateY(0)}.contact-form-shell{gap:36px;max-width:860px;display:grid}.contact-field{border-bottom:1px solid var(--line);gap:10px;padding-bottom:16px;display:grid}.contact-field--message{border-bottom:0;padding-top:8px}.contact-input,.contact-textarea{width:100%;color:var(--ink);background:0 0;border:0;border-radius:0;outline:0}.contact-input{letter-spacing:-.02em;font-family:DM Serif Display,serif;font-size:clamp(32px,4vw,56px);line-height:1.1}.contact-textarea{border:1px solid var(--line);min-height:210px;font:inherit;resize:vertical;border-radius:4px;padding:20px;font-size:17px;line-height:1.5}.contact-input::placeholder,.contact-textarea::placeholder{color:color-mix(in srgb, var(--ink) 38%, transparent);opacity:1}.contact-field:focus-within{border-color:var(--ink)}.contact-textarea:focus-visible,.contact-input:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent)}.contact-submit{transition:transform .16s var(--easing), background-color .16s ease, opacity .16s ease}.contact-submit:not(:disabled):hover{transform:translateY(-2px)}.contact-submit:not(:disabled):active{transform:translateY(0)}.contact-submit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent);outline:0}.contact-submit:disabled{cursor:not-allowed}.contact-status{min-height:24px;color:var(--ink-2);font-size:14px}.contact-status[data-tone=error]{color:#9d2f24}@media (width<=760px){.contact-form-shell{gap:28px}.contact-textarea{min-height:180px}}.letters{display:inline-block}.letters .ltr{transition:transform .85s var(--easing);display:inline-block;transform:translateY(110%)}.letters.in .ltr{transform:translateY(0)}.letters .ltr.space{width:.28em}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}
