/* Platinum public site. Extracted from the old index.html so index.php stays
   readable and the browser can cache it. */
  :root{
    --abyss:#050D1A; --deep:#081426; --hull:#0E2138;
    --line:rgba(120,160,190,.14); --line-2:rgba(120,160,190,.28);
    --teal:#12B5A6; --aqua:#35DDE6; --emerald:#34D39A;
    --foam:#EAF3F8; --mist:#8FA6B9; --mute:#5C7488;
    /* One family throughout: Roboto for text and headings, Roboto Mono for
       figures, addresses and timestamps. Both are variable faces, so --disp
       differs from --sans by weight and letter-spacing, not by typeface. */
    --sans:'Roboto',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
    --disp:var(--sans);
    --mono:'Roboto Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
    --wrap:1200px;
  }
  *{box-sizing:border-box;margin:0;padding:0}

  /* Native scrollbars arrive white against this palette. color-scheme:dark is
     the load-bearing line -- it darkens every control the browser paints
     itself, not just the bar -- and the -webkit rules do the rest for Chrome
     and Safari, which ignore scrollbar-color. Kept identical in _layout.php
     and library.php. */
  html{color-scheme:dark;scrollbar-width:thin;scrollbar-color:rgba(120,160,190,.32) transparent}
  *::-webkit-scrollbar{width:11px;height:11px}
  *::-webkit-scrollbar-track{background:transparent}
  *::-webkit-scrollbar-thumb{background:rgba(120,160,190,.28);border-radius:8px;
                             border:3px solid transparent;background-clip:content-box}
  *::-webkit-scrollbar-thumb:hover{background:rgba(18,181,166,.7);border:3px solid transparent;
                                   background-clip:content-box}
  *::-webkit-scrollbar-corner{background:transparent}

  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto} .orb,.blob{animation:none} .pad::after{animation:none;opacity:.38}}
  body{background:var(--abyss);color:var(--foam);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
  a{color:inherit;text-decoration:none}
  .wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
  ::selection{background:var(--teal);color:var(--abyss)}
  :focus-visible{outline:2px solid var(--aqua);outline-offset:3px;border-radius:6px}
  .btn{font-family:var(--sans);font-weight:600;font-size:15px;cursor:pointer;border:none;border-radius:100px;padding:12px 24px;transition:transform .16s,box-shadow .2s,border-color .2s,color .2s;display:inline-flex;align-items:center;gap:9px}
  .btn-primary{background:linear-gradient(115deg,var(--teal),var(--aqua));color:#031015;box-shadow:0 6px 26px -10px var(--teal)}
  .btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 34px -10px var(--aqua)}
  .btn-ghost{background:transparent;color:var(--foam);border:1px solid var(--line-2)}
  .btn-ghost:hover{border-color:var(--teal);color:var(--aqua)}

  /* ---------- Nav ---------- */
  header{position:sticky;top:0;z-index:80;backdrop-filter:blur(14px);background:rgba(5,13,26,.72)}
  .to-top{position:fixed;right:22px;bottom:22px;width:46px;height:46px;border:none;border-radius:50%;background:linear-gradient(115deg,var(--teal),var(--aqua));color:#031015;cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 26px rgba(0,0,0,.45);opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s ease,transform .25s ease,visibility .25s;z-index:60}
  .to-top.show{opacity:1;visibility:visible;transform:none}
  .to-top:hover{filter:brightness(1.08)}
  .to-top:focus-visible{outline:2px solid var(--aqua);outline-offset:3px}
  @media(max-width:560px){.to-top{right:16px;bottom:16px;width:42px;height:42px}}
  .nav{display:flex;align-items:center;justify-content:space-between;height:72px}
  .brand{display:flex;align-items:center;gap:12px;font-family:var(--disp);font-weight:600;letter-spacing:.02em}
  .brand .mark{width:30px;height:30px;flex:0 0 auto}
  .brand b{font-size:20px}.brand span{color:var(--mist);font-weight:400;font-size:13px;font-family:var(--sans)}
  nav.links{display:flex;align-items:center;gap:32px}
  /* :not(.btn) matters here. `nav.links a` is more specific than
     `.btn-primary`, so without it the call-to-action button in the header took
     the nav link colour and rendered pale grey-blue on the teal gradient. */
  nav.links a:not(.btn){color:var(--mist);font-size:15px;transition:color .18s}
  nav.links a:not(.btn):hover{color:var(--foam)}
  .menu-btn{display:none;background:none;border:1px solid var(--line-2);border-radius:10px;padding:8px 11px;color:var(--foam);cursor:pointer;font-size:16px}

  /* ---------- Wave divider ---------- */
  .wave{line-height:0;position:relative;margin-top:-1px}
  .wave svg{display:block;width:100%;height:70px}
  .wave.to-deep{color:var(--deep)} .wave.to-abyss{color:var(--abyss)}
  .wave path{fill:currentColor}

  /* ---------- Hero slider ---------- */
  .hero{position:relative;overflow:hidden;background:radial-gradient(130% 90% at 50% -10%,#0a1f38,var(--abyss) 60%)}
  .orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.5;pointer-events:none;z-index:0;animation:drift 26s ease-in-out infinite}
  .orb.a{width:420px;height:420px;background:radial-gradient(circle,rgba(18,181,166,.5),transparent 65%);top:-120px;left:-90px;--dx:70px;--dy:50px}
  .orb.b{width:520px;height:520px;background:radial-gradient(circle,rgba(53,221,230,.28),transparent 65%);top:40px;right:-160px;--dx:-60px;--dy:44px;animation-duration:34s;animation-delay:-8s}
  .slides{position:relative;display:grid;grid-template-rows:1fr;min-height:min(86vh,760px)}
  /* Inactive slides are hidden, not just transparent — their buttons must stay out of the tab order. */
  .slide{grid-area:1/1;position:relative;opacity:0;visibility:hidden;transition:opacity .7s ease,visibility 0s linear .7s;pointer-events:none;display:grid;place-items:center;overflow:hidden}
  .slide.active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .7s ease,visibility 0s}
  .slide-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
  .slide::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(125% 135% at 50% 44%,rgba(5,13,26,.34),rgba(5,13,26,.82)),linear-gradient(180deg,rgba(5,13,26,.85),rgba(5,13,26,.55) 46%,rgba(5,13,26,.98)),radial-gradient(75% 92% at 28% 32%,rgba(18,181,166,.22),transparent 55%)}
  .slide-inner{position:relative;z-index:3;text-align:center;max-width:840px;margin:0 auto;padding:104px 28px 128px}
  .eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:13px;color:var(--aqua);margin-bottom:22px;border:1px solid var(--line-2);border-radius:100px;padding:7px 15px;background:rgba(5,13,26,.4);backdrop-filter:blur(6px)}
  .eyebrow .pip{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 9px var(--teal)}
  .slide h1{font-family:var(--disp);font-weight:600;font-size:clamp(2.8rem,6.6vw,5rem);line-height:1.02;letter-spacing:-.02em;margin-bottom:22px;text-shadow:0 2px 30px rgba(0,0,0,.5)}
  .slide p{font-size:clamp(1.05rem,2.2vw,1.3rem);color:#d3dee8;max-width:60ch;margin:0 auto 34px;text-shadow:0 1px 16px rgba(0,0,0,.5)}
  .slide-cta{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
  .slide .blob{z-index:2}
  /* slider controls */
  .dots{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:6;display:flex;gap:10px}
  .dot{width:32px;height:4px;border-radius:4px;border:none;background:rgba(234,243,248,.35);cursor:pointer;transition:background .2s,width .2s;padding:0}
  .dot.on{background:linear-gradient(90deg,var(--teal),var(--aqua));width:52px}
  .arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:46px;height:46px;border-radius:50%;border:1px solid var(--line-2);background:rgba(5,13,26,.45);backdrop-filter:blur(8px);color:var(--foam);cursor:pointer;display:grid;place-items:center;transition:.16s}
  .arrow:hover{border-color:var(--teal);color:var(--aqua);background:rgba(5,13,26,.72)}
  .arrow-l{left:22px}.arrow-r{right:22px}
  .hero-edge{position:absolute;left:0;right:0;z-index:5;line-height:0;pointer-events:none}
  .hero-edge svg{display:block;width:100%;height:120px}
  .hero-edge.top{top:-1px}
  .hero-edge.bottom{bottom:-1px}

  /* ---------- Section base ---------- */
  section{position:relative}
  .pad{padding:96px 0;overflow:hidden}
  .pad>.wrap{position:relative;z-index:2}
  .pad::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(70% 60% at 16% -12%,rgba(var(--fx,53,221,230),.13),transparent 60%),radial-gradient(62% 66% at 104% 16%,rgba(var(--fx,53,221,230),.08),transparent 55%)}
  .pad::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(rgba(var(--fx,53,221,230),.18) 1.3px,transparent 1.5px);background-size:30px 30px;background-position:0 0;opacity:.5;animation:pan 60s linear infinite;-webkit-mask:radial-gradient(120% 90% at 50% 30%,#000 12%,transparent 74%);mask:radial-gradient(120% 90% at 50% 30%,#000 12%,transparent 74%)}
  .fx-teal{--fx:18,181,166}
  .fx-aqua{--fx:53,221,230}
  .fx-emerald{--fx:52,211,154}
  .blob{position:absolute;z-index:0;border-radius:50%;filter:blur(72px);opacity:.34;pointer-events:none;animation:drift 24s ease-in-out infinite}
  @keyframes pan{to{background-position:30px 30px}}
  @keyframes drift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(var(--dx,60px),var(--dy,-40px)) scale(1.18)}}
  .bg-deep{background:var(--deep)}
  .sec-head{max-width:660px;margin-bottom:52px}
  .sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
  .kicker{font-family:var(--mono);font-size:13px;color:var(--teal);margin-bottom:15px}
  h2{font-family:var(--disp);font-weight:600;font-size:clamp(2rem,4.4vw,3rem);line-height:1.06;letter-spacing:-.015em;margin-bottom:18px}
  .sec-head p{color:var(--mist);font-size:1.08rem}

  /* ---------- About ---------- */
  .about-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
  .about-grid p.lead{color:var(--mist);font-size:1.06rem;margin-bottom:24px}
  .about-media{position:relative;border:1px solid var(--line-2);border-radius:20px;overflow:hidden;line-height:0}
  .about-media img{width:100%;height:auto;display:block;filter:saturate(.95) brightness(.88)}
  .about-media::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(155deg,rgba(18,181,166,.18),transparent 52%,rgba(5,13,26,.55))}
  .caps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:46px}
  .cap{display:flex;gap:16px;align-items:flex-start;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--abyss)}
  .cap .ic{color:var(--aqua);flex:0 0 auto;margin-top:2px}
  .cap b{font-family:var(--disp);font-weight:500;display:block;margin-bottom:3px}
  .cap span{color:var(--mist);font-size:.95rem}

  /* ---------- Feature duo ---------- */
  .duo{display:grid;grid-template-columns:1fr 1fr;gap:24px}
  .feature{position:relative;border:1px solid var(--line-2);border-radius:20px;overflow:hidden;background:linear-gradient(160deg,var(--hull),var(--deep));transition:transform .2s,border-color .2s}
  .feature:hover{transform:translateY(-3px);border-color:var(--teal)}
  .feature-media{position:relative;height:210px;overflow:hidden}
  .feature-media img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.95) brightness(.9)}
  .feature-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,181,166,.12),transparent 35%,var(--hull))}
  .feature-body{padding:8px 36px 38px}
  .feature h3{font-family:var(--disp);font-weight:600;font-size:1.55rem;margin:6px 0 12px}
  .feature p{color:var(--mist);margin-bottom:22px;font-size:1rem}
  .feature .more{color:var(--aqua);font-weight:600;font-size:14.5px;font-family:var(--mono)}

  /* ---------- Solutions trio ---------- */
  .trio{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
  .sol{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--deep);transition:transform .2s,border-color .2s}
  .sol:hover{transform:translateY(-3px);border-color:var(--line-2)}
  .sol .cap-img{position:relative;height:158px;overflow:hidden;border-bottom:1px solid var(--line)}
  .sol .cap-img img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.95) brightness(.88)}
  .sol .cap-img::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(18,181,166,.16),transparent 50%,rgba(8,20,38,.55))}
  .sol .body{padding:24px}
  .sol h4{font-family:var(--disp);font-weight:500;font-size:1.25rem;margin-bottom:8px}
  .sol p{color:var(--mist);font-size:.96rem}

  /* ---------- Services icon grid ---------- */
  .svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:20px;overflow:hidden}
  .svc-cell{background:var(--deep);transition:background .2s}
  .svc-cell:hover{background:var(--hull)}
  .svc-media{position:relative;height:150px;overflow:hidden;border-bottom:1px solid var(--line)}
  .svc-media img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.9) brightness(.78);transition:transform .45s ease}
  .svc-cell:hover .svc-media img{transform:scale(1.04)}
  .svc-media::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(160deg,rgba(18,181,166,.2),transparent 55%,rgba(8,20,38,.6))}
  .svc-body{padding:26px 30px 32px}
  .svc-cell .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:var(--aqua);border:1px solid var(--line-2);margin-bottom:20px}
  .svc-cell h4{font-family:var(--disp);font-weight:500;font-size:1.22rem;margin-bottom:10px}
  .svc-cell p{color:var(--mist);font-size:.96rem;max-width:38ch}

  /* ---------- CTA band ---------- */
  .cta{position:relative;text-align:center;overflow:hidden;background:radial-gradient(90% 130% at 50% 0,rgba(18,181,166,.16),transparent 60%)}
  /* The photo sits behind its own overlay rather than on .cta::after, because
     .pad::before/::after already own this element's pseudo-elements. */
  .cta-bg{position:absolute;inset:0;z-index:0;pointer-events:none;line-height:0}
  .cta-bg img{width:100%;height:100%;object-fit:cover;display:block;opacity:.3;filter:saturate(.7)}
  .cta-bg::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,var(--abyss),rgba(5,13,26,.62) 45%,var(--abyss)),
               radial-gradient(85% 120% at 50% 0,rgba(18,181,166,.22),transparent 62%)}
  .cta h2{max-width:18ch;margin:0 auto 16px}
  .cta p{color:var(--mist);max-width:52ch;margin:0 auto 30px}
  .cta .row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
  .cform{max-width:560px;margin:0 auto;text-align:left;display:grid;gap:14px}
  .cform .f2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .cform label{font-size:13px;color:var(--mist);margin-bottom:6px;display:block}
  .cform input,.cform textarea{width:100%;background:var(--abyss);border:1px solid var(--line-2);border-radius:12px;color:var(--foam);font-family:var(--sans);font-size:15px;padding:12px 14px}
  .cform input:focus,.cform textarea:focus{outline:none;border-color:var(--teal)}
  .cform textarea{min-height:110px;resize:vertical}
  .hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
  .cform .sub-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:center;margin-top:4px}
  .form-msg{font-size:14px;color:var(--aqua);min-height:1.2em;margin:0}
  @media(max-width:560px){.cform .f2{grid-template-columns:1fr}}

  /* ---------- "I'm not a robot" (captcha.js) ----------
     Drawn like one of the form's own fields, so it reads as part of the form
     rather than something bolted on. The state lives in data-state, which
     captcha.js sets: idle -> working (the box turns into a spinner) -> done. */
  .hcheck{display:flex;align-items:center;gap:12px;background:var(--abyss);border:1px solid var(--line-2);border-radius:12px;padding:11px 14px;transition:border-color .2s,box-shadow .2s}
  .hcheck .hc-box{flex:0 0 auto;position:relative;width:24px;height:24px;padding:0;border:2px solid var(--line-2);border-radius:7px;background:transparent;cursor:pointer;transition:border-color .18s,background .18s}
  .hcheck .hc-box:hover{border-color:var(--teal)}
  .hcheck .hc-box:focus-visible{outline:2px solid var(--aqua);outline-offset:3px}
  /* .cform label is a block with a bottom margin; this one sits on the line. */
  .hcheck .hc-label{display:inline;margin:0;font-size:15px;color:var(--foam);cursor:pointer;user-select:none}
  .hcheck .hc-state{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--mist);text-align:right}
  .hcheck[data-state="working"] .hc-box{border-color:var(--line-2);border-top-color:var(--aqua);border-radius:50%;cursor:progress;animation:hc-spin .8s linear infinite}
  .hcheck[data-state="done"]{border-color:rgba(52,211,154,.45)}
  .hcheck[data-state="done"] .hc-box{background:var(--emerald);border-color:var(--emerald);cursor:default}
  .hcheck[data-state="done"] .hc-box::after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid #031015;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
  .hcheck[data-state="done"] .hc-state{color:var(--emerald)}
  .hcheck[data-state="error"] .hc-box{border-color:#ff8a85}
  .hcheck[data-state="error"] .hc-state{color:#ff8a85}
  .hcheck.hc-nudge{border-color:var(--aqua);box-shadow:0 0 0 3px rgba(53,221,230,.16);animation:hc-nudge 1.1s ease}
  @keyframes hc-spin{to{transform:rotate(360deg)}}
  @keyframes hc-nudge{0%,100%{box-shadow:0 0 0 3px rgba(53,221,230,.16)}35%{box-shadow:0 0 0 7px rgba(53,221,230,.3)}}
  @media (prefers-reduced-motion:reduce){.hcheck[data-state="working"] .hc-box{animation-duration:2.4s} .hcheck.hc-nudge{animation:none}}

  /* ---------- Platforms tabs ---------- */
  .tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:34px}
  .tab{font-family:var(--sans);font-size:14.5px;cursor:pointer;background:transparent;color:var(--mist);border:1px solid var(--line-2);border-radius:100px;padding:10px 18px;transition:.16s}
  .tab:hover{color:var(--foam)}
  .tab.on{background:linear-gradient(115deg,var(--teal),var(--aqua));color:#031015;border-color:transparent;font-weight:600}
  .plat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
  .plat{border:1px solid var(--line);border-radius:14px;background:var(--abyss);padding:22px;text-align:center}
  .plat .n{font-family:var(--disp);font-weight:500;font-size:1.02rem;margin-bottom:4px}
  .plat .k{font-family:var(--mono);font-size:11.5px;color:var(--mute)}

  /* ---------- Newsletter ---------- */
  .news{position:relative;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--deep)}
  /* Vertical padding only. This was `padding:44px 0`, which outranks .wrap's own
     side padding and set it to nothing: the band sat ~28px left of every other
     section on a desktop and ran into the screen edges on a phone. */
  .news .inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr auto;gap:30px;align-items:center;padding-top:44px;padding-bottom:44px}
  .news h3{font-family:var(--disp);font-weight:500;font-size:1.5rem;margin-bottom:6px}
  .news p{color:var(--mist);font-size:.98rem}
  .sub{display:flex;flex-wrap:wrap;gap:12px;min-width:min(440px,80vw)}
  .sub input{flex:1;background:var(--abyss);border:1px solid var(--line-2);border-radius:100px;color:var(--foam);font-family:var(--sans);font-size:15px;padding:13px 20px}
  .sub input:focus{outline:none;border-color:var(--teal)}
  /* Between the field and the button in the markup, so the tab order is email,
     tick, subscribe. On a wide screen it drops to a line of its own under both;
     on a phone the form is a column and it stays where the markup puts it. */
  .sub .hcheck{order:3;flex:1 0 100%;border-radius:100px;padding:9px 18px}

  /* ---------- Partners / logos ---------- */
  .partners{position:relative;overflow:hidden;background:var(--abyss);padding:88px 0}
  .partners .wrap{position:relative;z-index:2}
  .partners .sec-head{text-align:center;margin:0 auto 46px}
  .plogos{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;max-width:980px;margin:0 auto}
  .plogo{display:flex;flex-direction:column;align-items:center;gap:14px;padding:28px 16px;border:1px solid var(--line);border-radius:16px;background:var(--deep);transition:border-color .2s,transform .2s,background .2s}
  .plogo:hover{border-color:var(--line-2);transform:translateY(-3px);background:var(--hull)}
  .plogo svg{width:42px;height:42px;filter:grayscale(1);opacity:.7;transition:filter .25s,opacity .25s}
  .plogo:hover svg{filter:none;opacity:1}
  .plogo span{font-family:var(--mono);font-size:12.5px;color:var(--mist)}
  .plogo-note{text-align:center;color:var(--mute);font-size:12px;font-family:var(--mono);margin-top:26px}

  /* The footer lives in footer.css -- the private library links the same file,
     so the address and the copyright line look identical on both pages. */

  /* ---------- Responsive ---------- */
  @media (max-width:920px){
    .about-grid{grid-template-columns:1fr;gap:36px}
    .caps{margin-top:34px}
    .slides{min-height:min(80vh,620px)}
    .svc-grid{grid-template-columns:repeat(2,1fr)}
    .plat-grid{grid-template-columns:repeat(2,1fr)}
    .plogos{grid-template-columns:repeat(3,1fr)}
    nav.links{display:none}
    .menu-btn{display:inline-flex}
    nav.links.open{display:flex;position:absolute;top:72px;left:0;right:0;flex-direction:column;gap:0;align-items:stretch;background:rgba(8,20,38,.98);backdrop-filter:blur(16px);border-bottom:1px solid var(--line-2);padding:6px 0 18px;box-shadow:0 26px 46px -22px rgba(0,0,0,.75)}
    nav.links.open a{padding:15px 28px;border-top:1px solid var(--line);width:100%;color:var(--foam);font-size:16px}
    nav.links.open .btn{width:calc(100% - 40px);margin:16px 20px 0;justify-content:center}
  }
  @media (max-width:720px){
    /* 16px, not smaller: iOS zooms the whole page in when a control under 16px
       takes focus, so a 15px contact field turns the form into a slice of a
       page. Named this specifically because a media query adds no specificity
       of its own -- a bare `input` rule here would lose to `.cform input`. */
    .cform input,.cform textarea,.sub input{font-size:16px}
    .pad{padding:68px 0}
    .duo,.trio{grid-template-columns:1fr}
    .svc-grid{grid-template-columns:1fr}
    .caps{grid-template-columns:1fr}
    .svc-media{height:170px}
    .news .inner{grid-template-columns:1fr;gap:20px}
    .sub{flex-direction:column;min-width:0;width:100%}
    .sub input{min-width:0;width:100%}
    .sub .hcheck{order:0;flex:0 0 auto}
    .sub .btn{width:100%}
    .plogos{grid-template-columns:repeat(2,1fr)}
    .wrap{padding:0 20px}
    .slides{min-height:min(88vh,560px)}
    .slide-inner{padding:92px 20px 92px}
    .slide h1{font-size:clamp(2rem,7.6vw,2.6rem)}
    .slide p{font-size:1.02rem;margin-bottom:28px}
    .hero-edge svg{height:56px}
    .arrow{width:38px;height:38px}
    .arrow-l{left:8px}.arrow-r{right:8px}
    .sec-head{margin-bottom:38px}
  }
  @media (max-width:400px){
    .brand span{display:none}
    .slide h1{font-size:2rem}
    .eyebrow{font-size:12px;margin-bottom:16px}
    .plogos{gap:12px}
    .plogo{padding:22px 10px}
    .plogo svg{width:36px;height:36px}
    .arrow{display:none}
  }
