/* Ink + Aether · Sketch Light v3.0 — site v3 (2026-11-11 markups) */
@font-face{font-family:"JetBrains Mono";src:url("/fonts/JetBrainsMono-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/fonts/JetBrainsMono-Medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/fonts/JetBrainsMono-Bold.woff2") format("woff2");font-weight:700;font-display:swap}

:root{
  /* design system tokens */
  --paper:#fafafa; --grid-minor:rgba(232,230,226,.35); --grid-major:rgba(212,210,206,.55);
  --blue:#1e3a5f; --red:#c23b3b; --black:#1a1a1a; --wash:#6b6965;
  --mute:#757370; --ink-soft:#3a3a3a;
  --tint-red:rgba(194,59,59,.045); --tint-blue:rgba(30,58,95,.08); --paper-veil:rgba(250,250,250,.85);
  --line:2px; --r:3px;
  --mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  /* page geometry from the macro markup: equal white-space either side of one centered container */
  --gutter:clamp(16px,6vw,77px);
  --container:1040px;
  --measure:60ch;
  /* the page grid, reused wherever a surface must hide what scrolls beneath it */
  --grid-img:linear-gradient(var(--grid-minor) 1px,transparent 1px),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px),
    linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px);
  --grid-size:10px 10px,10px 10px,50px 50px,50px 50px;
  /* line types — every line on the site is one of these two:
     ink   = the hand-drawn stroke (img/ink-divider.svg, traced 1:1 from docs/assets/ink-divider.source.png), for rules between parts
     hair  = 1.2px dashed blue, dash 2 / gap 5, for leaders, extensions and card rules inside drawings */
  --hair-c:rgba(30,58,95,.75);
  --hair:repeating-linear-gradient(90deg,var(--hair-c) 0 2px,transparent 2px 7px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:64px;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;color:var(--black);font:400 .9375rem/1.7 var(--mono);background-color:var(--paper);
  background-image:var(--grid-img);background-size:var(--grid-size);background-attachment:fixed;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--blue);text-underline-offset:3px}
a:hover{color:var(--red)}
::selection{background:var(--blue);color:var(--paper)}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.skip{position:absolute;left:-999px;top:8px;background:var(--black);color:var(--paper);padding:8px 14px;z-index:100}
.skip:focus{left:8px}
.container{width:min(var(--container),100% - 2*var(--gutter));margin-inline:auto}
h1,h2,h3{font-family:var(--mono);font-weight:400;margin:0;text-transform:lowercase;font-variant-ligatures:none}
p{margin:0 0 16px}

/* section divider (typical) — the ink line type: vector traced from the hand-drawn asset (2000×14).
   Spans the container width; aspect-ratio is locked to the asset so it scales, never stretches. */
.divider{display:block;width:100%;height:auto;aspect-ratio:2000/14;margin:0;border:0;padding:0;
  background:url("/img/ink-divider.svg") center/100% 100% no-repeat}

/* masthead: logo on the page center line, nav bar below it */
.masthead{display:flex;justify-content:center;padding:28px 0 14px}
.logo{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;color:var(--black)}
.logo img{width:64px;height:64px;mix-blend-mode:multiply}
.logo span{font:700 .8125rem/1 var(--mono);letter-spacing:.24em;text-transform:uppercase}
/* the bar carries the same fixed grid as the page, so the grid reads straight through it */
.navbar{position:sticky;top:0;z-index:40;background-color:var(--paper);background-image:var(--grid-img);background-size:var(--grid-size);background-attachment:fixed;padding:10px 0 8px}
.nav{display:flex;justify-content:center;gap:clamp(20px,5vw,56px);list-style:none;margin:10px 0 0;padding:0}
.nav a{font:500 .75rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--black);padding:6px 2px;border-bottom:var(--line) solid transparent}
.nav a:hover{border-color:var(--black);color:var(--black)}
.nav a.is-on{color:var(--blue);border-color:var(--blue)}
.nav a.nav__about.is-on{color:var(--red);border-color:var(--red)}

/* type */
.eyebrow{font:500 .8125rem/1.4 var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--red);margin:0 0 22px}
.eyebrow--blue{color:var(--blue)}
.eyebrow .x{color:var(--black);margin:0 .4em}
h1{font-size:clamp(2.125rem,6.2vw,4.75rem);line-height:1.06;letter-spacing:-.02em;color:var(--blue);margin:0 0 40px}
h1 .line{display:block}
h2{font-size:clamp(1.625rem,3.6vw,2.75rem);line-height:1.15;color:var(--blue);margin-bottom:22px}
h3{font-size:1.1875rem;line-height:1.3;color:var(--blue);margin:0 0 10px}
.h-red{color:var(--red)}
.ink-u{text-decoration:none;background:linear-gradient(var(--red),var(--red)) 0 100%/100% 4px no-repeat;padding-bottom:2px}
.lead{font-size:clamp(1rem,1.6vw,1.1875rem);line-height:1.6;max-width:44ch;margin:0 auto 18px}
.hero .lead{margin-bottom:10px}
.lead--left{margin-left:0;max-width:var(--measure)}
.term sup a{text-decoration:none;color:var(--red);font-size:.7em;margin-left:2px}

/* hero */
.hero{padding:clamp(56px,10vh,120px) 0 64px}
.hero h1{text-align:left}
.footnote{font-size:.8125rem;line-height:1.6;color:var(--mute)}
.footnote sup{color:var(--red)}
.footnote a{text-decoration:none}

/* about — the red section */
.about{padding:72px 0 96px}
.rule-red{width:160px;height:3px;background:var(--red);margin:0 0 22px}
.about__top{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,340px);gap:56px;align-items:start;margin-bottom:64px}
.bio{margin:0;padding-top:25px}
.bio img{width:100%;aspect-ratio:1;object-fit:cover;object-position:50% 40%;border:var(--line) solid var(--red);border-radius:var(--r)}
.bio figcaption{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin-top:10px}
.about__intro p{max-width:44ch}
.about__intro h2{margin-bottom:6px}
.aside{color:var(--red);font-size:.875rem;margin-bottom:28px!important}
/* studio grid — 3×3, same block as the cartography steps: 2px border, 3px radius, 28px gap + connector, lift on hover.
   Border colour names the discipline: design = black, strategy = blue, wellness = red. */
.work{margin-bottom:56px}
.work__cap{font:500 .75rem/1.6 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--wash);margin:0 0 18px}
.work__cap span{color:var(--red)}
.work__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.tile{--c:var(--black);position:relative;margin:0;aspect-ratio:3/2;border:var(--line) solid var(--c);border-radius:var(--r);background:var(--paper);transition:transform .2s ease,box-shadow .2s ease}
.tile--strategy{--c:var(--blue)}
.tile--wellness{--c:var(--red)}
.tile:not(:nth-child(3n))::after{content:"";position:absolute;right:-30px;top:50%;width:28px;height:2px;background:var(--black)}
.tile:hover{transform:translateY(-3px);box-shadow:4px 4px 0 var(--c)}
.tile img{width:100%;height:100%;object-fit:cover;border-radius:1px;mix-blend-mode:multiply;filter:saturate(.9)}
.tile figcaption{position:absolute;left:8px;bottom:8px;font:500 .6875rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--c);background:var(--paper);border:1px solid var(--c);border-radius:20px;padding:4px 8px}
.about__text{max-width:var(--measure)}
.about__text p{font-size:clamp(1rem,1.5vw,1.125rem)}
.about__text .caption{font-size:.8125rem}
.about__text strong{color:var(--red);font-weight:500}
.caption{font-size:.8125rem;color:var(--wash);margin-top:20px}
.caption span{color:var(--red);margin-right:6px}

/* services */
.services{padding:24px 0 40px}
.services .eyebrow{margin-top:56px}
.hook{display:block;color:var(--red);font-weight:500;margin-bottom:6px}
.steps{list-style:none;margin:48px 0 24px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;counter-reset:s}
.step{position:relative;border:var(--line) solid var(--black);border-radius:var(--r);padding:18px 18px 14px;background:var(--paper-veil);cursor:crosshair;transition:transform .2s ease,box-shadow .2s ease}
.step--red{border-color:var(--red)}
.step:not(:last-child)::after{content:"";position:absolute;right:-30px;top:50%;width:28px;height:2px;background:var(--black)}
.step:hover,.step:focus-visible,.step.is-hot{transform:translateY(-3px);box-shadow:4px 4px 0 var(--black)}
.step--red:hover,.step--red:focus-visible,.step--red.is-hot{box-shadow:4px 4px 0 var(--red)}
.step__n{font:700 .8125rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin-bottom:12px}
.step:not(.step--red) .step__n{color:var(--black)}
.step__t{margin:0;font-size:1rem;line-height:1.45;text-transform:uppercase;letter-spacing:.04em}

.diagram{margin:24px auto 0;max-width:560px}
#carto{width:100%;height:auto;overflow:visible}
#carto .lab{font:500 .9375rem/1 var(--mono);fill:var(--black);letter-spacing:.06em}
#carto .lab--s{font-size:.75rem;fill:var(--wash);letter-spacing:.2em;text-transform:uppercase}
#carto .lab--big{font-size:1.0625rem}
#carto .lab--red{fill:var(--red)}
#carto .lab--blue{fill:var(--blue)}
#carto .axis path{fill:none;stroke:var(--wash);stroke-width:1.5}
#carto .edge{fill:rgba(250,250,250,.6);stroke:var(--red);stroke-width:2.4;stroke-linejoin:round}
#carto .faint{fill:none;stroke:var(--red);stroke-width:1;stroke-dasharray:4 4;opacity:.7}
#carto .nodes path{stroke:var(--red);stroke-width:1.6;fill:none}
#carto .nodes circle{fill:var(--red)}
#carto .conn{fill:none;stroke:var(--red);stroke-width:1.5;stroke-dasharray:4 4}
#carto .layer--blue .edge{fill:var(--tint-blue);stroke:var(--blue);stroke-width:3}
#carto .layer--blue .faint{stroke:var(--blue);stroke-dasharray:none;opacity:.8}
#carto .dot{fill:var(--blue)}
#carto .tick{stroke:var(--blue);stroke-width:2}
#carto .layer{transition:opacity .3s ease,transform .4s ease;transform-box:fill-box;transform-origin:center}
#carto.is-focus .layer{opacity:.22}
#carto.is-focus .layer.is-hot{opacity:1}
#carto.is-focus [data-k="map"].is-hot{transform:translateY(-10px)}
#carto.is-focus [data-k="form"].is-hot{transform:translateY(10px)}
#carto.is-focus [data-k="center"].is-hot{transform:scale(1.08)}
/* draw-in when the diagram enters the viewport */
.js #carto .edge,.js #carto .nodes path{stroke-dasharray:var(--len,1400);stroke-dashoffset:var(--len,1400)}
.js #carto.is-drawn .edge,.js #carto.is-drawn .nodes path{transition:stroke-dashoffset 1.6s ease;stroke-dashoffset:0}
@media (prefers-reduced-motion:reduce){.js #carto .edge,.js #carto .nodes path{stroke-dasharray:none;stroke-dashoffset:0}#carto .layer,.step,.tile{transition:none}}


/* hero body: copy left-justified, triad triangle beside it */
.hero__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,320px);gap:40px 64px;align-items:center;margin:8px 0 0}
.hero__copy .lead,.hero__copy .footnote{text-align:left;margin-left:0;max-width:44ch}
.hero__copy .lead{margin-bottom:12px}
.hero__copy .footnote{margin:0}
.triad{margin:0}
.triad svg{width:100%;height:auto;overflow:visible}
.triad .tri{fill:rgba(194,59,59,.04);stroke:var(--red);stroke-width:2;stroke-linejoin:round}
.triad .tri-in{fill:none;stroke:var(--red);stroke-width:1;stroke-dasharray:4 4;opacity:.6}
.triad circle{fill:var(--black)}
.triad .plus{font:700 1.125rem/1 var(--mono);fill:var(--red)}
.triad .cloud{fill:var(--paper);stroke:var(--blue);stroke-width:2}
.triad .word{font:500 .9375rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;fill:var(--black)}
.triad .word--blue{fill:var(--blue)}
.triad .u{stroke:var(--black);stroke-width:2}

/* beyond the machine — a quiet coda inside the hero */
.beyond{margin:64px 0 0;padding-top:28px;border-top:1px solid var(--grid-major);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:24px 40px;align-items:center}
.beyond__h{font-size:clamp(1.0625rem,1.8vw,1.3125rem);line-height:1.4;color:var(--red);margin:0}
.beyond__h span{color:var(--black)}
.beyond__list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.beyond__list li{display:grid;grid-template-columns:56px auto 1fr;gap:14px;align-items:center}
.beyond__list img{width:56px;height:56px;object-fit:cover;border:var(--line) solid var(--black);border-radius:var(--r);mix-blend-mode:multiply;filter:brightness(1.18) saturate(.85)}
.num{font:700 .8125rem/1 var(--mono);color:var(--red);border-bottom:var(--line) solid var(--red);padding-bottom:4px}
.beyond__t{font-size:clamp(1rem,1.6vw,1.1875rem);line-height:1.3;color:var(--blue)}

/* accent band — the three disciplines, called out */
.accent{padding:0}
.accent__line{margin:0;padding:clamp(20px,3vw,30px) 0;text-align:center;font:700 clamp(1rem,2.2vw,1.6rem)/1.3 var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--red);background:var(--tint-red)}
.accent__line .x{color:var(--black);margin:0 .5em}

/* offerings — derived from 03 / center, on the diagram's center line.
   The figure shares the diagram's scale (240 of 680 viewBox units: 560px diagram -> 197.65px figure), so its extension lines meet the ones above. */
.carto{container-type:inline-size}
#carto .ext{fill:none;stroke:var(--blue);stroke-width:1.2;stroke-dasharray:2 5;opacity:.75}
.offer{--fw:min(197.65px,35.294cqw);display:grid;grid-template-columns:minmax(0,1fr) var(--fw) minmax(0,1fr);gap:0;align-items:start}
.offer__fig{width:var(--fw);height:auto;display:block;overflow:visible}
.offer__fig .o-ext{fill:none;stroke:var(--blue);stroke-width:1.2;stroke-dasharray:2 5;opacity:.75}
.offer__fig .o-ghost{fill:none;stroke:var(--blue);stroke-width:1;stroke-dasharray:4 4;opacity:.45}
.offer__fig .o-base{fill:rgba(194,59,59,.08);stroke:var(--red);stroke-width:2}
.offer__fig .o-grid{fill:none;stroke:var(--red);stroke-width:1;stroke-dasharray:4 4}
.offer__fig .o-pyr{fill:none;stroke:var(--blue);stroke-width:2.6;stroke-linecap:round}
.offer__fig .o-lead{stroke:var(--blue);stroke-width:1.2;stroke-dasharray:2 5;opacity:.75}
.offer__fig .o-dot{fill:var(--blue)}
.offer__fig .lab{font:500 .6875rem/1 var(--mono);fill:var(--red);letter-spacing:.2em;text-transform:uppercase}
.offer__card{background:var(--hair) 0 0/100% 1.2px no-repeat;padding-top:18px;margin-top:calc(var(--fw) * .5 - .6px)}
.offer__card--time{text-align:right;padding-right:18px}
.offer__card--rights{margin-top:calc(var(--fw) / 6 - .6px);padding-left:18px}
.offer__card p{font-size:.875rem;color:var(--ink-soft);margin-bottom:0}
.offer__card .offer__tag{font-size:1.375rem;color:var(--blue);margin-bottom:4px}
.offer__card .offer__n{font:700 .75rem/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--red);margin-bottom:10px}
.offer.is-hot .o-pyr,.offer.is-hot .o-base{stroke-width:3.2}
.step{user-select:none}

/* contact — copy left, the weather report right; equal space above and below */
.contact{padding:0 0 88px}
.contact__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,250px);gap:40px 64px;align-items:end;margin-top:88px}
.contact .eyebrow{color:var(--wash);letter-spacing:.3em;margin-bottom:16px}
.cloud-h{display:inline-block;color:var(--black);font-size:1rem;letter-spacing:.04em;border:var(--line) solid var(--black);border-radius:30px 24px 32px 26px/24px 30px 24px 30px;padding:7px 20px;margin-bottom:22px}
.contact__note{color:var(--wash);max-width:46ch;margin:0 0 22px}
.hours{margin:0 0 26px;display:grid;gap:6px}
.hours div{display:grid;grid-template-columns:13ch 1fr;gap:12px}
.hours dt{font:500 .75rem/1.7 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.hours dd{margin:0;font-size:.875rem;color:var(--black)}
.links{list-style:none;padding:0;margin:0;display:flex;justify-content:flex-start;flex-wrap:wrap;align-items:center}
.links li{padding:2px 22px}
.links li:first-child{padding-left:0}
.links li+li{border-left:var(--line) solid var(--black)}
/* same text format as the nav links */
.links a{font:500 .75rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--black);padding:6px 2px;border-bottom:var(--line) solid var(--black)}
.links a:hover{color:var(--blue);border-color:var(--blue)}
.storm{margin:0;justify-self:end;width:100%;text-align:right}
.storm__art{display:block;border-radius:10px;overflow:hidden}
.storm__art img{width:100%;height:auto;transition:transform .5s ease}
.storm__art:hover img{transform:scale(1.03)}
.storm figcaption{font-size:.78125rem;color:var(--wash);margin-top:10px;white-space:nowrap;display:flex;justify-content:flex-end;gap:1ch}
@media (prefers-reduced-motion:reduce){.storm__art img{transition:none}}
.foot{padding:0 0 30px;font-size:.78125rem;color:var(--wash)}
.foot__row{display:flex;justify-content:space-between;align-items:center;gap:12px 28px;flex-wrap:wrap;margin-top:22px}
.foot__mark{font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--black)}

@media (max-width:860px){
  .hero__body{grid-template-columns:1fr;justify-items:center}
  .hero__copy{justify-self:stretch}
  .triad{width:min(300px,100%)}
  .beyond{grid-template-columns:1fr}
  .offer{grid-template-columns:1fr;justify-items:center}
  .offer__card,.offer__card--rights{margin-top:20px;justify-self:stretch;text-align:left;padding:18px 0 0}
  .contact__grid{grid-template-columns:1fr;margin-top:64px}
  .storm{justify-self:start;max-width:250px;text-align:left}
  .storm figcaption{justify-content:flex-start;flex-wrap:wrap;white-space:normal}
  .contact{padding-bottom:64px}
  .offer__fig{order:-1}
  .offer__fig .o-lead{display:none}
}
@media (max-width:640px){
  .hours div{grid-template-columns:1fr;gap:0}
}

@media (max-width:860px){
  .about__top{grid-template-columns:1fr;gap:28px}
  .bio{padding-top:0;max-width:300px}
  .steps{grid-template-columns:1fr;gap:22px}
  .work__grid{gap:18px}
  .tile:not(:nth-child(3n))::after{right:-20px;width:18px}
  .step:not(:last-child)::after{right:auto;left:50%;top:auto;bottom:-24px;width:2px;height:22px}
}
@media (max-width:640px){
  body{font-size:.90625rem}
  .eyebrow .x{margin:0 .2em}
  .work__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .tile::after{display:none}
  .tile:nth-child(9){display:none}
  .links{flex-direction:column;align-items:flex-start;gap:14px}
  .links li{padding:0}
  .links li+li{border-left:0}
}
