:root{
  --bg:#FFFFFF;
  --bg-soft:#F6F6F4;
  --ink:#0B0B0C;
  --ink-2:#47474B;
  --mute:#89898E;
  --line:rgba(11,11,12,.10);
  --night:#0A0A0C;
  --night-2:#17171A;
  --line-dark:rgba(255,255,255,.14);
  --ember:#FF5A1F;
  --ember-2:#FFB37A;
  --chip-bg:rgba(255,255,255,.06);
  --chip-line:rgba(255,255,255,.16);
  --chip-bg-light:rgba(11,11,12,.05);
  --chip-line-light:rgba(11,11,12,.12);
  --header-bg:rgba(255,255,255,.78);
  --gutter:clamp(16px,4vw,56px);
}

html[data-theme="dark"]{
  --bg:#0A0A0C;
  --bg-soft:#18181B;
  --ink:#F5F5F4;
  --ink-2:#C7C7CA;
  --line:rgba(255,255,255,.12);
  --chip-bg-light:rgba(255,255,255,.06);
  --chip-line-light:rgba(255,255,255,.16);
  --header-bg:rgba(10,10,12,.78);
}
html{transition:background-color .3s ease;}
body{transition:background-color .3s ease,color .3s ease;}
@media (prefers-reduced-motion:reduce){
  html,body{transition:none;}
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink-2);
  font-family:'Inter',sans-serif;
  font-size:16.5px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
.mono{
  font-family:'IBM Plex Mono',monospace;
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.frame{max-width:1320px;margin-inline:auto;padding-inline:var(--gutter);}

/* ---------- buttons & chips ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:15px 24px;border-radius:999px;
  font-family:'Inter',sans-serif;font-weight:600;font-size:14px;
  white-space:nowrap;border:none;cursor:pointer;
  transition:transform .2s ease,background .2s ease,color .2s ease;
}
.btn:hover{transform:translateY(-2px);}
.btn .arrow{transition:transform .2s ease;}
.btn:hover .arrow{transform:translateX(3px);}
.btn-primary{background:var(--ember);color:#0B0B0C;}
.btn-primary:hover{background:var(--ember-2);}
.btn-dark{background:var(--ink);color:var(--bg);}
.btn-dark:hover{opacity:.85;}
.btn-outline{background:transparent;border:1px solid var(--line-dark);color:#fff;}
.btn-outline:hover{background:rgba(255,255,255,.08);}
.btn-outline.on-light{border-color:var(--line);color:var(--ink);}
.btn-outline.on-light:hover{background:rgba(11,11,12,.05);}

.chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:999px;
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;
  background:var(--chip-bg);border:1px solid var(--chip-line);color:rgba(255,255,255,.75);
}
.chip.light{background:var(--chip-bg-light);border-color:var(--chip-line-light);color:var(--ink-2);}
.chip .dot{color:var(--ember);}
.chip .dot-live{
  display:inline-block;position:relative;color:#3ecf6e;
}
.chip .dot-live::after{
  content:"";position:absolute;inset:-5px;border-radius:50%;
  background:#3ecf6e;opacity:.4;animation:dot-live-pulse 2.2s ease-out infinite;
}
@keyframes dot-live-pulse{
  0%{transform:scale(.5);opacity:.45;}
  75%{transform:scale(2.1);opacity:0;}
  100%{opacity:0;}
}
@media (prefers-reduced-motion:reduce){
  .chip .dot-live::after{animation:none;opacity:0;}
}

/* cursor-spotlight glow on buttons */
.btn{position:relative;isolation:isolate;overflow:hidden;}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;opacity:0;
  background:radial-gradient(140px circle at var(--x,50%) var(--y,50%), rgba(255,255,255,.4), transparent 65%);
  mix-blend-mode:overlay;transition:opacity .3s ease;pointer-events:none;
}
.btn:hover::before{opacity:1;}

/* ---------- scroll progress bar ---------- */
.scroll-progress{
  position:fixed;top:0;left:0;height:3px;width:0%;
  background:var(--ember);z-index:200;pointer-events:none;
}

/* ---------- marquee ticker ---------- */
.marquee{
  background:var(--night);overflow:hidden;padding-block:20px;
  border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);
}
.marquee-track{
  display:flex;align-items:center;width:max-content;gap:36px;
  animation:marquee-scroll 24s linear infinite;
}
.marquee-track span.item{
  font-weight:800;font-size:clamp(18px,2.4vw,26px);letter-spacing:-.01em;
  color:rgba(255,255,255,.85);white-space:nowrap;
}
.marquee-track span.sep{color:var(--ember);font-size:16px;}
@keyframes marquee-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none;}
}

/* credentials chip row */
.cred-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;}

/* ---------- section heads ---------- */
section.light{background:var(--bg);color:var(--ink-2);}
section.night{background:var(--night);color:rgba(255,255,255,.82);}
.chapter{padding-block:88px;}
.section-head{margin-bottom:52px;max-width:760px;}
.section-head .chip{margin-bottom:22px;}
.big{
  font-size:clamp(32px,4.4vw,56px);
  font-weight:800;letter-spacing:-.02em;line-height:1.08;
  margin:0;color:var(--ink);
}
section.night .big{color:#fff;}

/* ---------- simple page intro banner (non-homepage pages) ---------- */
.page-intro{background:var(--night);color:#fff;padding-block:64px 56px;}
.page-intro .big{color:#fff;margin-top:20px;}
.page-intro p{max-width:60ch;color:rgba(255,255,255,.72);margin:20px 0 0;font-size:17px;}

/* ---------- scallop divider ---------- */
.scallop{height:22px;width:100%;background-repeat:repeat-x;background-position:top center;background-size:24px 24px;}
.scallop.to-light{background-color:var(--night);background-image:radial-gradient(circle at 12px 0, var(--bg) 12px, transparent 13px);}
.scallop.to-night{background-color:var(--bg);background-image:radial-gradient(circle at 12px 0, var(--night) 12px, transparent 13px);}

/* ---------- header ---------- */
header.site{
  position:sticky;top:0;z-index:50;
  background:var(--header-bg);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  transition:background-color .3s ease;
}
header.site .frame{
  display:flex;align-items:center;justify-content:space-between;
  padding-block:16px;gap:16px;
}
.brand{
  display:flex;align-items:baseline;gap:6px;
  font-weight:800;letter-spacing:-.01em;
  font-size:16px;white-space:nowrap;color:var(--ink);
}
.brand .spark{color:var(--ember);}
.brand .role{
  color:var(--mute);font-weight:500;
  font-size:13px;letter-spacing:0;margin-left:4px;
}
nav.primary{display:flex;gap:26px;}
nav.primary a{
  font-family:'Inter',sans-serif;font-size:13px;font-weight:700;
  text-transform:uppercase;letter-spacing:.03em;color:var(--ink-2);
  transition:color .2s ease;
}
nav.primary a:hover{color:var(--ember);}

/* theme toggle — a plain tap button (sun/moon icon), not a sliding switch */
.theme-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;padding:0;border-radius:50%;
  background:var(--chip-bg-light);border:1px solid var(--chip-line-light);
  cursor:pointer;flex-shrink:0;transition:background .2s ease,border-color .2s ease;
}
.theme-toggle:hover{background:var(--chip-bg);}
.theme-toggle:active .knob{transform:scale(.82);}
.theme-toggle .knob{
  display:flex;align-items:center;justify-content:center;font-size:14px;
  color:var(--ink);transition:transform .15s ease,color .2s ease;
}
html[data-theme="dark"] .theme-toggle .knob{color:var(--ember);}
@media (prefers-reduced-motion:reduce){
  .theme-toggle .knob{transition:none;}
}

/* ---------- hero ---------- */
.hero{
  position:relative;background:var(--night);color:#fff;overflow:hidden;
}
.hero .glow{
  position:absolute;top:-20%;right:-10%;width:60vw;height:60vw;max-width:820px;max-height:820px;
  background:radial-gradient(circle,rgba(255,90,31,.28) 0%,rgba(255,90,31,0) 70%);
  pointer-events:none;
}
.hero .frame{position:relative;z-index:2;padding-block:36px 56px;}
.hero-chips{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:36px;}
.hero h1{
  font-size:clamp(40px,7.4vw,92px);font-weight:800;letter-spacing:-.025em;
  line-height:1.04;margin:0 0 22px;max-width:16ch;
}
.hero h1 .h1-role{display:block;font-size:.5em;font-weight:700;color:var(--ember);letter-spacing:-.01em;margin-top:10px;}
.hero-sub{font-size:clamp(18px,2.1vw,24px);line-height:1.4;max-width:34ch;margin:0 0 12px;opacity:.92;}
.hero-proof{font-family:var(--mono, ui-monospace, monospace);font-size:13px;letter-spacing:.04em;text-transform:uppercase;opacity:.7;margin:0 0 4px;}
.hero-proof .sep{margin:0 8px;color:var(--ember);}
.hero-row{
  display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;
}
.hero-buttons{display:flex;gap:14px;flex-wrap:wrap;}
.hero-portrait{
  width:min(220px,32vw);aspect-ratio:3/4;flex-shrink:0;border-radius:20px;
  box-shadow:0 0 90px 14px rgba(255,90,31,.22);
  overflow:visible;
  -webkit-mask-image:radial-gradient(72% 82% at 50% 38%, #000 50%, transparent 100%);
  mask-image:radial-gradient(72% 82% at 50% 38%, #000 50%, transparent 100%);
}

/* ---------- placeholders ---------- */
.ph{
  position:relative;overflow:hidden;border-radius:20px;isolation:isolate;
  background-size:cover;
}
.ph img{width:100%;height:100%;object-fit:cover;display:block;}
.ph img.banner-fit{object-fit:contain;background:#eef1fb;}
.ph img.contain-fit{object-fit:contain;background:#fff;}
.ph::after{
  content:"";position:absolute;inset:0;opacity:.16;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:180px 180px;pointer-events:none;
}
.ph .tag{
  position:absolute;left:10px;bottom:10px;z-index:2;
  font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;color:#fff;
  background:rgba(10,10,10,.55);padding:5px 9px;border-radius:6px;
  backdrop-filter:blur(2px);
}
.art-ember{background:linear-gradient(135deg,#2b1206,#7a2e0d 45%,var(--ember) 110%);}
.art-steel{background:linear-gradient(135deg,#1c1f22,#3a4046 50%,#9aa4ae 120%);}
.art-sky{background:linear-gradient(135deg,#0d1b2a,#2f5f8f 55%,#a7c7e7 120%);}
.art-dusk{background:linear-gradient(135deg,#231627,#5c3a6b 55%,#c98bd6 120%);}
.art-moss{background:linear-gradient(135deg,#12200f,#3f5c2e 55%,#8fae5a 120%);}
.art-glow{background:linear-gradient(135deg,#0A0A0A,#3a1a08 55%,var(--ember) 130%);}
.art-paper{background:linear-gradient(135deg,#c9c8c1,#dedcd4 55%,#f7f6f2 120%);}

/* ---------- 01 introduction ---------- */
.intro-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:start;}
.lede{
  font-size:clamp(22px,2.6vw,34px);font-weight:600;
  letter-spacing:-.01em;line-height:1.3;margin:0 0 8px;max-width:20ch;color:var(--ink);
}
.lede em{color:var(--ember);font-style:normal;}
.intro-body p{max-width:52ch;margin:0 0 18px;color:var(--ink-2);}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--mute);margin:0 0 18px;display:block;
}
.meta-strip{
  margin-top:36px;padding-top:28px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
}
.meta-strip .item .k{
  font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--mute);display:block;margin-bottom:8px;
}
.meta-strip .item .v{font-size:14.5px;font-weight:600;color:var(--ink);}

/* ---------- 02 featured / case studies ---------- */
.featured-image{width:100%;aspect-ratio:16/8;margin-bottom:32px;}
.featured-body{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start;}
.featured-caption{
  font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.04em;
  text-transform:uppercase;color:var(--mute);margin:0 0 14px;
}
.featured-caption b{color:var(--ink);font-weight:700;}
.featured-copy p{max-width:56ch;color:var(--ink-2);margin:0;}
.stat-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px;}
.stat-row .stat{
  padding:14px 18px;border-radius:16px;background:var(--bg-soft);
}
.stat-row .stat b{
  display:block;font-size:22px;color:var(--ink);font-weight:800;
}
.stat-row .stat span{
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mute);
}

.kirro-lede{font-size:clamp(18px,2vw,22px);font-weight:500;color:var(--ink);max-width:70ch;margin:0 0 8px;}
.dash-image{width:100%;aspect-ratio:16/9;margin:40px 0 14px;}
.phone-shot{width:min(260px,60vw);aspect-ratio:600/1299;margin:40px auto 14px;}
.dash-caption{font-size:13.5px;color:var(--mute);margin:0;max-width:70ch;}

/* ---------- impact panel (dark highlight module within a case study) ---------- */
.impact-panel{
  background:var(--night);color:#fff;border-radius:24px;
  padding:clamp(28px,4vw,48px) clamp(22px,4vw,40px);margin:48px 0;
}
.impact-eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:rgba(255,255,255,.5);
}
.impact-headline{
  font-family:'Fraunces',serif;font-style:italic;font-weight:500;
  font-size:clamp(26px,3.4vw,40px);line-height:1.18;max-width:22ch;
  margin:16px 0 18px;color:#fff;
}
.impact-panel > p{max-width:68ch;color:rgba(255,255,255,.68);margin:0 0 32px;}
.impact-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.impact-stat{background:rgba(255,255,255,.06);border-radius:14px;padding:24px 22px;}
.impact-stat b{
  font-family:'Fraunces',serif;font-weight:500;font-size:clamp(28px,2.8vw,38px);
  display:block;margin-bottom:12px;color:#fff;
}
.impact-stat span{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.03em;
  color:rgba(255,255,255,.55);line-height:1.5;
}
@media (max-width:640px){
  .impact-stats{grid-template-columns:1fr;}
}

.before-after{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:40px;}
.before-after .col{padding:24px;border-radius:16px;background:var(--bg-soft);}
.before-after .col.after{background:var(--night);color:#fff;}
.before-after .col h4{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--mute);margin:0 0 16px;
}
.before-after .col.after h4{color:rgba(255,255,255,.55);}
.before-after ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:14.5px;}
.before-after .col.after ul{color:rgba(255,255,255,.85);}

.evolution-track{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:48px;}
.evolution-phase{flex:1 1 220px;padding:24px;border-radius:16px;background:var(--bg-soft);}
.evolution-phase.now{background:var(--night);color:#fff;}
.evolution-phase .step{color:var(--ember);display:block;margin-bottom:10px;}
.evolution-phase h4{font-weight:800;font-size:16px;margin:0 0 8px;letter-spacing:-.01em;color:var(--ink);}
.evolution-phase.now h4{color:#fff;}
.evolution-phase p{margin:0;font-size:14px;color:var(--ink-2);}
.evolution-phase.now p{color:rgba(255,255,255,.8);}
.evolution-arrow{font-size:11px;color:var(--mute);white-space:nowrap;flex:0 0 auto;}

.pull-quote{
  font-family:'IBM Plex Mono',monospace;font-size:15px;line-height:1.8;
  padding:32px 32px 32px 56px;border-radius:16px;background:var(--bg-soft);
  position:relative;margin:48px 0;color:var(--ink);
}
.pull-quote::before{content:"○";position:absolute;left:24px;top:32px;color:var(--ember);font-size:18px;}
.pull-quote cite{
  display:block;margin-top:14px;font-style:normal;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--mute);
}

.role-note{margin-top:48px;padding-top:28px;border-top:1px solid var(--line);}
.role-note p{max-width:70ch;color:var(--ink-2);margin:0;}

.case-block{padding-block:72px;}
.case-block + .case-block{border-top:1px solid var(--line);}

/* ---------- testimonials ---------- */
.testimonial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.testimonial-grid[hidden]{display:none;}
.testimonial-card{
  border:1px solid var(--line);border-radius:20px;padding:28px;
  display:flex;flex-direction:column;gap:20px;background:var(--bg-soft);
}
.testimonial-card .quote-mark{
  font-size:17px;color:var(--ember);font-family:Georgia,serif;line-height:1;
  letter-spacing:.08em;
}
.testimonial-card .quote-text{
  font-size:15px;color:var(--ink-2);font-style:italic;flex:1;margin:0;
}
.testimonial-card .person{display:flex;align-items:center;gap:12px;}
.testimonial-avatar{width:44px;height:44px;border-radius:50%;flex-shrink:0;object-fit:cover;}
.testimonial-card .person .who{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.04em;
  color:var(--mute);line-height:1.5;
}
.testimonial-card .person .who a{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.testimonial-card .person .who a:hover{color:var(--ember);}

.pager-controls{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:24px;}
.pager-dots{display:flex;gap:8px;margin-right:4px;}
.pager-dot{
  width:7px;height:7px;border-radius:50%;background:var(--line);
  border:none;padding:0;cursor:pointer;transition:background .2s ease,transform .2s ease;
}
.pager-dot.is-active{background:var(--ember);transform:scale(1.4);}
.pager-arrow{
  width:40px;height:40px;border-radius:50%;padding:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg-soft);border:1px solid var(--line);color:var(--ink);
  cursor:pointer;transition:background .2s ease,border-color .2s ease,opacity .2s ease;
}
.pager-arrow svg{width:18px;height:18px;}
.pager-arrow:hover{background:var(--chip-bg-light);border-color:var(--ink);}
.pager-arrow:disabled{opacity:.35;cursor:default;}
.pager-arrow:disabled:hover{background:var(--bg-soft);border-color:var(--line);}

@media (max-width:640px){
  .evolution-track{flex-direction:column;align-items:stretch;}
  .evolution-arrow{text-align:left;padding-left:4px;}
}

/* ---------- 03 portfolio ---------- */
.portfolio-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:28px;align-items:start;perspective:1200px;
}
.portfolio-grid.personal-grid{grid-template-columns:repeat(auto-fill,minmax(280px,340px));}
.card{display:block;transition:transform .25s ease;transform-style:preserve-3d;will-change:transform;}
.card .ph{aspect-ratio:4/5;margin-bottom:16px;}
.card:hover .ph{transform:scale(1.02);transition:transform .5s ease;}
.card-cap{font-weight:700;font-size:16px;margin:0 0 2px;color:var(--ink);}
.card-cap .role{font-weight:400;color:var(--mute);}
.see-all{margin-top:56px;}

/* ---------- about / facts (dark stat panel, inset within the light About section) ---------- */
.facts-grid{
  display:grid;grid-template-columns:1fr 1fr;
  background:var(--night);margin-top:48px;
  border-top:1px solid var(--line-dark);border-left:1px solid var(--line-dark);
  border-radius:24px;overflow:hidden;
}
.fact-cell{
  padding:48px 24px;text-align:center;
  border-right:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);
}
.fact-cell .numeral{
  font-size:clamp(48px,6.4vw,84px);font-weight:800;
  letter-spacing:-.02em;line-height:1;color:#fff;
}
.fact-cell .label{
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:rgba(255,255,255,.5);margin-top:14px;
}
/* ---------- info rows (principles & services) ---------- */
.list-nav{display:flex;gap:10px;margin-bottom:20px;}
.list-nav-btn{
  font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.06em;
  color:var(--ink-2);background:var(--chip-bg-light);border:1px solid var(--line);
  padding:9px 16px;border-radius:999px;cursor:pointer;transition:background .2s ease,color .2s ease;
}
.list-nav-btn:hover{background:var(--ink);color:#fff;border-color:var(--ink);}
.list-nav-btn:active{transform:scale(.97);}
.info-list{border-top:1px solid var(--line);}
.info-row{
  display:grid;grid-template-columns:64px minmax(200px,260px) 1fr;gap:24px;
  padding:36px 0;border-bottom:1px solid var(--line);align-items:start;
  cursor:pointer;
}
.info-row:hover .idx{color:var(--ink);}
.info-row.is-dark:hover .idx{color:var(--ember-2);}
.info-row .idx{
  font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ember);letter-spacing:.06em;
  padding-top:4px;user-select:none;transition:color .2s ease;
}
.info-row .idx:focus-visible{outline:2px solid var(--ember);outline-offset:4px;border-radius:3px;}
.info-row .title-col{display:flex;align-items:baseline;gap:10px;}
.info-row .title-col h3{font-size:20px;font-weight:800;margin:0;letter-spacing:-.01em;color:var(--ink);}
/* glyphs: decorative accent for a single principle — kept small and inline so it
   never adds height to the title row (every row's title must sit on the same line). */
.info-row .glyphs{font-size:13px;letter-spacing:.16em;color:var(--ember);flex-shrink:0;}
.info-row p{margin:0;max-width:56ch;color:var(--ink-2);}
.info-row.has-image{grid-template-columns:64px minmax(200px,260px) 1fr 140px;}
.info-row .row-thumb{aspect-ratio:3/4;align-self:start;}
.info-row.is-dark{background:var(--night);border-radius:20px;border-bottom:none;padding:32px 28px;color:#fff;}
.info-row.is-dark{grid-template-columns:64px minmax(200px,260px) 1fr;}
.info-row.has-image.is-dark{grid-template-columns:64px minmax(200px,260px) 1fr 140px;}
.info-row.is-dark .title-col h3{color:#fff;}
.info-row.is-dark p{color:rgba(255,255,255,.78);}
.info-row.is-dark .idx{color:var(--ember-2);}
/* is-quote (04 — two related points instead of one): same body type as every
   other row, just split into two lines with a small marker for scannability. */
.info-row.is-quote p{
  grid-column:3;position:relative;padding-left:16px;margin-bottom:10px;
}
.info-row.is-quote p:last-child{margin-bottom:0;}
.info-row.is-quote p::before{
  content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;
  border-radius:50%;background:var(--ember);
}
.info-row.is-dark.is-quote p::before{background:var(--ember-2);}

/* in dark mode the page background is already var(--night), so a black
   highlight disappears — use ember orange instead so it still reads as active */
html[data-theme="dark"] .info-row.is-dark{background:var(--ember);color:var(--night);}
html[data-theme="dark"] .info-row.is-dark .title-col h3{color:var(--night);}
html[data-theme="dark"] .info-row.is-dark p{color:rgba(10,10,12,.72);}
html[data-theme="dark"] .info-row.is-dark .idx{color:var(--night);}
html[data-theme="dark"] .info-row.is-dark:hover .idx{color:var(--night-2);}
html[data-theme="dark"] .info-row.is-dark .idx:focus-visible{outline-color:var(--night);}
html[data-theme="dark"] .info-row.is-dark.is-quote p::before{background:var(--night);}

/* ---------- 07 contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:start;}
.contact .eyebrow{color:rgba(255,255,255,.5);}
.contact-email{
  font-size:clamp(19px,2.4vw,30px);font-weight:700;
  color:var(--ember);text-decoration:underline;text-underline-offset:8px;
  display:inline-block;word-break:break-word;
}
.contact-buttons{display:flex;flex-direction:column;gap:14px;align-items:flex-start;}
.social-row{display:flex;gap:12px;margin-top:28px;}
.social-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;
  background:var(--chip-bg);border:1px solid var(--chip-line);
  color:rgba(255,255,255,.75);transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.social-btn svg{width:18px;height:18px;}
.social-btn:hover{background:var(--ember);border-color:var(--ember);color:var(--night);}
footer.site{
  margin-top:80px;padding-top:24px;border-top:1px solid var(--line-dark);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.05em;
  color:rgba(255,255,255,.5);
}
footer.site.on-light{
  border-top:1px solid var(--line);color:var(--mute);
}

/* ---------- scroll reveal (progressive enhancement) ---------- */
.rv{opacity:1;transform:none;}
body.rv-armed .rv{
  opacity:0;transform:translateY(18px);
  transition:opacity .7s ease, transform .7s ease;
}
body.rv-armed .rv.rv-in{opacity:1;transform:none;}

/* ---------- responsive ---------- */
@media (max-width:980px){
  nav.primary{display:none;}
  .intro-grid,.featured-body,.contact-grid,.before-after{grid-template-columns:1fr;gap:32px;}
  .testimonial-grid{grid-template-columns:1fr;}
  .meta-strip{grid-template-columns:1fr 1fr;}
  .facts-grid{grid-template-columns:1fr;}
  .info-row{grid-template-columns:44px 1fr;row-gap:12px;}
  .info-row.has-image{grid-template-columns:44px 1fr;}
  .info-row .title-col{grid-column:2/3;}
  .info-row p{grid-column:1/3;max-width:none;}
  .info-row.is-quote p{grid-column:1/3;}
  .info-row .row-thumb{display:none;}
}
@media (max-width:640px){
  body{font-size:15.5px;}
  .brand .role{display:none;}
  .chapter{padding-block:64px;}
  .hero-row{flex-direction:column;align-items:flex-start;}
  .hero-portrait{width:56vw;}
  .meta-strip{grid-template-columns:1fr;}
  footer.site{flex-direction:column;}
  header .frame > div:last-child{gap:8px;}
  .theme-toggle{width:32px;height:32px;}
  .theme-toggle .knob{font-size:12px;}
  header .btn-dark{padding:10px 14px;font-size:12.5px;gap:6px;}
}
@media (max-width:420px){
  .hero-portrait{width:50vw;}
}
@media (max-width:380px){
  header .btn-dark .arrow{display:none;}
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
}

/* ---------- image lightbox ---------- */
img.is-viewable{cursor:zoom-in;}
.lightbox-overlay{
  position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;
  background:rgba(6,6,7,.92);padding:min(48px,6vw);
  opacity:0;visibility:hidden;transition:opacity .2s ease;
}
.lightbox-overlay.is-open{opacity:1;visibility:visible;}
.lightbox-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;display:block;}
.lightbox-close{
  position:absolute;top:20px;right:20px;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff;
  font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .2s ease;
}
.lightbox-close:hover{background:rgba(255,255,255,.2);}
@media (prefers-reduced-motion:reduce){
  .lightbox-overlay{transition:none;}
}
