/* RKR Blueprint — "drafting sheet" system.
   Tokens → base → layout → components → sections → motion states.
   Palette is anchored on the logo: teal #3AB09E + grey #5C5C5C (sampled from the PNG). */

/* ───────── Fonts (self-hosted, latin subset) ───────── */
@font-face{font-family:"Archivo";src:url(../fonts/archivo-var.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(../fonts/source-serif-4-var.woff2) format("woff2");font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(../fonts/source-serif-4-italic-var.woff2) format("woff2");font-weight:200 900;font-style:italic;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(../fonts/plex-mono-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(../fonts/plex-mono-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}

/* ───────── Tokens ───────── */
:root{
  --paper:#EEEAE0; --paper-2:#E5E0D3; --ink:#111518; --ink-2:#3F474C; --ink-3:#5C5C5C;
  --teal:#3AB09E;            /* logo teal: graphics & fills only (2.2:1 on paper) */
  --teal-deep:#0B6B5F;       /* text-safe teal on paper (5.3:1) */
  --redline:#B3331F;         /* the one spot colour: annotation marks (5.1:1 on paper) */
  --bp:#0A2A2E; --bp-2:#0F3A3F; --bp-ink:#E9F1EE; --bp-teal:#5FD3BF;

  /* semantic (re-pointed inside .bp) */
  --bg:var(--paper); --bg-alt:var(--paper-2); --fg:var(--ink); --fg-2:var(--ink-2); --fg-3:var(--ink-3);
  --accent:var(--teal-deep); --rule:rgba(17,21,24,.16); --rule-strong:rgba(17,21,24,.55); --on-fill:var(--paper);

  --f-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-body:"Source Serif 4",Georgia,"Times New Roman",serif;
  --f-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --t-hero:clamp(2.75rem,1.1rem + 5.4vw,6.4rem);
  --t-page:clamp(3rem,1.1rem + 7vw,8rem);
  --t-h2:clamp(1.9rem,1.1rem + 2.7vw,3.6rem);
  --t-h3:clamp(1.2rem,1.05rem + .7vw,1.6rem);
  --t-lead:clamp(1.2rem,1.08rem + .65vw,1.6rem);
  --t-body:clamp(1.0625rem,1rem + .22vw,1.2rem);
  --t-mono:.75rem;

  --gutter:clamp(20px,4vw,56px); --maxw:1320px; --gap:clamp(16px,2vw,32px);
  --section:clamp(5rem,10vw,10rem);
  --header-h:72px;
  --ease:cubic-bezier(.22,1,.36,1); --ease-io:cubic-bezier(.65,0,.35,1);
}
.bp{
  --bg:var(--bp); --bg-alt:var(--bp-2); --fg:var(--bp-ink); --fg-2:rgba(233,241,238,.8); --fg-3:rgba(233,241,238,.64);
  --accent:var(--bp-teal); --rule:rgba(233,241,238,.16); --rule-strong:rgba(233,241,238,.5); --on-fill:var(--bp);
}

/* ───────── Base ───────── */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 24px);background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--t-body)/1.6 var(--f-body);font-optical-sizing:auto;font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
img,svg,video{display:block;max-width:100%;height:auto}
h1,h2,h3,h4,p,figure,blockquote,ul,ol,dl,dd{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
:focus{outline:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
::selection{background:var(--teal);color:var(--ink)}
.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;left:12px;top:12px;z-index:100;background:var(--ink);color:var(--paper);padding:.75rem 1rem;font:500 .8rem var(--f-mono);transform:translateY(-200%);transition:transform .2s var(--ease)}
.skip:focus{transform:none}
.mono{font:500 var(--t-mono)/1.4 var(--f-mono);letter-spacing:.1em;text-transform:uppercase}
.main{outline:none}

/* Lenis (recommended base rules) */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* ───────── Sheet: paper, fine grid, margin rails ───────── */
.sheet{position:fixed;inset:0;z-index:-1;pointer-events:none;background:
  linear-gradient(to right,rgba(17,21,24,.07) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to bottom,rgba(17,21,24,.07) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to right,rgba(17,21,24,.035) 1px,transparent 1px) 0 0/24px 24px,
  linear-gradient(to bottom,rgba(17,21,24,.035) 1px,transparent 1px) 0 0/24px 24px,
  var(--paper)}
.sheet::before,.sheet::after{content:"";position:absolute;top:0;bottom:0;width:1px;background:var(--rule)}
.sheet::before{left:max(var(--gutter),calc((100% - var(--maxw))/2))}
.sheet::after{right:max(var(--gutter),calc((100% - var(--maxw))/2))}

/* ───────── Layout ───────── */
.wrap{width:min(100% - 2*var(--gutter),var(--maxw));margin-inline:auto}
.wrap--narrow{width:min(100% - 2*var(--gutter),860px)}
.section{position:relative;padding-block:var(--section)}
.section--alt{background:rgba(17,21,24,.045)}
.pagehead+.section{padding-top:clamp(2.5rem,5vw,5rem)}
.pagehead+.chips+.index,.pagehead+.voices{padding-top:clamp(2.5rem,5vw,5rem)}
.bp{position:relative;background:var(--bp);color:var(--fg);isolation:isolate}
.bp::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:
  linear-gradient(to right,rgba(233,241,238,.075) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to bottom,rgba(233,241,238,.075) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to right,rgba(233,241,238,.035) 1px,transparent 1px) 0 0/24px 24px,
  linear-gradient(to bottom,rgba(233,241,238,.035) 1px,transparent 1px) 0 0/24px 24px}

/* ───────── Type ───────── */
.h2{font:700 var(--t-h2)/1.04 var(--f-display);letter-spacing:-.03em;text-wrap:balance}
.h3{font:650 var(--t-h3)/1.2 var(--f-display);letter-spacing:-.01em}
.sechead{display:flex;align-items:center;gap:1rem;margin-bottom:clamp(1.75rem,3.5vw,3rem);font:500 var(--t-mono)/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase}
.sechead__n{color:var(--accent)}
.sechead__l{color:var(--fg-2)}
.sechead__rule{flex:1;height:1px;background:var(--rule-strong);transform-origin:left}

/* ───────── Buttons ───────── */
.btn{--b-bg:var(--fg);--b-fg:var(--bg);--b-fill:var(--accent);--b-fill-fg:var(--on-fill);
  position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;gap:.8em;min-height:52px;padding:0 1.4rem;
  font:500 .8125rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;white-space:nowrap;
  color:var(--b-fg);background:var(--b-bg);border:1px solid var(--b-bg);cursor:pointer;
  transition:color .3s var(--ease),border-color .3s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--b-fill);transform:translateY(101%);transition:transform .45s var(--ease)}
.btn .ico{width:1.3em;height:1.3em;flex:none;transition:transform .35s var(--ease)}
.btn--ghost{--b-bg:transparent;--b-fg:var(--fg);--b-fill:var(--fg);--b-fill-fg:var(--bg);border-color:var(--rule-strong)}
.btn--text{--b-bg:transparent;--b-fg:var(--fg);min-height:0;padding:0 0 .45rem;border:0;border-bottom:1px solid var(--rule-strong);overflow:visible}
.btn--text::before{display:none}
.btn--sm{min-height:42px;padding:0 1.05rem;font-size:.75rem}
@media (hover:hover){
  .btn:hover{color:var(--b-fill-fg);border-color:var(--b-fill)}
  .btn:hover::before{transform:none}
  .btn:hover .ico{transform:translateX(4px)}
  .btn--text:hover{color:var(--accent);border-color:var(--accent)}
}
.btn:active{transform:scale(.98)}
.btn--text:active{transform:none}

/* ───────── Header ───────── */
.site-header{position:sticky;top:0;z-index:70;background:rgba(238,234,224,.94);border-bottom:1px solid var(--rule);transition:transform .45s var(--ease);view-transition-name:site-header}
.site-header.is-hidden{transform:translateY(-101%)}
.site-header__bar{display:flex;align-items:center;justify-content:space-between;gap:2rem;height:var(--header-h)}
.brand{display:flex;align-items:center;gap:.9rem;text-decoration:none;flex:none}
.brand__mark{width:44px;height:44px;object-fit:contain}
.brand__text{display:flex;flex-direction:column;gap:.2rem;line-height:1}
.brand__text strong{font:700 1rem/1 var(--f-display);letter-spacing:-.01em}
.brand__text span{font:500 .625rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.nav__list{display:flex;gap:clamp(1.25rem,2.4vw,2.5rem)}
.nav a{position:relative;display:inline-flex;gap:.55em;align-items:baseline;padding:.5rem 0;text-decoration:none;font:500 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase}
.nav__n{color:var(--accent);font-size:.625rem}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.nav a[aria-current="page"]::after{transform:scaleX(1)}
@media (hover:hover){.nav a:hover::after{transform:scaleX(1)}}
.site-header__end{display:flex;align-items:center;gap:.75rem}
.progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--teal);transform:scaleX(0);transform-origin:left;display:none}
.single .progress{display:block}
.burger{display:none;width:44px;height:44px;position:relative}
.burger__bars i{position:absolute;left:11px;right:11px;top:21px;height:2px;background:var(--ink);transition:transform .4s var(--ease)}
.burger__bars i:first-child{transform:translateY(-4px)}.burger__bars i:last-child{transform:translateY(4px)}
.menu-open .burger__bars i:first-child{transform:rotate(45deg)}
.menu-open .burger__bars i:last-child{transform:rotate(-45deg)}
@media (max-width:960px){
  .nav{display:none}
  .burger{display:block}
  .brand__text span{display:none}
}
@media (max-width:520px){.site-header__cta{display:none}}
/* No JS on small screens: the burger can't work, so show the plain nav row instead */
@media (max-width:960px){
  html:not(.js) .burger{display:none}
  html:not(.js) .site-header__bar{height:auto;flex-wrap:wrap;padding-block:.75rem}
  html:not(.js) .nav{display:block;order:3;width:100%;overflow-x:auto}
  html:not(.js) .nav__list{gap:1.25rem}
}

/* Mobile menu */
.menu{position:fixed;inset:0;z-index:60;background:var(--bp);color:var(--bp-ink);overflow-y:auto;visibility:hidden;clip-path:inset(0 0 100% 0);transition:clip-path .6s var(--ease-io),visibility 0s .6s}
.menu[hidden]{display:block}
.menu-open .menu{visibility:visible;clip-path:inset(0);transition:clip-path .6s var(--ease-io)}
.menu__inner{padding-top:calc(var(--header-h) + 2.5rem);padding-bottom:2.5rem;min-height:100%;display:flex;flex-direction:column}
.menu__kicker{font:500 var(--t-mono)/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--bp-teal);margin-bottom:1.5rem}
.menu__list li{border-top:1px solid rgba(233,241,238,.16)}
.menu__list a{display:flex;align-items:baseline;gap:1.25rem;padding:.9rem 0;text-decoration:none;font:700 clamp(2.4rem,9vw,4.5rem)/1 var(--f-display);letter-spacing:-.03em}
.menu__n{font:500 .75rem var(--f-mono);letter-spacing:.1em;color:var(--bp-teal)}
.menu__list a[aria-current="page"] .menu__t{color:var(--bp-teal)}
.menu__foot{margin-top:auto;padding-top:2.5rem;display:flex;flex-direction:column;gap:.35rem;font:500 .8rem var(--f-mono);letter-spacing:.06em}

/* ───────── Hero ───────── */
.hero{position:relative;padding-top:clamp(1.5rem,4vw,3.5rem)}
.hero__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:end;min-height:clamp(560px,calc(100svh - var(--header-h) - 96px),860px);padding-bottom:clamp(2.5rem,5vw,4.5rem)}
.hero__copy{grid-column:1/span 8;align-self:center;padding-block:1rem}
.hero__title{font:760 var(--t-hero)/.98 var(--f-display);letter-spacing:-.04em;text-wrap:balance}
.hero__kicker{display:block;margin-bottom:clamp(1.25rem,2.5vw,2rem);font:500 .8125rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.hero__main{display:block}
.hero__sub{margin-top:clamp(1.5rem,3vw,2.25rem);max-width:34ch;font-size:var(--t-lead);line-height:1.45;color:var(--ink-2)}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;margin-top:clamp(1.75rem,3vw,2.5rem)}
.hero__fig{grid-column:9/span 4;align-self:end}
.hero__cap{display:flex;align-items:center;gap:.75rem;margin-top:1.25rem;font:500 .6875rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.hero__cap span{width:36px;height:1px;background:var(--ink-3)}

.portrait{position:relative;width:min(100%,400px);margin-inline:auto 0;padding-top:16%}
.portrait__plate{position:absolute;left:0;right:0;top:22%;bottom:0;background:var(--teal)}
.portrait__plate::after{content:"";position:absolute;inset:0;border:1px solid var(--ink);transform:translate(14px,14px);z-index:-1}
.portrait__marks i{position:absolute;width:14px;height:14px;border:0 solid var(--ink)}
.portrait__marks i:nth-child(1){left:-9px;top:calc(22% - 9px);border-width:1px 0 0 1px}
.portrait__marks i:nth-child(2){right:-9px;top:calc(22% - 9px);border-width:1px 1px 0 0}
.portrait__marks i:nth-child(3){left:-9px;bottom:-9px;border-width:0 0 1px 1px}
.portrait__marks i:nth-child(4){right:-9px;bottom:-9px;border-width:0 1px 1px 0}
.portrait__img{position:relative;width:100%;height:auto;will-change:transform}
.portrait--side{width:min(100%,380px);padding-top:8%}
.portrait--side .portrait__plate{top:14%}
.portrait--side .portrait__marks i:nth-child(1),.portrait--side .portrait__marks i:nth-child(2){top:calc(14% - 9px)}

@media (max-width:960px){
  .hero__grid{min-height:0;row-gap:1.5rem;padding-bottom:2rem}
  .hero__copy,.hero__fig{grid-column:1/-1}
  .portrait{width:min(78%,340px);margin-inline:0 auto}
}

/* Tape-measure ticker */
.ticker{position:relative;overflow:hidden;border-block:1px solid var(--ink);background:rgba(238,234,224,.7)}
.ticker::after{content:"";position:absolute;left:0;right:0;bottom:0;height:14px;pointer-events:none;background:
  repeating-linear-gradient(to right,var(--ink) 0 1px,transparent 1px 40px) 0 100%/100% 14px no-repeat,
  repeating-linear-gradient(to right,var(--ink) 0 1px,transparent 1px 8px) 0 100%/100% 6px no-repeat}
.ticker__track{display:flex;width:max-content;padding-block:1.35rem 1.9rem;animation:tape 42s linear infinite}
.ticker.is-paused .ticker__track{animation-play-state:paused}
.ticker.is-js .ticker__track{animation:none}
.ticker__set{display:flex;flex:none}
.ticker__set li{display:flex;align-items:center;padding-inline:clamp(1.25rem,2.4vw,2.25rem);font:600 clamp(1.15rem,1rem + 1vw,1.8rem)/1 var(--f-display);letter-spacing:-.01em;text-transform:uppercase;white-space:nowrap}
.ticker__set li::after{content:"+";margin-left:clamp(2.5rem,4.8vw,4.5rem);font:400 1.3em/1 var(--f-mono);color:var(--teal-deep)}
@keyframes tape{to{transform:translateX(-50%)}}

/* ───────── Profile ───────── */
.profile__lead{font:650 clamp(1.75rem,1rem + 2.7vw,3.4rem)/1.1 var(--f-display);letter-spacing:-.03em;max-width:26ch;text-wrap:balance}
.profile__cols{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);margin-top:clamp(1.75rem,3vw,3rem)}
.profile__body{grid-column:1/span 5;font-size:var(--t-lead);line-height:1.45;color:var(--fg-2)}
.profile__claims{grid-column:7/span 6;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:.6rem}
.claim{padding:.55rem .85rem;border:1px solid var(--rule-strong);font:500 .75rem/1.2 var(--f-mono);letter-spacing:.06em;text-transform:uppercase}
.figs{display:grid;grid-template-columns:repeat(4,1fr);margin-top:clamp(3rem,6vw,6rem);border-top:1px solid var(--rule-strong)}
.figs__item{padding:clamp(1.25rem,2vw,2rem) clamp(1rem,2vw,2rem) 0 0;border-right:1px solid var(--rule);padding-left:clamp(1rem,2vw,2rem)}
.figs__item:first-child{padding-left:0}.figs__item:last-child{border-right:0}
.figs__n{display:block;font:760 clamp(3.25rem,1.6rem + 5vw,7rem)/.95 var(--f-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:var(--fg)}
.figs__n::first-line{color:inherit}
.figs__l{display:block;margin-top:.9rem;max-width:22ch;font-size:.95rem;line-height:1.4;color:var(--fg-2)}
.marks-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem 3rem;margin-top:clamp(3rem,6vw,5.5rem);padding-top:2rem;border-top:1px solid var(--rule)}
.marks__title{font:500 var(--t-mono)/1.5 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-2);max-width:26ch}
.marks{display:flex;flex-wrap:wrap;gap:clamp(.6rem,2vw,1rem)}
.marks li{flex:none;width:clamp(64px,19vw,84px);height:clamp(64px,19vw,84px)}
.marks img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.1);mix-blend-mode:multiply;transition:filter .4s var(--ease)}
@media (hover:hover){.marks img:hover{filter:none;mix-blend-mode:normal}}
@media (max-width:860px){
  .profile__body,.profile__claims{grid-column:1/-1}
  .figs{grid-template-columns:repeat(2,1fr)}
  .figs__item{padding-left:clamp(1rem,2vw,2rem);border-bottom:1px solid var(--rule);padding-bottom:1.5rem}
  .figs__item:nth-child(odd){padding-left:0}
  .figs__item:nth-child(even){border-right:0}
}

/* ───────── Services ───────── */
.services__head{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);align-items:end;margin-bottom:clamp(2.5rem,5vw,4.5rem)}
.services__head .h2{grid-column:1/span 7}
.services__intro{grid-column:9/span 4;font-size:1rem;line-height:1.55;color:var(--fg-2)}
.services__grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--rule-strong);background:rgba(238,234,224,.6)}
.sheetcard{display:flex;flex-direction:column;align-items:flex-start;padding:clamp(1.5rem,2.6vw,2.75rem);border-right:1px solid var(--rule-strong)}
.sheetcard:last-child{border-right:0}
.sheetcard__top{align-self:stretch;display:flex;justify-content:space-between;padding-bottom:1rem;color:var(--fg-3)}
.sheetcard__dia{align-self:stretch;margin-block:.5rem 2rem;padding:1rem;border:1px dashed var(--rule-strong);color:var(--ink)}
.sheetcard__t{font:700 clamp(1.15rem,1rem + .5vw,1.4rem)/1.1 var(--f-display);letter-spacing:.02em;text-transform:uppercase}
.sheetcard__p{margin-block:.9rem 1.75rem;font-size:1rem;line-height:1.55;color:var(--fg-2)}
.sheetcard .btn{margin-top:auto}
.dia{width:100%;height:auto}
.dia__ink *{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:1;stroke-dashoffset:0}
.dia__ink .a{stroke:var(--accent);stroke-width:1.8}
@media (max-width:960px){
  .services__head .h2,.services__intro{grid-column:1/-1}
  .services__grid{grid-template-columns:1fr}
  .sheetcard{border-right:0;border-bottom:1px solid var(--rule-strong)}
  .sheetcard:last-child{border-bottom:0}
}

/* ───────── Journey (career chart) ───────── */
.journey .h2{max-width:14ch}
.gantt{--lab:clamp(150px,19vw,250px);margin-top:clamp(2.5rem,5vw,4.5rem)}
.gantt__axis{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));margin-left:var(--lab);border-bottom:1px solid var(--rule-strong);overflow-x:clip}
.gantt__yr{min-width:0;white-space:nowrap;padding:0 0 .7rem .45rem;border-left:1px solid var(--rule);font:500 .6875rem/1 var(--f-mono);letter-spacing:.06em;color:var(--fg-3)}
.gantt__row{display:grid;grid-template-columns:var(--lab) 1fr;grid-template-areas:"who track" ". text";align-items:center;padding-block:1.4rem;border-bottom:1px solid var(--rule)}
.gantt__who{grid-area:who;padding-right:1.25rem}
.gantt__who h3{font:650 clamp(1rem,.9rem + .4vw,1.25rem)/1.15 var(--f-display);letter-spacing:-.01em}
.gantt__who span{display:block;margin-top:.35rem;font:500 .6875rem/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.gantt__track{grid-area:track;position:relative;height:46px;background:repeating-linear-gradient(to right,var(--rule) 0 1px,transparent 1px calc(100% / var(--n)))}
.gantt__bar{position:absolute;top:9px;bottom:9px;left:var(--l);width:var(--w);background:var(--bp-teal);transform-origin:left center}
.gantt__bar.is-now{clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%)}
.gantt__dates{position:absolute;top:50%;left:calc(var(--l) + var(--w));transform:translate(12px,-50%);font:500 .6875rem/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--fg)}
.gantt__row.is-end .gantt__dates{left:var(--l);transform:translate(calc(-100% - 12px),-50%)}
.gantt__row.is-in .gantt__dates{left:var(--l);transform:translate(12px,-50%);color:var(--bp)}
.gantt__text{grid-area:text;margin-top:1rem;max-width:64ch;font-size:.97rem;line-height:1.55;color:var(--fg-2)}
.gantt__text b{color:var(--fg);font-weight:600}
@media (max-width:760px){
  .gantt__row.is-in:not(.is-xl) .gantt__dates{left:calc(var(--l) + var(--w));color:var(--fg)}
  .gantt{--lab:0px}
  .gantt__axis{margin-left:0}
  .gantt__yr:nth-child(even){visibility:hidden}
  .gantt__row{grid-template-columns:1fr;grid-template-areas:"who" "track" "text"}
  .gantt__who{padding:0 0 .8rem}
  .gantt__text{margin-top:.8rem}
}

/* ───────── Testimonials ───────── */
.quote{position:relative}
.quote__photo{overflow:hidden;background:var(--paper-2)}
.quote__photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.04) sepia(.12);transition:filter .6s var(--ease),transform .9s var(--ease)}
@media (hover:hover){.quote:hover .quote__photo img{filter:none;transform:scale(1.03)}}
.quote__text{margin:0;font-family:var(--f-body);font-weight:400;line-height:1.5;color:var(--fg)}
.quote__who{display:flex;flex-direction:column;gap:.25rem;margin-top:1.5rem}
.quote__who strong{font:700 1.1rem/1.2 var(--f-display);letter-spacing:-.005em}
.quote__who span{font:500 .6875rem/1.45 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3);max-width:48ch}
.quote__n{display:block;margin-bottom:1rem;color:var(--redline)}
.quote--big{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap);align-items:center;padding-block:clamp(2.5rem,5vw,5rem);border-top:1px solid var(--rule-strong)}
.quote--big .quote__photo{grid-column:1/span 4;aspect-ratio:4/5}
.quote--big .quote__body{grid-column:6/span 7}
.quote--big.is-flip .quote__photo{grid-column:9/span 4;grid-row:1}
.quote--big.is-flip .quote__body{grid-column:1/span 7;grid-row:1}
.quote--big .quote__text{font-size:clamp(1.15rem,1rem + .85vw,1.65rem);position:relative}
.quote--big .quote__text::before{content:"“";display:block;height:.42em;margin-bottom:.1em;font:800 clamp(5rem,4rem + 5vw,9rem)/.7 var(--f-display);color:var(--teal)}
.voices__more{margin-top:clamp(1.5rem,3vw,3rem);padding-top:2.5rem;border-top:1px solid var(--rule-strong)}
.qgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gap)}
.qgrid .quote{padding:clamp(1.5rem,2.4vw,2.5rem);border:1px solid var(--rule-strong);background:rgba(238,234,224,.7)}
.qgrid .quote__photo{width:96px;aspect-ratio:1;margin-bottom:1.5rem}
.qgrid .quote__text{font-size:clamp(1.05rem,1rem + .3vw,1.2rem)}
@media (max-width:860px){
  .quote--big .quote__photo,.quote--big.is-flip .quote__photo{grid-column:1/span 7;grid-row:auto;max-width:320px}
  .quote--big .quote__body,.quote--big.is-flip .quote__body{grid-column:1/-1;grid-row:auto}
  .qgrid{grid-template-columns:1fr}
}

/* ───────── Writing: cards, feature, index ───────── */
.writing__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:clamp(2rem,4vw,3.5rem)}
.writing__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}
.pcard__link{display:block;text-decoration:none}
.pcard__img{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--paper-2);border:1px solid var(--rule-strong)}
.pcard__img img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.pcard__meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin-top:1.1rem;color:var(--fg-3)}
.pcard__meta i{font-style:normal;margin:0 .45em;opacity:.6}
.pcard__t{margin-top:.6rem;font:650 clamp(1.15rem,1rem + .55vw,1.5rem)/1.2 var(--f-display);letter-spacing:-.015em;text-wrap:balance;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease);display:inline}
@media (hover:hover){.pcard__link:hover .pcard__img img{transform:scale(1.05)}.pcard__link:hover .pcard__t{background-size:100% 1px}}
@media (max-width:860px){.writing__grid{grid-template-columns:1fr}}

.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(2rem,4vw,3.5rem)}
.chip{display:inline-flex;align-items:center;gap:.6rem;padding:.65rem 1rem;border:1px solid var(--rule-strong);font:500 .75rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;transition:background-color .25s var(--ease),color .25s var(--ease)}
.chip__n{color:var(--fg-3);font-size:.65rem}
.chip[aria-current="page"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.chip[aria-current="page"] .chip__n{color:var(--paper)}
@media (hover:hover){.chip:not([aria-current="page"]):hover{background:var(--ink);color:var(--paper)}}

.index{padding-top:clamp(3rem,6vw,5rem)}
.feature{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap);align-items:center;margin-bottom:clamp(3.5rem,7vw,7rem)}
.feature__img{grid-column:1/span 7;display:block;aspect-ratio:16/10;overflow:hidden;border:1px solid var(--rule-strong);background:var(--paper-2)}
.feature__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
@media (hover:hover){.feature:hover .feature__img img{transform:scale(1.04)}}
.feature__body{grid-column:9/span 4;display:flex;flex-direction:column;align-items:flex-start;gap:1.25rem}
.feature__meta{display:flex;flex-wrap:wrap;gap:.4rem 1rem;color:var(--fg-3)}
.feature__meta span:first-child{color:var(--redline)}
.feature__meta i{font-style:normal;margin:0 .45em;opacity:.6}
.feature__t{font:700 clamp(1.6rem,1.1rem + 1.7vw,2.7rem)/1.08 var(--f-display);letter-spacing:-.03em;text-wrap:balance}
.feature__t a{text-decoration:none}
.feature__x{color:var(--fg-2);line-height:1.55}
@media (max-width:960px){.feature__img,.feature__body{grid-column:1/-1}}
.index__head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:1rem;color:var(--fg-2)}
.index__head .sechead__n{font:500 var(--t-mono)/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.plist{border-top:1px solid var(--rule-strong)}
.prow__a{position:relative;display:grid;grid-template-columns:56px minmax(0,1fr) minmax(150px,230px) 150px 32px;align-items:center;gap:1.25rem;padding-block:1.7rem;border-bottom:1px solid var(--rule);text-decoration:none}
.prow__n{color:var(--accent)}
.prow__img{display:none}
.prow__t{font:600 clamp(1.15rem,1rem + .85vw,1.75rem)/1.2 var(--f-display);letter-spacing:-.02em;text-wrap:balance;transition:transform .5s var(--ease),color .3s var(--ease)}
.prow__cats,.prow__d{color:var(--fg-3)}
.prow__cats i{font-style:normal;margin:0 .45em;opacity:.6}
.prow__go{display:grid;place-items:center;opacity:0;transform:translate(-8px,8px);transition:opacity .3s var(--ease),transform .4s var(--ease);color:var(--accent)}
.prow__go .ico{width:22px;height:22px}
@media (hover:hover){
  .prow__a:hover .prow__t{transform:translateX(14px);color:var(--accent)}
  .prow__a:hover .prow__go{opacity:1;transform:none}
}
.peek{position:fixed;left:0;top:0;z-index:45;width:min(340px,26vw);aspect-ratio:4/3;overflow:hidden;pointer-events:none;border:1px solid var(--ink);background:var(--paper-2);opacity:0;visibility:hidden}
.peek img{width:100%;height:100%;object-fit:cover}
@media (hover:none),(pointer:coarse){.peek{display:none}}
@media (max-width:860px){
  .prow__a{grid-template-columns:96px minmax(0,1fr);grid-template-areas:"img t" "img cats" "img d";gap:.4rem 1rem;align-items:start}
  .prow__n,.prow__go{display:none}
  .prow__img{display:block;grid-area:img;aspect-ratio:1;overflow:hidden;border:1px solid var(--rule-strong)}
  .prow__img img{width:100%;height:100%;object-fit:cover}
  .prow__t{grid-area:t}.prow__cats{grid-area:cats}.prow__d{grid-area:d}
}

/* ───────── Page head ───────── */
.pagehead{padding-top:clamp(3rem,7vw,6.5rem)}
.pagehead__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:end}
.pagehead__copy{grid-column:1/span 8;padding-bottom:clamp(1rem,3vw,3rem)}
.pagehead__extra{grid-column:9/span 4}
.pagehead__crumb{display:flex;gap:.6rem;margin-bottom:1.5rem;color:var(--fg-3)}
.pagehead__crumb a{text-decoration:none}
@media (hover:hover){.pagehead__crumb a:hover{color:var(--accent)}}
.pagehead__crumb i{font-style:normal;opacity:.6}
.pagehead__crumb span{color:var(--fg)}
.pagehead__t{font:780 var(--t-page)/.95 var(--f-display);letter-spacing:-.045em;text-wrap:balance}
.pagehead__lede{margin-top:1.75rem;max-width:40ch;text-wrap:balance;font-size:var(--t-lead);line-height:1.45;color:var(--fg-2)}
@media (max-width:960px){.pagehead__copy,.pagehead__extra{grid-column:1/-1}.pagehead__extra{margin-top:2rem}}

/* ───────── About ───────── */
.split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:2.5rem}
.split__label{grid-column:1/span 4;align-self:start;position:sticky;top:calc(var(--header-h) + 2rem)}
.split__h{max-width:9ch}
.split__body{grid-column:6/span 7}
.note{padding-block:2.25rem 3rem;border-top:1px solid var(--rule-strong)}
.note:first-child{padding-top:1.5rem}
.note__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}
.note__head .mono{color:var(--accent)}
.prose p+p{margin-top:1.1em}
.prose p{color:var(--fg-2);line-height:1.7}
.job{padding-block:2.25rem 2.75rem;border-top:1px solid var(--rule-strong)}
.job:first-child{padding-top:1.5rem}
.job__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem 1.25rem;margin-bottom:1.35rem}
.job__dates{flex-basis:100%;color:var(--accent)}
.job__co{font:700 clamp(1.5rem,1.2rem + 1.2vw,2.25rem)/1.05 var(--f-display);letter-spacing:-.025em}
.job__place{font:500 .75rem/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.job__list{display:grid;gap:.85rem}
.job__list li{position:relative;padding-left:1.5rem;line-height:1.6;color:var(--fg-2)}
.job__list li::before{content:"";position:absolute;left:0;top:.7em;width:.75rem;height:1px;background:var(--accent)}
.fig{font:700 1.02em/1 var(--f-display);letter-spacing:-.01em;color:var(--accent);font-variant-numeric:tabular-nums;white-space:nowrap}
.job__more{margin-top:1.5rem;font-style:italic;color:var(--fg-3)}
@media (max-width:960px){.split__label,.split__body{grid-column:1/-1;position:static}.split__h{max-width:none}}

/* ───────── Contact ───────── */
.contact__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);row-gap:3rem}
.contact__info{grid-column:1/span 5}
.contact__form{grid-column:7/span 6}
.dl>div{padding-block:1.4rem;border-top:1px solid var(--rule-strong)}
.dl dt{display:flex;align-items:center;gap:.6rem;font:500 var(--t-mono)/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3)}
.dl .ico{width:18px;height:18px;color:var(--accent)}
.dl dd{margin-top:.8rem;font:650 clamp(1.25rem,1rem + 1vw,1.9rem)/1.2 var(--f-display);letter-spacing:-.02em;overflow-wrap:anywhere}
.dl a{text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;transition:background-size .4s var(--ease),color .3s var(--ease)}
@media (hover:hover){.dl a:hover{color:var(--accent)}}
.social{display:flex;gap:8px}
.social a{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--rule-strong);transition:background-color .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
.social .ico{width:18px;height:18px}
@media (hover:hover){.social a:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}}
.social--lg{margin-top:2rem}
@media (max-width:960px){.contact__info,.contact__form{grid-column:1/-1}}

/* WPForms, restyled (its own CSS is dequeued) */
.contact__form .wpforms-container{margin:0}
.wpforms-form .wpforms-field{padding:0 0 1.75rem}
.wpforms-form .wpforms-field-label,.wpforms-form .wpforms-field-sublabel{display:block;margin-bottom:.4rem;font:500 .6875rem/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3)}
.wpforms-form .wpforms-field-label{color:var(--fg)}
.wpforms-form .wpforms-field-sublabel{margin:.35rem 0 0;font-size:.625rem}
.wpforms-form .wpforms-required-label{color:var(--redline)}
.wpforms-form input[type=text],.wpforms-form input[type=email],.wpforms-form input[type=tel],.wpforms-form input[type=url],.wpforms-form textarea,.wpforms-form select{width:100%;padding:.75rem 0;font:400 1.2rem/1.4 var(--f-body);color:var(--fg);background:transparent;border:0;border-bottom:1px solid var(--rule-strong);border-radius:0;transition:border-color .25s var(--ease)}
.wpforms-form textarea{min-height:150px;resize:vertical}
.wpforms-form input:focus,.wpforms-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 1px 0 var(--accent)}
.wpforms-form .wpforms-field-row{display:flex;gap:1.5rem}
.wpforms-form .wpforms-field-row>div{flex:1;min-width:0}
.wpforms-form .wpforms-error,.wpforms-form label.wpforms-error{display:block;margin-top:.4rem;font:500 .75rem/1.3 var(--f-mono);color:var(--redline)}
.wpforms-form input.wpforms-error,.wpforms-form textarea.wpforms-error{border-color:var(--redline)}
.wpforms-form .wpforms-submit-container{padding-top:.5rem}
.wpforms-form .wpforms-submit{--b-bg:var(--ink);--b-fg:var(--paper);min-height:52px;padding:0 1.6rem;font:500 .8125rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper);background:var(--ink);border:1px solid var(--ink);cursor:pointer;transition:background-color .3s var(--ease),border-color .3s var(--ease)}
@media (hover:hover){.wpforms-form .wpforms-submit:hover{background:var(--teal-deep);border-color:var(--teal-deep)}}
.wpforms-confirmation-container-full,.wpforms-confirmation-container{padding:1.25rem 1.5rem;border:1px solid var(--teal-deep);background:rgba(58,176,158,.12);font-size:1.05rem}
.wpforms-container .wpforms-hidden,.wpforms-form .wpforms-recaptcha-container:empty{display:none}
@media (max-width:520px){.wpforms-form .wpforms-field-row{flex-direction:column;gap:1.75rem}}

/* ───────── Single post ───────── */
.post-head{padding-top:clamp(3rem,7vw,6rem)}
.post-head__in{max-width:1100px}
.post-head__t{font:760 clamp(2.1rem,1rem + 3.6vw,4.4rem)/1.03 var(--f-display);letter-spacing:-.04em;text-wrap:balance;max-width:24ch}
.post-head__meta{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;margin-top:1.75rem;color:var(--fg-3)}
.post-head__meta span{display:inline-flex;align-items:center;gap:.5rem}
.post-head__meta .ico{width:16px;height:16px;color:var(--accent)}
.post-hero{margin-top:clamp(2rem,4vw,3.5rem);width:min(100% - 2*var(--gutter),1100px)}
.post-hero img{width:100%;height:auto;border:1px solid var(--rule-strong)}
.post-layout{display:grid;grid-template-columns:minmax(0,68ch);justify-content:center;gap:clamp(2rem,5vw,5rem);margin-block:clamp(3rem,6vw,5.5rem) var(--section)}
.post-layout.has-toc{grid-template-columns:220px minmax(0,68ch)}
.toc{align-self:start;position:sticky;top:calc(var(--header-h) + 2rem)}
.toc[hidden]{display:none}
.toc__t{margin-bottom:1rem;color:var(--fg-3)}
.toc__list{display:grid;border-left:1px solid var(--rule)}
.toc__list a{display:block;padding:.45rem 0 .45rem 1rem;margin-left:-1px;border-left:2px solid transparent;font:500 .75rem/1.35 var(--f-mono);letter-spacing:.02em;text-decoration:none;color:var(--fg-3);transition:color .25s var(--ease),border-color .25s var(--ease)}
.toc__list a.is-active{color:var(--fg);border-left-color:var(--teal)}
@media (hover:hover){.toc__list a:hover{color:var(--accent)}}
@media (max-width:1100px){.post-layout.has-toc{grid-template-columns:minmax(0,68ch)}.toc{display:none}}

.prose--post{font-size:var(--t-body);counter-reset:h2}
.prose--post>*+*{margin-top:1.35em}
.prose--post p{color:var(--fg);line-height:1.72}
.prose--post h2{margin-top:2.6em;font:700 clamp(1.6rem,1.2rem + 1.4vw,2.35rem)/1.1 var(--f-display);letter-spacing:-.03em;text-wrap:balance}
.prose--post h2::before{counter-increment:h2;content:"§ " counter(h2,decimal-leading-zero);display:block;margin-bottom:.7rem;font:500 .75rem/1 var(--f-mono);letter-spacing:.14em;color:var(--accent)}
.prose--post h3{margin-top:2em;font:650 clamp(1.25rem,1.1rem + .6vw,1.6rem)/1.2 var(--f-display);letter-spacing:-.015em}
.prose--post a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em}
@media (hover:hover){.prose--post a:hover{text-decoration-thickness:2px}}
.prose--post strong{font-weight:650}
.prose--post ul,.prose--post ol{padding-left:1.4em}
.prose--post ul{list-style:disc}.prose--post ol{list-style:decimal}
.prose--post li{padding-left:.3em}.prose--post li+li{margin-top:.5em}
.prose--post li::marker{color:var(--accent)}
.prose--post blockquote{padding-left:1.5rem;border-left:2px solid var(--redline);font-size:1.15em;font-style:italic;color:var(--fg-2)}
.prose--post hr{border:0;height:1px;background:var(--rule-strong);margin-block:2.5em}
.prose--post code{padding:.12em .38em;font:400 .88em var(--f-mono);background:var(--paper-2)}
.prose--post pre{padding:1.25rem 1.5rem;overflow-x:auto;background:var(--bp);color:var(--bp-ink);font:400 .85rem/1.65 var(--f-mono)}
.prose--post pre code{padding:0;background:none}
.prose--post img{border:1px solid var(--rule)}
.prose--post figure{margin-block:2em}
.prose--post figcaption{margin-top:.6rem;font:500 .7rem var(--f-mono);letter-spacing:.06em;color:var(--fg-3)}
.prose--post table{width:100%;border-collapse:collapse;font-size:.95em}
.prose--post th,.prose--post td{padding:.7rem .9rem;border:1px solid var(--rule-strong);text-align:left}
.prose--post th{background:var(--paper-2);font:600 .8rem var(--f-display)}

.writing__grid--even{grid-template-columns:repeat(3,1fr)}
.comments-wrap{padding-block:clamp(3rem,6vw,5rem) var(--section)}
.comments__t{margin-bottom:1.5rem}
.comments__list{margin-bottom:3rem}
.comments__list .comment{padding-block:1.5rem;border-top:1px solid var(--rule)}
.comments__list .children{margin-top:1.25rem;margin-left:clamp(1rem,4vw,2.5rem);padding-left:1.25rem;border-left:1px solid var(--rule-strong)}
.comment__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem 1rem}
.comment__who{font:700 1.05rem/1.2 var(--f-display);letter-spacing:-.01em}
.comment__date{color:var(--fg-3);text-decoration:none}
.comment__pending{margin-top:.8rem;padding:.55rem .8rem;border:1px dashed var(--redline);color:var(--redline);text-transform:none;letter-spacing:.02em}
.comment__text{margin-top:.8rem}
.comment__text p{color:var(--fg)}
.comment__reply{margin-top:.8rem}
.comment__reply a{color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor}
.cform__note{margin-top:1rem;color:var(--fg-3);text-transform:none;letter-spacing:.02em}
.cform .form-submit{margin-top:1.5rem}
.rkr-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.comment-reply-title{font:700 var(--t-h3)/1.2 var(--f-display);margin-bottom:1.25rem}
.cform p{margin-bottom:1.25rem}
.cform label{display:block;margin-bottom:.4rem;font:500 .6875rem/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3)}
.cform input[type=text],.cform input[type=email],.cform input[type=url],.cform textarea{width:100%;padding:.75rem 0;font:400 1.1rem/1.4 var(--f-body);color:var(--fg);background:transparent;border:0;border-bottom:1px solid var(--rule-strong);border-radius:0}
.cform input:focus,.cform textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 1px 0 var(--accent)}
.comment-form-cookies-consent{display:flex;gap:.6rem;align-items:center}.comment-form-cookies-consent label{margin:0}

.navigation.pagination{margin-top:3rem}
.nav-links{display:flex;gap:8px;flex-wrap:wrap}
.page-numbers{display:grid;place-items:center;min-width:44px;height:44px;padding:0 .8rem;border:1px solid var(--rule-strong);font:500 .75rem var(--f-mono);text-decoration:none}
.page-numbers.current{background:var(--ink);color:var(--paper)}

/* ───────── Footer ───────── */
.site-footer{padding-top:clamp(5rem,10vw,9rem);overflow:hidden;background:#071F23;border-top:1px solid var(--rule)}
.site-footer__cta{position:relative;display:block}
.site-footer__copy{position:relative;z-index:1;padding-bottom:clamp(2.5rem,5vw,5rem)}
.site-footer__line{max-width:20ch;margin-bottom:clamp(1.25rem,3vw,2.25rem);font:650 clamp(1.5rem,1rem + 2.1vw,2.9rem)/1.1 var(--f-display);letter-spacing:-.03em;text-wrap:balance}
.bigcta{display:inline-flex;align-items:center;gap:.12em;text-decoration:none;font:800 clamp(3.4rem,1.5rem + 9.5vw,11.5rem)/.88 var(--f-display);letter-spacing:-.05em;color:var(--fg);transition:color .4s var(--ease)}
.bigcta__i{display:grid;place-items:center;width:.62em;height:.62em;margin-left:.08em;color:var(--bp-teal);transition:transform .6s var(--ease)}
.bigcta__i .ico{width:100%;height:100%;stroke-width:1}
@media (hover:hover){.bigcta:hover{color:var(--bp-teal)}.bigcta:hover .bigcta__i{transform:translate(.06em,-.06em) rotate(45deg)}}
.site-footer__fig{position:absolute;right:0;bottom:0;margin:0;width:min(44%,520px);pointer-events:none}
.site-footer__fig img{width:100%;height:auto}
.site-footer__base{border-top:1px solid var(--rule)}
.site-footer__row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem;padding-block:1.75rem}
.site-footer__logo{display:grid;place-items:center;width:56px;height:56px;background:var(--paper);flex:none}
.site-footer__logo img{width:44px;height:44px;object-fit:contain}
.site-footer__copyright{font:500 .75rem var(--f-mono);letter-spacing:.06em;color:var(--fg-2)}
.site-footer__nav{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-inline:auto}
.site-footer__nav a{font:500 .75rem var(--f-mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--fg-2)}
@media (hover:hover){.site-footer__nav a:hover{color:var(--bp-teal)}}
.totop{display:inline-flex;align-items:center;gap:.5rem;font:500 .75rem var(--f-mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.totop .ico{width:16px;height:16px;transform:rotate(-45deg)}
@media (max-width:860px){
  .site-footer__fig{position:relative;width:min(70%,300px);margin:0 0 0 auto}
  .site-footer__nav{margin-inline:0;flex-basis:100%;order:5}
}

/* ───────── Round 2: AI positioning + dynamism ───────── */

/* Hero "now" line (typed by JS; first phrase is real text, so it works without JS) */
.hero__now{display:flex;align-items:center;gap:.7rem;margin-top:1.15rem;letter-spacing:.08em;color:var(--fg-2)}
.hero__now-l{color:var(--accent)}
.hero__now-l::after{content:"›";margin-left:.7rem;color:var(--accent)}
.hero__now-t{color:var(--fg);min-height:1.4em}
.hero__caret{display:inline-block;width:.5em;height:1.05em;margin-left:-.45rem;background:var(--teal);animation:caret 1.05s steps(1) infinite}
@keyframes caret{50%{opacity:0}}

/* Logo strip: wide tiles for wordmarks (Telus, IBM) */
.marks li.is-wide{display:grid;place-items:center;width:clamp(112px,30vw,152px);padding:16px;background:#fff}
.marks li:not(.is-wide) img{object-fit:contain;background:#fff}
.marks li.is-wide img{width:100%;height:auto;object-fit:contain;mix-blend-mode:normal;filter:grayscale(1) contrast(1.2)}
@media (hover:hover){.marks li.is-wide img:hover{filter:none}}

/* Outlined statement band */
.band{position:relative;overflow:hidden;padding-block:clamp(1.5rem,3vw,3rem);border-block:1px solid var(--rule-strong);background:rgba(238,234,224,.6)}
.band__row{display:flex;align-items:center;gap:clamp(1.25rem,3vw,3rem);width:max-content;font:800 clamp(3.4rem,1rem + 9.5vw,10.5rem)/1.02 var(--f-display);letter-spacing:-.045em;text-transform:uppercase;white-space:nowrap;will-change:transform}
.band__row--1{color:transparent;-webkit-text-stroke:1.5px var(--ink)}
.band__row--2{color:var(--ink);margin-left:-18vw}
.band__row i{flex:none;width:.28em;height:.28em;background:var(--teal);transform:rotate(45deg)}

/* Services: two groups; AI group carries live workflow diagrams */
.svcgroup+.svcgroup{margin-top:clamp(2.5rem,5vw,4.5rem)}
.svcgroup__label{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem;color:var(--fg-2)}
.svcgroup__label span{display:grid;place-items:center;width:1.9rem;height:1.9rem;background:var(--ink);color:var(--paper)}
.svcgroup--ai .sheetcard{background:rgba(58,176,158,.08)}
.sheetcard__tag{display:inline-flex;align-items:center;gap:.5rem;color:var(--accent)}
.sheetcard__tag i{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:beacon 2s var(--ease) infinite}
@keyframes beacon{0%{box-shadow:0 0 0 0 rgba(58,176,158,.7)}80%,100%{box-shadow:0 0 0 9px rgba(58,176,158,0)}}
.dia__lbl text{font:500 6.4px var(--f-mono);letter-spacing:.08em;fill:var(--fg-2)}
.dia__flow *{fill:none;stroke:var(--accent);stroke-width:1.7;stroke-linecap:round;stroke-dasharray:3 5;animation:flow 1.3s linear infinite;animation-play-state:paused}
.dia.is-live .dia__flow *{animation-play-state:running}
@keyframes flow{to{stroke-dashoffset:-16}}
.dia__ping{fill:none;stroke:var(--accent);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:ping 2.6s var(--ease) infinite;animation-play-state:paused}
.dia.is-live .dia__ping{animation-play-state:running}
@keyframes ping{from{transform:scale(1);opacity:.75}to{transform:scale(1.9);opacity:0}}
@media (hover:hover){.sheetcard{transition:background-color .35s var(--ease)}.sheetcard:hover{background:rgba(58,176,158,.14)}}

/* Pointer-lit grid + drafting crosshair (fine pointers; created/updated in JS) */
.sheet--hot{opacity:0;transition:opacity .5s var(--ease);background:
  linear-gradient(to right,rgba(11,107,95,.34) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to bottom,rgba(11,107,95,.34) 1px,transparent 1px) 0 0/120px 120px,
  linear-gradient(to right,rgba(11,107,95,.22) 1px,transparent 1px) 0 0/24px 24px,
  linear-gradient(to bottom,rgba(11,107,95,.22) 1px,transparent 1px) 0 0/24px 24px;
  -webkit-mask-image:radial-gradient(circle 260px at var(--mx,50%) var(--my,40%),#000 0,transparent 100%);mask-image:radial-gradient(circle 260px at var(--mx,50%) var(--my,40%),#000 0,transparent 100%)}
.sheet--hot::before,.sheet--hot::after{display:none}
.sheet--hot.is-on{opacity:1}
.xhair{position:fixed;left:0;top:0;z-index:95;pointer-events:none;mix-blend-mode:difference;opacity:0;transition:opacity .3s var(--ease)}
.xhair.is-on{opacity:1}
.xhair__x,.xhair__y{position:absolute;background:rgba(255,255,255,.2)}
.xhair__x{left:-100vw;top:0;width:200vw;height:1px}
.xhair__y{top:-100vh;left:0;height:200vh;width:1px}
.xhair__r{position:absolute;left:-14px;top:-14px;width:28px;height:28px;border:1px solid rgba(255,255,255,.75);border-radius:50%;transform:scale(.35);transition:transform .35s var(--ease)}
.xhair.is-hot .xhair__r{transform:scale(1)}
.xhair__t{position:absolute;left:18px;top:14px;font:500 10px/1 var(--f-mono);letter-spacing:.08em;color:#fff;opacity:.75;white-space:nowrap}

/* Career chart: scroll playhead */
.gantt{position:relative}
.gantt__playhead{position:absolute;left:var(--lab);top:0;bottom:0;width:1px;background:var(--bp-teal);opacity:0;pointer-events:none;z-index:2;will-change:transform}
.gantt.is-scrub .gantt__playhead{opacity:.9}
.gantt__year{position:sticky;top:calc(var(--header-h) + 1rem);display:block;width:max-content;transform:translateX(-50%);padding:.3rem .6rem;background:var(--bp-teal);color:var(--bp);font:500 .75rem/1 var(--f-mono);letter-spacing:.06em}
.gantt__row{transition:opacity .35s var(--ease)}
.gantt.is-scrub .gantt__row:not(.is-active){opacity:.5}
.gantt__row.is-active .gantt__who h3{color:var(--accent)}
.gantt__row.is-active .gantt__bar{filter:brightness(1.18)}
.gantt__text a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em}
@media (hover:hover){.gantt__text a:hover{text-decoration-thickness:2px}}
@media (max-width:760px){.gantt__playhead{display:none}.gantt.is-scrub .gantt__row:not(.is-active){opacity:1}}
.job__list a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em}
@media (hover:hover){.job__list a:hover{text-decoration-thickness:2px}}

/* Scroll-lit words in the profile statement */
.profile__lead .wi{will-change:opacity}

/* ───────── SEO / AI-search content blocks ───────── */
picture{display:contents}
.faq .h2,.writing>.wrap>.h2{margin-bottom:clamp(1.75rem,3.5vw,3rem)}
.faq__list{border-top:1px solid var(--rule-strong)}
.faq__item{border-bottom:1px solid var(--rule)}
.faq__item summary{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:1.4rem;cursor:pointer;list-style:none}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary h3{font:650 clamp(1.1rem,1rem + .6vw,1.5rem)/1.25 var(--f-display);letter-spacing:-.015em}
.faq__plus{position:relative;flex:none;width:22px;height:22px}
.faq__plus::before,.faq__plus::after{content:"";position:absolute;left:3px;right:3px;top:calc(50% - 1px);height:2px;background:var(--fg);transition:transform .35s var(--ease)}
.faq__plus::after{transform:rotate(90deg)}
.faq__item[open] .faq__plus::after{transform:rotate(0)}
@media (hover:hover){.faq__item summary:hover h3{color:var(--accent)}}
.faq__a{padding:0 3rem 1.75rem 0;max-width:72ch}
.faq__a p{color:var(--fg-2);line-height:1.7}
.faq__more{display:inline-flex;align-items:center;gap:.5rem;margin-top:1rem;color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:.25rem}
.faq__more .ico{width:16px;height:16px}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--gap);border-top:1px solid var(--rule-strong)}
.facts>div{display:grid;grid-template-columns:minmax(110px,150px) 1fr;gap:1rem;padding-block:1rem;border-bottom:1px solid var(--rule)}
.facts dt{font:500 var(--t-mono)/1.5 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3)}
.facts dd{font-size:1rem;line-height:1.5}
.facts__links{margin-top:1.75rem}
.glance{padding-block:clamp(2.5rem,5vw,4.5rem) 0}
@media (max-width:860px){.facts{grid-template-columns:1fr}.facts>div{grid-template-columns:100px 1fr}}
.author{display:grid;grid-template-columns:96px 1fr;gap:1.5rem;align-items:start;width:min(100% - 2*var(--gutter),68ch);margin-block:0 var(--section);padding:1.75rem;border:1px solid var(--rule-strong);background:rgba(238,234,224,.7)}
.author__img{width:96px;height:96px;object-fit:cover;filter:grayscale(1) contrast(1.05)}
.author__k{color:var(--fg-3)}
.author__n{margin-top:.4rem;font:700 1.25rem/1.2 var(--f-display);letter-spacing:-.01em}
.author__n a{text-decoration:none}
.author__b{margin-top:.5rem;font-size:.97rem;line-height:1.55;color:var(--fg-2)}
.author__l{margin-top:.9rem;text-transform:none;letter-spacing:.02em}
.author__l a{color:var(--accent)}
@media (max-width:520px){.author{grid-template-columns:1fr}}

/* Home hero portrait enters with pure CSS (starts at first paint, so the LCP image never waits on JavaScript).
   "backwards" fill: nothing is held after the animation, so the pointer-tilt transform still works. */
@media (prefers-reduced-motion:no-preference){
  .hero__fig .portrait__plate{animation:heroPlate 1.1s var(--ease-io) .15s backwards;transform-origin:50% 100%}
  .hero__fig .portrait__img{animation:heroImg 1.2s var(--ease) .3s backwards}
  .hero__fig .portrait__marks i{animation:heroMark .6s var(--ease) .9s backwards}
  .hero__fig .hero__cap{animation:heroCap .8s var(--ease) 1.1s backwards}
}
@keyframes heroPlate{from{transform:scaleY(0)}}
@keyframes heroImg{from{opacity:0;transform:translateY(7%)}}
@keyframes heroMark{from{opacity:0;transform:scale(0)}}
@keyframes heroCap{from{opacity:0;transform:translateX(-12px)}}

/* ───────── Motion states (only when JS + motion are available) ───────── */
.has-motion [data-reveal],.has-motion [data-hero],.has-motion [data-split]{opacity:0}
.has-motion [data-reveal]{transform:translateY(28px)}
.has-motion .sechead__rule{transform:scaleX(0)}
.has-motion .dia__ink *{stroke-dashoffset:1}
.has-motion .gantt__bar{transform:scaleX(0)}
.has-motion .gantt__dates{opacity:0}
.has-motion .dia__flow,.has-motion .dia__lbl,.has-motion .dia__ping{opacity:0}
.has-motion [data-wipe]{clip-path:inset(0 0 100% 0)}
.has-motion [data-scrub]{opacity:1}
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-block:.09em;margin-block:-.09em}
.wi{display:inline-block;will-change:transform}

/* Cross-page transitions (progressive enhancement) */
@view-transition{navigation:auto}
::view-transition-old(root){animation:.25s var(--ease-io) both vt-out}
::view-transition-new(root){animation:.45s var(--ease) both vt-in}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0;transform:translateY(10px)}}
::view-transition-group(site-header){animation-duration:0s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .ticker__track{animation:none}
  @view-transition{navigation:none}
}
