:root{color-scheme:dark;--bg:#070a0e;--ink:#eef3f8;--body:#aab6c4;--mute:#7e8c9e;--rule:#1b232d;--rule-strong:#2a3644;--blue:#1f8fff;--blue-text:#63bdff;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--gutter:clamp(20px,5vw,64px);--max:1120px;--top:clamp(56px,10vh,120px);--logo-w:min(78vw,480px);--h2:clamp(30px,3.6vw,52px);--ease:cubic-bezier(.2,.7,.2,1)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;background:var(--bg);color:var(--body);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}
/* The only atmosphere on the page: a halo centred on the masthead logo. */
body::before{content:"";position:absolute;inset:0 0 auto;height:720px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 60% 50% at 50% calc(var(--top) + var(--logo-w) * .1695),rgba(13,58,102,.42),transparent 70%);animation:bloom 1.4s ease-out both}
a{color:inherit;text-decoration:none;transition:color .16s}
a:hover{color:var(--blue-text)}
a:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:6px}
::selection{background:#1679b2;color:#fff}
h1,h2{color:var(--ink);font-weight:300;margin:0;text-wrap:balance}
ul{list-style:none;margin:0;padding:0}
.skip{position:fixed;top:-100px;left:20px;z-index:50;background:#fff;color:var(--bg);padding:14px}
.skip:focus{top:14px}
.page,footer{width:min(100% - 2 * var(--gutter),var(--max));margin-inline:auto}
.label,.nav,.index,.back-top,.more,.socials,label,button{font-family:var(--mono);font-weight:500;text-transform:uppercase}
.label{font-size:11px;letter-spacing:.16em;line-height:1.5;color:var(--mute);margin:0 0 16px}

/* brand.png is a 640×426 canvas; the artwork sits inside x 86–502, y 129–270 (2px safety
   margin included). The wrapper takes that box's ratio and the image is scaled and offset
   so only the artwork sets the size. Percent margins resolve against the wrapper width. */
.brand{display:block;width:var(--logo-w);aspect-ratio:416/141;overflow:hidden;margin:0 auto}
.brand img{display:block;width:153.846%;max-width:none;height:auto;margin:-31.010% 0 0 -20.673%}
.masthead{padding-top:var(--top)}
.masthead .brand{animation:settle 1.1s var(--ease) both}

.intro{text-align:center;animation:rise .6s var(--ease) .1s both}
h1{font-size:clamp(24px,2.8vw,38px);letter-spacing:-.015em;line-height:1.25;margin-top:40px}
.intro>p{max-width:52ch;margin:16px auto 0;text-wrap:balance}
.nav{display:flex;justify-content:center;gap:40px;margin-top:56px;border-block:1px solid var(--rule);font-size:12px;letter-spacing:.12em}
.nav a{display:flex;align-items:center;min-height:56px;white-space:nowrap}
.index{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--rule);font-size:12px;letter-spacing:.12em;line-height:1.3;text-align:left}
.index a{display:flex;align-items:center;min-height:56px;padding:8px 14px}
.index a:first-child{padding-left:0}
.index a+a{border-left:1px solid var(--rule)}
.nav a,.index a{color:var(--body)}

.row{border-top:1px solid var(--rule);padding:96px 0}
.work>.row:first-child{border-top:0}
h2{font-size:var(--h2);letter-spacing:-.025em;line-height:1.08;max-width:18ch}
.copy>p:not(.label),.half>p:not(.label),.aside,.contact-copy>p:not(.label){max-width:46ch;margin:20px 0 0}
.art{display:block;width:100%;height:auto}
.art *{vector-effect:non-scaling-stroke;transition:stroke .2s}
.g{stroke:var(--rule-strong);stroke-width:1}
.dash{stroke-dasharray:3 6}
.a{stroke:var(--mute);stroke-width:1;opacity:.55}
.p{stroke:var(--blue);stroke-width:1.5}
.dot{fill:var(--blue)}
.row:hover .p,.half:hover .p{stroke:var(--blue-text)}

.ledger{margin-top:40px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.ledger li{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;border-top:1px solid var(--rule)}
.ledger li::after{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--blue)}
.ledger li:last-child{border-top-color:var(--blue);font:16px var(--sans);letter-spacing:0;text-transform:none;color:var(--ink)}
.ledger li:last-child::after{content:none}

.half+.half{border-top:1px solid var(--rule);margin-top:64px;padding-top:64px}
.half .art{margin-bottom:32px}
.more{display:inline-block;margin-top:24px;font-size:12px;letter-spacing:.12em;color:var(--blue-text)}

.spatial .art{width:calc(100% + var(--gutter));margin:0 0 40px calc(var(--gutter) * -1)}
.home{padding-block:72px}
.home .art{height:24px;margin-top:40px}

.approach h2{max-width:22ch;font-size:clamp(28px,3.4vw,48px);line-height:1.12;letter-spacing:-.02em}
.steps{margin-top:56px;font-size:15px}
.steps li{border-top:1px solid var(--rule);padding:16px 0}

.contact h2{max-width:14ch}
.socials{display:flex;gap:32px;font-size:12px;letter-spacing:.12em}
.socials a{color:var(--blue-text)}
#contact-form{margin-top:48px}
.preview-note{font-size:13px;color:var(--mute);margin:0 0 24px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.form-field{margin-bottom:24px}
label{display:block;font-size:11px;letter-spacing:.16em;color:var(--mute)}
input,textarea{display:block;width:100%;padding:14px 0;border:0;border-bottom:1px solid #66758c;border-radius:0;background:transparent;color:var(--ink);font:16px/1.5 var(--sans);transition:border-color .16s,box-shadow .16s}
input:focus,textarea:focus{outline:0;border-bottom-color:var(--blue);box-shadow:0 1px 0 var(--blue)}
input:-webkit-autofill{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 100px var(--bg) inset}
textarea{resize:vertical;min-height:120px}
input[aria-invalid=true],textarea[aria-invalid=true]{border-bottom-color:#e1a3a3}
.field-error{display:block;font-size:12px;line-height:1.6;color:#efb9b9;padding-top:6px}
.field-error:empty{display:none}
.trap{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#spam-check{min-height:65px;margin:8px 0 16px}
.form-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px}
.form-bottom p{font-size:13px;line-height:1.6;color:var(--mute);max-width:30ch;margin:0}
button{flex:none;padding:14px 22px;border:1px solid var(--blue);border-radius:0;background:transparent;color:var(--blue-text);font-size:12px;letter-spacing:.12em;cursor:pointer;transition:background-color .16s,color .16s}
button:hover,button:focus-visible{background:var(--blue);color:#06111e}
button:disabled{opacity:.6;cursor:wait}
/* app.js restores the label with a decorative arrow span after each attempt. */
button span{display:none}
.form-status{font-size:14px;color:var(--ink);margin:24px 0 0}
.form-status:empty{display:none}

footer{border-top:1px solid var(--rule);padding:64px 0 48px;display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center}
footer .brand{--logo-w:150px}
footer p{font-size:13px;line-height:1.6;color:var(--mute);margin:0}
.back-top{font-size:12px;letter-spacing:.12em;color:var(--body)}

@keyframes settle{from{transform:scale(.94)}}
@keyframes bloom{from{opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}

@media(min-width:900px){
  .row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px}
  .peopleos .label,.home .label{grid-column:1/3;padding-top:.9em}
  .peopleos .copy,.home .copy{grid-column:3/9}
  .ledger{grid-column:9/13;margin-top:0}
  .pair{grid-template-columns:1fr 1fr;column-gap:0}
  .half:first-child{padding-right:32px}
  .half+.half{border-top:0;border-left:1px solid var(--rule);margin-top:0;padding:0 0 0 32px}
  .spatial .art{grid-column:1/7;margin-bottom:0}
  .spatial .copy{grid-column:8/13;align-self:center}
  .home .art{grid-column:9/13;margin-top:calc(var(--h2) * .54 - 12px)}
  .approach .label{grid-column:1/-1}
  .approach h2{grid-column:1/8}
  .approach .aside{grid-column:9/13;align-self:end}
  .steps{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--rule)}
  .steps li{border-top:0;padding:24px}
  .steps li:first-child{padding-left:0}
  .steps li+li{border-left:1px solid var(--rule)}
  .contact-copy{grid-column:1/6}
  #contact-form{grid-column:7/13;margin-top:0}
}
@media(max-width:899px){
  .row{padding:64px 0}
  .ledger,.steps{margin-top:40px}
}
@media(max-width:760px){
  h1 span{display:block}
  .index{grid-template-columns:1fr}
  .index a{min-height:48px;padding:0}
  .index a+a{border-left:0;border-top:1px solid var(--rule)}
}
@media(max-width:480px){
  body{font-size:15px}
  .nav{gap:20px;font-size:11px;letter-spacing:.1em}
  .form-row{grid-template-columns:1fr}
  .form-bottom{flex-direction:column;align-items:flex-start}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
