/*
Theme Name: Greenwich Redesign
Theme URI: https://greenwichregistrars.com/
Author: Greenwich Registrars & Data Solutions
Description: Concept redesign theme for Greenwich Registrars & Data Solutions. Ships a full-width "Greenwich Canvas" page template plus header/footer chrome. Page bodies live in /content as HTML fragments to paste into Custom HTML blocks.
Version: 1.0.25
Requires at least: 6.0
Requires PHP: 7.4
License: All rights reserved
Text Domain: greenwich-redesign
*/

/* The Plus Jakarta Sans webfont is enqueued from functions.php.
   Self-host it there instead if your data-protection policy requires it. */

/* ============================================================
   BASE + LAYOUT + COMPONENTS  (shared across every page)
   ============================================================ */
:root{
    --ink:#054724;
    --ink-2:#006527;
    --mid:#144733;
    --teal:#0F4B5F;
    --sage:#70AB78;
    --gold:#FFCC00;
    --burnt:#BE4B19;
    --maroon:#962319;
    --grey:#6E6E6E;
    --nav:#FFFFFF;
    --lime:#84ca23;
    --lime-2:#75b31d;
    --cream:#FFFFFF;
    --text-dark:#303030;
    --text-dim:rgba(255,255,255,0.7);
    --text-dim-2:rgba(255,255,255,0.5);
    --line:rgba(255,255,255,0.14);
    --shadow: 0 24px 48px -24px rgba(0,0,0,0.5);
  }

  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; }

  body{
    margin:0;
    background:var(--ink);
    color:var(--cream);
    font-family:'Plus Jakarta Sans', Inter, system-ui, -apple-system, 'Segoe UI', sans-serif;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }

  h1,h2,h3{
    margin:0;
    font-weight:500;
    text-wrap:balance;
    letter-spacing:-0.01em;
  }
  p{ margin:0; }
  a{ color:inherit; text-decoration:none; }
  button{ font-family:inherit; }

  .visually-hidden{
    position:absolute; width:1px; height:1px; overflow:hidden;
    clip:rect(0 0 0 0); white-space:nowrap;
  }

  .shell{
    max-width:1240px;
    margin:0 auto;
    padding-left:32px;
    padding-right:32px;
  }
  @media (max-width:720px){
    .shell{ padding-left:20px; padding-right:20px; }
  }

  /* ---------- buttons ---------- */
  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-weight:600;
    font-size:15px;
    padding:14px 24px;
    border-radius:999px;
    border:1px solid transparent;
    cursor:pointer;
    transition:transform 0.35s cubic-bezier(0.16,1,0.3,1), box-shadow 0.35s cubic-bezier(0.16,1,0.3,1), background 0.3s ease, border-color 0.3s ease;
    white-space:nowrap;
  }
  .btn:focus-visible{ outline:2px solid var(--lime); outline-offset:3px; }
  .btn svg{ width:14px; height:14px; flex:none; }

  .btn-lime{ background:var(--lime); color:var(--ink); }
  .btn-lime:hover{ background:var(--lime-2); transform:translateY(-2px); box-shadow:0 14px 28px -16px rgba(132,202,35,0.5); }

  .btn-dark{ background:var(--ink); color:#fff; }
  .btn-dark:hover{ background:var(--ink-2); transform:translateY(-2px); }

  .btn-outline{ background:transparent; color:#fff; border-color:rgba(255,255,255,0.35); }
  .btn-outline:hover{ border-color:#fff; transform:translateY(-2px); }

  .btn-outline-dark{ background:transparent; color:var(--text-dark); border-color:rgba(48,48,48,0.3); }
  .btn-outline-dark:hover{ border-color:var(--text-dark); transform:translateY(-2px); }

  /* reveal-on-scroll */
  .reveal{ opacity:0; transform:translateY(20px); transition:opacity 0.6s ease, transform 0.6s ease; }
  .reveal.is-visible{ opacity:1; transform:translateY(0); }
  @media (prefers-reduced-motion: reduce){
    html{ scroll-behavior:auto; }
    .reveal{ opacity:1; transform:none; transition:none; }
    .btn:hover, .card:hover{ transform:none !important; }
    [data-parallax]{ transform:none !important; }
  }

  /* ---------- top banner ---------- */
  .top-banner{
    background:var(--ink-2);
    color:#fff;
    font-size:13.5px;
    padding:11px 0;
  }
  .top-banner .shell{ display:flex; align-items:center; justify-content:center; gap:10px; position:relative; }
  .top-banner a{ color:var(--lime); font-weight:600; display:inline-flex; align-items:center; gap:5px; }
  .top-banner-close{
    position:absolute; right:32px; top:50%; transform:translateY(-50%);
    background:none; border:none; color:rgba(255,255,255,0.6); cursor:pointer; font-size:16px; line-height:1; padding:4px;
  }
  .top-banner-close:hover{ color:#fff; }
  @media (max-width:720px){ .top-banner-close{ right:16px; } }

  /* ---------- nav ---------- */
  header.site-nav{
    background:var(--nav);
    color:var(--text-dark);
    position:sticky; top:0; z-index:50;
  }
  .nav-row{
    display:flex; align-items:center; justify-content:space-between; gap:24px;
    padding:18px 0;
  }
  .brand{ display:flex; align-items:center; }
  .brand img{ height:42px; width:auto; display:block; }
  nav.nav-links{ display:flex; align-items:center; gap:30px; }
  nav.nav-links a{ font-size:15px; font-weight:500; color:var(--text-dark); }
  nav.nav-links a:hover{ color:var(--ink); }
  @media (max-width:900px){ nav.nav-links{ display:none; } }
  .nav-cta .btn{ padding:12px 22px; font-size:14px; }

  /* ---------- hero ---------- */
  .hero{
    background:var(--ink);
    padding:100px 0 64px;
    text-align:center;
    position:relative;
    overflow:hidden;
  }
  .hero .shell{ position:relative; z-index:2; }
  .hero h1{
    font-size:clamp(38px, 6.4vw, 80px);
    line-height:1.04;
    font-weight:500;
    color:#fff;
  }
  .hero h1 .accent{ color:var(--lime); }
  .hero p.lede{
    margin:24px auto 0;
    max-width:520px;
    font-size:17px;
    line-height:1.6;
    color:var(--text-dim);
  }
  .hero-actions{ margin-top:34px; display:flex; justify-content:center; gap:14px; flex-wrap:wrap; }

  /* ---------- hero art / parallax ---------- */
  .hero-art{ position:absolute; inset:0; z-index:1; pointer-events:none; }
  .hero-video-wrap{ position:absolute; inset:0; overflow:hidden; }
  .hero-video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
  .hero-tint{ position:absolute; inset:0; background:var(--ink); opacity:0.38; }
  .hero::after{
    content:"";
    position:absolute; inset:0; z-index:1; pointer-events:none;
    background:linear-gradient(180deg, rgba(5,71,36,0.28) 0%, rgba(5,71,36,0.62) 78%, var(--ink) 100%);
  }



  /* ---------- trust strip ---------- */
  .trust-strip{
    background:var(--ink);
    padding:56px 0 84px;
    text-align:center;
  }
  .trust-strip .label{
    font-size:12.5px;
    letter-spacing:0.06em;
    color:var(--text-dim-2);
    margin-bottom:22px;
  }
  .trust-strip .statement{
    font-size:15px;
    color:var(--text-dim);
    max-width:640px;
    margin:0 auto;
    line-height:1.6;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    padding:22px 0;
  }

  /* ---------- circled stat ---------- */
  .trust-split{ background:var(--ink); padding:100px 0; position:relative; overflow:hidden; }
  .trust-split .blob{
    position:absolute; top:50%; left:22%; width:420px; height:420px;
    transform:translate(-50%,-50%); border-radius:50%;
    background:radial-gradient(circle, rgba(132,202,35,0.16), transparent 70%);
    filter:blur(20px); pointer-events:none; z-index:0;
  }
  .trust-split-grid{
    position:relative; z-index:1;
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:56px; flex-wrap:wrap;
  }
  .trust-split-text{ flex:1 1 380px; max-width:440px; text-align:left; }
  .stat-circle{
    width:170px; height:170px;
    margin:0 0 32px;
    border-radius:50%;
    border:2px solid var(--lime);
    display:flex; align-items:center; justify-content:center;
    flex-direction:column;
    position:relative;
    box-shadow:0 0 60px -10px rgba(132,202,35,0.35);
  }
  .stat-circle .num{ font-size:38px; font-weight:700; color:#fff; }
  .stat-circle .num .plus{ color:var(--lime); }
  .stat-circle .sub{ font-size:11px; letter-spacing:0.04em; color:var(--text-dim-2); margin-top:2px; }
  .trust-split-text h2{
    font-size:clamp(26px, 4vw, 40px);
    color:#fff;
    max-width:14ch;
    margin:0;
    line-height:1.15;
  }
  .trust-split-text h2 .accent{ color:var(--lime); }
  .trust-split-text p{
    margin:18px 0 0;
    max-width:46ch;
    font-size:15.5px;
    line-height:1.65;
    color:var(--text-dim);
  }

  /* ---------- client & instrument ledger (scrolling) ---------- */
  .client-ledger{ position:relative; z-index:1; flex:1 1 420px; max-width:560px; }
  .client-ledger-head{ text-align:left; margin:0 0 22px; }
  .client-ledger-head .eyebrow{
    display:inline-block; font-size:12.5px; font-weight:600; letter-spacing:0.04em;
    background:rgba(255,255,255,0.08); color:var(--text-dim);
    padding:8px 16px; border-radius:999px;
  }
  .client-ledger-head p{ margin:12px 0 0; font-size:14px; line-height:1.6; color:var(--text-dim-2); max-width:46ch; }
  .client-carousel{ position:relative; }
  .client-groups{
    display:flex; flex-direction:row; gap:14px;
    position:relative;
    overflow-x:auto; overflow-y:hidden;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .client-groups::-webkit-scrollbar{ display:none; }
  .client-group{
    flex:0 0 100%;
    scroll-snap-align:start;
    scroll-snap-stop:always;
  }
  .client-carousel-controls{ display:flex; align-items:center; justify-content:center; gap:18px; margin-top:16px; }
  .client-carousel-arrow{
    width:36px; height:36px; border-radius:50%; border:1px solid rgba(255,255,255,0.18);
    background:rgba(255,255,255,0.06); color:#fff; display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition:background 0.2s ease, transform 0.15s ease; flex:0 0 auto;
  }
  .client-carousel-arrow:hover{ background:rgba(255,255,255,0.16); }
  .client-carousel-arrow:active{ transform:scale(0.92); }
  .client-carousel-arrow svg{ width:14px; height:14px; }
  .client-carousel-arrow[disabled]{ opacity:0.3; cursor:default; pointer-events:none; }
  .client-carousel-dots{ display:flex; gap:8px; }
  .client-carousel-dots .dot{
    width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,0.25);
    border:none; padding:0; cursor:pointer; transition:background 0.3s ease, transform 0.3s ease;
  }
  .client-carousel-dots .dot.is-active{ background:var(--lime); transform:scale(1.4); }
  .client-track-mask{ position:relative; }
  .client-track{ display:grid; grid-template-columns:repeat(2, 1fr); gap:12px; align-content:start; }
  .client-tile{
    position:relative; overflow:hidden;
    width:100%; min-height:96px; padding:20px 18px; border-radius:14px;
    background:#fff;
    display:flex; align-items:center; justify-content:center;
    border:1px solid rgba(5,71,36,0.10);
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.7), 0 12px 24px -18px rgba(0,0,0,0.5);
    transition:transform .32s cubic-bezier(.16,1,.3,1), box-shadow .32s cubic-bezier(.16,1,.3,1), border-color .32s ease;
  }
  .client-tile::after{
    content:""; position:absolute; left:20px; right:20px; top:0; height:2px;
    border-radius:0 0 3px 3px; background:var(--lime); opacity:0; transition:opacity .3s ease;
  }
  .client-group.is-bond .client-tile::after{ background:var(--gold); }
  .client-tile:hover{
    transform:translateY(-4px);
    border-color:rgba(132,202,35,0.55);
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.8), 0 22px 38px -20px rgba(0,0,0,0.6);
  }
  .client-tile:hover::after{ opacity:1; }
  .client-group.is-bond .client-tile:hover{ border-color:rgba(255,204,0,0.6); }
  .client-tile:last-child:nth-child(odd){ grid-column:1 / -1; }
  .client-tile img{ max-height:48px; max-width:84%; width:auto; height:auto; object-fit:contain; display:block; }
  .client-tile.is-text span{ font-size:12.5px; font-weight:700; color:var(--ink); text-align:center; line-height:1.4; letter-spacing:0.012em; }
  @media (prefers-reduced-motion: reduce){ .client-tile, .client-tile:hover{ transition:none; transform:none; } }
  @media (prefers-reduced-motion: reduce){
    .client-groups{ scroll-behavior:auto; }
  }
  @media (max-width:900px){
    .trust-split-text, .client-ledger{ flex-basis:100%; max-width:100%; text-align:center; }
    .trust-split-text{ text-align:center; }
    .stat-circle{ margin:0 auto 32px; }
    .trust-split-text h2, .trust-split-text p{ margin-left:auto; margin-right:auto; }
    .client-ledger-head{ text-align:center; }
    .client-ledger-head p{ margin-left:auto; margin-right:auto; }
  }

  /* ---------- services ---------- */
  .services{ background:var(--nav); color:var(--text-dark); padding:100px 0 40px; }
  .section-head{ text-align:center; max-width:640px; margin:0 auto 56px; }
  .section-head .eyebrow{
    display:inline-block;
    font-size:12.5px; font-weight:600; letter-spacing:0.04em;
    background:rgba(12,35,26,0.06);
    color:var(--ink);
    padding:8px 16px; border-radius:999px;
    margin-bottom:20px;
  }
  .section-head h2{ font-size:clamp(28px, 4vw, 42px); color:var(--ink); }
  .section-head h2 .accent{ color:#006527; }
  .section-head p{ margin-top:16px; font-size:15.5px; color:#5a5a5a; line-height:1.6; }

  .card-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:24px;
    padding-bottom:60px;
  }
  @media (max-width:820px){ .card-grid{ grid-template-columns:1fr; } }

  .card{
    position:relative;
    border-radius:24px;
    padding:36px 32px;
    min-height:300px;
    display:flex;
    flex-direction:column;
    color:#fff;
    overflow:hidden;
    box-shadow:var(--shadow);
    transition:transform 0.5s cubic-bezier(0.16,1,0.3,1), box-shadow 0.5s cubic-bezier(0.16,1,0.3,1);
    transform-style:preserve-3d;
    will-change:transform;
  }
  .card:hover{ transform:translateY(-6px); box-shadow:0 34px 60px -22px rgba(0,0,0,0.55); }
  .card h3{ font-size:24px; position:relative; z-index:1; }
  .card p{ margin-top:12px; font-size:14.5px; line-height:1.6; color:rgba(255,255,255,0.88); max-width:34ch; position:relative; z-index:1; }
  .card .btn{ margin-top:26px; align-self:flex-start; position:relative; z-index:1; }
  .card-icon{
    position:absolute; right:20px; bottom:20px;
    width:104px; height:104px;
    border-radius:26px;
    background:rgba(255,255,255,0.14);
    box-shadow: inset 0 1px 1px rgba(255,255,255,0.4), 0 22px 36px -16px rgba(0,0,0,0.5);
    display:flex; align-items:center; justify-content:center;
    transform:rotate(-6deg);
    transition:transform 0.4s ease;
  }
  .card:hover .card-icon{ transform:rotate(-1deg) translateY(-4px) scale(1.05); }
  .card-icon::before{
    content:"";
    position:absolute; inset:-30px;
    background:radial-gradient(circle, rgba(255,255,255,0.25), transparent 70%);
    filter:blur(10px);
    z-index:-1;
  }
  .card-icon svg{ width:46px; height:46px; }

  /* cards that feature a live portal screenshot */
  .card.has-shot{ padding:0; min-height:0; }
  .card.has-shot .card-icon{ display:none; }
  .card-shot{
    position:relative; margin:20px 20px 0;
    border-radius:12px; overflow:hidden; background:#fff;
    box-shadow:0 30px 52px -22px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.55), inset 0 0 0 1px rgba(0,0,0,0.05);
  }
  .card-shot .card-shot-bar{
    height:30px; display:flex; align-items:center; gap:6px; padding:0 13px;
    background:linear-gradient(#f4f4f4,#e7e7e7); border-bottom:1px solid rgba(0,0,0,0.08);
  }
  .card-shot .card-shot-bar span{ width:8px; height:8px; border-radius:50%; }
  .card-shot .card-shot-bar span:nth-child(1){ background:#ff5f57; }
  .card-shot .card-shot-bar span:nth-child(2){ background:#febc2e; }
  .card-shot .card-shot-bar span:nth-child(3){ background:#28c840; }
  .card-shot img{
    display:block; width:100%; height:190px; object-fit:cover; object-position:top center;
    transition:transform 0.7s cubic-bezier(0.16,1,0.3,1);
  }
  .card:hover .card-shot img{ transform:scale(1.045); }
  .card-body{ padding:22px 30px 30px; position:relative; z-index:1; }
  .card-body h3{ font-size:22px; }
  .card-open{
    margin-top:16px; display:inline-flex; align-items:center; gap:8px;
    font-size:11.5px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase;
    color:#fff; opacity:0.92;
  }
  .card-open svg{ width:13px; height:13px; transition:transform 0.3s ease; }
  .card:hover .card-open svg{ transform:translateX(4px); }
  @media (max-width:820px){ .card-shot img{ height:220px; } }

  .c-purple{ background:linear-gradient(155deg,#006527 0%,#70AB78 100%); }
  .c-coral{ background:linear-gradient(155deg,#962319 0%,#BE4B19 100%); }
  .c-gold{ background:linear-gradient(155deg,#BE4B19 0%,#FFCC00 100%); }
  .c-blue{ background:linear-gradient(155deg,#0F4B5F 0%,#70AB78 100%); }
  .c-pink{ background:linear-gradient(155deg,#144733 0%,#84ca23 100%); }
  .c-green{ background:linear-gradient(155deg,#6E6E6E 0%,#144733 100%); }

  /* ---------- trust section ---------- */
  .trust-section{ background:var(--ink); padding:110px 0; text-align:center; }
  .trust-section .badge{
    display:inline-block;
    font-size:12.5px; font-weight:600; letter-spacing:0.04em;
    background:rgba(255,255,255,0.08);
    color:var(--text-dim);
    padding:8px 16px; border-radius:999px;
    margin-bottom:24px;
  }
  .trust-section h2{ font-size:clamp(30px, 5vw, 52px); color:#fff; line-height:1.1; }
  .trust-section h2 .accent{ color:var(--lime); }
  .trust-section > .shell > p{ margin:20px auto 0; max-width:560px; font-size:15.5px; color:var(--text-dim); line-height:1.65; }

  .trust-panels{
    margin-top:56px;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:24px;
    text-align:left;
  }
  @media (max-width:820px){ .trust-panels{ grid-template-columns:1fr; } }
  .trust-panel{
    border-radius:24px;
    padding:32px;
    min-height:220px;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    position:relative;
    overflow:hidden;
  }
  .trust-panel h4{ font-size:19px; font-weight:600; color:#fff; }
  .trust-panel p{ margin-top:8px; font-size:14px; color:rgba(255,255,255,0.75); max-width:32ch; }
  .tp-1{ background:radial-gradient(120% 140% at 20% 0%, #144733 0%, #054724 70%); border:1px solid var(--line); }
  .tp-2{ background:radial-gradient(120% 140% at 80% 0%, #0F4B5F 0%, #054724 70%); border:1px solid var(--line); }
  .trust-panel .glyph{ position:absolute; top:28px; right:28px; width:40px; height:40px; opacity:0.9; z-index:1; }
  .trust-panel .glyph svg{ width:100%; height:100%; color:var(--lime); }
  .trust-panel .glyph-bg{ position:absolute; right:-30px; bottom:-30px; width:190px; height:190px; opacity:0.09; pointer-events:none; }
  .trust-panel .glyph-bg svg{ width:100%; height:100%; color:#fff; }

  /* ---------- portal preview ---------- */
  .preview{ background:var(--ink); padding:20px 0 120px; text-align:center; position:relative; overflow:hidden; }
  .preview .blob{
    position:absolute; bottom:-120px; left:50%; width:520px; height:320px;
    transform:translateX(-50%); border-radius:50%;
    background:radial-gradient(circle, rgba(15,75,95,0.5), transparent 70%);
    filter:blur(10px); pointer-events:none; z-index:0;
  }
  .preview .shell{ position:relative; z-index:1; }
  .preview .eyebrow{
    display:inline-block; font-size:12.5px; font-weight:600; letter-spacing:0.04em;
    background:rgba(255,255,255,0.08); color:var(--text-dim);
    padding:8px 16px; border-radius:999px; margin-bottom:22px;
  }
  .preview h2{ font-size:clamp(28px, 5vw, 46px); color:#fff; max-width:14ch; margin:0 auto; line-height:1.1; }
  .preview h2 .accent{ color:var(--lime); }
  .preview > .shell > p{ margin:18px auto 0; max-width:520px; font-size:15px; color:var(--text-dim); }

  .app-carousel{ margin-top:44px; position:relative; z-index:1; }
  .app-carousel-stage{ position:relative; height:560px; perspective:1600px; }
  .app-carousel-slide{
    position:absolute; top:50%; left:50%; width:240px; height:522px;
    opacity:0; pointer-events:none; cursor:pointer;
    transition:transform 0.85s cubic-bezier(0.16,1,0.3,1), opacity 0.85s cubic-bezier(0.16,1,0.3,1);
    will-change:transform, opacity;
  }
  .app-carousel-slide[data-index="0"]{ opacity:1; pointer-events:auto; transform:translate(-50%,-50%); z-index:5; }
  .app-phone-frame{
    width:100%; height:100%; background:#0a0f0c; border-radius:34px; padding:10px;
    box-shadow:0 30px 70px -20px rgba(0,0,0,0.6), inset 0 0 0 1.5px rgba(255,255,255,0.08);
  }
  .app-phone-frame img{ width:100%; height:100%; object-fit:cover; border-radius:26px; display:block; }
  .app-carousel-controls{ display:flex; align-items:center; justify-content:center; gap:22px; margin-top:18px; }
  .app-carousel-arrow{
    width:38px; height:38px; border-radius:50%; border:1px solid rgba(255,255,255,0.18);
    background:rgba(255,255,255,0.06); color:#fff; display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition:background 0.2s ease, transform 0.15s ease; flex:0 0 auto;
  }
  .app-carousel-arrow:hover{ background:rgba(255,255,255,0.16); }
  .app-carousel-arrow:active{ transform:scale(0.92); }
  .app-carousel-arrow svg{ width:15px; height:15px; }
  .app-carousel-dots{ display:flex; gap:9px; }
  .app-carousel-dots .dot{
    width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,0.25);
    border:none; padding:0; cursor:pointer; transition:background 0.3s ease, transform 0.3s ease;
  }
  .app-carousel-dots .dot.is-active{ background:var(--lime); transform:scale(1.4); }
  .app-carousel-caption{ margin:18px 0 0; font-size:14px; font-weight:600; color:var(--text-dim); text-align:center; letter-spacing:0.01em; min-height:1.4em; }
  @media (max-width:640px){
    .app-carousel-stage{ height:430px; }
    .app-carousel-slide{ width:190px; height:413px; }
  }

  /* ---------- insights ---------- */
  .insights{ background:var(--nav); color:var(--text-dark); padding:100px 0; }
  .insights .section-head .eyebrow{ font-weight:800; letter-spacing:0.05em; }
  .insights .section-head p{ font-weight:600; color:var(--ink); }
  .insight-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
  @media (max-width:900px){ .insight-grid{ grid-template-columns:1fr; } }
  .insight-card{
    background:#fff;
    border:1px solid rgba(12,35,26,0.1);
    border-radius:20px;
    padding:28px;
    display:flex; flex-direction:column;
    text-decoration:none; color:inherit;
    transition:transform 0.45s cubic-bezier(0.16,1,0.3,1), box-shadow 0.45s cubic-bezier(0.16,1,0.3,1);
  }
  a.insight-card:hover{ transform:translateY(-5px); box-shadow:0 20px 40px -24px rgba(12,35,26,0.35); border-color:rgba(132,202,35,0.55); }
  .insight-card:hover{ transform:translateY(-5px); box-shadow:0 20px 40px -24px rgba(12,35,26,0.35); }
  a.insight-card:hover .insight-link{ color:var(--lime); }
  .insight-date{ font-size:12px; font-weight:600; letter-spacing:0.04em; color:#006527; }
  .insight-card h3{ margin-top:14px; font-size:18px; line-height:1.32; color:var(--ink); font-weight:600; }
  .insight-card p{ margin-top:10px; font-size:14px; line-height:1.6; color:#5a5a5a; flex:1; }
  .insight-link{ margin-top:18px; font-size:13.5px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; transition:color .2s ease; }
  .insight-link svg{ width:13px; height:13px; flex:none; }

  /* ---------- CTA ---------- */
  .cta-band{ background:var(--lime); color:var(--ink); padding:80px 0; text-align:center; }
  .cta-band h2{ font-size:clamp(26px, 4vw, 40px); max-width:16ch; margin:0 auto; }
  .cta-band p{ margin:16px auto 0; max-width:480px; font-size:15px; color:rgba(12,35,26,0.75); }
  .cta-band .btn{ margin-top:28px; }
  .cta-band .btn-dark:hover{ background:#000; }

  /* split CTA: two panels side by side, one dark green + one lime */
  .cta-split{ display:grid; grid-template-columns:1fr 1fr; border-bottom:6px solid #fff; }
  .cta-split > div{ padding:72px clamp(24px,5vw,72px); display:flex; flex-direction:column;
    align-items:flex-start; justify-content:center; }
  .cta-split .cta-dark{ background:var(--ink); color:#fff; }
  .cta-split .cta-light{ background:var(--lime); color:var(--ink); }
  .cta-split h2{ font-size:clamp(23px,2.6vw,32px); line-height:1.2; margin:0; max-width:20ch; }
  .cta-split p{ margin:14px 0 0; max-width:44ch; font-size:15px; line-height:1.6; }
  .cta-split .cta-dark p{ color:var(--text-dim); }
  .cta-split .cta-light p{ color:rgba(12,35,26,0.75); }
  .cta-split .btn{ margin-top:26px; }
  .cta-split .cta-light .btn-dark:hover{ background:#000; }
  @media (max-width:820px){ .cta-split{ grid-template-columns:1fr; } .cta-split > div{ padding:56px 24px; } }

  /* ---------- footer ---------- */
  footer{ background:var(--ink); padding:70px 0 30px; }
  .footer-top{ display:grid; grid-template-columns:1.2fr repeat(4, 1fr); gap:30px; }
  @media (max-width:1040px){ .footer-top{ grid-template-columns:1fr 1fr 1fr; row-gap:36px; } }
  @media (max-width:680px){ .footer-top{ grid-template-columns:1fr 1fr; } }
  .footer-blurb p{ font-size:13.5px; line-height:1.6; color:var(--text-dim); max-width:30ch; }
  .footer-col h4{ font-size:12px; letter-spacing:0.06em; text-transform:uppercase; color:var(--text-dim-2); margin:0 0 16px; font-weight:600; }
  .footer-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:11px; }
  .footer-col a{ font-size:14px; color:var(--text-dim); }
  .footer-col a:hover{ color:var(--lime); }

  .footer-social{ display:flex; gap:10px; margin-top:18px; }
  .footer-social a{
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
  }
  .footer-social a:hover{ border-color:var(--lime); }
  .footer-social svg{ width:16px; height:16px; }

  .footer-logo-plate{
    margin-top:64px;
    display:inline-block;
  }
  .footer-logo-plate img{ height:54px; width:auto; display:block; }
  @media (max-width:480px){ .footer-logo-plate img{ height:42px; } }

  .footer-legal{ margin-top:28px; font-size:12.5px; line-height:1.7; color:var(--text-dim-2); max-width:900px; }

  .footer-bottom{
    margin-top:36px; padding-top:22px; border-top:1px solid var(--line);
    display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
    font-size:12.5px; color:var(--text-dim-2);
  }
  .footer-bottom a{ margin-left:18px; }
  .footer-bottom a:hover{ color:#fff; }


  .page-hero{ background:var(--ink); color:var(--cream); padding:66px 0 88px; position:relative; overflow:hidden; }
  .page-hero .hero-bg{ position:absolute; inset:0; z-index:0; }
  .page-hero .hero-bg img{ width:100%; height:100%; object-fit:cover; object-position:center 40%; opacity:0.75; }
  .page-hero .hero-bg::after{ content:""; position:absolute; inset:0;
    background:linear-gradient(96deg, var(--ink) 0%, var(--ink) 38%, rgba(5,71,36,0.82) 66%, rgba(5,71,36,0.42) 100%); }
  .page-hero .shell{ position:relative; z-index:1; }
  .page-hero .eyebrow{ margin-bottom:22px; background:rgba(255,255,255,0.12); }
  .page-hero h1{ font-size:clamp(34px,5.6vw,62px); font-weight:500; line-height:1.04; max-width:15ch; }
  .page-hero h1 .accent{ color:var(--lime); }
  .page-hero .lede{ margin-top:24px; max-width:56ch; font-size:17px; line-height:1.65; color:rgba(255,255,255,0.82); }
  .page-hero .hero-actions{ margin-top:34px; display:flex; gap:14px; flex-wrap:wrap; justify-content:flex-start; }
  @media (max-width:700px){ .page-hero .hero-bg::after{ background:linear-gradient(180deg, rgba(5,71,36,0.6), var(--ink) 78%); } }
  .breadcrumb{ font-size:12.5px; letter-spacing:0.04em; color:var(--text-dim-2); margin-bottom:26px; }
  .breadcrumb a{ color:var(--text-dim-2); }
  .breadcrumb a:hover{ color:var(--lime); }

  .prose-section{ background:var(--nav); color:var(--text-dark); padding:96px 0 72px; }
  .prose-section .eyebrow{ background:rgba(12,35,26,0.06); color:var(--ink); margin-bottom:22px; }
  .prose-section h2{ font-size:clamp(26px,4vw,40px); color:var(--ink); max-width:18ch; }
  .prose-wrap{ display:grid; grid-template-columns:0.85fr 1.15fr; gap:56px; align-items:start; margin-top:8px; }
  .prose-wrap .body p{ font-size:15.5px; line-height:1.8; color:#4a4a4a; }
  .prose-wrap .body p + p{ margin-top:18px; }
  @media (max-width:860px){ .prose-wrap{ grid-template-columns:1fr; gap:20px; } }

  /* long-form legal / policy documents */
  .legal-doc{ background:var(--nav); color:var(--text-dark); padding:80px 0 88px; }
  .legal-doc .shell{ max-width:780px; }
  .legal-doc .eyebrow{ display:inline-block; background:rgba(12,35,26,0.06); color:var(--ink);
    font-size:12px; font-weight:600; letter-spacing:0.06em; text-transform:uppercase;
    padding:7px 14px; border-radius:999px; margin-bottom:26px; }
  .legal-doc h2{ font-size:clamp(19px,2.4vw,23px); color:var(--ink); line-height:1.3;
    margin:44px 0 14px; padding-top:22px; border-top:1px solid rgba(12,35,26,0.12); }
  .legal-doc > .shell > p:first-of-type{ font-size:16.5px; }
  .legal-doc h2:first-of-type{ border-top:none; padding-top:0; margin-top:20px; }
  .legal-doc h3{ font-size:15.5px; color:var(--ink); font-weight:700; margin:22px 0 8px; }
  .legal-doc p{ font-size:15px; line-height:1.8; color:#41473f; margin:0 0 14px; }
  .legal-doc ul, .legal-doc ol{ margin:0 0 16px; padding-left:24px; }
  .legal-doc li{ font-size:15px; line-height:1.75; color:#41473f; margin:0 0 8px; }
  .legal-doc li > ol, .legal-doc li > ul{ margin-top:8px; }
  .legal-doc a{ color:var(--ink); text-decoration:underline; text-underline-offset:2px; }
  .legal-doc a:hover{ color:var(--lime); }
  .legal-doc .legal-sign{ margin-top:30px; font-weight:700; color:var(--ink); line-height:1.5; }
  .legal-doc .legal-sign span{ display:block; font-weight:500; color:#6a6f66; font-size:13.5px; }
  .legal-doc .legal-meta{ margin-top:34px; padding-top:16px; border-top:1px solid rgba(12,35,26,0.12);
    font-size:12.5px; color:#6a6f66; }

  /* ---------- blog single post ---------- */
  .post-hero .post-meta{ margin:14px 0 0; font-size:13px; letter-spacing:0.03em; color:var(--text-dim); }
  .post-body{ background:var(--nav); color:var(--text-dark); padding:60px 0 88px; }
  .post-body .shell{ max-width:760px; }
  .post-lead-image{ margin:0 0 36px; }
  .post-lead-image img{ width:100%; height:auto; border-radius:16px; display:block; }
  .post-body p{ font-size:16px; line-height:1.85; color:#3f453d; margin:0 0 20px; }
  .post-body > .shell > p:first-of-type{ font-size:17.5px; color:var(--ink); }
  .post-body h2{ font-size:clamp(21px,2.6vw,26px); color:var(--ink); line-height:1.3; margin:44px 0 14px; }
  .post-body h3{ font-size:18px; color:var(--ink); font-weight:700; margin:32px 0 10px; }
  .post-body h4{ font-size:15.5px; color:var(--ink); font-weight:700; margin:26px 0 8px; }
  .post-body ul, .post-body ol{ margin:0 0 20px; padding-left:24px; }
  .post-body li{ font-size:16px; line-height:1.8; color:#3f453d; margin:0 0 10px; }
  .post-body a{ color:var(--ink); text-decoration:underline; text-underline-offset:2px; }
  .post-body a:hover{ color:var(--lime-2); }
  .post-body img{ max-width:100%; height:auto; border-radius:14px; margin:16px 0; }
  .post-body img.aligncenter, .post-body .aligncenter{ display:block; margin-left:auto; margin-right:auto; }
  .post-body figure{ margin:24px 0; }
  .post-body figure img{ margin:0; }
  .post-body figcaption{ font-size:13px; color:var(--grey); margin-top:8px; text-align:center; }
  .post-body blockquote{ margin:28px 0; padding:6px 0 6px 22px; border-left:3px solid var(--lime);
    font-size:17px; line-height:1.7; color:var(--ink); font-style:italic; }
  .post-body blockquote p:last-child{ margin-bottom:0; }
  .post-body hr{ border:none; border-top:1px solid rgba(12,35,26,0.14); margin:36px 0; }
  .post-body iframe{ width:100%; aspect-ratio:16/9; height:auto; border:0; border-radius:14px; margin:20px 0; }
  .post-body table{ width:100%; border-collapse:collapse; margin:24px 0; font-size:14.5px; }
  .post-body th, .post-body td{ border:1px solid rgba(12,35,26,0.16); padding:10px 12px; text-align:left; }
  .post-body th{ background:#f4f6f3; }
  .post-back{ margin:44px 0 0 !important; padding-top:22px; border-top:1px solid rgba(12,35,26,0.14); }
  .post-back a{ font-weight:600; }

  .svc-section{ background:#f4f6f3; color:var(--text-dark); padding:20px 0 100px; }
  .svc-list{ display:grid; grid-template-columns:1fr 1fr; column-gap:52px; }
  .svc-item{ padding:26px 4px; border-top:1px solid rgba(12,35,26,0.14); }
  .svc-item h3{ font-size:17px; color:var(--ink); font-weight:600; display:flex; gap:11px; align-items:baseline; }
  .svc-item h3 .n{ color:var(--sage); font-variant-numeric:tabular-nums; font-weight:700; font-size:13px; }
  .svc-item p{ margin-top:9px; font-size:14px; line-height:1.75; color:#565656; }
  @media (max-width:800px){ .svc-list{ grid-template-columns:1fr; } }

  .unit-note{ background:var(--ink); color:var(--cream); }
  .unit-note .shell{ padding:84px 0; }
  .unit-note .eyebrow{ background:rgba(255,255,255,0.08); color:var(--text-dim); margin-bottom:22px; }
  .unit-note p{ font-size:16px; line-height:1.75; color:rgba(255,255,255,0.82); max-width:62ch; }
  .unit-note p + p{ margin-top:18px; }

  /* ---- justify body copy site-wide ---- */
  p, li{ text-align:justify; text-justify:inter-word; }
  .section-head p, .cta-band p, .cta-split p, .cta-gease p{ text-align:inherit; }
  .breadcrumb, .post-meta, .insight-date, .note, .find-more{ text-align:left; }

  /* ---- digital-solutions page: text + photo band ---- */
  .prose-media{ background:var(--nav); color:var(--text-dark); padding:84px 0; }
  .prose-media__grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center; }
  .prose-media.reverse .prose-media__text{ order:2; }
  .prose-media__text .eyebrow{ display:inline-block; background:rgba(12,35,26,0.06); color:var(--ink);
    font-size:12.5px; font-weight:600; letter-spacing:0.04em; padding:8px 16px; border-radius:999px; margin-bottom:18px; }
  .prose-media__text h2{ font-size:clamp(24px,3vw,34px); color:var(--ink); line-height:1.2; margin:0 0 16px; max-width:20ch; }
  .prose-media__text p{ font-size:15.5px; line-height:1.8; color:#4a4a4a; margin:0 0 14px; }
  .prose-media__text p:last-child{ margin-bottom:0; }
  .prose-media__img img{
    width:100%; height:auto; display:block; border-radius:20px;
    box-shadow:0 44px 78px -40px rgba(12,35,26,0.45), inset 0 0 0 1px rgba(255,255,255,0.5);
  }
  @media (max-width:860px){
    .prose-media__grid{ grid-template-columns:1fr; gap:28px; }
    .prose-media.reverse .prose-media__text{ order:0; }
  }

/* ============================================================
   PAGE-SPECIFIC COMPONENTS
   (team bios, awards, logo grid, jobs, faq, demo form,
    branches, report list, contact cards)
   ============================================================ */
.bio-section{ background:var(--nav); color:var(--text-dark); padding:88px 0 96px; }
  .bio-list{ display:flex; flex-direction:column; gap:0; margin-top:8px; }
  .bio{ display:grid; grid-template-columns:260px 1fr; gap:48px; padding:46px 0; border-top:1px solid rgba(12,35,26,0.14); }
  .bio:first-child{ border-top:none; }
  .bio .who{ position:sticky; top:96px; align-self:start; }
  .bio .who h3{ font-size:21px; color:var(--ink); font-weight:600; }
  .bio .who .role{ margin-top:7px; font-size:13px; font-weight:600; letter-spacing:0.03em; text-transform:uppercase; color:var(--sage); }
  .bio .who .avatar{ width:100%; aspect-ratio:4/5; height:auto; border-radius:20px; margin-bottom:18px;
    background:linear-gradient(155deg,#006527,#70AB78); color:#fff; display:flex; align-items:center; justify-content:center;
    font-size:46px; font-weight:700; letter-spacing:0.02em; }
  .bio .who img.avatar{ display:block; object-fit:cover; object-position:center top; background:#eef2ee;
    box-shadow:0 0 0 1px rgba(12,35,26,0.10), 0 22px 40px -20px rgba(0,0,0,0.42); }
  .bio .body p{ font-size:15px; line-height:1.8; color:#4a4a4a; }
  .bio .body p + p{ margin-top:14px; }
  @media (max-width:820px){
    .bio{ grid-template-columns:1fr; gap:20px; }
    .bio .who{ position:static; max-width:300px; }
  }

  .award-list{ display:grid; grid-template-columns:1fr 1fr; column-gap:52px; margin-top:8px; }
  .award{ padding:28px 4px; border-top:1px solid rgba(12,35,26,0.14); }
  .award .year{ font-size:13px; font-weight:700; letter-spacing:0.04em; color:var(--sage); font-variant-numeric:tabular-nums; }
  .award h3{ margin-top:8px; font-size:18px; color:var(--ink); font-weight:600; line-height:1.35; }
  .award p{ margin-top:8px; font-size:13.5px; line-height:1.7; color:#565656; }
  @media (max-width:800px){ .award-list{ grid-template-columns:1fr; } }

  .logo-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:12px; }
  .logo-grid .tile{ min-height:92px; padding:18px 16px; border-radius:14px; background:#fff; border:1px solid rgba(5,71,36,0.10);
    display:flex; align-items:center; justify-content:center; text-align:center;
    box-shadow:inset 0 1px 0 rgba(255,255,255,0.7), 0 12px 24px -18px rgba(0,0,0,0.35);
    font-size:12.5px; font-weight:700; color:var(--ink); line-height:1.4; letter-spacing:0.012em;
    transition:transform .3s cubic-bezier(.16,1,.3,1), border-color .3s ease; }
  .logo-grid .tile:hover{ transform:translateY(-4px); border-color:rgba(132,202,35,0.55); }
  @media (max-width:900px){ .logo-grid{ grid-template-columns:repeat(3,1fr); } }
  @media (max-width:560px){ .logo-grid{ grid-template-columns:repeat(2,1fr); } }

  .logo-grid .tile.client-logo-tile{ flex-direction:column; gap:14px; padding:24px 16px; min-height:138px; }
  .logo-grid .tile.client-logo-tile img{ max-width:130px; max-height:54px; width:auto; height:auto; object-fit:contain;
    filter:grayscale(1); opacity:0.72; transition:filter .3s ease, opacity .3s ease; }
  .logo-grid .tile.client-logo-tile:hover img{ filter:grayscale(0); opacity:1; }
  .logo-grid .tile.client-logo-tile span{ font-size:12px; font-weight:600; color:var(--ink); line-height:1.35; letter-spacing:0.012em; text-align:center; }
  a.tile.client-logo-tile{ cursor:pointer; text-decoration:none; }
  a.tile.client-logo-tile:hover{ transform:translateY(-4px); border-color:rgba(132,202,35,0.55); }

  /* per-company client-directory download page */
  .cd-head{ display:flex; align-items:center; gap:22px; margin-bottom:8px; }
  .cd-head img{ max-width:150px; max-height:64px; width:auto; height:auto; object-fit:contain; }
  .download-list{ margin-top:14px; border-top:1px solid rgba(12,35,26,0.14); }
  .download-row{ display:flex; align-items:center; justify-content:space-between; gap:24px;
    padding:16px 4px; border-bottom:1px solid rgba(12,35,26,0.12); }
  .download-row p{ margin:0; font-size:14.5px; color:var(--ink); font-weight:500; line-height:1.5; }
  .download-row .dl-btn{ flex:0 0 auto; display:inline-flex; align-items:center; gap:8px;
    font-size:12.5px; font-weight:700; letter-spacing:0.02em; text-transform:uppercase;
    color:var(--ink); border:1px solid rgba(12,35,26,0.25); border-radius:999px; padding:9px 16px;
    transition:background .2s ease, border-color .2s ease; }
  .download-row .dl-btn:hover{ background:var(--lime); border-color:var(--lime); }
  .download-row .dl-btn svg{ width:13px; height:13px; }
  .download-empty{ margin-top:16px; font-size:14px; color:#5a5a5a; }
  .cd-back{ display:inline-flex; align-items:center; gap:8px; margin-top:28px; font-size:13px; font-weight:700; color:var(--ink); }
  .cd-back svg{ width:14px; height:14px; transform:rotate(180deg); }
  @media (max-width:560px){
    .download-row{ flex-direction:column; align-items:flex-start; gap:12px; }
  }

  .aff-grid{ display:flex; flex-direction:column; gap:18px; margin-top:16px; }
  .aff-card{ display:grid; grid-template-columns:230px 1fr; gap:36px; align-items:center;
    background:#fff; border:1px solid rgba(5,71,36,0.12); border-radius:18px; padding:30px 34px;
    box-shadow:0 18px 40px -28px rgba(0,0,0,0.35);
    transition:transform .3s cubic-bezier(.16,1,.3,1), border-color .3s ease; }
  a.aff-card:hover{ transform:translateY(-3px); border-color:rgba(132,202,35,0.5); }
  .aff-logo{ display:flex; align-items:center; justify-content:center; padding:6px 10px; min-height:80px; }
  .aff-logo img{ max-width:100%; max-height:78px; width:auto; height:auto; display:block; }
  .aff-logo .aff-wordmark{ font-size:14px; font-weight:800; color:var(--ink); text-align:center; line-height:1.35; letter-spacing:0.01em; }
  .aff-body h3{ font-size:18px; color:var(--ink); font-weight:600; }
  .aff-body p{ margin-top:8px; font-size:14px; line-height:1.75; color:#4f4f4f; }
  .aff-body .aff-link{ margin-top:12px; font-size:13px; font-weight:700; color:var(--ink);
    display:inline-flex; align-items:center; gap:6px; }
  .aff-body .aff-link svg{ width:13px; height:13px; }
  @media (max-width:760px){
    .aff-card{ grid-template-columns:1fr; gap:18px; text-align:center; padding:26px 22px; }
    .aff-logo{ min-height:auto; }
    .aff-body .aff-link{ justify-content:center; }
  }

  .job-list{ display:grid; grid-template-columns:1fr 1fr; column-gap:52px; margin-top:8px; }
  .job{ padding:26px 4px; border-top:1px solid rgba(12,35,26,0.14); }
  .job h3{ font-size:17px; color:var(--ink); font-weight:600; }
  .job .meta{ margin-top:8px; font-size:13px; color:#6a6a6a; display:flex; align-items:center; gap:7px; }
  .job .meta svg{ width:13px; height:13px; color:var(--sage); }
  .job .apply{ margin-top:14px; font-size:13px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; }
  .job .apply svg{ width:13px; height:13px; }
  @media (max-width:800px){ .job-list{ grid-template-columns:1fr; } }

  .value-list .svc-item h3 .n{ font-size:12px; }

  .faq-list{ max-width:820px; margin:8px auto 0; }
  .faq{ border-top:1px solid rgba(12,35,26,0.14); }
  .faq:last-child{ border-bottom:1px solid rgba(12,35,26,0.14); }
  .faq > summary{ list-style:none; cursor:pointer; padding:22px 44px 22px 4px; position:relative;
    font-size:16px; font-weight:600; color:var(--ink); }
  .faq > summary::-webkit-details-marker{ display:none; }
  .faq > summary::after{ content:"+"; position:absolute; right:8px; top:20px; font-size:22px; font-weight:400;
    color:var(--sage); transition:transform .25s ease; }
  .faq[open] > summary::after{ transform:rotate(45deg); }
  .faq > div{ padding:0 44px 24px 4px; font-size:14.5px; line-height:1.75; color:#565656; }

  .demo-grid{ display:grid; grid-template-columns:0.9fr 1.1fr; gap:52px; align-items:start; margin-top:8px; }
  @media (max-width:860px){ .demo-grid{ grid-template-columns:1fr; gap:28px; } }
  .demo-contact p{ font-size:15px; line-height:1.8; color:#4a4a4a; }
  .demo-contact .line{ margin-top:16px; font-size:14px; color:var(--ink); font-weight:600; }
  .demo-contact .line span{ display:block; font-weight:400; color:#6a6a6a; font-size:12.5px; letter-spacing:0.04em; text-transform:uppercase; margin-bottom:2px; }
  .demo-form{ background:#fff; border:1px solid rgba(12,35,26,0.12); border-radius:20px; padding:28px; }
  .demo-form label{ display:block; font-size:12.5px; font-weight:600; letter-spacing:0.03em; color:var(--ink); margin:14px 0 6px; }
  .demo-form label:first-child{ margin-top:0; }
  .demo-form input, .demo-form select, .demo-form textarea{ width:100%; font:inherit; font-size:14px; color:var(--text-dark);
    padding:11px 13px; border:1px solid rgba(12,35,26,0.2); border-radius:10px; background:#fbfcfb; }
  .demo-form input:focus, .demo-form select:focus, .demo-form textarea:focus{ outline:2px solid var(--lime); outline-offset:1px; border-color:transparent; }
  .demo-form textarea{ min-height:96px; resize:vertical; }
  .demo-form .btn{ margin-top:20px; width:100%; justify-content:center; }
  .demo-form .note{ margin-top:14px; font-size:12px; color:#8a8a8a; line-height:1.6; }

  .branch-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:12px; }
  @media (max-width:900px){ .branch-grid{ grid-template-columns:1fr 1fr; } }
  @media (max-width:620px){ .branch-grid{ grid-template-columns:1fr; } }
  .branch{ background:#fff; border:1px solid rgba(12,35,26,0.12); border-radius:18px; padding:24px 22px; }
  .branch .zone{ font-size:12px; font-weight:700; letter-spacing:0.05em; text-transform:uppercase; color:var(--sage); }
  .branch h3{ margin-top:6px; font-size:19px; color:var(--ink); font-weight:600; }
  .branch p{ margin-top:12px; font-size:13.5px; line-height:1.65; color:#565656; }
  .branch p.kv{ margin-top:8px; }
  .branch p.kv b{ color:var(--ink); font-weight:600; }

  .report-list{ max-width:900px; margin:8px auto 0; }
  .report{ display:flex; align-items:center; justify-content:space-between; gap:18px;
    padding:18px 4px; border-top:1px solid rgba(12,35,26,0.14); }
  .report:last-child{ border-bottom:1px solid rgba(12,35,26,0.14); }
  .report .co{ font-size:15px; font-weight:600; color:var(--ink); }
  .report .co span{ display:block; font-size:12px; font-weight:600; letter-spacing:0.04em; color:var(--sage); margin-top:2px; }
  .report .view{ flex:none; font-size:13px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; }
  .report .view svg{ width:13px; height:13px; }

  .contact-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:12px; }
  @media (max-width:820px){ .contact-cols{ grid-template-columns:1fr; } }
  .contact-card{ background:#fff; border:1px solid rgba(12,35,26,0.12); border-radius:18px; padding:24px 22px; }
  .contact-card h3{ font-size:13px; font-weight:700; letter-spacing:0.05em; text-transform:uppercase; color:var(--sage); }
  .contact-card p{ margin-top:12px; font-size:14px; line-height:1.7; color:#4a4a4a; }
  .contact-card a{ color:var(--ink); font-weight:600; }
  .contact-card a:hover{ color:var(--ink-2); }

  /* ---------- primary nav: pills, active highlight, About dropdown ---------- */
  nav.nav-links{ gap:4px; }
  nav.nav-links > a,
  nav.nav-links .nav-about-btn{
    font:inherit; font-size:15px; font-weight:500; color:var(--text-dark);
    display:inline-flex; align-items:center; gap:6px;
    padding:9px 14px; border:0; border-radius:999px; background:transparent; cursor:pointer;
    line-height:1; white-space:nowrap;
    transition:background .18s ease, color .18s ease;
  }
  nav.nav-links > a:hover,
  nav.nav-links .nav-about:hover .nav-about-btn,
  nav.nav-links .nav-about:focus-within .nav-about-btn{ background:rgba(5,71,36,0.06); color:var(--ink); }
  nav.nav-links > a[aria-current="page"],
  nav.nav-links .nav-about.is-current .nav-about-btn{
    background:rgba(132,202,35,0.20); color:var(--ink); font-weight:600;
  }
  nav.nav-links .nav-about{ position:relative; }
  nav.nav-links .nav-about-btn svg{ width:11px; height:11px; transition:transform .2s ease; }
  nav.nav-links .nav-about:hover .nav-about-btn svg,
  nav.nav-links .nav-about:focus-within .nav-about-btn svg,
  nav.nav-links .nav-about.is-open .nav-about-btn svg{ transform:rotate(180deg); }
  nav.nav-links .nav-dropdown{
    position:absolute; top:calc(100% + 10px); left:0; min-width:236px;
    background:#fff; border:1px solid rgba(12,35,26,0.12); border-radius:14px;
    box-shadow:0 22px 46px -22px rgba(0,0,0,0.4); padding:8px;
    display:flex; flex-direction:column; gap:2px;
    opacity:0; visibility:hidden; transform:translateY(-6px);
    transition:opacity .18s ease, transform .18s ease, visibility .18s; z-index:60;
  }
  nav.nav-links .nav-about:hover .nav-dropdown,
  nav.nav-links .nav-about:focus-within .nav-dropdown,
  nav.nav-links .nav-about.is-open .nav-dropdown{ opacity:1; visibility:visible; transform:translateY(0); }
  nav.nav-links .nav-dropdown a{
    font-size:14px; font-weight:500; color:var(--text-dark);
    padding:9px 12px; border-radius:9px; white-space:nowrap; letter-spacing:0;
  }
  nav.nav-links .nav-dropdown a:hover{ background:rgba(132,202,35,0.14); color:var(--ink); }
  nav.nav-links .nav-dropdown a[aria-current="page"]{ background:rgba(132,202,35,0.22); color:var(--ink); font-weight:600; }

  .footer-legal p{ margin:0; }
  .footer-legal p + p{ margin-top:6px; }
  .footer-legal p strong{ color:var(--text-dim); font-weight:600; letter-spacing:0.02em; }
  .footer-legal a{ color:var(--text-dim); }
  .footer-legal a:hover{ color:var(--lime); }
  .footer-legal .footer-policies{ margin-top:10px; }

  /* product sub-pages: alt services background + "Find out more" contact row */
  .services.services-alt{ background:#f4f6f3; padding-bottom:72px; }
  .find-more{ display:flex; gap:44px; flex-wrap:wrap; justify-content:center; margin-top:30px; }
  .find-more a{ font-weight:700; color:var(--ink); font-size:16px; display:inline-flex; align-items:center; gap:9px; }
  .find-more a:hover{ color:var(--ink-2); }
  .find-more svg{ width:16px; height:16px; }
  @media (max-width:560px){ .find-more{ gap:20px; } }

  /* "Talk to Greenwich" modal */
  .talk-modal{ position:fixed; inset:0; z-index:200; display:none; }
  .talk-modal.is-open{ display:block; }
  .talk-modal__backdrop{ position:absolute; inset:0; background:rgba(5,20,12,0.55); backdrop-filter:blur(2px); }
  .talk-modal__panel{
    position:relative; margin:6vh auto 0; max-width:460px; width:calc(100% - 32px);
    background:#fff; border-radius:20px; padding:28px 26px 26px;
    box-shadow:0 40px 90px -30px rgba(0,0,0,0.5);
    max-height:88vh; overflow-y:auto;
    animation:talkIn .22s cubic-bezier(.16,1,.3,1);
  }
  @keyframes talkIn{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
  .talk-modal__close{
    position:absolute; top:14px; right:14px; width:34px; height:34px; border:0; border-radius:50%;
    background:rgba(12,35,26,0.06); color:var(--ink); font-size:18px; line-height:1; cursor:pointer;
  }
  .talk-modal__close:hover{ background:rgba(12,35,26,0.14); }
  .talk-modal h3{ font-size:22px; color:var(--ink); font-weight:600; }
  .talk-modal > .talk-modal__panel > p.sub{ margin:8px 0 4px; font-size:14px; line-height:1.6; color:#5a5a5a; }
  .talk-modal .demo-form{ border:0; padding:0; background:transparent; }
  @media (prefers-reduced-motion: reduce){ .talk-modal__panel{ animation:none; } }
  /* Forminator forms embedded in the modal / contact pages */
  .talk-modal__panel .forminator-ui,
  .demo-grid .forminator-ui{ font-family:inherit !important; margin-top:6px; }
  .talk-modal__panel .forminator-ui .forminator-field input,
  .talk-modal__panel .forminator-ui .forminator-field select,
  .talk-modal__panel .forminator-ui .forminator-field textarea,
  .demo-grid .forminator-ui .forminator-field input,
  .demo-grid .forminator-ui .forminator-field select,
  .demo-grid .forminator-ui .forminator-field textarea{ max-width:100%; box-sizing:border-box; }
  .talk-modal__panel .forminator-ui .forminator-pagination-steps,
  .demo-grid .forminator-ui .forminator-pagination-steps{ display:none; }
  .talk-modal__panel .forminator-ui .forminator-label,
  .talk-modal__panel .forminator-ui label,
  .talk-modal__panel .forminator-ui .forminator-label span,
  .demo-grid .forminator-ui .forminator-label,
  .demo-grid .forminator-ui label{ color:var(--ink) !important; font-size:13px !important; font-weight:600 !important; }
  .talk-modal__panel .forminator-ui .forminator-row{ margin-bottom:14px !important; }
  .talk-modal__panel .forminator-ui .forminator-field{ margin-bottom:0 !important; }
  .talk-modal__panel .forminator-ui .forminator-button-submit{ margin-top:4px; }

  /* Digital Platforms page: G-EASE app feature band (opt-in via .cta-gease) */
  .cta-band.cta-gease{ position:relative; overflow:hidden; text-align:left; padding:0; }
  .cta-band.cta-gease .shell{
    display:grid; grid-template-columns:1.15fr 0.85fr; gap:40px; align-items:center;
    padding:72px 32px; position:relative; z-index:1;
  }
  .cta-band.cta-gease .cta-copy h2{ max-width:16ch; margin:0; }
  .cta-band.cta-gease .cta-copy p{ margin:16px 0 0; max-width:42ch; }
  .cta-band.cta-gease .cta-copy .btn{ margin-top:26px; }
  .cta-band.cta-gease .cta-phone{ justify-self:center; width:100%; }

  /* G-Ease app carousel on the Digital Platforms page — same component as the
     home page, but this instance sits on the LIGHT (lime) .cta-gease band, so
     the controls need dark styling. Scoped to .cta-gease so it does NOT override
     the home page's dark-background version. */
  .cta-gease .app-carousel{ margin-top:0; position:relative; z-index:1; }
  .cta-gease .app-carousel-stage{ position:relative; height:540px; perspective:1600px; }
  .cta-gease .app-carousel-slide{
    position:absolute; top:50%; left:50%; width:230px; height:500px;
    opacity:0; pointer-events:none; cursor:pointer;
    transition:transform 0.85s cubic-bezier(0.16,1,0.3,1), opacity 0.85s cubic-bezier(0.16,1,0.3,1);
    will-change:transform, opacity;
  }
  .cta-gease .app-carousel-slide[data-index="0"]{ opacity:1; pointer-events:auto; transform:translate(-50%,-50%); z-index:5; }
  .cta-gease .app-phone-frame{
    width:100%; height:100%; background:#0a0f0c; border-radius:34px; padding:10px;
    box-shadow:0 30px 70px -20px rgba(0,0,0,0.6), inset 0 0 0 1.5px rgba(255,255,255,0.08);
  }
  .cta-gease .app-phone-frame img{ width:100%; height:100%; object-fit:cover; border-radius:26px; display:block; }
  .cta-gease .app-carousel-controls{ display:flex; align-items:center; justify-content:center; gap:22px; margin-top:16px; }
  .cta-gease .app-carousel-arrow{
    width:38px; height:38px; border-radius:50%; border:1px solid rgba(12,35,26,0.25);
    background:rgba(12,35,26,0.06); color:var(--ink); display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition:background 0.2s ease, transform 0.15s ease; flex:0 0 auto;
  }
  .cta-gease .app-carousel-arrow:hover{ background:rgba(12,35,26,0.14); }
  .cta-gease .app-carousel-arrow:active{ transform:scale(0.92); }
  .cta-gease .app-carousel-arrow svg{ width:15px; height:15px; }
  .cta-gease .app-carousel-dots{ display:flex; gap:9px; }
  .cta-gease .app-carousel-dots .dot{
    width:8px; height:8px; border-radius:50%; background:rgba(12,35,26,0.25);
    border:none; padding:0; cursor:pointer; transition:background 0.3s ease, transform 0.3s ease;
  }
  .cta-gease .app-carousel-dots .dot.is-active{ background:var(--ink); transform:scale(1.4); }
  .cta-gease .app-carousel-caption{ margin:14px 0 0; font-size:14px; font-weight:600; color:rgba(12,35,26,0.75); text-align:center; letter-spacing:0.01em; min-height:1.4em; }

  @media (max-width:820px){
    .cta-band.cta-gease{ text-align:center; }
    .cta-band.cta-gease .shell{ grid-template-columns:1fr; gap:20px; padding:52px 20px; }
    .cta-band.cta-gease .cta-copy h2, .cta-band.cta-gease .cta-copy p{ margin-left:auto; margin-right:auto; }
    .cta-gease .app-carousel-stage{ height:430px; }
    .cta-gease .app-carousel-slide{ width:190px; height:413px; }
  }

/* ============================================================
   WORDPRESS GLUE
   ============================================================ */
.gw-main { display: block; }
.admin-bar .site-nav { top: 32px; }
@media screen and (max-width: 782px) { .admin-bar .site-nav { top: 46px; } }

/* Primary nav also works when output by wp_nav_menu() (a <ul>) */
nav.nav-links ul { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 30px; }
nav.nav-links li { margin: 0; }
nav.nav-links ul a { font-size: 15px; font-weight: 500; color: var(--text-dark); }
nav.nav-links ul a:hover { color: var(--ink); }

/* Fallback: never leave scroll-reveal content hidden if JS is disabled */
@media (scripting: none) {
  .reveal { opacity: 1 !important; transform: none !important; }
}
