/* =====================================================
   GMT Ltd · assets/styles.css
   ===================================================== */

/* --- Tokens ----------------------------------------- */
:root {
  --brand:       #187bab;
  --brand-hover: #1e8fc6;
  --brand-soft:  rgba(24,123,171,0.15);
  --metal:       #bcbec0;
  --bg:          #0b0d10;
  --bg-1:        #111418;
  --bg-2:        #161a1f;
  --bg-3:        #1d222a;
  --line:        #252b34;
  --line-strong: #343c48;
  --ink:         #e9ecef;
  --ink-mute:    #9aa3ad;
  --ink-dim:     #6a727c;

  --gutter:  clamp(20px,3vw,40px);
  --rhythm:  clamp(48px,6vw,96px);
  --radius:  2px;

  --font-sans: "Archivo","Helvetica Neue",Arial,sans-serif;
  --font-mono: "JetBrains Mono",ui-monospace,"SF Mono",Consolas,monospace;
}

/* Accent variants */
:root[data-accent="muted"] { --brand:#3e7fa0; --brand-hover:#4a93b7; }
:root[data-accent="vivid"] { --brand:#0a8fd4; --brand-hover:#22a6ea; }

/* Light theme */
:root[data-theme="light"] {
  --bg:#f4f5f7; --bg-1:#ffffff; --bg-2:#eceef1; --bg-3:#e2e5e9;
  --line:#d8dce1; --line-strong:#c4c9d0;
  --ink:#0b0d10; --ink-mute:#4b535d; --ink-dim:#7b838d;
}

/* Compact density */
:root[data-density="compact"] {
  --rhythm: clamp(32px,5vw,72px);
  --gutter: clamp(16px,2vw,28px);
}

/* --- Reset ------------------------------------------ */
*,*::before,*::after { box-sizing:border-box; }
html,body { margin:0; padding:0; }
body {
  background:var(--bg); color:var(--ink);
  font-family:var(--font-sans); font-size:16px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"ss01","tnum";
}
img,picture,video,svg { display:block; max-width:100%; }
a { color:var(--brand); text-decoration:none; }
a:hover { color:var(--brand-hover); }
ul,ol { margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,h5 { margin:0; font-weight:600; letter-spacing:-0.02em; text-wrap:balance; }
p { margin:0 0 1em; text-wrap:pretty; }
p:last-child { margin-bottom:0; }

/* --- Typography scale ------------------------------- */
.display {
  font-size:clamp(44px,6vw,92px);
  line-height:1.0; letter-spacing:-0.04em; font-weight:700;
}
.h1 { font-size:clamp(36px,4vw,64px); line-height:1.05; letter-spacing:-0.035em; }
.h2 { font-size:clamp(28px,3vw,44px); line-height:1.1; }
.h3 { font-size:clamp(20px,2vw,24px); }
.lede { font-size:clamp(17px,2vw,21px); color:var(--ink-mute); max-width:62ch; line-height:1.5; margin:0; }
/* Section number label — brand colour, no line */
.eyebrow {
  font-family:var(--font-mono); font-size:11px; color:var(--brand);
  letter-spacing:0.18em; text-transform:uppercase; display:block;
}
/* Descriptive label — dimmed, with short line prefix */
.label {
  font-family:var(--font-mono); font-size:11px; color:var(--ink-dim);
  letter-spacing:0.18em; text-transform:uppercase;
  display:flex; align-items:center; gap:12px;
}
.label::before {
  content:""; display:block; width:24px; height:1px;
  background:var(--ink-dim); flex:0 0 auto;
}
.mono { font-family:var(--font-mono); }

/* --- Layout ----------------------------------------- */
/* Single content width: 1600px. Both classes are intentionally identical. */
.wrap-wide { max-width:1600px; margin-inline:auto; padding-inline:var(--gutter); }
.wrap      { max-width:1600px; margin-inline:auto; padding-inline:var(--gutter); }

/* --- Buttons ---------------------------------------- */
.btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:13px 24px; font-family:var(--font-sans);
  font-size:14px; font-weight:600; letter-spacing:0.01em;
  border:none; cursor:pointer; transition:background 150ms,color 150ms,border-color 150ms;
  text-decoration:none; border-radius:var(--radius); white-space:nowrap;
}
.btn-primary { background:var(--brand); color:#fff; }
.btn-primary:hover { background:var(--brand-hover); color:#fff; }
.btn-ghost { background:transparent; border:1px solid var(--line-strong); color:var(--ink); }
.btn-ghost:hover { border-color:var(--brand); color:var(--brand); }

/* --- Skip link -------------------------------------- */
.skip {
  position:absolute; top:-100%; left:16px;
  background:var(--brand); color:#fff; padding:8px 16px;
  z-index:9999; font-size:14px; text-decoration:none;
}
.skip:focus { top:8px; }

/* --- Nav -------------------------------------------- */
.nav {
  position:sticky; top:0; z-index:100; height:72px;
  background:rgba(11,13,16,0.88);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
:root[data-theme="light"] .nav { background:rgba(244,245,247,0.88); }
.nav-inner { display:flex; align-items:center; height:72px; gap:32px; }
.logo { display:flex; align-items:center; gap:12px; flex:0 0 auto; text-decoration:none; }
.logo-text strong { display:block; font-size:15px; font-weight:700; color:var(--ink); letter-spacing:-0.01em; }
.logo-text small {
  display:block; font-family:var(--font-mono); font-size:10px;
  color:var(--ink-dim); letter-spacing:0.14em; text-transform:uppercase; margin-top:1px;
}
.nav-links { display:flex; align-items:center; gap:2px; margin-left:auto; }
.nav-links a {
  padding:8px 12px; font-size:14px; color:var(--ink-mute);
  text-decoration:none; border-bottom:2px solid transparent;
  transition:color 150ms,border-color 150ms;
}
.nav-links a:hover { color:var(--ink); }
.nav-links a[aria-current="page"] { color:var(--ink); border-bottom-color:var(--brand); }
.nav-cta {
  margin-left:12px; background:var(--brand) !important; color:#fff !important;
  padding:9px 18px !important; border-bottom:none !important; font-weight:600;
  border-radius:var(--radius); transition:background 150ms !important;
  display:inline-block;
}
.nav-cta:hover { background:var(--brand-hover) !important; color:#fff !important; }
.nav-toggle {
  display:none; background:none; border:none; cursor:pointer;
  padding:8px; color:var(--ink); margin-left:auto;
}

@media (max-width:860px) {
  .nav-toggle { display:flex; align-items:center; }
  .nav-links {
    display:none; position:absolute; top:72px; left:0; right:0;
    background:var(--bg-1); border-bottom:1px solid var(--line);
    flex-direction:column; align-items:stretch; padding:16px; gap:2px; margin-left:0;
  }
  .nav-links.open { display:flex; }
  .nav-links a { padding:12px 16px; border-bottom:none !important; }
  .nav-links a[aria-current="page"] { color:var(--brand); }
  .nav-cta { margin-left:0 !important; text-align:center; justify-content:center; }
}

/* --- Hero ------------------------------------------- */
.hero {
  padding-block:var(--rhythm);
  position:relative; overflow:hidden;
}
.hero-bg { position:absolute; inset:0; pointer-events:none; z-index:0; }
.hero-grid {
  position:absolute; inset:0;
  background-image:radial-gradient(circle,var(--line) 1px,transparent 1px);
  background-size:80px 80px; opacity:0.45;
}
.hero-radial {
  position:absolute; inset:0;
  background:radial-gradient(ellipse at 100% 50%,var(--brand-soft) 0%,transparent 60%);
}
.hero-inner {
  position:relative; z-index:1;
  display:grid; grid-template-columns:1.05fr 1fr;
  gap:clamp(32px,5vw,80px); align-items:center;
}
.hero-content { display:flex; flex-direction:column; gap:24px; }
.hero-actions { display:flex; gap:12px; flex-wrap:wrap; }
.hero-media { min-height:440px; position:relative; }
@media (max-width:900px) {
  .hero-inner { grid-template-columns:1fr; }
  .hero-media { min-height:280px; }
}

/* --- Ticker ----------------------------------------- */
.ticker-wrap {
  overflow:hidden;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:14px 0;
  mask-image:linear-gradient(to right,transparent,black 8%,black 92%,transparent);
  -webkit-mask-image:linear-gradient(to right,transparent,black 8%,black 92%,transparent);
}
.ticker-track { display:flex; width:max-content; }
.ticker-item {
  display:inline-flex; align-items:center; gap:16px;
  padding:0 20px; font-family:var(--font-mono);
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ink-mute); white-space:nowrap;
}
.ticker-item::after { content:"■"; color:var(--brand); font-size:7px; }

/* --- Stat bar --------------------------------------- */
.statbar { border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.statbar-inner {
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:1px; background:var(--line);
}
.stat { background:var(--bg); padding:36px 32px; position:relative; }
.stat::before {
  content:"■"; position:absolute; top:18px; left:18px;
  font-size:7px; color:var(--brand);
}
.stat-label {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-dim); margin-bottom:12px;
}
.stat-n {
  font-size:clamp(36px,4vw,56px); font-weight:700;
  letter-spacing:-0.04em; line-height:1;
  color:var(--ink); margin-bottom:8px;
}
.stat-sub {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-dim);
}
@media (max-width:860px) { .statbar-inner { grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px) { .statbar-inner { grid-template-columns:1fr; } }

/* --- Service grid ----------------------------------- */
.svc-section { padding-block:var(--rhythm); }
.svc-section-head {
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(24px,4vw,80px); margin-bottom:40px; align-items:end;
}
@media (max-width:780px) { .svc-section-head { grid-template-columns:1fr; } }
.svc-grid {
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:1px; background:var(--line); border:1px solid var(--line);
}
.svc {
  background:var(--bg-1); padding:36px;
  display:flex; flex-direction:column; gap:12px;
  text-decoration:none; transition:background 150ms; color:var(--ink);
}
.svc:hover { background:var(--bg-2); }
.svc-num { font-family:var(--font-mono); font-size:11px; color:var(--brand); letter-spacing:0.16em; }
.svc h3 { font-size:19px; }
.svc p { color:var(--ink-mute); font-size:14px; line-height:1.65; flex:1; margin:0; }
.svc-more {
  font-size:13px; color:var(--brand); font-weight:600;
  display:inline-flex; align-items:center; gap:4px; transition:gap 150ms;
  margin-top:8px;
}
.svc:hover .svc-more { gap:8px; }
@media (max-width:1040px) and (min-width:781px) { .svc-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:780px) {
  .svc-grid { grid-template-columns:1fr; }
  .svc-section-head { flex-direction:column; align-items:flex-start; }
}

/* --- Gallery mosaic (home) -------------------------- */
.gallery-preview { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.gallery-preview-head {
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(24px,4vw,80px); margin-bottom:32px; align-items:end;
}
@media (max-width:780px) { .gallery-preview-head { grid-template-columns:1fr; } }
.gallery-mosaic {
  display:grid; grid-template-columns:2fr 1fr 1fr;
  grid-template-rows:240px 240px; gap:4px;
}
.mosaic-tile { overflow:hidden; position:relative; }
.mosaic-tile.big { grid-row:1/3; }

@media (max-width:780px) {
  .gallery-mosaic { grid-template-columns:1fr 1fr; grid-template-rows:repeat(3,200px); }
  .mosaic-tile.big { grid-row:auto; grid-column:span 2; }
}
@media (max-width:480px) {
  .gallery-mosaic { grid-template-columns:1fr; grid-auto-rows:220px; }
  .mosaic-tile.big { grid-column:auto; }
}

/* --- ISO strip ------------------------------------- */
.iso-strip { padding-block:var(--rhythm); }
.iso-inner {
  display:grid; grid-template-columns:auto 1fr auto;
  gap:clamp(24px,4vw,56px); align-items:center;
  padding:36px 40px;
  background:var(--bg-1);
  border-left:3px solid var(--brand);
}
.iso-badge {
  width:120px; height:120px; border-radius:50%;
  border:2px solid var(--brand);
  box-shadow:inset 0 0 0 6px var(--bg-1), inset 0 0 0 8px var(--brand);
  background:var(--bg-1);
  display:flex; align-items:center; justify-content:center;
  flex:0 0 auto;
}
.iso-badge-inner {
  text-align:center; font-family:var(--font-mono);
  font-size:8px; color:var(--ink); letter-spacing:0.08em; line-height:1.9;
}
.iso-badge-inner strong { display:block; font-size:14px; color:var(--brand); letter-spacing:0.1em; line-height:1.4; }
.iso-badge-inner .iso-qa { display:block; font-size:7px; letter-spacing:0.06em; }
.iso-content h3 { font-size:clamp(18px,2vw,24px); margin-bottom:8px; }
.iso-content p { color:var(--ink-mute); font-size:14px; }
.iso-actions { display:flex; flex-direction:column; gap:10px; flex:0 0 auto; align-items:flex-start; }
.btn-text-link {
  font-family:var(--font-sans); font-size:13px; color:var(--brand);
  font-weight:500; cursor:pointer; background:none; border:none; padding:0;
  text-decoration:none; transition:color 150ms;
}
.btn-text-link:hover { color:var(--brand-hover); }

@media (max-width:780px) {
  .iso-inner {
    grid-template-columns:1fr; text-align:center;
    padding-left:0; border-left:none;
    border-top:3px solid var(--brand); padding-top:28px; gap:24px;
  }
  .iso-badge { margin-inline:auto; }
  .iso-actions { align-items:center; }
}

/* --- Pull quote ------------------------------------- */
.quote-block { padding-block:var(--rhythm); }
.quote-inner {
  position:relative; background:var(--bg-1);
  border-left:3px solid var(--brand);
  padding:clamp(36px,4vw,56px) clamp(36px,5vw,64px);
  overflow:hidden;
}
.quote-mark {
  position:absolute; top:20px; right:36px;
  font-size:100px; font-family:Georgia,serif;
  color:var(--brand); opacity:0.3; line-height:1;
  pointer-events:none; user-select:none;
}
.quote-text {
  font-size:clamp(20px,2.5vw,32px); font-weight:600;
  letter-spacing:-0.02em; line-height:1.3;
  max-width:28ch; position:relative; margin-bottom:20px; margin-top:12px;
}
.quote-attr {
  font-family:var(--font-mono); font-size:11px;
  color:var(--ink-dim); letter-spacing:0.14em; text-transform:uppercase;
}

/* --- CTA block ------------------------------------- */
.cta-block { padding-block:var(--rhythm); }
.cta-card {
  position:relative; overflow:hidden;
  background:var(--bg-1);
  border-left:3px solid var(--brand);
  padding:clamp(36px,4vw,52px) clamp(36px,5vw,56px);
}
.cta-block-bg {
  position:absolute; inset:0;
  background:radial-gradient(ellipse at 100% 60%,var(--brand-soft) 0%,transparent 55%);
  pointer-events:none;
}
.cta-inner {
  position:relative; z-index:1;
  display:grid; grid-template-columns:1fr auto;
  gap:clamp(32px,5vw,80px); align-items:center;
}
.cta-content > h2 { margin-bottom:0; }
.cta-meta {
  display:flex; gap:32px; flex-wrap:wrap; margin-top:20px;
}
.cta-meta-item {}
.cta-meta-label {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-dim); margin-bottom:4px;
}
.cta-meta-value { font-size:14px; color:var(--ink-mute); }
.cta-action { flex:0 0 auto; }
@media (max-width:780px) { .cta-inner { grid-template-columns:1fr; } }

/* --- Image placeholder ------------------------------ */
.ph {
  background:var(--bg-2); border:1px solid var(--line);
  position:relative; overflow:hidden;
  width:100%; height:100%;
}
.ph::before {
  content:""; position:absolute; inset:0;
  background-image:repeating-linear-gradient(
    -45deg,transparent,transparent 12px,var(--line) 12px,var(--line) 13px
  );
  opacity:0.6;
}
.ph-corner {
  position:absolute; top:10px; left:10px;
  font-family:var(--font-mono); font-size:10px; color:var(--brand);
  letter-spacing:0.14em; text-transform:uppercase; z-index:1;
  background:var(--bg-2); padding:2px 6px; border:1px solid var(--line);
}
.ph-tag {
  position:absolute; bottom:10px; left:10px; right:10px;
  font-family:var(--font-mono); font-size:11px; color:var(--ink-mute);
  z-index:1; background:rgba(11,13,16,0.75); padding:6px 10px;
}
.ph[data-ratio="hero"]     { aspect-ratio:4/5; }
.ph[data-ratio="wide"]     { aspect-ratio:16/9; }
.ph[data-ratio="square"]   { aspect-ratio:1; }
.ph[data-ratio="panoramic"]{ aspect-ratio:21/9; }
.ph[data-ratio="tall"]     { aspect-ratio:3/4; }

/* --- Plant table ------------------------------------ */
.plant-section { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.plant-head {
  display:flex; align-items:baseline; gap:16px;
  margin-bottom:20px; padding-bottom:20px; border-bottom:1px solid var(--line);
}
.plant-head h2 { font-size:clamp(22px,2.5vw,30px); }
.plant-count { font-family:var(--font-mono); font-size:12px; color:var(--brand); letter-spacing:0.12em; }
.plant-table { width:100%; border-collapse:collapse; font-size:14px; margin-bottom:8px; }
.plant-table th {
  font-family:var(--font-mono); font-size:10px; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--ink-dim); font-weight:500;
  text-align:left; padding:10px 14px; background:var(--bg-1);
  border-bottom:1px solid var(--line);
}
.plant-table td {
  padding:12px 14px; border-bottom:1px solid var(--line);
  vertical-align:top; color:var(--ink);
}
.plant-table td.mono { font-family:var(--font-mono); font-size:13px; color:var(--metal); }
.plant-table tr:hover td { background:var(--bg-1); }
@media (max-width:720px) { .plant-table .notes-col { display:none; } }

/* --- Gallery filter --------------------------------- */
.gallery-section { padding-block:var(--rhythm); }
.gallery-section-head { margin-bottom:24px; }
.filter-bar { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
.filter-btn {
  padding:8px 18px; font-family:var(--font-mono); font-size:11px;
  letter-spacing:0.12em; text-transform:uppercase;
  background:var(--bg-1); border:1px solid var(--line);
  color:var(--ink-mute); cursor:pointer;
  transition:background 150ms,color 150ms,border-color 150ms;
  border-radius:var(--radius);
}
.filter-btn:hover { color:var(--ink); border-color:var(--line-strong); }
.filter-btn.on { background:var(--brand); color:#fff; border-color:var(--brand); }
.filter-meta {
  font-family:var(--font-mono); font-size:11px;
  color:var(--ink-dim); letter-spacing:0.1em; margin-bottom:24px;
}
.gallery-grid {
  display:grid; grid-template-columns:repeat(4,1fr);
  grid-auto-rows:220px; gap:4px;
}
[data-gallery-tile] { overflow:hidden; position:relative; }
[data-gallery-tile].big { grid-column:span 2; grid-row:span 2; }
[data-gallery-tile].tall { grid-row:span 2; }
@media (max-width:900px) {
  .gallery-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:600px) {
  .gallery-grid { grid-template-columns:1fr; grid-auto-rows:200px; }
  [data-gallery-tile].big,[data-gallery-tile].tall { grid-column:auto; grid-row:auto; }
}

/* --- Form ------------------------------------------ */
.form-card { background:var(--bg-1); border:1px solid var(--line); padding:40px; }
.field { margin-bottom:22px; }
.field label {
  display:block; font-family:var(--font-mono); font-size:11px;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ink-mute); margin-bottom:8px;
}
.field label .req { color:var(--brand); margin-left:3px; }
.field input,.field textarea,.field select {
  width:100%; background:var(--bg); border:1px solid var(--line);
  padding:12px 16px; font-family:var(--font-sans); font-size:14px;
  color:var(--ink); border-radius:var(--radius);
  transition:border-color 150ms; outline:none; appearance:none;
}
.field input:focus,.field textarea:focus,.field select:focus { border-color:var(--brand); }
.field textarea { min-height:120px; resize:vertical; }
.field.error input,.field.error textarea { border-color:#d65856; }
.err {
  display:none; font-family:var(--font-mono); font-size:11px;
  color:#d65856; letter-spacing:0.08em; margin-top:6px;
}
.field.error .err { display:block; }
.form-status {
  font-family:var(--font-mono); font-size:13px; letter-spacing:0.08em;
  padding:12px 16px; margin-top:16px; border:1px solid; display:none;
}
.form-status.success { border-color:var(--brand); color:var(--brand); background:var(--brand-soft); display:block; }
.form-status.error   { border-color:#d65856; color:#d65856; background:rgba(214,88,86,0.08); display:block; }

/* --- Contact card ---------------------------------- */
.contact-card { background:var(--bg-1); border:1px solid var(--line); padding:40px; }
.contact-item { padding:20px 0; border-bottom:1px solid var(--line); }
.contact-item:first-child { padding-top:0; }
.contact-item:last-child { border-bottom:none; padding-bottom:0; }
.contact-label {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-dim); margin-bottom:6px;
}
.contact-value { font-size:15px; color:var(--ink); }
.contact-value a { color:var(--brand); }

/* --- Map ------------------------------------------- */
.map-section { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.map-section h2 { margin-bottom:24px; }
.map-wrap { position:relative; height:480px; border:1px solid var(--line); }
.map-wrap iframe { width:100%; height:100%; border:none; display:block; }
:root:not([data-theme="light"]) .map-wrap iframe {
  filter:invert(0.92) hue-rotate(180deg) grayscale(0.4) contrast(0.95);
}
.map-pin {
  position:absolute; top:16px; left:16px;
  background:var(--bg); border:1px solid var(--line);
  padding:12px 16px; font-family:var(--font-mono);
  font-size:11px; color:var(--ink-mute); letter-spacing:0.1em; line-height:1.7; z-index:1;
}
.map-pin strong { display:block; color:var(--brand); margin-bottom:4px; font-size:10px; letter-spacing:0.14em; text-transform:uppercase; }

/* --- Footer ---------------------------------------- */
.footer {
  background:var(--bg-1); border-top:1px solid var(--line);
  padding-top:clamp(48px,6vw,80px); padding-bottom:32px;
}
.footer-grid {
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr;
  gap:clamp(32px,5vw,64px); margin-bottom:40px;
}
.footer-brand-block .logo { margin-bottom:16px; }
.footer-brand-block p { font-size:13px; color:var(--ink-mute); max-width:32ch; line-height:1.7; }
.footer-logo-tagline {
  display:block; font-family:var(--font-mono); font-size:9px;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-dim); margin-top:2px;
}
.footer-col h4 {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-dim); margin-bottom:16px; font-weight:500;
}
.footer-col ul { display:flex; flex-direction:column; gap:10px; }
.footer-col ul li a { font-size:13px; color:var(--ink-mute); text-decoration:none; transition:color 150ms; }
.footer-col ul li a:hover { color:var(--brand); }
.footer-bottom {
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding-top:24px; border-top:1px solid var(--line);
  font-family:var(--font-mono); font-size:11px; color:var(--ink-dim); letter-spacing:0.1em;
}
@media (max-width:860px) { .footer-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:600px) { .footer-grid { grid-template-columns:1fr; } }

/* --- Page hero (inner pages) ----------------------- */
.page-hero {
  padding-block:var(--rhythm);
  border-bottom:1px solid var(--line); position:relative; overflow:hidden;
}
.page-hero-bg {
  position:absolute; inset:0;
  background:radial-gradient(ellipse at 80% 50%,var(--brand-soft) 0%,transparent 60%);
  pointer-events:none;
}
.page-hero-inner { position:relative; z-index:1; }
.breadcrumb {
  font-family:var(--font-mono); font-size:11px; color:var(--ink-dim);
  letter-spacing:0.12em; text-transform:uppercase;
  margin-bottom:20px; display:flex; gap:8px; align-items:center;
}
.breadcrumb a { color:var(--ink-dim); text-decoration:none; transition:color 150ms; }
.breadcrumb a:hover { color:var(--brand); }
.breadcrumb .sep { color:var(--brand); }
.page-hero .lede { margin-top:16px; }

/* --- About ----------------------------------------- */
.about-intro {
  display:grid; grid-template-columns:1fr 1.5fr;
  gap:clamp(32px,5vw,80px); padding-block:var(--rhythm); align-items:start;
}
@media (max-width:780px) { .about-intro { grid-template-columns:1fr; } }

.facility-banner { position:relative; aspect-ratio:21/9; overflow:hidden; }

.timeline { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.timeline h2 { margin-bottom:32px; }
.timeline-items {
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:1px; background:var(--line); border:1px solid var(--line);
}
.timeline-item { background:var(--bg-1); padding:32px; }
.timeline-year { font-family:var(--font-mono); font-size:28px; color:var(--brand); font-weight:700; margin-bottom:12px; }
.timeline-item h3 { font-size:16px; margin-bottom:10px; }
.timeline-item p { font-size:14px; color:var(--ink-mute); margin:0; }
@media (max-width:860px) { .timeline-items { grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px) { .timeline-items { grid-template-columns:1fr; } }

.values-section { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.values-section h2 { margin-bottom:32px; }
.values-grid {
  display:grid; grid-template-columns:repeat(2,1fr);
  gap:1px; background:var(--line); border:1px solid var(--line);
}
.value-card { background:var(--bg-1); padding:40px; display:flex; flex-direction:column; gap:12px; }
.value-card h3 { font-size:18px; margin:0; }
.value-card p { font-size:14px; color:var(--ink-mute); margin:0; }
@media (max-width:600px) { .values-grid { grid-template-columns:1fr; } }

.team-section { padding-block:var(--rhythm); border-top:1px solid var(--line); }
.team-section h2 { margin-bottom:32px; }
.team-mosaic {
  display:grid; grid-template-columns:1.5fr 1fr;
  grid-template-rows:280px 280px; gap:4px;
}
.team-mosaic .main { grid-row:1/3; }
@media (max-width:600px) {
  .team-mosaic { grid-template-columns:1fr; grid-auto-rows:220px; }
  .team-mosaic .main { grid-row:auto; }
}

/* --- Services page --------------------------------- */
.service-subnav {
  position:sticky; top:72px; z-index:90;
  background:rgba(11,13,16,0.92); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
:root[data-theme="light"] .service-subnav { background:rgba(244,245,247,0.92); }
.service-subnav-inner {
  display:flex; overflow-x:auto; scrollbar-width:none;
}
.service-subnav-inner::-webkit-scrollbar { display:none; }
.service-subnav a {
  padding:14px 18px; font-family:var(--font-mono); font-size:11px;
  letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-mute);
  text-decoration:none; white-space:nowrap;
  border-bottom:2px solid transparent; transition:color 150ms,border-color 150ms;
}
.service-subnav a:hover { color:var(--ink); border-bottom-color:var(--line-strong); }

.svc-row { padding-block:var(--rhythm); border-bottom:1px solid var(--line); }
.svc-row-inner {
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(32px,5vw,80px); align-items:start;
}
.svc-row.flip .svc-row-inner { direction:rtl; }
.svc-row.flip .svc-row-inner > * { direction:ltr; }
.svc-row-num { font-family:var(--font-mono); font-size:11px; color:var(--brand); letter-spacing:0.16em; margin-bottom:8px; }
.svc-row-content h2 { margin-bottom:16px; }
.svc-row-content .lede { font-size:16px; margin-bottom:24px; }
.svc-specs {
  display:grid; grid-template-columns:1fr 1fr;
  gap:1px; background:var(--line); border:1px solid var(--line); margin-top:24px;
}
.svc-spec { background:var(--bg-1); padding:18px 20px; }
.svc-spec dt {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ink-dim); margin-bottom:6px;
}
.svc-spec dd { font-size:14px; color:var(--ink); margin:0; }
.svc-row-media { position:relative; min-height:320px; }
@media (max-width:780px) {
  .svc-row-inner { grid-template-columns:1fr; }
  .svc-row.flip .svc-row-inner { direction:ltr; }
  .svc-row-media { min-height:240px; }
}

/* --- Utility --------------------------------------- */
/* .reveal is animated by GSAP; no CSS hide so content is always readable */
.reveal { transition:opacity 0.6s ease,transform 0.6s ease; }
.js-ready .reveal { opacity:0; transform:translateY(20px); }
.js-ready .reveal.in { opacity:1; transform:translateY(0); }
.section-eyebrow { margin-bottom:8px; } /* kept for backwards compat */
.two-col { display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,56px); }
@media (max-width:780px) { .two-col { grid-template-columns:1fr; } }
.txt-mute { color:var(--ink-mute); }
.mt-sm { margin-top:8px; }
.mt-md { margin-top:16px; }
.mt-lg { margin-top:32px; }
.mb-sm { margin-bottom:8px; }
.mb-md { margin-bottom:16px; }
.mb-lg { margin-bottom:32px; }
.footnote { font-family:var(--font-mono); font-size:12px; color:var(--ink-dim); letter-spacing:0.1em; margin-top:24px; padding:16px 20px; border:1px solid var(--line); border-left:3px solid var(--brand); background:var(--bg-1); }

/* --- Hero logo animation (homepage) ---------------- */
#logo-hero {
  position: fixed;
  z-index: 101;
  pointer-events: none;
  will-change: left, top, width, opacity;
  line-height: 0;
  opacity: 0;
}
#logo-hero svg { width: 100%; height: auto; display: block; }
@media (max-width: 860px) { #logo-hero { display: none; } }

/* --- HubSpot form overrides ------------------------ */
/*
  Targets HubSpot's injected markup so embedded forms
  match the site's design tokens with no extra wrapper needed.
*/
.hs-form { margin:0; }

/* Fieldsets — HubSpot wraps fields in these */
.hs-form fieldset {
  border:none; margin:0; padding:0; max-width:100% !important;
}
.hs-form fieldset.form-columns-1,
.hs-form fieldset.form-columns-2 {
  display:block;
}

/* Field wrapper */
.hs-form .hs-form-field { margin-bottom:22px; }

/* Labels */
.hs-form label,
.hs-form .hs-label {
  display:block; font-family:var(--font-mono); font-size:11px;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ink-mute); margin-bottom:8px; font-weight:500;
}
.hs-form label .hs-form-required { color:var(--brand); margin-left:3px; }

/* Inputs, textareas, selects */
.hs-form input[type="text"],
.hs-form input[type="email"],
.hs-form input[type="tel"],
.hs-form input[type="number"],
.hs-form textarea,
.hs-form select {
  width:100% !important;
  background:#0b0d10 !important;
  border:1px solid #252b34 !important;
  padding:12px 16px !important;
  font-family:var(--font-sans) !important;
  font-size:14px !important;
  color:#e9ecef !important;
  border-radius:var(--radius) !important;
  transition:border-color 150ms !important;
  outline:none !important;
  appearance:none !important;
  -webkit-appearance:none !important;
  box-shadow:none !important;
}
.hs-form input[type="text"]:focus,
.hs-form input[type="email"]:focus,
.hs-form input[type="tel"]:focus,
.hs-form input[type="number"]:focus,
.hs-form textarea:focus,
.hs-form select:focus { border-color:#187bab !important; }
.hs-form textarea { min-height:120px; resize:vertical; }

/* Input wrapper div HubSpot adds */
.hs-form .input { margin:0; }
.hs-form .input input,
.hs-form .input textarea,
.hs-form .input select { margin:0; }

/* Submit button */
.hs-form input[type="submit"],
.hs-form .hs-button {
  display:inline-flex; align-items:center; justify-content:center;
  width:100%; padding:13px 24px;
  background:var(--brand); color:#fff;
  font-family:var(--font-sans); font-size:14px; font-weight:600;
  letter-spacing:0.01em; border:none; cursor:pointer;
  border-radius:var(--radius); transition:background 150ms;
  appearance:none; -webkit-appearance:none;
}
.hs-form input[type="submit"]:hover,
.hs-form .hs-button:hover { background:var(--brand-hover); }

/* Error messages */
.hs-form ul.hs-error-msgs {
  list-style:none; margin:6px 0 0; padding:0;
}
.hs-form ul.hs-error-msgs li {
  font-family:var(--font-mono); font-size:11px;
  color:#d65856; letter-spacing:0.08em;
}
.hs-form .hs-error-msg { color:#d65856; }
.hs-form .hs-form-field.error input,
.hs-form .hs-form-field.error textarea,
.hs-form .hs-form-field.error select { border-color:#d65856; }

/* Success message */
.hs-form .submitted-message,
.hbspt-form .submitted-message {
  font-family:var(--font-mono); font-size:13px; letter-spacing:0.08em;
  padding:16px 20px; border:1px solid var(--brand);
  color:var(--brand); background:var(--brand-soft);
}

/* Privacy / legal copy HubSpot appends */
.hs-form .hs-richtext,
.hs-form .legal-consent-container {
  font-size:12px; color:#9aa3ad !important;
  font-family:var(--font-mono); letter-spacing:0.06em;
  line-height:1.7; margin-top:16px;
}
.hs-form .legal-consent-container p,
.hs-form .legal-consent-container label,
.hs-form .legal-consent-container span { color:#9aa3ad !important; font-size:12px !important; }
.hs-form .legal-consent-container a { color:#187bab !important; }

/* Checkboxes */
.hs-form input[type="checkbox"] {
  accent-color:#187bab;
  width:16px !important; height:16px !important;
  cursor:pointer;
}

/* Remove HubSpot's default recaptcha badge nudge */
.hs-form .grecaptcha-badge { visibility:hidden; }

/* --- Tweaks panel ---------------------------------- */
.tweaks {
  position:fixed; bottom:24px; right:24px;
  background:var(--bg-1); border:1px solid var(--line);
  padding:20px; z-index:9999;
  flex-direction:column; gap:12px; min-width:220px; display:none;
}
.tweaks.open { display:flex; }
.tweaks-label {
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--ink-dim); font-weight:500;
}
.tweaks select {
  background:var(--bg); border:1px solid var(--line); color:var(--ink);
  padding:6px 10px; font-family:var(--font-mono); font-size:12px;
  border-radius:var(--radius); width:100%; outline:none;
}
.tweaks-toggle {
  position:fixed; bottom:24px; right:24px;
  background:var(--bg-2); border:1px solid var(--line);
  color:var(--ink-dim); padding:8px 14px;
  font-family:var(--font-mono); font-size:10px;
  letter-spacing:0.12em; text-transform:uppercase;
  cursor:pointer; z-index:9998;
}
.tweaks.open ~ .tweaks-toggle { bottom:auto; }
