/* Spot On Excavations: site styles. Evolved from the v2 system; no build step. */
/* Self-hosted fonts (latin subset), WOFF2 */
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 400; font-display: swap; src: url("/assets/fonts/Barlow-400.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 500; font-display: swap; src: url("/assets/fonts/Barlow-500.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/Barlow-600.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow"; font-style: normal; font-weight: 700; font-display: swap; src: url("/assets/fonts/Barlow-700.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap; src: url("/assets/fonts/BarlowCondensed-600.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap; src: url("/assets/fonts/BarlowCondensed-700.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 800; font-display: swap; src: url("/assets/fonts/BarlowCondensed-800.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
:root {
  --orange: #f15a28;
  --orange-hi: #ff7a4a;
  --orange-ink: #b3401a; /* orange for text on warm white, 4.9:1 */
  --black: #050708;
  --black-2: #0d1113;
  --black-3: #161b1e;
  --warm: #f3f1e7;
  --warm-2: #e7e4d6;
  --white: #fff;
  --muted-d: #a9a89f; /* on black */
  --muted-l: #54564f; /* on warm */
  --line-d: rgba(243, 241, 231, 0.14);
  --line-l: rgba(5, 7, 8, 0.16);
  --f-display: "Barlow Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;
  --f-body: "Barlow", "Helvetica Neue", Arial, sans-serif;
  --t-hero: clamp(2.9rem, 1.2rem + 7.4vw, 8rem);
  --t-h1: clamp(2.6rem, 1.4rem + 5vw, 6rem);
  --t-h2: clamp(2.2rem, 1.3rem + 3.6vw, 4.6rem);
  --t-h3: clamp(1.5rem, 1.2rem + 1vw, 2.1rem);
  --t-lead: clamp(1.08rem, 1rem + 0.35vw, 1.3rem);
  --gutter: clamp(16px, 4vw, 64px);
  --max: 1360px;
  --sp-section: clamp(4rem, 3rem + 5vw, 9rem);
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --fast: 160ms;
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 88px; }
body {
  margin: 0; background: var(--warm); color: var(--black);
  font: 400 1rem/1.62 var(--f-body); -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3, h4 { font-family: var(--f-display); font-weight: 700; line-height: 0.95; letter-spacing: -0.01em; text-transform: uppercase; }
h2 { font-size: var(--t-h2); }
h3 { font-size: var(--t-h3); line-height: 1; }
p { max-width: 64ch; }
p + p { margin-top: 1em; }
:focus-visible { outline: 3px solid var(--orange); outline-offset: 4px; }
.on-warm :focus-visible { outline-color: var(--orange-ink); }
::selection { background: var(--orange); color: var(--black); }
.icon { width: 1.1em; height: 1.1em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
[hidden] { display: none !important; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: 16px; top: -80px; z-index: 50; background: var(--orange); color: var(--black); padding: 12px 16px; font-weight: 700; }
.skip-link:focus { top: 12px; }
.shell { width: min(100% - var(--gutter) * 2, var(--max)); margin-inline: auto; }

/* Surfaces */
.on-black { background: var(--black) var(--grain); color: var(--warm); }
.on-black-2 { background: var(--black-2) var(--grain); color: var(--warm); }
.on-warm { background: var(--warm); color: var(--black); }
.on-orange { background: var(--orange); color: var(--black); }
.section { padding-block: var(--sp-section); }
.section--tight { padding-block: clamp(3rem, 2rem + 3vw, 5rem); }

/* Type helpers */
.eyebrow { display: flex; align-items: center; gap: 12px; font: 600 0.8rem/1.3 var(--f-body); letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 1.25rem; }
.eyebrow::before { content: ""; width: 28px; height: 3px; background: var(--orange); flex: none; }
.on-warm .eyebrow { color: var(--orange-ink); }
.on-warm .eyebrow::before { background: var(--orange-ink); }
.on-orange .eyebrow::before { background: var(--black); }
.lead { font-size: var(--t-lead); line-height: 1.5; }
.on-black .lead, .on-black-2 .lead { color: #d9d7cc; }
.muted { color: var(--muted-l); }
.on-black .muted, .on-black-2 .muted { color: var(--muted-d); }
.accent { color: var(--orange); }
.on-warm .accent { color: var(--orange-ink); }
.kicker-num { font: 700 0.95rem/1 var(--f-display); letter-spacing: 0.08em; color: var(--orange); }
.on-warm .kicker-num { color: var(--orange-ink); }

/* Buttons and links */
.btn {
  --bg: var(--orange); --fg: var(--black);
  display: inline-flex; align-items: center; gap: 14px; min-height: 52px; padding: 14px 22px;
  background: var(--bg); color: var(--fg); border: 2px solid var(--bg);
  font: 700 1.05rem/1 var(--f-display); letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none;
  transition: background var(--fast), color var(--fast), transform var(--fast) var(--ease), box-shadow var(--fast);
}
.btn .icon { transition: transform var(--fast) var(--ease); }
.btn:hover { --bg: var(--orange-hi); box-shadow: 6px 6px 0 var(--black); transform: translate(-3px, -3px); }
.on-black .btn:hover, .on-black-2 .btn:hover { box-shadow: 6px 6px 0 var(--warm); }
.btn:hover .icon { transform: translateX(4px); }
.btn:active { transform: translate(0, 0); box-shadow: none; }
.btn--ghost { --bg: transparent; --fg: currentColor; border-color: currentColor; }
.btn--ghost:hover { --bg: transparent; color: var(--orange); border-color: var(--orange); }
.on-warm .btn--ghost:hover { color: var(--orange-ink); border-color: var(--orange-ink); }
.btn--dark { --bg: var(--black); --fg: var(--warm); }
.btn--dark:hover { --bg: var(--black-3); box-shadow: 6px 6px 0 var(--warm); }
.btn[aria-disabled="true"] { cursor: not-allowed; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 2rem; }
.tag { justify-self: start; display: inline-block; font: 600 0.72rem/1 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; padding: 6px 8px; border: 1px solid currentColor; vertical-align: middle; }
.link-arrow { display: inline-flex; align-items: center; gap: 10px; font: 700 1.05rem/1 var(--f-display); letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none; padding-block: 12px; border-bottom: 2px solid var(--orange); }
.on-warm .link-arrow { border-color: var(--orange-ink); }
.link-arrow .icon { transition: transform var(--fast) var(--ease); }
.link-arrow:hover .icon { transform: translateX(5px); }
.link-arrow:hover { color: var(--orange); }
.on-warm .link-arrow:hover { color: var(--orange-ink); }

/* Header */
.site-header { position: sticky; top: 0; z-index: 30; background: var(--black); color: var(--warm); border-bottom: 1px solid var(--line-d); }
.site-header .shell { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 68px; }
.brand { display: block; flex: none; }
.brand img { width: 150px; height: auto; }
.home-tag { font: 600 0.78rem/1.2 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted-d); }
.nav-toggle { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 12px; background: none; color: inherit; border: 1px solid var(--line-d); font: 700 1rem/1 var(--f-display); letter-spacing: 0.1em; text-transform: uppercase; cursor: pointer; }
.nav-toggle .i-close { display: none; }
.nav-toggle[aria-expanded="true"] .i-close { display: block; }
.nav-toggle[aria-expanded="true"] .i-menu { display: none; }
.site-nav { display: none; position: absolute; inset: 100% 0 auto; background: var(--black); border-bottom: 3px solid var(--orange); padding: 8px var(--gutter) 24px; }
.site-nav.is-open { display: block; }
.site-nav ul { display: grid; }
.site-nav a { display: flex; align-items: center; min-height: 52px; font: 700 1.6rem/1 var(--f-display); letter-spacing: 0.04em; text-transform: uppercase; text-decoration: none; border-bottom: 1px solid var(--line-d); }
.site-nav a:hover, .site-nav a[aria-current="page"] { color: var(--orange); }
.nav-call { margin-top: 20px; }
.no-js .site-nav { display: block; position: static; padding: 0 0 12px; }
@media (min-width: 1080px) {
  .nav-toggle { display: none; }
  .site-nav, .no-js .site-nav { display: flex; align-items: center; gap: 28px; position: static; padding: 0; background: none; border: 0; }
  .site-nav ul { display: flex; gap: 22px; }
  .site-nav a { min-height: 68px; font-size: 1.12rem; letter-spacing: 0.08em; border: 0; position: relative; }
  .site-nav ul a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: left; transition: transform var(--fast) var(--ease); }
  .site-nav ul a:hover::after, .site-nav a[aria-current="page"]::after { transform: scaleX(1); }
  .nav-call { margin: 0; }
  .nav-call .btn { min-height: 44px; padding: 10px 16px; }
  .brand img { width: 176px; }
}
.is-home .site-header { position: relative; }

/* Home hero */
.hero { position: relative; overflow: hidden; }
.hero-grid { display: grid; }
.hero-copy { padding: 36px var(--gutter) 40px; position: relative; z-index: 2; }
.hero-logo { width: min(100%, 440px); margin-bottom: 28px; }
.hero h1 { font-size: var(--t-hero); line-height: 0.86; font-weight: 800; }
.hero h1 .accent { display: block; }
.hero .lead { margin-top: 1.4rem; max-width: 38ch; }
.hero-media { position: relative; margin: 0; aspect-ratio: 4 / 3; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: 30% 60%; }
.hero-media video { width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; display: block; background: var(--black); }
.hero-media figcaption, .credit { position: absolute; right: 12px; bottom: 12px; background: rgba(5, 7, 8, 0.82); color: var(--warm); font-size: 0.75rem; letter-spacing: 0.04em; padding: 5px 9px; max-width: calc(100% - 24px); }
@media (min-width: 1024px) {
  .hero-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); min-height: min(86vh, 860px); }
  .hero-copy { padding: clamp(40px, 5vw, 72px) clamp(28px, 3.4vw, 56px) 80px var(--gutter); display: flex; flex-direction: column; justify-content: center; }
  .hero-media { aspect-ratio: auto; clip-path: polygon(9% 0, 100% 0, 100% 100%, 0 100%); margin-left: -9%; }
  .hero-logo { margin-bottom: 40px; }
}
@media (prefers-reduced-motion: no-preference) {
  .hero-copy > * { animation: rise 900ms var(--ease) both; }
  .hero-copy > :nth-child(2) { animation-delay: 90ms; }
  .hero-copy > :nth-child(3) { animation-delay: 180ms; }
  .hero-copy > :nth-child(4) { animation-delay: 270ms; }
  .hero-media img, .hero-media video { animation: settle 1600ms var(--ease) both; }
  .bore-path { stroke-dasharray: 2000; stroke-dashoffset: 2000; animation: draw 2.4s 400ms var(--ease) forwards; }
}
@keyframes rise { from { opacity: 0; transform: translateY(18px); } }
@keyframes settle { from { transform: scale(1.06); opacity: 0.4; } }
@keyframes draw { to { stroke-dashoffset: 0; } }

/* Bore profile strip (signature motif) */
.bore { display: block; width: 100%; height: auto; color: var(--warm); }
.bore-strip { position: relative; border-top: 1px solid var(--line-d); }
.bore-labels { max-width: none; display: flex; justify-content: space-between; gap: 12px; font: 600 0.72rem/1.2 var(--f-body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted-d); padding: 12px var(--gutter) 0; }

/* Fact ribbon */
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--line-d); }
.fact { padding: 24px 16px 26px; border-bottom: 1px solid var(--line-d); }
.fact:nth-child(odd) { border-right: 1px solid var(--line-d); }
.fact b { display: block; font: 800 clamp(3rem, 2rem + 4vw, 5.6rem)/0.85 var(--f-display); color: var(--orange); }
.fact span { display: block; margin-top: 10px; font-size: 0.92rem; line-height: 1.35; color: #d9d7cc; max-width: 22ch; }
@media (min-width: 900px) {
  .facts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .fact { padding: 36px 28px; border-bottom: 0; border-right: 1px solid var(--line-d); }
  .fact:last-child { border-right: 0; }
}

/* Section heading block */
.head { display: grid; gap: 20px; margin-bottom: clamp(2.5rem, 2rem + 2vw, 4.5rem); }
.head .lead { max-width: 52ch; }
@media (min-width: 900px) { .head--split { grid-template-columns: 1.1fr 1fr; align-items: end; gap: 48px; } }

/* Numbered service index */
.svc-layout { display: grid; gap: 40px; }
.svc-list { border-top: 2px solid var(--black); counter-reset: svc; }
.svc-item { display: grid; grid-template-columns: auto 1fr; gap: 6px 20px; padding: 26px 0; border-bottom: 1px solid var(--line-l); }
.svc-item .kicker-num { grid-row: span 3; padding-top: 6px; }
.svc-item h3 a { text-decoration: none; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 4px no-repeat; transition: background-size 260ms var(--ease); }
.svc-item h3 a:hover { background-size: 100% 4px; }
.svc-item p { color: var(--muted-l); }
.svc-media { position: relative; margin: 0; }
.svc-media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
@media (min-width: 1000px) {
  .svc-layout { grid-template-columns: 1.35fr 1fr; gap: 72px; align-items: start; }
  .svc-media { position: sticky; top: 100px; }
  .svc-item { grid-template-columns: 90px 1fr; }
}

/* Pull quote band */
.quote-band { display: grid; position: relative; }
.quote-band figure { margin: 0; }
.quote-band img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 16 / 10; }
.quote-card { padding: 40px var(--gutter); }
.quote-card blockquote p { font: 800 clamp(2.6rem, 1.6rem + 4.4vw, 6rem)/0.9 var(--f-display); text-transform: uppercase; max-width: 12ch; }
.quote-card blockquote p::before { content: "\201C"; color: var(--orange); }
.quote-card blockquote p::after { content: "\201D"; color: var(--orange); }
.quote-card figcaption, .quote-card .cite { margin-top: 1.2rem; color: var(--muted-d); font-size: 0.95rem; }
@media (min-width: 1000px) {
  .quote-band { grid-template-columns: 7fr 5fr; }
  .quote-band img { aspect-ratio: auto; min-height: 560px; }
  .quote-card { display: flex; flex-direction: column; justify-content: center; margin: 72px 0 72px -120px; background: var(--black) var(--grain); position: relative; z-index: 2; padding: 56px; box-shadow: -14px 14px 0 var(--orange); }
}

/* Rig rows (spec sheet) */
.rig-table { border-top: 2px solid var(--orange); }
.rig-row { display: grid; grid-template-columns: 1fr; gap: 6px 24px; padding: 22px 0; border-bottom: 1px solid var(--line-d); transition: background var(--fast); }
.rig-row:hover { background: rgba(241, 90, 40, 0.06); }
.rig-model { font: 800 clamp(2rem, 1.4rem + 2.4vw, 3.4rem)/0.9 var(--f-display); }
.rig-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--muted-d); font-size: 0.95rem; }
.rig-meta b { color: var(--warm); font-weight: 600; }
@media (min-width: 860px) { .rig-row { grid-template-columns: 64px minmax(0, 1.3fr) minmax(0, 2fr); align-items: baseline; padding: 28px 12px; } }

/* Fleet split */
.split { display: grid; gap: 40px; }
@media (min-width: 1000px) {
  .split { grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; }
  .split--wide-left { grid-template-columns: 1.3fr 1fr; }
  .split--wide-right { grid-template-columns: 1fr 1.3fr; }
}
.frame { position: relative; margin: 0; }
.frame img { width: 100%; object-fit: cover; }
.frame--offset { box-shadow: 14px 14px 0 var(--orange); }
.on-warm .frame--offset { box-shadow: 14px 14px 0 var(--black); }
.frame-pair { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr); gap: 12px; align-items: end; }
.frame-pair .frame:first-child img { aspect-ratio: 4 / 3; }
.frame-pair .frame:last-child img { aspect-ratio: 3 / 4; }
.frame-pair .frame:last-child { margin-bottom: 10%; }

/* On-site video reel */
.reel-grid { display: grid; gap: 20px; }
@media (min-width: 640px) { .reel-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .reel-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.reel-card { display: grid; gap: 12px; }
.reel-media { position: relative; margin: 0; aspect-ratio: 16 / 9; overflow: hidden; background: var(--black); }
.reel-media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.reel-toggle {
  position: absolute; left: 12px; bottom: 12px; z-index: 2;
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; padding: 0;
  background: rgba(5, 7, 8, 0.72); color: var(--warm); border: 2px solid var(--warm);
  cursor: pointer; transition: border-color var(--fast), color var(--fast);
}
.reel-toggle:hover { border-color: var(--orange); color: var(--orange); }
.reel-toggle .icon { width: 1.15em; height: 1.15em; fill: currentColor; stroke: none; }
.reel-toggle .i-pause { display: none; }
.reel-toggle[aria-pressed="true"] .i-play { display: none; }
.reel-toggle[aria-pressed="true"] .i-pause { display: block; }

/* Project cards (bento) */
.proj-grid { display: grid; gap: 20px; }
.proj { display: grid; background: var(--white); border: 1px solid var(--line-l); position: relative; transition: transform var(--fast) var(--ease), box-shadow var(--fast); }
.proj:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -24px rgba(5, 7, 8, 0.5); }
.proj figure { margin: 0; overflow: hidden; background: var(--black); }
.proj img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 700ms var(--ease); }
.proj:hover img { transform: scale(1.04); }
.proj-body { padding: 22px 22px 26px; display: grid; gap: 12px; align-content: start; }
.proj-body h3 { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.3rem); }
.spec { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; font-size: 0.92rem; border-top: 1px solid var(--line-l); padding-top: 12px; }
.spec dt { font: 700 0.74rem/1.6 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--orange-ink); }
.spec dd { color: var(--black); }
.on-black .spec, .on-black-2 .spec { border-color: var(--line-d); }
.on-black .spec dt, .on-black-2 .spec dt { color: var(--orange); }
.on-black .spec dd, .on-black-2 .spec dd { color: var(--warm); }
@media (min-width: 760px) { .proj-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) {
  .proj-grid--bento { grid-template-columns: 1.25fr 1fr; }
  .proj-grid--bento .proj:not(:first-child) { grid-template-columns: 1fr 1fr; }
  .proj-grid--bento .proj:not(:first-child) img { height: 100%; aspect-ratio: auto; min-height: 260px; }
  .proj-grid--bento .proj:first-child { grid-row: span 2; }
  .proj-grid--bento .proj:first-child img { aspect-ratio: 4 / 4.4; }
  .proj-grid--bento .proj:first-child h3 { font-size: 3rem; }
}

/* Project case studies (full) */
.case { display: grid; gap: 28px; padding-block: clamp(3rem, 2rem + 3vw, 5.5rem); border-bottom: 1px solid var(--line-l); }
.case:first-child { padding-top: 0; }
.case:last-child { border-bottom: 0; }
.case figure { margin: 0; }
.case img { width: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.case h2 { font-size: clamp(2rem, 1.3rem + 2.6vw, 3.6rem); margin: 10px 0 18px; }
.case .spec { margin-top: 22px; max-width: 560px; }
.source-note { margin-top: 18px; font-size: 0.88rem; color: var(--muted-l); display: flex; gap: 8px; align-items: flex-start; }
@media (min-width: 960px) {
  .case { grid-template-columns: 5fr 6fr; gap: 64px; align-items: center; }
  .case:nth-child(even) figure { order: 2; }
  .case--tall img { aspect-ratio: 3 / 4; max-height: 640px; }
}

/* Page hero (inner pages) */
.page-hero { position: relative; overflow: hidden; }
.page-hero .shell { display: grid; gap: 32px; padding-block: clamp(3rem, 2rem + 4vw, 6.5rem) clamp(2.5rem, 2rem + 3vw, 5rem); }
.page-hero h1 { font-size: var(--t-h1); font-weight: 800; line-height: 0.88; max-width: 14ch; }
.page-hero .lead { max-width: 46ch; margin-top: 1.25rem; }
.page-hero-media { margin: 0; position: relative; }
.page-hero-media img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
@media (min-width: 1000px) {
  .page-hero .shell { grid-template-columns: 1.15fr 1fr; align-items: end; gap: 64px; }
  .page-hero-media img { aspect-ratio: 5 / 4; }
  .page-hero-media { box-shadow: -14px 14px 0 var(--orange); }
}
.crumbs { font-size: 0.8rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted-d); margin-bottom: 1.4rem; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { color: var(--orange); }

/* In-page jump nav */
.jump { display: flex; gap: 8px; overflow-x: auto; padding-block: 14px; scrollbar-width: thin; }
.jump a { flex: none; display: inline-flex; align-items: center; min-height: 44px; padding: 8px 14px; border: 1px solid var(--line-l); text-decoration: none; font: 700 0.98rem/1 var(--f-display); letter-spacing: 0.08em; text-transform: uppercase; background: var(--warm); transition: border-color var(--fast), color var(--fast); }
.jump a:hover { border-color: var(--orange-ink); color: var(--orange-ink); }
.jump-bar { position: sticky; top: 68px; z-index: 20; background: var(--warm); border-bottom: 1px solid var(--line-l); }

/* Service detail */
.svc-detail { display: grid; gap: 32px; }
.svc-detail + .svc-detail { margin-top: clamp(4rem, 3rem + 4vw, 7rem); padding-top: clamp(4rem, 3rem + 4vw, 7rem); border-top: 2px solid var(--black); }
.svc-detail h2 { margin: 8px 0 20px; }
.check { display: grid; gap: 10px; margin-top: 22px; }
.check li { display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start; }
.check .icon { color: var(--orange-ink); margin-top: 4px; }
.on-black .check .icon, .on-black-2 .check .icon { color: var(--orange); }
@media (min-width: 1000px) {
  .svc-detail { grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; }
  .svc-detail:nth-of-type(even) .frame { order: -1; }
}
.svc-detail .frame img { aspect-ratio: 4 / 3.2; }
.frame--portrait img { aspect-ratio: 3 / 4 !important; max-height: 680px; }

/* Class blocks (support fleet) */
.class-grid { display: grid; gap: 1px; background: var(--line-d); border: 1px solid var(--line-d); }
.class-cell { background: var(--black-2); padding: 26px 22px; }
.class-cell b { display: block; font: 800 3rem/0.9 var(--f-display); color: var(--orange); }
.class-cell h3 { margin: 10px 0 8px; font-size: 1.5rem; }
.class-cell p { color: var(--muted-d); font-size: 0.95rem; }
@media (min-width: 640px) { .class-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .class-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Capability statement */
.cap-toc { display: grid; gap: 0; counter-reset: toc; border-top: 2px solid var(--black); }
.cap-toc a { display: flex; gap: 14px; align-items: baseline; padding: 12px 0; border-bottom: 1px solid var(--line-l); text-decoration: none; font: 700 1.25rem/1.1 var(--f-display); text-transform: uppercase; letter-spacing: 0.03em; }
.cap-toc a::before { counter-increment: toc; content: counter(toc, decimal-leading-zero); color: var(--orange-ink); font-size: 0.95rem; min-width: 2ch; }
.cap-toc a:hover { color: var(--orange-ink); }
.cap-layout { display: grid; gap: 48px; }
@media (min-width: 1080px) { .cap-layout { grid-template-columns: 300px 1fr; gap: 80px; } .cap-aside { position: sticky; top: 96px; align-self: start; } }
.cap-sec { padding-bottom: clamp(3rem, 2rem + 2vw, 4.5rem); margin-bottom: clamp(3rem, 2rem + 2vw, 4.5rem); border-bottom: 1px solid var(--line-l); }
.cap-sec:last-child { border-bottom: 0; margin-bottom: 0; }
.cap-sec h2 { font-size: clamp(2rem, 1.4rem + 2.2vw, 3.4rem); margin-bottom: 1.2rem; }
.datablock { display: grid; grid-template-columns: minmax(0, 1fr); border: 2px solid var(--black); margin-top: 24px; }
.datablock div { padding: 14px 18px; border-bottom: 1px solid var(--line-l); display: grid; gap: 2px; }
.datablock div:last-child { border-bottom: 0; }
.datablock dt { font: 700 0.74rem/1.5 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--orange-ink); }
.datablock dd { font-weight: 600; }
@media (min-width: 700px) { .datablock { grid-template-columns: repeat(2, minmax(0, 1fr)); } .datablock div:nth-child(odd) { border-right: 1px solid var(--line-l); } .datablock div:nth-last-child(-n+2) { border-bottom: 0; } }
.pdf-card { display: grid; gap: 14px; padding: 24px; background: var(--black) var(--grain); color: var(--warm); margin-top: 28px; }
.pdf-card p { color: var(--muted-d); font-size: 0.92rem; }
.notice { display: flex; gap: 12px; padding: 16px 18px; border-left: 4px solid var(--orange-ink); background: var(--warm-2); font-size: 0.95rem; margin-top: 20px; }
.notice .icon { color: var(--orange-ink); margin-top: 3px; }

/* Regions */
.regions { display: grid; border-top: 1px solid var(--line-d); }
.regions li { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--line-d); font: 700 clamp(1.6rem, 1.2rem + 1.8vw, 2.8rem)/1 var(--f-display); text-transform: uppercase; }
.regions li span { font: 500 0.9rem/1.3 var(--f-body); letter-spacing: 0; text-transform: none; color: var(--muted-d); text-align: right; }

/* Sister businesses */
.sisters { display: grid; gap: 16px; }
@media (min-width: 800px) { .sisters { grid-template-columns: 1fr 1fr; } }
.sister { display: grid; gap: 10px; padding: 26px; border: 1px solid var(--line-d); text-decoration: none; transition: border-color var(--fast), transform var(--fast) var(--ease); }
a.sister:hover { border-color: var(--orange); transform: translateY(-3px); }
.sister h3 { display: flex; justify-content: space-between; gap: 12px; }
.sister p { color: var(--muted-d); }

/* CTA band */
.cta-band .shell { display: grid; gap: 24px; }
.cta-band h2 { font-size: clamp(2.4rem, 1.4rem + 4vw, 5.2rem); max-width: 16ch; }
@media (min-width: 1000px) { .cta-band .shell { grid-template-columns: 1.4fr 1fr; align-items: end; } .cta-band .btn-row { justify-content: flex-end; margin: 0; } }

/* Contact */
.contact-grid { display: grid; gap: 48px; }
@media (min-width: 1000px) { .contact-grid { grid-template-columns: 1fr 1.25fr; gap: 80px; } }
.contact-list { display: grid; border-top: 2px solid var(--black); }
.contact-list li { padding: 20px 0; border-bottom: 1px solid var(--line-l); display: grid; grid-template-columns: 28px 1fr; gap: 14px; }
.contact-list .icon { color: var(--orange-ink); width: 24px; height: 24px; margin-top: 4px; }
.contact-list small { display: block; font: 700 0.74rem/1.5 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted-l); }
.contact-list a { font: 700 clamp(1.4rem, 1.1rem + 1.2vw, 2rem)/1.1 var(--f-display); text-decoration: none; overflow-wrap: anywhere; }
.contact-list a:hover { color: var(--orange-ink); }
.form { display: grid; gap: 18px; background: var(--white); padding: clamp(20px, 3vw, 40px); border: 1px solid var(--line-l); box-shadow: 14px 14px 0 var(--black); }
.form-row { display: grid; gap: 18px; }
@media (min-width: 640px) { .form-row { grid-template-columns: 1fr 1fr; } }
.field { display: grid; gap: 6px; }
.field label { font: 700 0.8rem/1.3 var(--f-body); letter-spacing: 0.12em; text-transform: uppercase; }
.field label span { color: var(--orange-ink); }
.field input, .field select, .field textarea { width: 100%; min-height: 50px; padding: 12px 14px; font: inherit; color: var(--black); background: var(--warm); border: 1px solid #8d8f86; border-radius: 0; transition: border-color var(--fast), box-shadow var(--fast); }
.field textarea { min-height: 140px; resize: vertical; }
.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--black) 50%), linear-gradient(135deg, var(--black) 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 40px; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--black); box-shadow: 0 0 0 3px var(--orange); }
.form-note { font-size: 0.88rem; color: var(--muted-l); }
.form-status { font-weight: 600; padding: 12px 14px; border-left: 4px solid var(--orange-ink); background: var(--warm-2); }
.form-status[hidden] { display: none; }

/* Footer */
.site-footer { font-size: 0.95rem; }
.footer-top { display: grid; gap: 36px; padding-block: 64px 40px; }
.footer-heading { font: 600 0.8rem/1.3 var(--f-body); text-transform: uppercase; letter-spacing: 0.16em; color: var(--muted-d); margin-bottom: 14px; }
.footer-top ul { display: grid; gap: 8px; }
.footer-top a { text-decoration: none; }
.footer-top a:hover { color: var(--orange); text-decoration: underline; text-underline-offset: 4px; }
.footer-brand img { width: 220px; }
.footer-brand p { margin-top: 16px; color: var(--muted-d); max-width: 34ch; }
.legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 24px; padding-block: 20px 28px; border-top: 1px solid var(--line-d); color: var(--muted-d); font-size: 0.85rem; }
.legal a { color: var(--warm); text-decoration: none; border-bottom: 1px solid var(--orange); }
.legal a:hover { color: var(--orange); }
.footer-sub { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line-d); }
@media (min-width: 700px) { .footer-top { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .footer-top { grid-template-columns: 1.3fr 1.1fr 1fr 1.1fr 1.2fr; gap: 32px; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
.fact--word b { font-size: clamp(2rem, 1.4rem + 2.6vw, 4rem); line-height: 1.05; }
.class-cell--wide { border: 0; }
@media (min-width: 640px) { .class-cell--wide { grid-column: span 2; } }
.legal p + p, .footer-brand p + p { margin-top: 0; }
.rig-table--compact .rig-row { grid-template-columns: 40px minmax(0, 1fr); padding: 16px 0; }
.rig-table--compact .rig-meta { grid-column: 2; }
.rig-table--compact .rig-model { font-size: clamp(1.7rem, 1.3rem + 1.4vw, 2.4rem); }

/* ---- SEO foundation additions (Lane A) ---- */
.crumbs [aria-current] { color: var(--warm); }
.on-warm .crumbs { color: var(--muted-l); }
.on-warm .crumbs [aria-current] { color: var(--black); }
.hero h1.hero-h1, .is-home .hero h1 { font-size: clamp(2.4rem, 1.3rem + 3.6vw, 5rem); line-height: 0.92; max-width: 16ch; }
.hero-strap { font: 800 clamp(1.6rem, 1.2rem + 1.6vw, 2.6rem)/1 var(--f-display); text-transform: uppercase; letter-spacing: 0.01em; margin-top: 1rem; }
.on-warm .hero-strap .accent { color: var(--orange-ink); }

/* Long-form content */
.prose { max-width: 70ch; }
.prose > * + * { margin-top: 1em; }
.prose h2 { font-size: clamp(2rem, 1.4rem + 2.2vw, 3.4rem); margin-top: 1.6em; margin-bottom: 0.5em; }
.prose h3 { margin-top: 1.4em; margin-bottom: 0.4em; }
.prose ul { display: grid; gap: 8px; padding-left: 1.2rem; list-style: square; }
.prose ul li::marker { color: var(--orange-ink); }
.prose a { text-decoration: underline; text-decoration-color: var(--orange-ink); text-underline-offset: 3px; }
.prose a:hover { color: var(--orange-ink); }
.on-black .prose a:hover, .on-black-2 .prose a:hover { color: var(--orange); }

/* Equipment list */
.equip-list { display: grid; border-top: 2px solid var(--black); margin-top: 24px; }
.on-black .equip-list, .on-black-2 .equip-list { border-color: var(--line-d); }
.equip-list li { display: grid; gap: 4px; padding: 16px 0; border-bottom: 1px solid var(--line-l); }
.on-black .equip-list li, .on-black-2 .equip-list li { border-color: var(--line-d); }
.equip-list b { font: 700 clamp(1.4rem, 1.1rem + 1.2vw, 2rem)/1.05 var(--f-display); text-transform: uppercase; }
.equip-list span { font-size: 0.95rem; color: var(--muted-l); }
.on-black .equip-list span, .on-black-2 .equip-list span { color: var(--muted-d); }
@media (min-width: 700px) { .equip-list li { grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 24px; align-items: baseline; } }

/* FAQ (details/summary) */
.faq { border-top: 2px solid var(--black); margin-top: 24px; max-width: 80ch; }
.on-black .faq, .on-black-2 .faq { border-color: var(--line-d); }
.faq details { border-bottom: 1px solid var(--line-l); }
.on-black .faq details, .on-black-2 .faq details { border-color: var(--line-d); }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 56px; padding: 14px 0; font: 700 clamp(1.25rem, 1.1rem + 0.8vw, 1.6rem)/1.15 var(--f-display); letter-spacing: 0.02em; text-transform: uppercase; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; flex: none; font: 700 1.8rem/1 var(--f-display); color: var(--orange-ink); transition: transform var(--fast) var(--ease); }
.on-black .faq summary::after, .on-black-2 .faq summary::after { color: var(--orange); }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq summary:hover { color: var(--orange-ink); }
.faq .faq-a { padding: 0 0 20px; max-width: 64ch; }

/* Link lists to other pages (hub pages, related links) */
.area-list { display: grid; gap: 16px; margin-top: 28px; }
@media (min-width: 760px) { .area-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.area-card { display: grid; gap: 10px; padding: 26px; border: 2px solid var(--black); background: var(--white); text-decoration: none; transition: transform var(--fast) var(--ease), box-shadow var(--fast); }
.area-card:hover { transform: translate(-3px, -3px); box-shadow: 8px 8px 0 var(--orange-ink); }
.area-card h2, .area-card h3 { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); }
.area-card p { color: var(--muted-l); }
.related { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.related a { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 14px; border: 1px solid var(--line-l); text-decoration: none; font: 700 0.98rem/1 var(--f-display); letter-spacing: 0.08em; text-transform: uppercase; }
.related a:hover { border-color: var(--orange-ink); color: var(--orange-ink); }

/* Contact: phone and email first */
.contact-cta { margin-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); }
.contact-cta-links { display: flex; flex-wrap: wrap; gap: 12px; max-width: none; }
.quote-include { margin-top: 2rem; max-width: 70ch; }
.quote-include h2 { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); }
.contact-cta + .quote-include { margin-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); padding-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); border-bottom: 1px solid var(--line-l); }

/* Polish: steps, tables, inline figures, text-only cases */
.prose ol.steps { list-style: none; counter-reset: step; display: grid; gap: 18px; padding: 0 0 0 clamp(1rem, 3vw, 1.6rem); border-left: 3px solid var(--orange); }
.prose ol.steps > li { counter-increment: step; position: relative; padding-left: clamp(2.6rem, 2rem + 2vw, 3.6rem); min-height: 2.4rem; }
.prose ol.steps > li::before { content: counter(step); position: absolute; left: 0; top: -0.12em; font: 800 clamp(2.2rem, 1.8rem + 1.6vw, 3.2rem)/1 var(--f-display); color: var(--orange-ink); }
.on-black .prose ol.steps > li::before, .on-black-2 .prose ol.steps > li::before { color: var(--orange); }
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin-top: 1.2em; border: 2px solid var(--black); }
.on-black .table-wrap, .on-black-2 .table-wrap { border-color: var(--line-d); }
.table-wrap:focus-visible { outline: 3px solid var(--orange); outline-offset: 2px; }
.prose table { width: 100%; min-width: 30rem; border-collapse: collapse; text-align: left; }
.prose table th, .prose table td { padding: 12px 16px; border-bottom: 1px solid var(--line-l); vertical-align: top; }
.prose thead th { background: var(--black); color: var(--warm); font: 700 0.8rem/1.4 var(--f-body); letter-spacing: 0.14em; text-transform: uppercase; }
.prose tbody th { font-weight: 700; }
.prose tbody tr:nth-child(even) { background: rgba(5, 7, 8, 0.045); }
.on-black .prose table th, .on-black .prose table td, .on-black-2 .prose table th, .on-black-2 .prose table td { border-color: var(--line-d); }
.on-black .prose thead th, .on-black-2 .prose thead th { background: var(--warm); color: var(--black); }
.on-black .prose tbody tr:nth-child(even), .on-black-2 .prose tbody tr:nth-child(even) { background: rgba(243, 241, 231, 0.06); }
.prose figure.inline, .frame.frame--inline { margin: 1.6em 0; width: 100%; box-shadow: none; }
.prose figure.inline img, .frame--inline img { width: 100%; height: auto; display: block; }
.prose figure.inline figcaption, .frame--inline figcaption { margin-top: 8px; font-size: 0.88rem; line-height: 1.45; color: var(--muted-l); }
.on-black .prose figure.inline figcaption, .on-black-2 .prose figure.inline figcaption { color: var(--muted-d); }
.case.case--text { grid-template-columns: minmax(0, 1fr); }
.case.case--text > div { max-width: 70ch; border-left: 3px solid var(--orange); padding-left: clamp(1rem, 3vw, 2rem); }

/* Interior (template) pages: calmer heading scale; home and original pages unchanged */
.is-sub .page-hero h1 { font-size: clamp(2.4rem, 1.5rem + 3vw, 4.2rem); line-height: 1; max-width: 18ch; }
.is-sub .page-hero .lead { margin-top: 1.5rem; }
.is-sub .prose h2 { font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem); line-height: 1.05; margin-top: 1.6em; margin-bottom: 0.5em; }
.is-sub .prose h3 { font-size: clamp(1.3rem, 1.1rem + 0.7vw, 1.7rem); line-height: 1.1; margin-top: 1.3em; margin-bottom: 0.4em; }
.is-sub .prose > h2:first-child { margin-top: 0; }

/* Home hero: smaller H1, strap carries the display weight */
.hero h1#hero-title { font-size: clamp(1.9rem, 1rem + 2.1vw, 3.1rem); line-height: 1.02; max-width: 22ch; letter-spacing: 0.005em; }
.hero .hero-strap { font-size: clamp(2.8rem, 1.6rem + 4.2vw, 5.6rem); line-height: 0.9; color: var(--orange); margin-top: 1.2rem; }
.hero .hero-strap .accent { color: var(--warm); }
