:root{
  --paper:#F6F4EF; --paper-2:#EFEADD;
  --ink:#14181D; --ink-soft:#4B535B;
  --line:#DBD5C7; --line-strong:#C7BFAC;
  --steel:#2F5872; --steel-soft:#E4EDF1;
  --red:#C31F2D; --red-ink:#8F141F;
  --surface:#FFFFFF;
  --shadow:rgba(20,24,29,0.10);
  --focus:#2F5872;
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#12161B; --paper-2:#0C0F13;
    --ink:#ECE8DF; --ink-soft:#A6ADB3;
    --line:rgba(255,255,255,0.14); --line-strong:rgba(255,255,255,0.26);
    --steel:#82B4D1; --steel-soft:#172631;
    --red:#E1505C; --red-ink:#FF8087;
    --surface:#181D23;
    --shadow:rgba(0,0,0,0.45);
    --focus:#82B4D1;
    color-scheme: dark;
  }
}
:root[data-theme="dark"]{
  --paper:#12161B; --paper-2:#0C0F13;
  --ink:#ECE8DF; --ink-soft:#A6ADB3;
  --line:rgba(255,255,255,0.14); --line-strong:rgba(255,255,255,0.26);
  --steel:#82B4D1; --steel-soft:#172631;
  --red:#E1505C; --red-ink:#FF8087;
  --surface:#181D23;
  --shadow:rgba(0,0,0,0.45);
  --focus:#82B4D1;
  color-scheme: dark;
}

*{box-sizing:border-box;}
html{ -webkit-text-size-adjust:100%; }
body{
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-size:16px;
  line-height:1.6;
  margin:0;
}
h1,h2,h3{font-family:'Big Shoulders Display','Arial Narrow',sans-serif; font-weight:700; margin:0; text-wrap:balance; letter-spacing:-0.01em;}
p{margin:0;}
a{color:inherit;}
img{max-width:100%; display:block;}
.mono{font-family:'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;}
.wrap{max-width:1180px; margin-inline:auto; padding-inline:24px;}
.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.76rem; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--steel); display:flex; align-items:center; gap:10px; margin-bottom:14px;
}
.eyebrow::before{content:""; width:22px; height:1px; background:var(--steel); display:inline-block;}

/* corner registration ticks on each sheet section */
.sheet{ position:relative; padding-block:88px; }
.sheet::before, .sheet::after{
  content:""; position:absolute; top:28px; width:14px; height:14px;
  border-top:1px solid var(--line-strong); pointer-events:none;
}
.sheet::before{ left:24px; border-left:1px solid var(--line-strong); }
.sheet::after{ right:24px; border-right:1px solid var(--line-strong); }
.sheet-tag{
  position:absolute; top:28px; right:24px; transform:translateY(-26px);
  font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.1em;
  color:var(--ink-soft); opacity:0.7;
}
@media (max-width:640px){ .sheet-tag{ display:none; } .sheet{ padding-block:64px; } }

.band-alt{ background:var(--paper-2); }

/* top utility bar */
.utility{
  background:var(--ink); color:var(--paper);
  font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.04em;
}
:root[data-theme="dark"] .utility{ background:#050708; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .utility{ background:#050708; } }
.utility .wrap{ display:flex; justify-content:space-between; align-items:center; padding-block:8px; gap:16px; flex-wrap:wrap; }
.utility a{ text-decoration:none; opacity:0.9; }
.utility a:hover{ opacity:1; text-decoration:underline; }
.utility-tag{ color:var(--red); }

/* nav */
nav.mainnav{
  position:sticky; top:0; z-index:40;
  background:var(--paper); border-bottom:1px solid var(--line);
  backdrop-filter:saturate(140%) blur(6px);
}
nav.mainnav .wrap{ display:flex; align-items:center; justify-content:space-between; padding-block:14px; gap:20px; }
.logo{ display:flex; align-items:center; gap:10px; text-decoration:none; flex-shrink:0; }
.logo svg{ width:30px; height:30px; flex-shrink:0; }
.logo-word{ font-family:'Big Shoulders Display',sans-serif; font-weight:800; font-size:1.5rem; letter-spacing:-0.01em; color:var(--ink); }
.logo-word span{ color:var(--red); }
.nav-links{ display:flex; gap:28px; list-style:none; margin:0; padding:0; }
.nav-links a{
  text-decoration:none; font-size:0.92rem; font-weight:600; color:var(--ink-soft);
  padding-block:4px; border-bottom:2px solid transparent;
}
.nav-links a:hover{ color:var(--ink); border-color:var(--red); }
.nav-links a[aria-current="page"]{ color:var(--ink); border-color:var(--red); }
.nav-right{ display:flex; align-items:center; gap:14px; }
.icon-btn{
  width:36px; height:36px; border-radius:6px; border:1px solid var(--line-strong);
  background:var(--surface); color:var(--ink); display:flex; align-items:center; justify-content:center;
  cursor:pointer; flex-shrink:0;
}
.icon-btn:hover{ border-color:var(--steel); }
.icon-btn:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline:2px solid var(--focus); outline-offset:2px;
}
.btn{
  display:inline-flex; align-items:center; gap:8px; text-decoration:none; cursor:pointer;
  font-family:'IBM Plex Sans',sans-serif; font-weight:600; font-size:0.92rem;
  padding:12px 22px; border-radius:4px; border:1px solid transparent; white-space:nowrap;
}
.btn-primary{ background:var(--red); color:#fff; }
.btn-primary:hover{ background:var(--red-ink); }
.btn-ghost-dark{ border-color:rgba(255,255,255,0.4); color:#fff; }
.btn-ghost-dark:hover{ border-color:#fff; background:rgba(255,255,255,0.08); }
.btn-ghost{ border-color:var(--line-strong); color:var(--ink); }
.btn-ghost:hover{ border-color:var(--steel); color:var(--steel); }

.navtoggle{ display:none; }
.mobile-panel{ display:none; }
@media (max-width:880px){
  .nav-links{ display:none; }
  .navtoggle{ display:flex; }
  .mobile-panel.open{ display:flex; }
  .mobile-panel{
    flex-direction:column; gap:2px; background:var(--paper); border-bottom:1px solid var(--line);
    padding:10px 24px 18px;
  }
  .mobile-panel a{ padding-block:12px; text-decoration:none; color:var(--ink); font-weight:600; border-bottom:1px solid var(--line); }
}

/* HERO (home only) — always a dark drafting sheet regardless of theme */
.hero{
  --hbg:#0E1217; --hgrid:rgba(255,255,255,0.09); --hink:#F4F1EA; --hsoft:#A3ACB3;
  background-color: var(--hbg);
  background-image:
    linear-gradient(var(--hgrid) 1px, transparent 1px),
    linear-gradient(90deg, var(--hgrid) 1px, transparent 1px),
    linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93)),
    url('../img/hero-bridge.jpg');
  background-size: 48px 48px, 48px 48px, cover, cover;
  background-position: 0 0, 0 0, center, center;
  background-repeat: repeat, repeat, no-repeat, no-repeat;
  color:var(--hink);
  position:relative; overflow:hidden;
  padding-block:96px 80px;
}
.hero .sheet-tag{ color:var(--hsoft); opacity:0.8; }
.hero-grid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:56px; align-items:center; }
@media (max-width:900px){ .hero-grid{ grid-template-columns:1fr; } }
.hero .eyebrow{ color:#8FC4E3; }
.hero .eyebrow::before{ background:#8FC4E3; }
.hero h1{ font-size:clamp(2.5rem,5.2vw,4.3rem); line-height:1.02; color:var(--hink); margin-bottom:22px; }
.hero h1 em{ font-style:normal; color:var(--red); }
.hero p.lede{ color:var(--hsoft); font-size:1.08rem; max-width:52ch; margin-bottom:34px; }
.hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; }
.hero-art{ position:relative; }
.hero-art svg{ width:100%; height:auto; display:block; }

/* credibility strip */
.credstrip{ background:var(--surface); border-bottom:1px solid var(--line); border-top:1px solid var(--line); }
.cred-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; }
.cred-item{ padding:26px 24px; border-left:1px solid var(--line); }
.cred-item:first-child{ border-left:none; }
@media (max-width:760px){ .cred-grid{ grid-template-columns:1fr; } .cred-item{ border-left:none; border-top:1px solid var(--line); } .cred-item:first-child{ border-top:none; } }
.cred-label{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--red); margin-bottom:8px; }
.cred-title{ font-weight:700; font-size:1.02rem; margin-bottom:4px; }
.cred-desc{ font-size:0.88rem; color:var(--ink-soft); }
.partner-badge{ height:26px; width:auto; margin-bottom:10px; filter:grayscale(1); opacity:0.85; }

/* about */
.about-grid{ display:grid; grid-template-columns:0.95fr 1.05fr; gap:64px; align-items:start; position:relative; z-index:1; }
@media (max-width:860px){ .about-grid{ grid-template-columns:1fr; gap:36px; } }
.about-grid h2{ font-size:clamp(1.9rem,3.4vw,2.5rem); margin-bottom:18px; }
.about-body p{ color:var(--ink-soft); max-width:56ch; margin-bottom:16px; }
.pull-quote{ border-left:3px solid var(--red); padding-left:20px; margin-block:22px; font-size:1.05rem; color:var(--ink); max-width:56ch; }
.pull-quote span{ display:block; margin-top:8px; font-family:'IBM Plex Mono',monospace; font-size:0.74rem; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.06em; }
.value-list{ display:flex; flex-direction:column; gap:24px; }
.value-list-grid{ display:grid; grid-template-columns:1fr 1fr; gap:28px 24px; }
@media (max-width:520px){ .value-list-grid{ grid-template-columns:1fr; } }
.value-item{ display:flex; gap:16px; }
.value-num{ font-family:'IBM Plex Mono',monospace; color:var(--steel); font-size:0.85rem; padding-top:3px; flex-shrink:0; }
.value-item h3{ font-family:'IBM Plex Sans',sans-serif; font-weight:700; font-size:1.02rem; margin-bottom:4px; }
.value-item p{ color:var(--ink-soft); font-size:0.92rem; }

.section-head{ max-width:70ch; margin-bottom:48px; display:flex; flex-direction:column; gap:14px; }
.section-head h2{ font-size:clamp(1.9rem,3.4vw,2.5rem); }
.section-head p{ color:var(--ink-soft); font-size:1.02rem; }
.section-foot{ margin-top:36px; }
.section-foot a{ text-decoration:none; font-weight:600; font-size:0.94rem; color:var(--steel); display:inline-flex; align-items:center; gap:6px; }
.section-foot a:hover{ color:var(--red); }

/* stat strip (home) */
.stat-strip{ background:var(--paper-2); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.stat-grid{ display:grid; grid-template-columns:repeat(4,1fr); }
.stat-item{ padding:30px 24px; border-left:1px solid var(--line); text-align:left; }
.stat-item:first-child{ border-left:none; }
@media (max-width:760px){ .stat-grid{ grid-template-columns:1fr 1fr; } .stat-item:nth-child(3){ border-left:none; } }
@media (max-width:460px){ .stat-grid{ grid-template-columns:1fr; } .stat-item{ border-left:none !important; border-top:1px solid var(--line); } .stat-item:first-child{ border-top:none; } }
.stat-num{ font-family:'Big Shoulders Display',sans-serif; font-size:2.4rem; font-weight:800; color:var(--red); line-height:1; margin-bottom:8px; }
.stat-label{ font-size:0.86rem; color:var(--ink-soft); }

/* page header (interior pages) */
.pagehead{
  --hbg:#0E1217; --hgrid:rgba(255,255,255,0.09); --hink:#F4F1EA; --hsoft:#A3ACB3;
  background-color: var(--hbg);
  background-image:
    linear-gradient(var(--hgrid) 1px, transparent 1px),
    linear-gradient(90deg, var(--hgrid) 1px, transparent 1px),
    linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93));
  background-size: 48px 48px, 48px 48px, cover;
  background-position: 0 0, 0 0, center;
  background-repeat: repeat, repeat, no-repeat;
  color:var(--hink); padding-block:64px 56px;
  position:relative; overflow:hidden;
}
.page-about .pagehead{ background-image: linear-gradient(var(--hgrid) 1px, transparent 1px), linear-gradient(90deg, var(--hgrid) 1px, transparent 1px), linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93)), url('../img/about-cranes-dusk.jpg'); background-size:48px 48px, 48px 48px, cover, cover; background-repeat:repeat, repeat, no-repeat, no-repeat; }
.page-products .pagehead{ background-image: linear-gradient(var(--hgrid) 1px, transparent 1px), linear-gradient(90deg, var(--hgrid) 1px, transparent 1px), linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93)), url('../img/products-cad-screen.jpg'); background-size:48px 48px, 48px 48px, cover, cover; background-repeat:repeat, repeat, no-repeat, no-repeat; }
.page-solutions .pagehead{ background-image: linear-gradient(var(--hgrid) 1px, transparent 1px), linear-gradient(90deg, var(--hgrid) 1px, transparent 1px), linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93)), url('../img/solutions-blueprint.jpg'); background-size:48px 48px, 48px 48px, cover, cover; background-repeat:repeat, repeat, no-repeat, no-repeat; }
.page-contact .pagehead{ background-image: linear-gradient(var(--hgrid) 1px, transparent 1px), linear-gradient(90deg, var(--hgrid) 1px, transparent 1px), linear-gradient(180deg, rgba(9,12,16,0.86), rgba(9,12,16,0.93)), url('../img/contact-cranes-city.jpg'); background-size:48px 48px, 48px 48px, cover, cover; background-repeat:repeat, repeat, no-repeat, no-repeat; }
.pagehead .eyebrow{ color:#8FC4E3; }
.pagehead .eyebrow::before{ background:#8FC4E3; }
.pagehead .sheet-tag{ color:var(--hsoft); opacity:0.8; }
.pagehead h1{ font-size:clamp(2.2rem,4.4vw,3.4rem); color:var(--hink); margin-bottom:14px; }
.pagehead p{ color:var(--hsoft); font-size:1.04rem; max-width:60ch; }
.crumb{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.06em; color:var(--hsoft); margin-bottom:18px; text-transform:uppercase; }
.crumb a{ text-decoration:none; color:var(--hsoft); }
.crumb a:hover{ color:#fff; }
.pagehead .map-illustration{ color:#8FC4E3; opacity:0.85; }
.pagehead-grid{ position:relative; z-index:1; display:grid; grid-template-columns:1.3fr 0.9fr; gap:32px; align-items:center; }
@media (max-width:760px){ .pagehead-grid{ grid-template-columns:1fr !important; } .pagehead .map-illustration{ display:none; } }

/* services (home) */
.card-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media (max-width:820px){ .card-grid{ grid-template-columns:1fr; } }
.service-card{ background:var(--surface); padding:32px; display:flex; flex-direction:column; gap:14px; position:relative; }
.service-tag{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.1em; color:var(--steel); }
.service-card h3{ font-family:'Big Shoulders Display',sans-serif; font-size:1.5rem; font-weight:700; }
.service-card p{ color:var(--ink-soft); font-size:0.94rem; flex:1; }
.icon-tile{ width:44px; height:44px; color:var(--steel); flex-shrink:0; }
.icon-tile svg{ width:100%; height:100%; display:block; }

/* solutions teaser (home) */
.sol-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
@media (max-width:900px){ .sol-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .sol-grid{ grid-template-columns:1fr; } }
.sol-card{ background:var(--surface); border:1px solid var(--line); padding:24px; position:relative; overflow:hidden; }
.sol-card::before{ content:attr(data-mark); position:absolute; top:14px; right:16px; font-family:'IBM Plex Mono',monospace; font-size:0.7rem; color:var(--line-strong); }
.sol-card h3{ font-family:'IBM Plex Sans',sans-serif; font-weight:700; font-size:1.05rem; margin-bottom:10px; position:relative; z-index:1; }
.sol-card p{ color:var(--ink-soft); font-size:0.88rem; position:relative; z-index:1; }
.sol-bg{ position:absolute; right:-8px; bottom:-8px; width:92px; height:92px; color:var(--steel); opacity:0.12; z-index:0; }
:root[data-theme="dark"] .sol-bg{ opacity:0.2; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .sol-bg{ opacity:0.2; } }

/* testimonials (home) */
.testi-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
@media (max-width:860px){ .testi-grid{ grid-template-columns:1fr; } }
.testi-card{ background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--steel); padding:28px; display:flex; flex-direction:column; gap:18px; }
.testi-quote{ font-size:1rem; color:var(--ink); }
.testi-quote::before{ content:"\201C"; color:var(--red); font-family:Georgia,serif; font-size:1.6rem; line-height:0; margin-right:2px; }
.testi-name{ font-family:'IBM Plex Mono',monospace; font-size:0.78rem; color:var(--ink-soft); letter-spacing:0.04em; }

/* dark contact / quote sections (home + contact page) */
.contact-wrap{ background-color:var(--ink); color:var(--paper); position:relative; overflow:hidden; }
:root[data-theme="dark"] .contact-wrap{ background-color:#0C0F13; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .contact-wrap{ background-color:#0C0F13; } }
.page-home .contact-wrap{
  background-image: linear-gradient(180deg, rgba(6,8,10,0.86), rgba(6,8,10,0.93)), url('../img/contact-engineer.jpg');
  background-size: cover, cover; background-position:center, center; background-repeat:no-repeat, no-repeat;
}
.contact-wrap .eyebrow{ color:#8FC4E3; }
.contact-wrap .eyebrow::before{ background:#8FC4E3; }
.contact-wrap .sheet::before,.contact-wrap .sheet::after{ border-color:rgba(255,255,255,0.28); }
.contact-grid{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:56px; position:relative; z-index:1; }
@media (max-width:860px){ .contact-grid{ grid-template-columns:1fr; gap:36px; } }
.contact-wrap h2{ color:var(--paper); font-size:clamp(1.9rem,3.4vw,2.5rem); margin-bottom:16px; }
.contact-wrap .about-body-txt, .contact-wrap .lede-txt{ color:rgba(246,244,239,0.72); max-width:56ch; margin-bottom:28px; }
.contact-line{ display:flex; gap:12px; align-items:baseline; padding-block:12px; border-top:1px solid rgba(255,255,255,0.14); }
.contact-line:last-child{ border-bottom:1px solid rgba(255,255,255,0.14); }
.contact-line .k{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.1em; color:#8FC4E3; width:110px; flex-shrink:0; text-transform:uppercase; }
.contact-line .v a{ text-decoration:none; }
.contact-line .v a:hover{ text-decoration:underline; }
.map-illustration{ width:100%; max-width:420px; height:auto; color:#8FC4E3; margin-top:8px; }

.form-card{ background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.16); padding:32px; max-width:720px; position:relative; z-index:1; }
.field{ display:flex; flex-direction:column; gap:6px; margin-bottom:18px; }
.field label{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.08em; text-transform:uppercase; color:#8FC4E3; }
.field input, .field textarea, .field select{
  background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.24); color:#fff;
  padding:11px 12px; font-family:'IBM Plex Sans',sans-serif; font-size:0.94rem; border-radius:3px;
  resize:vertical;
}
.field select option{ background:#181D23; color:#fff; }
.field input::placeholder, .field textarea::placeholder{ color:rgba(255,255,255,0.35); }
.two-col{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:520px){ .two-col{ grid-template-columns:1fr; } }
.form-confirm{ display:none; align-items:center; gap:10px; margin-top:16px; font-size:0.9rem; color:#9FE3B0; font-family:'IBM Plex Mono',monospace; }
.form-confirm.show{ display:flex; }

/* office cards (about + contact) */
.office-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
@media (max-width:760px){ .office-grid{ grid-template-columns:1fr; } }
.office-card{ background:var(--surface); border:1px solid var(--line); padding:0; }
.office-card .oc-head{ padding:20px 24px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:baseline; }
.office-card .oc-head h3{ font-family:'IBM Plex Sans',sans-serif; font-size:1.05rem; font-weight:700; display:flex; align-items:center; gap:8px; }
.office-card .oc-tag{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; color:var(--steel); letter-spacing:0.08em; }
.office-card .oc-body{ padding:20px 24px; display:flex; flex-direction:column; gap:12px; }
.oc-row{ display:flex; gap:12px; font-size:0.92rem; }
.oc-row .k{ font-family:'IBM Plex Mono',monospace; font-size:0.68rem; letter-spacing:0.08em; color:var(--ink-soft); text-transform:uppercase; width:64px; flex-shrink:0; padding-top:2px; }
.oc-row .v{ color:var(--ink); }
.oc-row a{ text-decoration:none; }
.oc-row a:hover{ text-decoration:underline; }
.hours-note{ font-family:'IBM Plex Mono',monospace; font-size:0.8rem; color:var(--steel); margin-top:18px; }

/* product catalog */
.prod-category{ margin-bottom:56px; }
.prod-category:last-child{ margin-bottom:0; }
.prod-category-head{ display:flex; align-items:center; gap:14px; margin-bottom:10px; padding-bottom:12px; border-bottom:1px solid var(--line-strong); }
.prod-category-num{ font-family:'IBM Plex Mono',monospace; color:var(--steel); font-size:0.85rem; }
.prod-category-head h3{ font-family:'Big Shoulders Display',sans-serif; font-size:1.5rem; font-weight:700; }
.prod-category-desc{ color:var(--ink-soft); font-size:0.92rem; margin:14px 0 20px; max-width:70ch; }
.prod-list{ display:flex; flex-wrap:wrap; gap:10px; }
.prod-chip{ border:1px solid var(--line-strong); background:var(--surface); padding:10px 16px; font-size:0.88rem; font-weight:600; }
.cat-icon{ width:32px; height:32px; color:var(--steel); flex-shrink:0; }
.cat-icon svg{ width:100%; height:100%; display:block; }

/* solutions detail cards */
.solutions-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:960px){ .solutions-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .solutions-grid{ grid-template-columns:1fr; } }
.solution-card{ background:var(--surface); border:1px solid var(--line); padding:26px; position:relative; overflow:hidden; }
.sc-body{ position:relative; z-index:1; display:flex; flex-direction:column; gap:10px; height:100%; }
.solution-card-head{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.solution-card h3{ font-family:'IBM Plex Sans',sans-serif; font-weight:700; font-size:1.08rem; }
.solution-card .cat{ font-family:'IBM Plex Mono',monospace; font-size:0.62rem; letter-spacing:0.05em; color:var(--steel); text-transform:uppercase; white-space:nowrap; }
.solution-card p{ color:var(--ink-soft); font-size:0.92rem; flex:1; }
.solution-dl{ text-decoration:none; font-family:'IBM Plex Mono',monospace; font-size:0.76rem; color:var(--red); display:inline-flex; align-items:center; gap:6px; margin-top:4px; }
.solution-dl:hover{ color:var(--red-ink); text-decoration:underline; }
.solution-bg{ position:absolute; right:-16px; bottom:-16px; width:128px; height:128px; color:var(--steel); opacity:0.13; z-index:0; pointer-events:none; }
:root[data-theme="dark"] .solution-bg{ opacity:0.22; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .solution-bg{ opacity:0.22; } }

/* footer title block */
footer{ background:var(--paper-2); border-top:1px solid var(--line); }
.footer-grid{ display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:40px; padding-block:56px 28px; }
@media (max-width:760px){ .footer-grid{ grid-template-columns:1fr; gap:32px; } }
.footer-grid h4{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:14px; }
.footer-links{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.footer-links a{ text-decoration:none; color:var(--ink-soft); font-size:0.92rem; }
.footer-links a:hover{ color:var(--red); }
.footer-desc{ color:var(--ink-soft); font-size:0.9rem; max-width:34ch; margin-top:12px; }
.titleblock{ border:1px solid var(--line-strong); font-family:'IBM Plex Mono',monospace; font-size:0.72rem; }
.tb-row{ display:flex; justify-content:space-between; padding:8px 12px; border-bottom:1px solid var(--line-strong); gap:10px; }
.tb-row:last-child{ border-bottom:none; }
.tb-row .k{ color:var(--ink-soft); }
.footer-bottom{ border-top:1px solid var(--line); padding-block:18px; }
.footer-bottom .wrap{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:0.82rem; color:var(--ink-soft); }

/* illustrations */
.about-illustration{ position:absolute; right:0; top:8px; width:150px; height:150px; color:var(--steel); opacity:0.09; pointer-events:none; z-index:0; }
:root[data-theme="dark"] .about-illustration{ opacity:0.14; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .about-illustration{ opacity:0.14; } }

/* ambient motion */
.scan-layer{ position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.scan-beam{ position:absolute; top:0; bottom:0; width:1px; left:0; opacity:0; background:linear-gradient(180deg, transparent, rgba(143,196,227,0.6), transparent); }
@media (prefers-reduced-motion:no-preference){
  .scan-beam{ animation:sweep 9s ease-in-out infinite; }
  @keyframes sweep{ 0%{ left:0%; opacity:0; } 12%{ opacity:1; } 88%{ opacity:1; } 100%{ left:100%; opacity:0; } }
  .draw-line{ animation:dashflow 2.4s linear infinite; }
  @keyframes dashflow{ to{ stroke-dashoffset:-24; } }
}

/* mega menu */
.mega-trigger{ position:relative; display:inline-flex; }
.mega-menu{
  display:none; flex-direction:column; position:absolute; top:100%; left:0; margin-top:14px;
  min-width:260px; background:var(--surface); border:1px solid var(--line); padding:8px; z-index:50;
}
.mega-trigger:hover .mega-menu, .mega-trigger:focus-within .mega-menu{ display:flex; }
.mega-menu a{ display:block; padding:10px 14px; font-size:0.86rem; font-weight:600; text-decoration:none; color:var(--ink-soft); }
.mega-menu a:hover{ background:var(--paper-2); color:var(--ink); }

/* WhatsApp float */
.wa-float{ position:fixed; right:24px; bottom:24px; z-index:100; width:56px; height:56px; border-radius:50%; background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 24px rgba(0,0,0,0.28); text-decoration:none; transition:transform .15s ease; }
.wa-float:hover{ transform:scale(1.08); }
.wa-float svg{ width:28px; height:28px; }
@media (max-width:600px){ .wa-float{ right:16px; bottom:16px; width:50px; height:50px; } }

/* newsletter */
.newsletter-section{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding-block:28px; background:var(--paper-2); }
.newsletter-block{ display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; }
.newsletter-block h4{ font-family:'IBM Plex Mono',monospace; font-size:0.78rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-soft); margin:0 0 4px; }
.newsletter-block p{ color:var(--ink-soft); font-size:0.86rem; margin:0; }
.newsletter-form{ display:flex; gap:8px; flex-wrap:wrap; }
.newsletter-form input{ padding:11px 14px; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink); min-width:220px; font-family:'IBM Plex Sans',sans-serif; border-radius:2px; }
.newsletter-form button{ padding:11px 20px; border:1px solid var(--red); background:var(--red); color:#fff; cursor:pointer; font-weight:600; border-radius:2px; }
.newsletter-form button:hover{ background:var(--red-ink); }
.newsletter-confirm{ display:none; font-size:0.82rem; font-weight:600; color:var(--steel); margin-top:8px; width:100%; }
.newsletter-confirm.show{ display:block; }

/* inline PDF preview */
.pdf-preview-toggle{ background:none; border:none; font-family:'IBM Plex Mono',monospace; font-size:0.76rem; color:var(--steel); cursor:pointer; margin-left:10px; text-decoration:underline; padding:0; }
.pdf-preview-toggle:hover{ color:var(--red); }
.pdf-preview-wrap{ display:none; margin-top:12px; }
.pdf-preview-wrap.open{ display:block; }
.pdf-preview-frame{ width:100%; height:420px; border:1px solid var(--line-strong); }

/* map embed */
.map-embed{ margin-top:16px; border:1px solid var(--line); overflow:hidden; aspect-ratio:16/10; }
.map-embed iframe{ width:100%; height:100%; border:0; display:block; }

/* deals section */
.deals-section{ background:var(--surface); border-bottom:1px solid var(--line); padding-block:64px; }
.deals-head{ margin-bottom:32px; }
.deals-head h2{ font-size:clamp(1.6rem,2.8vw,2.1rem); margin-top:4px; }
.deals-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:820px){ .deals-grid{ grid-template-columns:1fr; } }
.deal-card{ display:block; background:var(--paper); border:1px solid var(--line); padding:24px; text-decoration:none; color:var(--ink); position:relative; }
.deal-card:hover{ border-color:var(--red); }
.deal-badge{ display:inline-block; background:var(--red); color:#fff; font-family:'IBM Plex Mono',monospace; font-size:0.72rem; font-weight:700; padding:5px 10px; margin-bottom:12px; }
.deal-card h3{ font-family:'IBM Plex Sans',sans-serif; font-size:1.05rem; font-weight:700; margin-bottom:8px; }
.deal-card p{ color:var(--ink-soft); font-size:0.9rem; margin-bottom:10px; }
.deal-expiry{ font-family:'IBM Plex Mono',monospace; font-size:0.72rem; color:var(--steel); }
.deals-empty{ border:1px dashed var(--line-strong); padding:32px; text-align:center; }
.deals-empty p{ color:var(--ink-soft); margin-bottom:14px; }
.deals-empty-cta{ text-decoration:none; font-weight:700; color:var(--red); border-bottom:2px solid var(--red); padding-bottom:2px; cursor:pointer; }
