/*
Theme Name: Dynatek
Theme URI: https://www.dynatek.co.za
Author: DynamoLabs
Author URI: https://www.dynamolabs.co.za
Description: Dynatek (Pty) Ltd corporate website. Custom theme, no page builder, no bundled plugins. Enquiries are handled by the standalone /api/enquiry.php handler.
Version: 1.4.1
Requires at least: 6.4
Requires PHP: 7.4
License: Proprietary
Text Domain: dynatek
*/
/* ═══════════════════════ DESIGN TOKENS ═══════════════════════ */
:root{
  --bg:   #111113;
  --d2:   #18181B;
  --d3:   #222226;
  --d4:   #2A2A2F;
  --gold: #E8A020;
  --gl:   #FFD966;
  --gd:   #B8720A;
  --sv:   #A0A0AA;
  --mid:  #666672;
  --pcb:  #00CC66;
  --blue: #4FC3F7;
  --iot:  #FF9F0A;
  --white:#FFFFFF;
  --border:rgba(232,160,32,0.15);
  --bdim: rgba(255,255,255,0.06);
  --grad: linear-gradient(135deg,#FFD966 0%,#E8A020 50%,#B8720A 100%);
  --r:    10px;
  --tr:   all 0.22s ease;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--white);overflow-x:hidden;line-height:1.65}

/* noise */
body::before{content:'';position:fixed;inset:0;opacity:.35;pointer-events:none;z-index:0;
  background:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E")}

/* ═══════════ NAV ═══════════ */
.site-nav{position:fixed;top:0;left:0;right:0;z-index:900;height:68px;
  display:flex;align-items:center;justify-content:space-between;padding:0 5vw;
  background:rgba(17,17,19,0.88);backdrop-filter:blur(20px) saturate(1.6);
  border-bottom:1px solid var(--bdim)}
.nlogo img{height:34px;width:auto;display:block}
.nlinks{display:flex;gap:2rem;list-style:none;align-items:center}
.nlinks a{color:var(--sv);text-decoration:none;font-family:'Syne',sans-serif;
  font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  transition:color .2s;position:relative}
.nlinks a::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:1.5px;
  background:var(--gold);transition:width .25s}
.nlinks a:hover{color:var(--gold)}
.nlinks a:hover::after{width:100%}
.ncta{padding:.44rem 1.2rem;border:1.5px solid var(--gold);border-radius:4px;
  color:var(--gold)!important;font-size:.75rem!important;transition:background .2s,color .2s!important}
.ncta:hover{background:var(--gold)!important;color:var(--bg)!important}
.ncta::after{display:none!important}

/* ═══════════ HERO ═══════════ */
.hero{min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden;padding:0}
.hgrid{position:absolute;inset:0;
  background-image:linear-gradient(rgba(0,204,102,.04) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(0,204,102,.04) 1px,transparent 1px);
  background-size:40px 40px;
  mask-image:radial-gradient(ellipse 80% 80% at 60% 50%,black 30%,transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 80% 80% at 60% 50%,black 30%,transparent 100%)}
.hglow{position:absolute;top:20%;left:-5%;width:50vw;height:60vh;
  background:radial-gradient(ellipse,rgba(232,160,32,.07) 0%,transparent 70%);pointer-events:none}
.hinner{position:relative;z-index:2;width:100%;max-width:1200px;margin:0 auto;
  padding:100px 5vw 60px;display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}

/* left copy */
.hbadge{display:inline-flex;align-items:center;gap:8px;
  background:rgba(0,204,102,.1);border:1px solid rgba(0,204,102,.22);
  color:var(--pcb);padding:5px 13px;border-radius:100px;
  font-family:'DM Mono',monospace;font-size:10px;letter-spacing:1px;margin-bottom:26px}
.hbdot{width:6px;height:6px;border-radius:50%;background:var(--pcb);animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.htitle{font-family:'Syne',sans-serif;font-size:clamp(2.6rem,5.5vw,5.2rem);
  font-weight:800;line-height:1.0;letter-spacing:-.025em;margin-bottom:22px;
  opacity:0;animation:fadeUp .8s .2s forwards}
.htitle em{font-style:normal;background:var(--grad);-webkit-background-clip:text;
  -webkit-text-fill-color:transparent;background-clip:text}
.hdesc{font-size:1.05rem;color:var(--sv);line-height:1.82;max-width:480px;
  font-weight:300;margin-bottom:32px;opacity:0;animation:fadeUp .8s .38s forwards}
.hbtns{display:flex;gap:14px;flex-wrap:wrap;opacity:0;animation:fadeUp .8s .54s forwards}
.nsub{font-family:'DM Mono',monospace;font-size:9px;color:var(--pcb);letter-spacing:1px;margin-top:-3px}

/* ─── TERMINAL WIDGET ─── */
.hterm{background:rgba(255,255,255,.03);border:1px solid var(--border);
  border-radius:var(--r);overflow:hidden;opacity:0;animation:fadeUp .8s .4s forwards}
.tbar{background:rgba(255,255,255,.05);padding:11px 15px;
  display:flex;align-items:center;gap:7px;border-bottom:1px solid var(--bdim)}
.tdot{width:10px;height:10px;border-radius:50%}
.tdot:nth-child(1){background:#FF5F57}
.tdot:nth-child(2){background:#FFBD2E}
.tdot:nth-child(3){background:#28CA41}
.ttitle{font-family:'DM Mono',monospace;font-size:10px;color:var(--mid);margin-left:6px}
.tbody{padding:20px 22px;font-family:'DM Mono',monospace;font-size:12.5px;line-height:2.1}
.tc{color:var(--mid)}.tk{color:var(--blue)}.tv{color:var(--pcb)}.ts{color:var(--gl)}.tp{color:var(--pcb)}
.tcursor{display:inline-block;width:7px;height:13px;background:var(--pcb);
  animation:blink 1s step-end infinite;vertical-align:middle;margin-left:2px}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.hstats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--bdim)}
.hstat{padding:16px 12px;text-align:center;border-right:1px solid var(--bdim)}
.hstat:last-child{border-right:none}
.hsnum{font-family:'Syne',sans-serif;font-size:22px;font-weight:800;color:var(--gold)}
.hslbl{font-size:9px;color:var(--mid);letter-spacing:.8px;margin-top:2px;font-family:'DM Mono',monospace}

/* ═══════════ COMMON ═══════════ */
section{padding:6rem 5vw;position:relative}
.container{max-width:1200px;margin:0 auto}
.slbl{font-family:'DM Mono',monospace;font-size:.68rem;color:var(--pcb);
  letter-spacing:.15em;text-transform:uppercase;margin-bottom:12px;
  display:flex;align-items:center;gap:.5rem}
.slbl::before{content:'';display:block;width:20px;height:1.5px;background:var(--pcb)}
.stitle{font-family:'Syne',sans-serif;font-size:clamp(1.9rem,3.8vw,3rem);
  font-weight:800;color:var(--white);line-height:1.1;letter-spacing:-.02em;margin-bottom:.9rem}
.stitle em{font-style:normal;background:var(--grad);-webkit-background-clip:text;
  -webkit-text-fill-color:transparent;background-clip:text}
.sdesc{font-size:1rem;color:var(--sv);line-height:1.82;font-weight:300;max-width:600px;margin-bottom:2.8rem}
.grule{border:none;border-top:1px solid var(--bdim);margin:0}
.gold-rule{width:44px;height:3px;background:var(--grad);border-radius:2px;margin-bottom:2rem}

/* ─── reveal ─── */
.d1{transition-delay:.05s}.d2{transition-delay:.15s}.d3{transition-delay:.25s}
.d4{transition-delay:.35s}.d5{transition-delay:.45s}.d6{transition-delay:.55s}

/* ═══════════ ABOUT ═══════════ */
.about-section{background:var(--d2);border-top:1px solid var(--bdim);border-bottom:1px solid var(--bdim)}
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center}
.about-text p{color:var(--sv);font-size:1rem;font-weight:300;line-height:1.85;margin-bottom:1.1rem}
.about-text p:last-child{margin-bottom:0}
.about-text strong{color:var(--gold);font-weight:500}
.id-card{padding:1.3rem 1.5rem;border:1px solid var(--border);border-left:3px solid var(--gold);
  background:rgba(232,160,32,.03);border-radius:0 var(--r) var(--r) 0;
  transition:background .2s;margin-bottom:1rem}
.id-card:last-child{margin-bottom:0}
.id-card:hover{background:rgba(232,160,32,.07)}
.id-card h3{font-family:'Syne',sans-serif;font-size:.9rem;font-weight:700;color:var(--gold);margin-bottom:.28rem}
.id-card p{font-size:.84rem;color:var(--mid);line-height:1.6}
.tag{display:inline-block;font-family:'DM Mono',monospace;font-size:.6rem;
  padding:.14rem .48rem;border-radius:2px;margin-bottom:.45rem;letter-spacing:.07em}
.t-hw{color:var(--pcb);background:rgba(0,204,102,.08);border:1px solid rgba(0,204,102,.2)}
.t-sw{color:var(--blue);background:rgba(79,195,247,.08);border:1px solid rgba(79,195,247,.18)}
.t-mob{color:var(--gold);background:rgba(232,160,32,.08);border:1px solid rgba(232,160,32,.2)}
.t-iot{color:var(--iot);background:rgba(255,159,10,.08);border:1px solid rgba(255,159,10,.2)}

/* ═══════════ CAPABILITIES ═══════════ */
.cap-section{background:var(--bg)}
.cap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5px;
  background:var(--bdim);border:1px solid var(--bdim)}
.capcard{background:var(--d2);padding:2.2rem 1.8rem;position:relative;overflow:hidden;transition:background .25s}
.capcard:hover{background:var(--d3)}
.capcard::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.capcard:hover::before{transform:scaleX(1)}
.capicon{font-size:1.6rem;margin-bottom:1rem;display:block}
.capcard h3{font-family:'Syne',sans-serif;font-size:1.05rem;font-weight:700;
  color:var(--white);margin-bottom:.6rem;letter-spacing:-.01em}
.capcard p{font-size:.85rem;color:var(--mid);line-height:1.72}
.captag{display:inline-block;margin-top:1rem;font-family:'DM Mono',monospace;
  font-size:.6rem;letter-spacing:.09em;padding:.18rem .55rem;border-radius:2px}

/* ═══════════ PRODUCTS ═══════════ */
.prod-section{background:var(--d2);border-top:1px solid var(--bdim)}
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.1rem}
.pcard{border:1px solid var(--bdim);border-radius:8px;padding:1.8rem 1.6rem;
  background:var(--bg);position:relative;overflow:hidden;transition:border-color .25s,transform .25s}
.pcard:hover{border-color:var(--border);transform:translateY(-4px)}
.pcard::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;
  background:var(--grad);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.pcard:hover::after{transform:scaleX(1)}
.pdot{width:8px;height:8px;border-radius:50%;margin-bottom:1.1rem}
.dot-g{background:var(--pcb);box-shadow:0 0 8px var(--pcb)}
.dot-b{background:var(--blue);box-shadow:0 0 8px var(--blue)}
.dot-gold{background:var(--gold);box-shadow:0 0 8px var(--gold)}
.dot-iot{background:var(--iot);box-shadow:0 0 8px var(--iot)}
.pcard h3{font-family:'Syne',sans-serif;font-size:1.02rem;font-weight:700;color:var(--white);margin-bottom:.35rem}
.ptype{font-family:'DM Mono',monospace;font-size:.6rem;color:var(--mid);letter-spacing:.09em;text-transform:uppercase;margin-bottom:.85rem}
.pcard p{font-size:.84rem;color:var(--mid);line-height:1.68}
.pbadge{display:inline-block;margin-top:.8rem;font-family:'DM Mono',monospace;
  font-size:.58rem;letter-spacing:.07em;padding:.16rem .52rem;border-radius:2px}
.b-live{color:var(--pcb);background:rgba(0,204,102,.1);border:1px solid rgba(0,204,102,.2)}
.b-plan{color:var(--iot);background:rgba(255,159,10,.1);border:1px solid rgba(255,159,10,.2)}
.b-cont{color:var(--blue);background:rgba(79,195,247,.1);border:1px solid rgba(79,195,247,.18)}
.b-wp{color:var(--gold);background:rgba(232,160,32,.1);border:1px solid rgba(232,160,32,.2)}

/* dynamo strip */
.dl-strip{margin-top:3.5rem;border:1px solid var(--border);border-radius:10px;
  padding:2.2rem 2.6rem;background:linear-gradient(135deg,rgba(232,160,32,.04) 0%,transparent 60%);
  display:grid;grid-template-columns:auto 1fr auto;gap:2.2rem;align-items:center}
.dl-name{font-family:'Syne',sans-serif;font-size:1.45rem;font-weight:800;color:var(--white)}
.dl-sub{font-size:.72rem;color:var(--mid);font-family:'DM Mono',monospace;letter-spacing:.05em}
.dl-strip p{font-size:.9rem;color:var(--sv);line-height:1.78;font-weight:300}

/* ═══════════ PLATFORMS ═══════════ */
.plat-section{background:var(--bg);border-top:1px solid var(--bdim)}
.plat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.platcard{border:1px solid var(--bdim);border-radius:8px;padding:1.6rem 1.3rem;
  background:var(--d2);text-align:center;transition:border-color .2s,transform .2s}
.platcard:hover{border-color:var(--border);transform:translateY(-3px)}
.platicon{font-size:1.6rem;margin-bottom:.8rem}
.platcard h3{font-family:'Syne',sans-serif;font-size:.88rem;font-weight:700;color:var(--white);margin-bottom:.35rem}
.platcard p{font-size:.78rem;color:var(--mid);line-height:1.62}

/* ═══════════ ISO BAND ═══════════ */
.iso-band{background:var(--d3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:3rem 5vw}
.iso-inner{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:220px 1fr;gap:3.5rem;align-items:center}
.iso-title{font-family:'Syne',sans-serif;font-size:1.6rem;font-weight:800;color:var(--white)}
.iso-sub{font-family:'DM Mono',monospace;font-size:.7rem;color:var(--gold);letter-spacing:.1em;margin-top:.3rem}
.iso-tags{display:flex;flex-wrap:wrap;gap:.65rem}
.iso-tag{padding:.45rem 1rem;border:1px solid var(--border);border-radius:2px;
  font-family:'DM Mono',monospace;font-size:.68rem;color:var(--gold);
  letter-spacing:.06em;background:rgba(232,160,32,.04)}

/* ═══════════ WHY ═══════════ */
.why-section{background:var(--d2);border-top:1px solid var(--bdim)}
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--bdim)}
.why-card{background:var(--d2);padding:2.2rem 1.6rem;text-align:center;transition:background .2s}
.why-card:hover{background:var(--d3)}
.why-num{font-family:'Syne',sans-serif;font-size:2.6rem;font-weight:800;
  background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;line-height:1;margin-bottom:.5rem}
.why-card h3{font-family:'Syne',sans-serif;font-size:.9rem;font-weight:700;color:var(--white);margin-bottom:.5rem}
.why-card p{font-size:.82rem;color:var(--mid);line-height:1.65}

/* ═══════════ SECTORS ═══════════ */
.sect-section{background:var(--bg);border-top:1px solid var(--bdim)}
.stags{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}
.stag{padding:.5rem 1.1rem;border:1px solid var(--bdim);border-radius:2px;
  font-family:'DM Mono',monospace;font-size:.7rem;color:var(--sv);
  letter-spacing:.07em;text-transform:uppercase;transition:var(--tr);cursor:default}
.stag:hover{background:rgba(232,160,32,.07);border-color:var(--gold);color:var(--gold)}

/* ═══════════ CONTACT ═══════════ */
.contact-section{background:var(--d2);border-top:1px solid var(--bdim)}
.cinner{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:start;max-width:1100px;margin:0 auto}
.cinfo h2{font-family:'Syne',sans-serif;font-size:clamp(1.8rem,3.2vw,2.8rem);
  font-weight:800;color:var(--white);line-height:1.1;letter-spacing:-.02em;margin-bottom:1rem}
.cinfo h2 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;
  -webkit-text-fill-color:transparent;background-clip:text}
.cinfo p{color:var(--sv);font-size:.97rem;line-height:1.8;font-weight:300;margin-bottom:1rem}
.cdetails{display:flex;flex-direction:column;gap:.9rem;margin-top:1.6rem}
.crow{display:flex;align-items:center;gap:.75rem;font-size:.88rem;color:var(--sv)}
.cicon{width:30px;height:30px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:3px;flex-shrink:0;color:var(--gold);font-size:.85rem}

/* contact form */
.cform{display:flex;flex-direction:column;gap:13px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.fgrp{display:flex;flex-direction:column;gap:6px}
.flbl{font-family:'DM Mono',monospace;font-size:.64rem;color:var(--mid);letter-spacing:.1em;text-transform:uppercase}
.finput,.ftarea,.fsel{background:var(--d3);border:1px solid var(--bdim);border-radius:6px;
  padding:.7rem .9rem;color:var(--white);font-family:'DM Sans',sans-serif;font-size:.88rem;
  transition:border-color .2s;outline:none;width:100%}
.finput:focus,.ftarea:focus,.fsel:focus{border-color:rgba(232,160,32,.4);background:var(--d4)}
.ftarea{min-height:110px;resize:vertical}
.fsel{appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23666' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .9rem center;padding-right:2.5rem}
.fsel option{background:var(--d2)}
.fbtn{width:100%;padding:.95rem;background:var(--grad);color:#111;
  font-family:'Syne',sans-serif;font-weight:700;font-size:.86rem;letter-spacing:.09em;
  text-transform:uppercase;border:none;border-radius:6px;cursor:pointer;
  transition:opacity .2s,transform .2s;margin-top:4px;display:flex;align-items:center;justify-content:center;gap:.5rem}
.fbtn:hover{opacity:.9;transform:translateY(-2px)}
.fbtn:disabled{opacity:.6;cursor:not-allowed;transform:none}
.fmsg{font-family:'DM Mono',monospace;font-size:.62rem;color:var(--mid);
  text-align:center;margin-top:.6rem;letter-spacing:.05em}
/* form status */
#form-status{margin-top:10px;padding:10px 14px;border-radius:6px;font-family:'DM Mono',monospace;
  font-size:.75rem;letter-spacing:.04em;display:none;text-align:center}
#form-status.success{background:rgba(0,204,102,.12);border:1px solid rgba(0,204,102,.25);color:var(--pcb)}
#form-status.error{background:rgba(232,80,32,.12);border:1px solid rgba(232,80,32,.25);color:#FF6B6B}

/* ═══════════ FOOTER ═══════════ */
.site-footer{background:#0B0B0D;border-top:1px solid var(--bdim);padding:3.5rem 5vw 2rem}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;max-width:1200px;margin:0 auto 3rem}
.fbrand img{height:30px;width:auto;margin-bottom:1rem;display:block}
.fbrand p{font-size:.8rem;color:var(--mid);line-height:1.75;max-width:260px}
.fbrand .tagline{font-family:'DM Mono',monospace;font-size:.65rem;color:var(--gold);
  letter-spacing:.08em;margin-top:.9rem;opacity:.65}
.fcol .fh{font-family:'Syne',sans-serif;font-size:.7rem;font-weight:700;color:var(--sv);
  letter-spacing:.12em;text-transform:uppercase;margin-bottom:.9rem}
.fcol ul{list-style:none}
.fcol ul li{margin-bottom:.5rem}
.fcol ul li a{font-size:.82rem;color:var(--mid);text-decoration:none;transition:color .2s}
.fcol ul li a:hover{color:var(--gold)}
.fbot{max-width:1200px;margin:0 auto;padding-top:2rem;border-top:1px solid var(--bdim);
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.8rem}
.fbot p{font-size:.74rem;color:var(--mid)}
.fbot .codetag{font-family:'DM Mono',monospace;font-size:.63rem;color:var(--pcb);opacity:.5;letter-spacing:.04em}

/* ═══════════ ANIMATIONS ═══════════ */
@keyframes fadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes traceDraw{from{stroke-dashoffset:800}to{stroke-dashoffset:0}}

/* scrollbar */
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--gd);border-radius:3px}

/* ═══════════ RESPONSIVE ═══════════ */
@media(max-width:1000px){
  .hinner,.about-grid,.cinner,.dl-strip{grid-template-columns:1fr;gap:2.5rem}
  .cap-grid,.pgrid{grid-template-columns:1fr 1fr}
  .why-grid,.plat-grid{grid-template-columns:1fr 1fr}
  .fgrid{grid-template-columns:1fr 1fr}
  .iso-inner{grid-template-columns:1fr}}
@media(max-width:640px){
  .cap-grid,.pgrid{grid-template-columns:1fr}
  .plat-grid{grid-template-columns:1fr 1fr}
  .fgrid{grid-template-columns:1fr}
  .frow{grid-template-columns:1fr}
  .hstats{grid-template-columns:1fr 1fr}}

/* ═══════════ WORDPRESS / MULTI-PAGE ADDITIONS ═══════════ */
.skip-link{position:absolute;left:-9999px;top:0;z-index:1000;background:var(--gold);color:#111;padding:.6rem 1rem;font-family:'Syne',sans-serif;font-weight:700}
.skip-link:focus{left:8px;top:8px}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.admin-bar .site-nav{top:32px}
@media(max-width:782px){.admin-bar .site-nav{top:46px}}
main{display:block}
.nlogo{display:block;line-height:0}
.nlinks a.is-active{color:var(--gold)}
.nav-toggle{display:none;background:none;border:1px solid var(--border);border-radius:4px;width:42px;height:38px;cursor:pointer;position:relative}
.nav-toggle-bars,.nav-toggle-bars::before,.nav-toggle-bars::after{content:'';position:absolute;left:10px;right:10px;height:2px;background:var(--gold);transition:transform .2s,opacity .2s}
.nav-toggle-bars{top:18px}
.nav-toggle-bars::before{left:0;right:0;top:-6px}
.nav-toggle-bars::after{left:0;right:0;top:6px}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars{background:transparent}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::before{transform:translateY(6px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::after{transform:translateY(-6px) rotate(-45deg)}

/* No-JS safe reveal: content only hides once main.js has confirmed IntersectionObserver works. */
.rv{opacity:1;transform:none}
.js-reveal .rv{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s ease}
.js-reveal .rv.vis{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.htitle,.hdesc,.hbtns,.hterm{animation:none;opacity:1}}

.hero-traces{position:absolute;inset:0;width:100%;height:100%;opacity:.09;pointer-events:none}
.tgap{margin-top:8px}
.btn-gold,.btn-ghost{display:inline-flex;align-items:center;gap:.45rem;padding:.85rem 2rem;font-family:'Syne',sans-serif;font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;border-radius:5px;transition:opacity .2s,transform .2s,border-color .2s,color .2s}
.btn-gold{background:var(--grad);color:#111;font-weight:700}
.btn-gold:hover{opacity:.88;transform:translateY(-2px)}
.btn-ghost{border:1.5px solid rgba(200,200,200,.22);color:var(--sv);font-weight:600}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold);transform:translateY(-2px)}
.btn-ghost.sm{padding:.8rem 1.6rem;font-size:.8rem;white-space:nowrap}
.prod-head{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-bottom:3.5rem;align-items:start}
.prod-intro{font-size:1rem;color:var(--sv);line-height:1.82;font-weight:300;margin-top:1rem}
.pcard-dashed{border-style:dashed;opacity:.62}
.why-title{margin-bottom:2.5rem}
.crow a{color:var(--sv);text-decoration:none}
.crow a:hover{color:var(--gold)}
.fbot-credit{border-top:none;padding-top:.5rem}
.fbot-credit a{color:var(--gold);text-decoration:none}
.fbot-credit a:hover{text-decoration:underline}

/* form additions */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.opt{text-transform:none;letter-spacing:0;opacity:.7}
.fcheck label{display:flex;gap:.7rem;align-items:flex-start;font-size:.82rem;color:var(--sv);line-height:1.6;cursor:pointer}
.fcheck input{margin-top:.3rem;accent-color:var(--gold);width:16px;height:16px;flex-shrink:0}
.fcheck a{color:var(--gold)}
.was-validated .finput:invalid,.was-validated .ftarea:invalid,.was-validated .fsel:invalid{border-color:#FF6B6B}
.was-validated .fcheck input:invalid + span{color:#FF6B6B}
.finput::placeholder,.ftarea::placeholder{color:var(--mid)}
.fbtn:focus-visible,.btn-gold:focus-visible,.btn-ghost:focus-visible,.nlinks a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* inner pages */
.page-hero{padding:9rem 5vw 3rem;background:var(--d2);border-bottom:1px solid var(--bdim)}
.page-hero .sdesc{margin-bottom:0}
.container.narrow,.narrow{max-width:820px;margin-left:auto;margin-right:auto}
.breadcrumbs{font-family:'DM Mono',monospace;font-size:.68rem;color:var(--mid);letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem}
.breadcrumbs a{color:var(--sv);text-decoration:none}
.breadcrumbs a:hover{color:var(--gold)}
.section{padding:4rem 5vw}
.muted{color:var(--mid);font-size:.9rem}
.h3{font-family:'Syne',sans-serif;font-size:1.3rem;font-weight:800;margin-bottom:1rem}
.prose{color:var(--sv);font-weight:300;line-height:1.85}
.prose h2{font-family:'Syne',sans-serif;font-size:1.25rem;font-weight:700;color:var(--white);margin:2.2rem 0 .7rem}
.prose p,.prose ul{margin-bottom:1rem}
.prose ul{padding-left:1.3rem}
.prose li{margin-bottom:.4rem}
.prose a,.sdesc a{color:var(--gold)}
.prose strong{color:var(--white);font-weight:500}
.notice{padding:.9rem 1.1rem;border-radius:6px;margin-bottom:1.6rem;font-size:.9rem;line-height:1.6}
.notice.review{background:rgba(232,160,32,.08);border:1px solid rgba(232,160,32,.25);color:var(--sv)}
.post-list{display:grid;gap:1.2rem}
.post-card{border:1px solid var(--bdim);border-radius:8px;padding:1.5rem;background:var(--d2)}
.post-card time{font-family:'DM Mono',monospace;font-size:.68rem;color:var(--mid)}
.post-card h2{font-family:'Syne',sans-serif;font-size:1.2rem;margin:.4rem 0}
.post-card h2 a{color:var(--white);text-decoration:none}
.post-card h2 a:hover{color:var(--gold)}
.post-card p{color:var(--sv);font-size:.92rem}
.contact-section .cinfo .muted{margin-top:1.4rem}

@media(max-width:1000px){.prod-head{grid-template-columns:1fr;gap:1rem}}
@media(max-width:640px){
  .nav-toggle{display:block}
  .nlinks{display:none;position:absolute;top:68px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:rgba(17,17,19,.98);border-bottom:1px solid var(--bdim);padding:.5rem 5vw 1rem}
  .nlinks.is-open{display:flex}
  .nlinks li a{display:block;padding:.85rem 0;font-size:.82rem}
  .nlinks a::after{display:none}
  .ncta{display:inline-block;margin-top:.4rem;text-align:center}
  .page-hero{padding-top:7.5rem}
  .dl-strip{padding:1.6rem 1.4rem}
}

/* multi-page additions */
a.capcard,a.pcard{display:block;color:inherit;text-decoration:none}
a.capcard:focus-visible,a.pcard:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.pmore{display:inline-block;margin-top:.9rem;margin-left:.6rem;font-family:'DM Mono',monospace;font-size:.62rem;letter-spacing:.08em;color:var(--gold)}
.pcard .pmore{margin-left:0;display:block}
.narrow-wide{max-width:1100px;margin-left:auto;margin-right:auto}
.more-link{margin-top:2rem;display:flex;gap:.8rem;flex-wrap:wrap}
.page-actions{margin-top:1.6rem}
.cta-band{background:var(--d2);border-top:1px solid var(--bdim);padding:4.5rem 5vw}
.cta-inner{display:flex;gap:2.5rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cta-inner .stitle{margin-bottom:.6rem}
.cta-inner .sdesc{margin-bottom:0;max-width:640px}
.page-hero .pbadge{margin-top:.4rem}

.source-box{margin:2rem 0;padding:1rem 1.2rem;border:1px solid var(--border);border-left:3px solid var(--gold);border-radius:0 8px 8px 0;background:rgba(232,160,32,.04)}
.source-box p{margin:.3rem 0 0;font-size:.9rem}

/* ═══════════ DYNAPULSE (two pages: /dynapulse/ and /dynapulse/privacy/) ═══════════ */
.dp{--dp-navy:#245A8A;--dp-deep:#173D60;--dp-teal:#5FD3C2;--dp-ice:#D6E4F0}
.dp-hero{padding:9rem 5vw 4rem;background:linear-gradient(135deg,var(--dp-navy) 0%,var(--dp-deep) 100%);border-bottom:1px solid var(--bdim);position:relative;overflow:hidden}
.dp-hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent,var(--dp-teal),transparent);opacity:.7}
.dp-hero-inner{display:grid;grid-template-columns:1.1fr .9fr;gap:3rem;align-items:center}
.dp-hero .breadcrumbs,.dp-hero .breadcrumbs a{color:var(--dp-ice)}
.dp-hero .breadcrumbs a:hover{color:var(--dp-teal)}
.dp-brand{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}
.dp-brand img{border-radius:16px;box-shadow:0 6px 24px rgba(0,0,0,.35)}
.dp-title{font-family:'Syne',sans-serif;font-size:clamp(2.6rem,6vw,4.4rem);font-weight:800;line-height:1.05;color:var(--white)}
.dp-tag{font-family:'Syne',sans-serif;font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:700;color:var(--dp-teal);margin:.5rem 0 1.2rem}
.dp-intro{color:var(--dp-ice);font-size:1.02rem;line-height:1.8;font-weight:300;max-width:620px}
.dp-hero .btn-gold{background:var(--dp-teal);color:#0d2a44}
.dp-hero .btn-ghost{border-color:rgba(214,228,240,.4);color:var(--dp-ice)}
.dp-hero .btn-ghost:hover{border-color:var(--dp-teal);color:var(--dp-teal)}
.dp-with{margin-top:1.4rem;font-family:'DM Mono',monospace;font-size:.72rem;letter-spacing:.06em;color:var(--dp-ice)}
.dp-with strong{color:var(--white);font-weight:500}
.dp-hero-art img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 14px 48px rgba(0,0,0,.4)}
.dp-alt{background:var(--d2)}
.dp-plat,.dp-feat{display:grid;gap:1.2rem;grid-template-columns:repeat(3,1fr);margin-top:2rem}
.dp-card{background:var(--d3);border:1px solid var(--bdim);border-top:2px solid var(--dp-teal);border-radius:var(--r);padding:1.6rem}
.dp-card-k{font-family:'DM Mono',monospace;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dp-teal);margin-bottom:.5rem}
.dp-card h3{font-family:'Syne',sans-serif;font-size:1.08rem;font-weight:700;margin-bottom:.5rem;color:var(--white)}
.dp-card p{color:var(--sv);font-size:.92rem;line-height:1.7;font-weight:300}
.dp-note{margin-top:-.8rem}
.dp-gallery{display:flex;gap:1.2rem;overflow-x:auto;padding:1.5rem 5vw 1.8rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.dp-gallery:focus-visible{outline:2px solid var(--dp-teal);outline-offset:-2px}
.dp-shot{flex:0 0 auto;width:min(250px,64vw);scroll-snap-align:start;border-radius:14px;overflow:hidden;border:1px solid var(--bdim);background:var(--d3)}
.dp-shot img{display:block;width:100%;height:auto}
.dp-access{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:start}
.dp-lead{color:var(--sv);line-height:1.85;font-weight:300}
.dp-lead strong,.dp-help strong{color:var(--white);font-weight:500}
.dp-help{background:var(--d3);border:1px solid var(--bdim);border-radius:var(--r);padding:1.6rem}
.dp-help h3{font-family:'Syne',sans-serif;font-size:1.1rem;margin-bottom:.8rem}
.dp-help ul{list-style:none;display:grid;gap:.75rem;color:var(--sv);font-size:.92rem;line-height:1.65;font-weight:300}
.dp-help a{color:var(--dp-teal)}
.dp-partner{background:linear-gradient(135deg,var(--dp-deep),var(--dp-navy));padding:3rem 5vw;border-top:1px solid var(--bdim)}
.dp-partner-inner{display:flex;gap:1.5rem;align-items:center}
.dp-partner-mark{font-size:2rem;color:var(--dp-teal);flex-shrink:0}
.dp-partner-title{font-family:'Syne',sans-serif;font-size:1.25rem;font-weight:700;color:var(--white);margin-bottom:.4rem}
.dp-partner p{color:var(--dp-ice);font-weight:300;line-height:1.75;max-width:760px}
.dp-back{margin-top:2.4rem}
.tbl-wrap{overflow-x:auto;margin-bottom:1.2rem}
.dp-table{width:100%;border-collapse:collapse;font-size:.9rem}
.dp-table th,.dp-table td{text-align:left;vertical-align:top;padding:.7rem .8rem;border:1px solid var(--bdim)}
.dp-table thead th{background:var(--d3);color:var(--white);font-family:'Syne',sans-serif;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase}
.dp-table tbody th{color:var(--white);font-weight:500;white-space:nowrap}
.prose ol{padding-left:1.3rem;margin-bottom:1rem}
.prose ol li{margin-bottom:.4rem}
@media(max-width:1000px){.dp-hero-inner,.dp-access{grid-template-columns:1fr}.dp-plat,.dp-feat{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.dp-plat,.dp-feat{grid-template-columns:1fr}.dp-hero{padding-top:7.5rem}.dp-partner-inner{flex-direction:column;align-items:flex-start}.dp-table tbody th{white-space:normal}}
.dp-hero-inner>*,.dp-access>*{min-width:0}
.dp-title,.dp-intro,.dp-with{overflow-wrap:anywhere}
@media(max-width:640px){.dp-title{font-size:2.3rem}.dp-hero{padding-left:6vw;padding-right:6vw}}
.prose h3{font-family:'Syne',sans-serif;font-size:1.05rem;font-weight:700;color:var(--white);margin:1.6rem 0 .6rem}
.prose .btn-gold{color:#111;text-decoration:none}
