/* Turner Security + TechCore. Design system from the approved Oct 2026 previews. */
/* self-hosted fonts (SIL OFL), latin subset */
@font-face{font-family:'Arimo';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/arimo-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Sora';font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/sora-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

:root{--deep:#06161F;--deep2:#0A2230;--panel:rgba(10,34,48,.62);--teal:#00769F;--teal-l:#2FC3EE;--sig:#FE6600;--sig-l:#FF9248;--frost:#EAF2F5;--mut:#9DB6C2;--ink:#0E1E28;--mut2:#55707D;--line:rgba(234,242,245,.12);--ok:#3BE09A;
--card1:rgba(15,44,60,.9);--card2:rgba(8,28,40,.9);--glow:rgba(47,195,238,.3);--glow-s:rgba(47,195,238,.1);--hdr:rgba(6,22,31,.9);--dd:rgba(8,28,40,.97);
--btn:linear-gradient(135deg,#FE6600,#FF7D22);--btn-ink:#06161F;--btn-shadow:rgba(254,102,0,.35);--ring:rgba(254,102,0,.7);--cta-glow:rgba(254,102,0,.22);--light-link:#00769F}
.t-tc{--deep:#040B1A;--deep2:#0A1A3A;--panel:rgba(10,26,58,.62);--teal:#2B6BFF;--teal-l:#22C3F0;--sig:#7B5CFF;--sig-l:#A18BFF;--frost:#EDF2FD;--mut:#9FB0D0;--ink:#0B1530;--mut2:#56658A;--line:rgba(237,242,253,.12);
--card1:rgba(16,32,72,.9);--card2:rgba(6,16,40,.9);--glow:rgba(34,195,240,.3);--glow-s:rgba(34,195,240,.1);--hdr:rgba(4,11,26,.9);--dd:rgba(6,16,40,.97);
--btn:linear-gradient(135deg,#1A6FD6,#2B6BFF 55%,#6A4BF0);--btn-ink:#fff;--btn-shadow:rgba(43,107,255,.45);--ring:rgba(34,195,240,.75);--cta-glow:rgba(123,92,255,.22);--light-link:#1A5FD0}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-x:clip}
body{font-family:'IBM Plex Sans',system-ui,sans-serif;color:var(--frost);background:var(--deep);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;font-size:16.5px}
h1,h2,h3,h4,.btn,.nav a,.brand{font-family:Sora,sans-serif}
a{color:inherit;text-decoration:none}
img,video{max-width:100%}
:focus-visible{outline:3px solid var(--teal-l);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#000;padding:10px 14px;border-radius:8px;z-index:200}.skip:focus{left:12px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}

/* header */
header.site{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .3s,box-shadow .3s}
header.site.scrolled,header.site.solid{background:var(--hdr);backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line)}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;color:var(--mut);padding:8px 32px;border-bottom:1px solid var(--line)}
.topbar a{color:var(--frost)}
.topbar .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:8px;animation:ping 2s infinite}
.topbar .x{color:var(--teal-l);font-weight:500}
.navbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 32px}
.brand img,.brand svg{height:54px;width:auto;display:block}
.nav{display:flex;gap:2px;align-items:center;list-style:none}
.nav>li{position:relative}
.nav>li>a,.nav>li>button{display:flex;align-items:center;gap:6px;padding:10px 12px;font-size:14.5px;font-weight:500;color:#d6e6ec;border-radius:10px;transition:background .2s,color .2s;background:none;border:0;cursor:pointer;font-family:Sora}
.nav>li>a:hover,.nav>li:focus-within>a,.nav>li>button:hover,.nav>li:focus-within>button{background:rgba(234,242,245,.07);color:#fff}
.nav>li>button svg{width:10px;height:10px;transition:transform .25s}
.nav>li:hover>button svg,.nav>li:focus-within>button svg{transform:rotate(180deg)}
.nav .tc-link{color:#9fd8ff}
.dd{position:absolute;top:calc(100% + 8px);left:-12px;min-width:290px;background:var(--dd);backdrop-filter:blur(16px);border-radius:16px;padding:10px;box-shadow:0 24px 60px rgba(0,0,0,.5),inset 0 0 0 1px var(--glow);opacity:0;visibility:hidden;transform:translateY(-6px);transition:all .2s ease}
.nav>li:hover .dd,.nav>li:focus-within .dd{opacity:1;visibility:visible;transform:none}
.dd a{display:block;padding:9px 12px;border-radius:10px;font-size:14px;color:#d6e6ec}
.dd a:hover,.dd a:focus-visible{background:var(--glow-s);color:#fff}
.dd .head{padding:8px 12px 4px;font-size:12px;color:var(--teal-l);font-weight:600;letter-spacing:.02em}
.dd.wide{min-width:560px;display:grid;grid-template-columns:1fr 1fr;gap:2px 8px}
.dd.wide .head{grid-column:1/-1}
.dd.right{left:auto;right:-12px}
.menu-btn{display:none;align-items:center;gap:8px;background:rgba(234,242,245,.06);border:0;color:#fff;border-radius:999px;padding:10px 16px;font-family:Sora;font-weight:600;font-size:14px;cursor:pointer;box-shadow:inset 0 0 0 1px var(--line)}
.menu-btn svg{width:18px;height:18px}
.mnav{display:none}
@media (max-width:1120px){.nav{display:none}.menu-btn{display:inline-flex}
.mnav{position:fixed;inset:0;z-index:60;background:var(--deep);overflow-y:auto;padding:20px 20px 40px}
.mnav.open{display:block}
.mnav .mtop{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.mnav details{border-bottom:1px solid var(--line);padding:14px 0}
.mnav summary{font-family:Sora;font-weight:600;font-size:17px;list-style:none;cursor:pointer;display:flex;justify-content:space-between}
.mnav summary::-webkit-details-marker{display:none}
.mnav summary::after{content:'+';color:var(--teal-l)}
.mnav details[open] summary::after{content:'−'}
.mnav details a{display:block;padding:9px 4px;color:#d6e6ec}
.mnav .mlink{display:block;padding:14px 0;border-bottom:1px solid var(--line);font-family:Sora;font-weight:600;font-size:17px}
.mnav .ctas{margin-top:22px}}

/* buttons */
.btn{position:relative;display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:15.5px;padding:15px 26px;border-radius:999px;cursor:pointer;border:0;overflow:hidden;isolation:isolate;transition:transform .2s;line-height:1.2}
.btn:hover{transform:translateY(-2px)}
.btn-primary{background:var(--btn);color:var(--btn-ink);box-shadow:0 10px 30px var(--btn-shadow)}
.btn-primary::after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.4) 50%,transparent 70%);transform:translateX(-120%);animation:shine 3.6s ease-in-out infinite;z-index:-1}
.pulse::before{content:'';position:absolute;inset:-6px;border-radius:999px;border:2px solid var(--ring);animation:ring 2.2s ease-out infinite;pointer-events:none}
.btn-ghost{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(234,242,245,.45);background:rgba(234,242,245,.05);backdrop-filter:blur(6px)}
.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--teal-l)}
.light .btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1.5px #b9cbd4;background:#fff}
.btn svg{width:18px;height:18px}
.nav .btn{padding:11px 18px;font-size:14px;margin-left:8px}
.btn-tc{background:linear-gradient(135deg,#1A6FD6,#2B6BFF);color:#fff;box-shadow:0 10px 30px rgba(43,107,255,.4)}
.btn-ts{background:linear-gradient(135deg,#FE6600,#ff8a3d);color:#06161F;box-shadow:0 10px 30px rgba(254,102,0,.4)}

/* hero (home) */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;padding:170px 0 90px;overflow:hidden}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:kenburns 26s ease-in-out infinite alternate;transform-origin:70% 40%}
.hero::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,22,31,.96) 0%,rgba(6,22,31,.85) 38%,rgba(6,22,31,.4) 66%,rgba(6,22,31,.3) 100%),linear-gradient(180deg,rgba(6,22,31,.3),rgba(6,22,31,0) 30%,rgba(6,22,31,.95))}
.t-tc .hero::before{background:linear-gradient(90deg,rgba(4,11,26,.97) 0%,rgba(4,11,26,.85) 38%,rgba(4,11,26,.25) 66%,rgba(4,11,26,.1) 100%),linear-gradient(180deg,rgba(4,11,26,.35),rgba(4,11,26,0) 30%,rgba(4,11,26,.95))}
.grid-fx{position:absolute;inset:0;z-index:1;background-image:linear-gradient(var(--glow-s) 1px,transparent 1px),linear-gradient(90deg,var(--glow-s) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse 50% 70% at 25% 50%,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 50% 70% at 25% 50%,#000 30%,transparent 75%);animation:gridmove 18s linear infinite;opacity:.8}
.scan{position:absolute;left:0;right:0;top:0;height:140px;z-index:1;background:linear-gradient(180deg,transparent,var(--glow-s),transparent);animation:scan 7s linear infinite;will-change:transform}
.hero .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;width:100%}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:13.5px;color:#cfe2ea;padding:8px 14px;border-radius:999px;background:var(--glow-s);box-shadow:inset 0 0 0 1px var(--glow);margin-bottom:24px}
.eyebrow b{color:var(--ok);font-weight:600}
h1{font-size:clamp(38px,5.2vw,68px);line-height:1.04;font-weight:700;letter-spacing:-.035em;max-width:720px}
h1 .type{background:linear-gradient(90deg,var(--sig-l),var(--sig));-webkit-background-clip:text;background-clip:text;color:transparent}
/* Oct 15: TechCore hero words solid brand cyan (was blue-to-violet gradient text) */
.t-tc h1 .type{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:#22C3F0}.t-tc .caret,.t-tc .hero-vid h1 .type::after{background:#22C3F0}
.caret{display:inline-block;width:3px;height:.85em;background:var(--sig);margin-left:4px;vertical-align:-4px;animation:blink 1s steps(1) infinite}
.lead{font-size:19px;color:#b9cfd8;max-width:580px;margin:22px 0 34px}
.ctas{display:flex;gap:14px;flex-wrap:wrap}
.trust{display:flex;gap:28px;margin-top:44px;flex-wrap:wrap}
.trust div{font-size:14px;color:var(--mut)}
.trust b{display:block;font-family:Sora;font-size:28px;color:#fff;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.hero-hud{position:relative;height:520px}
.chip-hud{position:absolute;display:flex;align-items:center;gap:10px;padding:11px 16px;border-radius:12px;background:rgba(6,22,31,.8);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--glow),0 14px 34px rgba(0,0,0,.4);font-size:13.5px;color:#d6e6ec;animation:float 6s ease-in-out infinite;white-space:nowrap}
.chip-hud b{color:#fff;font-weight:600}
.chip-hud i{width:9px;height:9px;border-radius:50%}
.chip-hud i.g{background:var(--ok);box-shadow:0 0 10px var(--ok)}.chip-hud i.o{background:var(--sig);box-shadow:0 0 10px var(--sig)}
.hp1{left:4%;top:44%}.hp2{left:22%;top:62%;animation-delay:-2s}.hp3{left:2%;top:80%;animation-delay:-4s}
.n1{left:2%;top:16%}.n2{left:-2%;top:52%;animation-delay:-1.5s}.n3{left:12%;top:80%;animation-delay:-3s}.n4{right:2%;top:12%;animation-delay:-2.2s}.n5{right:0;top:78%;animation-delay:-4s}
.net{position:absolute;inset:0;width:100%;height:100%}
.net path{stroke-dasharray:6 8;animation:dash 1.6s linear infinite}

/* page hero (inner pages) */
.phero{position:relative;padding:190px 0 80px;overflow:hidden;min-height:62vh;display:flex;align-items:flex-end}
.phero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
.phero::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,22,31,.97) 0%,rgba(6,22,31,.88) 45%,rgba(6,22,31,.55) 100%),linear-gradient(180deg,rgba(6,22,31,.5),rgba(6,22,31,0) 35%,rgba(6,22,31,1))}
.t-tc .phero::before{background:linear-gradient(90deg,rgba(4,11,26,.97) 0%,rgba(4,11,26,.88) 45%,rgba(4,11,26,.5) 100%),linear-gradient(180deg,rgba(4,11,26,.5),rgba(4,11,26,0) 35%,rgba(4,11,26,1))}
.phero .wrap{position:relative;z-index:2;width:100%}
.phero h1{font-size:clamp(36px,4.6vw,60px)}
.phero.short{min-height:0;padding-bottom:56px}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;list-style:none;font-size:13.5px;color:var(--mut);margin-bottom:20px}
.crumbs li+li::before{content:'/';margin-right:8px;opacity:.5}
.crumbs a{color:#cfe2ea;text-decoration:underline;text-decoration-color:rgba(234,242,245,.3);text-underline-offset:3px}
.crumbs a:hover{color:#fff}

/* ticker */
.ticker{position:relative;border-block:1px solid var(--line);background:var(--panel);overflow:hidden;padding:16px 0}
.ticker .track{display:flex;gap:44px;width:max-content;animation:marquee 40s linear infinite;font-family:Sora;font-weight:500;font-size:15px;color:#c3d7df}
.ticker span{display:inline-flex;align-items:center;gap:44px;white-space:nowrap}
.ticker i{width:6px;height:6px;border-radius:50%;background:var(--sig);display:inline-block}

/* sections */
section{position:relative}
.sec{padding:100px 0}
.sec.tight{padding:70px 0}
.sec h2,.h2{font-size:clamp(30px,3.4vw,46px);line-height:1.08;letter-spacing:-.03em;font-weight:700;max-width:760px}
.sec .sub{font-size:18px;color:var(--mut);max-width:660px;margin:16px 0 48px}
.kick{display:block;font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-l);margin-bottom:14px}
.light{background:#F3F7F9;color:var(--ink)}
.light .sub{color:var(--mut2)}
.light .kick{color:var(--light-link)}
.light a.inline,.light .prose a{color:var(--light-link)}

/* answer box (AEO) */
.answer{display:grid;grid-template-columns:1.3fr 1fr;gap:28px;border-radius:24px;padding:34px 36px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--glow)}
.answer h2{font-size:26px;margin-bottom:12px}
.answer p{color:#c7d9e0;font-size:17px}
.answer p+p{margin-top:12px}
.facts{list-style:none;display:grid;gap:12px;align-content:start}
.facts li{display:flex;gap:12px;font-size:15px;color:#d6e6ec;padding:12px 14px;border-radius:12px;background:rgba(234,242,245,.04);box-shadow:inset 0 0 0 1px var(--line)}
.facts b{display:block;font-family:Sora;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--teal-l);font-weight:600}
.facts svg{flex:none;width:20px;height:20px;margin-top:2px;color:var(--ok)}

/* cards */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.card{position:relative;border-radius:22px;padding:28px;background:linear-gradient(180deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line);overflow:hidden;transition:transform .3s}
.card::before{content:'';position:absolute;inset:-1px;border-radius:22px;padding:1px;background:conic-gradient(from var(--a,0deg),transparent 0 70%,var(--teal-l) 80%,var(--sig) 90%,transparent 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s;pointer-events:none}
.card:hover{transform:translateY(-4px)}
.card:hover::before{opacity:1;animation:rot 3s linear infinite}
.card .ic{width:50px;height:50px;border-radius:14px;display:grid;place-items:center;background:var(--glow-s);box-shadow:inset 0 0 0 1px var(--glow);margin-bottom:18px;color:var(--teal-l)}
.card .ic svg{width:25px;height:25px}
.card h3{font-size:19px;font-weight:600;letter-spacing:-.01em;margin-bottom:8px;line-height:1.3}
.card p{font-size:15px;color:var(--mut)}
.card .more{display:inline-flex;margin-top:16px;font-size:14px;font-weight:600;color:var(--teal-l);font-family:Sora}
.card a.stretch::after{content:'';position:absolute;inset:0;z-index:1}
.light .card{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px #dbe5ea,0 10px 30px rgba(14,30,40,.05)}
.light .card p{color:var(--mut2)}
.light .card .more{color:var(--light-link)}
.light .card .ic{color:var(--light-link);background:rgba(0,118,159,.08);box-shadow:inset 0 0 0 1px rgba(0,118,159,.25)}

/* home services grid */
.svc-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;grid-template-rows:auto auto;gap:18px}
.feature{grid-row:span 2;display:flex;flex-direction:column;justify-content:flex-end;min-height:520px}
.cams,.tiles{position:absolute;top:22px;left:22px;right:22px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cam{position:relative;height:132px;border-radius:12px;overflow:hidden;background:#0b2a3a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.cam .img{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(.8) contrast(1.08) brightness(.82)}
.cam::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 2px,transparent 2px 4px);pointer-events:none}
.cam .lbl{position:absolute;left:10px;bottom:8px;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:#e6f3f7;z-index:2}
.cam .rec{position:absolute;right:10px;top:9px;z-index:2;font-family:'IBM Plex Mono',monospace;font-size:10px;color:#fff;display:flex;align-items:center;gap:5px}
.cam .rec i{width:7px;height:7px;border-radius:50%;background:#ff3b3b;animation:blink 1.2s steps(1) infinite}
.cam .bar{position:absolute;left:0;right:0;top:0;height:30%;background:linear-gradient(180deg,transparent,rgba(47,195,238,.18),transparent);animation:camscan 3.5s linear infinite;z-index:1}
.cam:nth-child(2) .bar{animation-delay:-1s}.cam:nth-child(3) .bar{animation-delay:-2s}.cam:nth-child(4) .bar{animation-delay:-2.7s}
.clock{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ok);margin-bottom:10px}
.feature h3{font-size:27px;font-weight:700;letter-spacing:-.02em}
.tile{height:132px;border-radius:12px;padding:14px;background:linear-gradient(140deg,rgba(34,195,240,.16),rgba(6,16,40,.6));box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);display:flex;flex-direction:column;position:relative;overflow:hidden}
.tile:nth-child(2){background:linear-gradient(140deg,rgba(43,107,255,.22),rgba(6,16,40,.6))}.tile:nth-child(3){background:linear-gradient(140deg,rgba(123,92,255,.24),rgba(6,16,40,.6))}
.tile small{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:#9FB0D0;letter-spacing:.06em;text-transform:uppercase}
.tile b{font-family:Sora;font-size:17px;color:#fff;margin-top:4px}
.spark{margin-top:auto;display:flex;align-items:flex-end;gap:4px;height:40px}
.spark i{flex:1;height:var(--h);border-radius:3px 3px 0 0;background:linear-gradient(180deg,#22C3F0,#2B6BFF);transform-origin:bottom;animation:bars 2.4s ease-in-out infinite alternate}
.spark i:nth-child(2n){animation-delay:-.6s}.spark i:nth-child(3n){animation-delay:-1.2s}
.bar-p{margin-top:auto;height:8px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden}
.bar-p i{display:block;height:100%;width:30%;border-radius:99px;background:linear-gradient(90deg,#22C3F0,#3BE09A);animation:fill 3s ease-in-out infinite}
.bar-p.v i{background:linear-gradient(90deg,#7B5CFF,#22C3F0);animation-delay:-1.4s}
.dots{margin-top:auto;display:flex;gap:6px}
.dots i{width:9px;height:9px;border-radius:50%;background:#A18BFF;animation:bounce 1.2s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
.card.mobile{padding-right:210px;min-height:200px}.trailer{position:absolute;right:16px;top:16px;bottom:16px;width:180px;height:calc(100% - 32px);object-fit:contain;border-radius:14px;background:linear-gradient(160deg,#eef3f6,#d9e3e8);padding:8px}
.two-more{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}

/* coverage radar */
.cover{background:radial-gradient(ellipse 60% 70% at 80% 50%,rgba(0,118,159,.25),transparent 70%)}
.t-tc .cover{background:radial-gradient(ellipse 60% 70% at 80% 50%,rgba(123,92,255,.2),transparent 70%)}
.cov{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.radar{position:relative;aspect-ratio:1/1;max-width:540px;justify-self:end;width:100%;border-radius:28px;background:radial-gradient(circle at 50% 50%,rgba(10,40,56,.82),rgba(6,22,31,.9));box-shadow:inset 0 0 0 1px var(--glow),0 40px 90px rgba(0,0,0,.5);overflow:hidden}
.radar .corner{position:absolute;width:26px;height:26px;border-color:var(--teal-l);border-style:solid;opacity:.8}
.c1{top:14px;left:14px;border-width:2px 0 0 2px}.c2{top:14px;right:14px;border-width:2px 2px 0 0}.c3{bottom:14px;left:14px;border-width:0 0 2px 2px}.c4{bottom:14px;right:14px;border-width:0 2px 2px 0}
.radar svg{position:absolute;inset:0;width:100%;height:100%}
.sweep{transform-origin:220px 205px;animation:spin 5s linear infinite}
.sweep2{transform-origin:388px 345px;animation:spin 4.2s linear infinite;animation-delay:-1.6s}
.pin-ring{transform-box:fill-box;transform-origin:center;animation:ripple 2.4s ease-out infinite}
.pin-ring.d2{animation-delay:1.2s}
.hud{position:absolute;left:20px;right:20px;bottom:20px;display:flex;justify-content:space-between;gap:10px;padding:12px 16px;border-radius:14px;background:rgba(6,22,31,.85);box-shadow:inset 0 0 0 1px var(--line);font-size:12.5px;color:var(--mut)}
.hud b{display:block;font-family:Sora;color:#fff;font-size:14.5px}
.hud .o b{color:var(--sig-l)}
.hud-top{position:absolute;top:22px;left:24px;right:24px;display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--teal-l);letter-spacing:.04em}
.hud-top .live{color:var(--ok)}
.stack{display:grid;gap:14px;perspective:900px}
.layer{border-radius:18px;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;background:linear-gradient(110deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line);transform:rotateX(14deg);animation:layer 5s ease-in-out infinite}
.layer b{font-family:Sora;font-size:17px}
.layer span{font-size:13.5px;color:var(--mut);text-align:right}
.l1{box-shadow:inset 3px 0 0 #22C3F0,inset 0 0 0 1px var(--line)}.l2{box-shadow:inset 3px 0 0 #2B6BFF,inset 0 0 0 1px var(--line);animation-delay:-1.2s}.l3{box-shadow:inset 3px 0 0 #7B5CFF,inset 0 0 0 1px var(--line);animation-delay:-2.4s}.l4{box-shadow:inset 3px 0 0 #FE6600,inset 0 0 0 1px var(--line);animation-delay:-3.6s}

/* chips, steps */
.inds{display:flex;flex-wrap:wrap;gap:12px}
.chip{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:999px;background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px #d5e1e7;font-family:Sora;font-weight:500;font-size:15px;transition:all .25s}
a.chip:hover,a.chip:focus-visible{background:var(--deep2);color:#fff;box-shadow:0 10px 24px rgba(6,22,31,.25)}
.chip i{width:8px;height:8px;border-radius:50%;background:var(--teal)}
.chip:nth-child(even) i{background:var(--sig)}
.dark .chip,.chips-dark .chip{background:rgba(234,242,245,.05);color:#d6e6ec;box-shadow:inset 0 0 0 1px var(--line)}
.steps{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:20px}
.steps.s3{grid-template-columns:repeat(3,1fr)}
.steps .rail{position:absolute;left:0;right:0;top:22px;height:2px;background:#d5e1e7}
.steps .rail i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--sig));transition:width 1.8s cubic-bezier(.2,.7,.2,1)}
.steps.in .rail i{width:100%}
.step{position:relative}
.step b{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 2px var(--teal);font-family:Sora;color:var(--teal);font-size:16px;margin-bottom:18px;position:relative;z-index:1}
.step:last-child b{box-shadow:inset 0 0 0 2px var(--sig);color:#B04500}
.t-tc .step:last-child b{color:var(--sig)}
.step h3{font-size:18px;font-weight:600;margin-bottom:6px}
.step p{font-size:15px;color:var(--mut2)}

/* split, checks, images */
.split{display:grid;grid-template-columns:1.05fr 1fr;gap:60px;align-items:start}
.split.center{align-items:center}
.figure{position:relative;border-radius:24px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line),0 30px 70px rgba(0,0,0,.4)}
.figure img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
.figure .tag{position:absolute;left:16px;bottom:16px;right:16px;padding:14px 16px;border-radius:14px;background:rgba(6,22,31,.85);backdrop-filter:blur(8px);box-shadow:inset 0 0 0 1px var(--line);font-size:14px;color:var(--mut)}
.figure .tag b{display:block;color:#fff;font-family:Sora;font-size:15px}
.checks{list-style:none;display:grid;gap:12px;margin-top:24px}
.checks li{display:flex;gap:12px;align-items:flex-start;font-size:16px}
.checks li::before{content:'';flex:none;width:22px;height:22px;margin-top:1px;border-radius:50%;background:var(--glow-s) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233BE09A' stroke-width='3'%3E%3Cpath d='M6 12l4 4 8-8'/%3E%3C/svg%3E") center/14px no-repeat;box-shadow:inset 0 0 0 1px var(--glow)}
.light .checks li::before{background-color:#e3f1f6}
.prose p{color:#c7d9e0;font-size:17px}
.prose p+p{margin-top:16px}
.light .prose p{color:#33505c}

/* faq */
.faq details{border-bottom:1px solid var(--line);padding:22px 0}
.faq summary{cursor:pointer;list-style:none;font-family:Sora;font-weight:600;font-size:18px;display:flex;justify-content:space-between;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';color:var(--teal-l);font-size:24px;line-height:1;transition:transform .25s;flex:none}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--mut);margin-top:10px;font-size:16px;max-width:760px}
.light .faq details{border-color:#d5e1e7}.light .faq details p{color:var(--mut2)}.light .faq summary::after{color:var(--light-link)}

/* offices */
.office{position:relative;border-radius:20px;padding:24px 26px;margin-bottom:14px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line);display:flex;justify-content:space-between;align-items:flex-end;gap:16px;overflow:hidden}
.office::after{content:'';position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;border:1px solid var(--glow);animation:ripple2 4s ease-out infinite;pointer-events:none}
.office h3{font-size:19px;font-weight:600}
.office p{color:var(--mut);font-size:15px}
.office a.ph{font-family:Sora;font-weight:700;font-size:20px;color:var(--sig-l);white-space:nowrap;position:relative;z-index:1}
.office .dir{font-size:13.5px;color:var(--teal-l);text-decoration:underline;text-underline-offset:3px}

/* sister band */
.sister{position:relative;border-radius:28px;padding:48px 54px;display:flex;justify-content:space-between;align-items:center;gap:30px;overflow:hidden;background:linear-gradient(110deg,#050F22,#0A1F44 55%,#1b1a5a);box-shadow:inset 0 0 0 1px rgba(43,107,255,.35)}
.sister::before{content:'';position:absolute;inset:-50%;background:conic-gradient(from 0deg,transparent,rgba(25,182,230,.25),transparent 30%,rgba(123,92,255,.25),transparent 60%);animation:spin 14s linear infinite}
.t-tc .sister{background:linear-gradient(110deg,#081C27,#0D2A3A 55%,#3a1a06);box-shadow:inset 0 0 0 1px rgba(254,102,0,.35)}
.t-tc .sister::before{background:conic-gradient(from 0deg,transparent,rgba(254,102,0,.28),transparent 30%,rgba(0,118,159,.3),transparent 60%)}
.sister>*{position:relative}
.sister h2,.sister h3{font-size:30px;font-weight:700;letter-spacing:-.02em}
.sister p{color:#aec3e8;margin-top:6px}

/* cta band */
.cta{text-align:center;padding:100px 0;background:radial-gradient(ellipse 50% 80% at 50% 100%,var(--cta-glow),transparent 70%)}
.cta h2{margin:0 auto}
.cta .sub{margin:16px auto 32px}

/* 50 years banner (their artwork + two review QR codes) */
.banner50{position:relative;border-radius:24px;overflow:hidden;display:grid;grid-template-columns:1fr auto;align-items:stretch;background:#f2f6fa;box-shadow:inset 0 0 0 1px rgba(255,214,120,.5),0 30px 70px rgba(0,0,0,.45)}
.banner50 .art{display:block;width:100%;height:100%;object-fit:cover;object-position:left center}
.qrs{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:18px 22px;background:linear-gradient(180deg,#0f3d63,#0b2c45);border-left:4px solid #e3b33c}
.qr-head{text-align:center;color:#fff;font-family:Sora;font-weight:700;font-size:16px}
.qr-head span{display:block;font-family:'IBM Plex Sans';font-weight:400;font-size:12.5px;color:#c8d8ea}
.qr-row{display:flex;gap:12px}
.qr{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 10px 9px;border-radius:14px;background:#fff;color:#0b1f33;text-align:center;transition:transform .2s;box-shadow:0 10px 22px rgba(0,0,0,.3)}
.qr:hover{transform:translateY(-3px)}
.qr img{width:100px;height:100px;display:block}
.qr b{font-family:Sora;font-size:12.5px;line-height:1.2}
.qr small{font-size:11px;color:#4b5f72}

/* footer */
footer.site{border-top:1px solid var(--line);padding:70px 0 30px;color:var(--mut);font-size:14.5px;background:linear-gradient(180deg,transparent,rgba(0,0,0,.25))}
.fgrid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:34px;margin-top:56px}
.fgrid h3{font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:#fff;margin-bottom:14px}
.fgrid ul{list-style:none;display:grid;gap:8px}
.fgrid a:hover{color:#fff;text-decoration:underline}
.fgrid address{font-style:normal;line-height:1.7}
.fgrid address b{color:#fff;display:block}
.fgrid address a{color:var(--sig-l);font-weight:600}
.social{display:flex;gap:10px;margin-top:16px}
.social a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 0 1px var(--line);color:#d6e6ec}
.social a:hover{box-shadow:inset 0 0 0 1px var(--teal-l);color:#fff}
.social svg{width:17px;height:17px}
.fbase{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:48px;padding-top:22px;font-size:13.5px}
.fbase a{text-decoration:underline;text-underline-offset:3px}

/* blog */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.post-card{display:flex;flex-direction:column;border-radius:20px;overflow:hidden;background:linear-gradient(180deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line);transition:transform .25s}
.post-card:hover{transform:translateY(-4px)}
.post-card img{aspect-ratio:16/9;object-fit:cover;width:100%;display:block;background:#0b2a3a}
.post-card .pc{padding:20px 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.post-card time{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--teal-l)}
.post-card h2,.post-card h3{font-size:18px;line-height:1.32;font-weight:600}
.post-card p{font-size:14.5px;color:var(--mut)}
.pager{display:flex;gap:8px;justify-content:center;margin-top:44px;flex-wrap:wrap}
.pager a,.pager span{min-width:44px;height:44px;display:grid;place-items:center;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line);padding:0 12px}
.pager [aria-current]{background:var(--btn);color:var(--btn-ink);box-shadow:none;font-weight:700}
.article{max-width:780px;margin:0 auto}
.article .meta{color:var(--mut);font-size:14.5px;margin-top:16px}
.post-body{font-size:18px;line-height:1.75;color:#d2e1e7}
.post-body>*+*{margin-top:1.1em}
.post-body h2{font-size:28px;line-height:1.2;margin-top:1.8em;color:#fff;letter-spacing:-.02em}
.post-body h3{font-size:22px;margin-top:1.5em;color:#fff}
.post-body ul,.post-body ol{padding-left:1.4em}
.post-body li+li{margin-top:.45em}
.post-body a{color:var(--teal-l);text-decoration:underline;text-underline-offset:3px}
.post-body img{border-radius:16px;height:auto}
.post-body blockquote{border-left:3px solid var(--sig);padding:6px 0 6px 20px;color:#c7d9e0}
.post-body table{width:100%;border-collapse:collapse;font-size:16px}
.post-body th,.post-body td{border:1px solid var(--line);padding:10px 12px;text-align:left}
.post-body strong{color:#fff}
.tldr{border-radius:18px;padding:22px 24px;background:var(--glow-s);box-shadow:inset 0 0 0 1px var(--glow);margin:30px 0}
.tldr b{font-family:Sora;display:block;margin-bottom:6px;color:#fff}

/* forms */
.form-card{border-radius:24px;padding:34px;background:linear-gradient(180deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--glow)}
.form-card h2{font-size:26px;margin-bottom:6px}
.fgrid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:7px;margin-top:16px}
.field.full{grid-column:1/-1}
.field label,.field legend{font-family:Sora;font-size:14px;font-weight:600;color:#e6f0f4}
.field .req{color:var(--sig-l)}
.field input,.field select,.field textarea{width:100%;font:inherit;font-size:16px;color:#fff;background:rgba(234,242,245,.06);border:1px solid rgba(234,242,245,.28);border-radius:12px;padding:13px 14px}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--teal-l);outline-offset:1px;border-color:transparent}
.field select option{color:#000}
.field .hint{font-size:13.5px;color:var(--mut)}
.field.check{flex-direction:row;align-items:center;gap:10px}
.field.check input{width:20px;height:20px}
fieldset.field{border:0}
.hp{position:absolute;left:-9999px}
.form-card .btn{margin-top:24px}
.form-note{font-size:13.5px;color:var(--mut);margin-top:14px}

/* video embed, partners, misc */
.video{position:relative;aspect-ratio:16/9;border-radius:20px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line);background:#000}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.plist{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.plist article{border-radius:16px;padding:18px 20px;background:rgba(234,242,245,.03);box-shadow:inset 0 0 0 1px var(--line)}
.plist h3{font-size:16px;margin-bottom:4px}
.plist p{font-size:14px;color:var(--mut)}
.review{border-radius:20px;padding:26px 28px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line)}
.review .stars{color:#ffc24a;letter-spacing:2px;font-size:18px}
.notice{border-radius:16px;padding:16px 20px;background:rgba(254,102,0,.08);box-shadow:inset 0 0 0 1px rgba(254,102,0,.35);color:#ffd9c2}
.area-list{columns:3;list-style:none;font-size:15.5px;color:#d6e6ec}
.area-list li{padding:5px 0;break-inside:avoid}
.toc{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}

/* reveal */
.rv{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}
.rv.in{opacity:1;transform:none}
.no-js .rv{opacity:1;transform:none}

@keyframes ping{0%{box-shadow:0 0 0 0 rgba(59,224,154,.6)}100%{box-shadow:0 0 0 10px rgba(59,224,154,0)}}
@keyframes shine{0%,55%{transform:translateX(-120%)}80%,100%{transform:translateX(120%)}}
@keyframes ring{0%{transform:scale(.96);opacity:.9}100%{transform:scale(1.18);opacity:0}}
@keyframes kenburns{from{transform:scale(1.04)}to{transform:scale(1.14) translate(-1.5%,1%)}}
@keyframes gridmove{to{background-position:56px 56px}}
@keyframes scan{from{transform:translateY(-140px)}to{transform:translateY(100vh)}}
@keyframes blink{50%{opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes ripple{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.6);opacity:0}}
@keyframes ripple2{0%{transform:scale(.4);opacity:.8}100%{transform:scale(1.6);opacity:0}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes rot{to{--a:360deg}}
@keyframes camscan{from{transform:translateY(-100%)}to{transform:translateY(400%)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes dash{to{stroke-dashoffset:-28}}
@keyframes bars{from{transform:scaleY(.55)}to{transform:scaleY(1)}}
@keyframes fill{0%{width:15%}60%,100%{width:100%}}
@keyframes bounce{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(-6px);opacity:1}}
@keyframes layer{0%,100%{transform:rotateX(14deg) translateY(0)}50%{transform:rotateX(14deg) translateY(-6px)}}
@property --a{syntax:'<angle>';initial-value:0deg;inherits:false}


/* ===== Oct 13 design pass: hero panels, load sequence, stagger, spotlight ===== */
/* inner page hero */
.phero{min-height:0;display:block;padding:168px 0 84px;background:linear-gradient(180deg,var(--deep2) 0%,var(--deep) 78%)}
.phero::before{display:none}
.phero .bg{display:none}
.phero.short{padding:160px 0 56px}
.ph-bg{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;mask-image:linear-gradient(180deg,#000 60%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 60%,transparent)}
.ph-bg .grid-fx{mask-image:radial-gradient(ellipse 60% 80% at 30% 40%,#000 20%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 60% 80% at 30% 40%,#000 20%,transparent 75%)}
.aur{position:absolute;border-radius:50%;animation:aur 16s ease-in-out infinite alternate;will-change:transform}
.a1{width:760px;height:760px;left:-260px;top:-320px;background:radial-gradient(circle,rgba(0,118,159,.42),transparent 62%)}
.a2{width:680px;height:680px;right:-200px;bottom:-380px;background:radial-gradient(circle,rgba(254,102,0,.2),transparent 62%);animation-delay:-7s}
.t-tc .a1{background:radial-gradient(circle,rgba(43,107,255,.4),transparent 62%)}
.t-tc .a2{background:radial-gradient(circle,rgba(123,92,255,.3),transparent 62%)}
.phero .wrap{position:relative;z-index:2}
.ph-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:56px;align-items:center}
.phero.has-pan h1{font-size:clamp(34px,3.9vw,54px)}
.phero.has-pan .lead{font-size:18px;margin:20px 0 30px}
.phero .trust{margin-top:36px;gap:30px}
.phero .trust b{font-size:22px}
/* camera-feed / console panel */
.pan{position:relative;border-radius:24px;padding:7px;background:linear-gradient(150deg,rgba(47,195,238,.55),rgba(234,242,245,.06) 38%,rgba(234,242,245,.04) 62%,rgba(254,102,0,.45));box-shadow:0 40px 90px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.04);animation:panin 1s .12s cubic-bezier(.2,.7,.2,1) both}
.t-tc .pan{background:linear-gradient(150deg,rgba(34,195,240,.55),rgba(237,242,253,.06) 38%,rgba(237,242,253,.04) 62%,rgba(123,92,255,.55))}
.pan-view{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4/3;background:#0b2a3a}
.pan picture{display:block;width:100%;height:100%}
.pan-img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.08);animation:settle 2.6s .1s cubic-bezier(.2,.7,.2,1) forwards}
.pan-fx{position:absolute;inset:0}
.pan-fx::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.13) 0 1px,transparent 1px 3px),linear-gradient(180deg,rgba(6,22,31,.5),transparent 28%,transparent 66%,rgba(6,22,31,.72))}
.pan-scan{position:absolute;left:0;right:0;top:0;height:26%;background:linear-gradient(180deg,transparent,rgba(47,195,238,.16),transparent);animation:camscan 4.8s linear infinite}
.pan .cn{position:absolute;width:24px;height:24px;border:0 solid var(--teal-l);opacity:.9}
.pan .n1{top:14px;left:14px;border-width:2px 0 0 2px}.pan .n2{top:14px;right:14px;border-width:2px 2px 0 0}.pan .n3{bottom:14px;left:14px;border-width:0 0 2px 2px}.pan .n4{bottom:14px;right:14px;border-width:0 2px 2px 0}
.pan-rec,.pan-clock,.pan-cam,.pan-tag{position:absolute;font:500 12px 'IBM Plex Mono',monospace;color:#EAF2F5;letter-spacing:.02em;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.pan-rec{top:22px;left:48px;display:flex;align-items:center;gap:7px}
.pan-rec i{width:8px;height:8px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 10px #ff3b3b;animation:blink 1.2s steps(1) infinite}
.pan-clock{top:22px;right:48px;color:var(--ok)}
.pan-cam{left:48px;bottom:22px;right:48px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pan-box{position:absolute;left:56%;top:34%;width:24%;height:30%;border:2px solid var(--ok);border-radius:4px;box-shadow:0 0 18px rgba(59,224,154,.35);animation:boxmove 11s ease-in-out infinite}
.pan-box span{position:absolute;top:-23px;left:-2px;white-space:nowrap;font:600 11px 'IBM Plex Mono',monospace;background:var(--ok);color:#062016;padding:3px 7px;border-radius:3px}
.pan-tc .pan-view{border-radius:0 0 18px 18px}
.pan-bar{display:flex;align-items:center;gap:7px;padding:9px 14px 10px;font:500 12px 'IBM Plex Mono',monospace;color:#c9d6f0;background:rgba(4,11,26,.85);border-radius:18px 18px 0 0}
.pan-bar i{width:10px;height:10px;border-radius:50%;background:#ff5f57}.pan-bar i:nth-child(2){background:#febc2e}.pan-bar i:nth-child(3){background:#28c840;margin-right:8px}
.pan-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pan-bar em{margin-left:auto;font-style:normal;color:var(--ok);display:flex;align-items:center;gap:7px;white-space:nowrap}
.pan-bar em s{width:8px;height:8px;border-radius:50%;background:var(--ok);animation:ping 2s infinite}
.pan-pulse{position:absolute;left:0;right:0;bottom:46px;width:100%;height:56px;overflow:visible}
.pan-pulse path{fill:none;stroke:#22C3F0;stroke-width:2.5;vector-effect:non-scaling-stroke;stroke-dasharray:900;stroke-dashoffset:900;filter:drop-shadow(0 0 6px rgba(34,195,240,.8));animation:draw 4.5s ease-in-out infinite}
.pan-tc .pan-tag{left:18px;bottom:16px;padding:6px 10px;border-radius:8px;background:rgba(4,11,26,.8);box-shadow:inset 0 0 0 1px rgba(237,242,253,.14)}
.pan-tc .pan-clock{top:16px;right:18px}
/* load sequence */
.seq>*{animation:rise .8s cubic-bezier(.2,.7,.2,1) both}
.seq>*:nth-child(2){animation-delay:.06s}.seq>*:nth-child(3){animation-delay:.12s}.seq>*:nth-child(4){animation-delay:.18s}.seq>*:nth-child(5){animation-delay:.24s}.seq>*:nth-child(6){animation-delay:.3s}
/* Turner home: live feed hero */
.hero-feed .feed{position:absolute;inset:0;overflow:hidden;z-index:0}
.hero-feed::before{display:none}
.feed-box{position:absolute;right:0;top:104px;height:calc(100% - 104px);min-height:600px;aspect-ratio:1600/932;transform-origin:85% 40%;animation:feedzoom 24s ease-in-out infinite alternate}
.feed-box picture,.feed-box img{display:block;width:100%;height:100%}
.feed-lines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 1px,transparent 1px 3px)}
.feed-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,22,31,.98) 0%,rgba(6,22,31,.92) 36%,rgba(6,22,31,.35) 58%,rgba(6,22,31,0) 78%),linear-gradient(180deg,rgba(6,22,31,.9) 0,rgba(6,22,31,.2) 150px,transparent 40%,transparent 78%,rgba(6,22,31,.98))}
.det{position:absolute;z-index:2;border:2px solid var(--ok);border-radius:4px;box-shadow:0 0 0 1px rgba(0,0,0,.35),0 0 18px rgba(59,224,154,.35);opacity:0;animation:det 9s infinite}
.det span{position:absolute;top:-25px;left:-2px;white-space:nowrap;font:600 11.5px 'IBM Plex Mono',monospace;background:var(--ok);color:#062016;padding:3px 8px;border-radius:3px}
.det.o{border-color:var(--sig);box-shadow:0 0 18px rgba(254,102,0,.45)}.det.o span{background:var(--sig);color:#06161F}
.d1{left:62%;top:6%;width:21%;height:18%;animation-delay:.5s}
.d2{left:90.4%;top:59%;width:9.2%;height:27%;animation-delay:2.4s}.d2 span{left:auto;right:-2px}
.d3{left:49%;top:59%;width:6.5%;height:11%;animation-delay:4.3s}
.feed-hud{display:flex;flex-direction:column;align-items:flex-end;gap:10px;align-self:end;margin-bottom:-10px}
.chipx{font:500 12.5px 'IBM Plex Mono',monospace;color:#EAF2F5;background:rgba(6,22,31,.8);backdrop-filter:blur(6px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);padding:8px 12px;border-radius:9px;display:flex;gap:8px;align-items:center}
.chipx i{width:8px;height:8px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 10px #ff3b3b;animation:blink 1.2s steps(1) infinite}
.chipx span{color:var(--ok)}
.chipx.g{color:var(--ok)}
.talk{position:relative;width:340px;margin-top:8px;background:rgba(6,22,31,.88);box-shadow:inset 0 0 0 1px rgba(254,102,0,.55),0 14px 40px rgba(0,0,0,.45);border-radius:14px;padding:14px 16px 16px;min-height:96px;color:#fff;font-size:14.5px;line-height:1.45}
.talk small{display:block;font:600 11.5px 'IBM Plex Mono',monospace;color:var(--sig-l);margin-bottom:6px}
.talk .line{opacity:0;animation:line 9s infinite}
.talk .line:nth-of-type(2){animation-delay:4.5s;position:absolute;left:16px;right:16px;top:36px}
/* stagger + spotlight */
.rv{transition-delay:calc(var(--i,0) * 70ms)}
.card,.post-card,.office{--mx:-600px;--my:-600px}
.card{background:radial-gradient(380px circle at var(--mx) var(--my),rgba(47,195,238,.14),transparent 60%),linear-gradient(180deg,var(--card1),var(--card2))}
.t-tc .card{background:radial-gradient(380px circle at var(--mx) var(--my),rgba(123,92,255,.16),transparent 60%),linear-gradient(180deg,var(--card1),var(--card2))}
.light .card,.t-tc .light .card{background:radial-gradient(380px circle at var(--mx) var(--my),rgba(0,118,159,.09),transparent 60%),#fff}
.t-tc .light .card{background:radial-gradient(380px circle at var(--mx) var(--my),rgba(43,107,255,.09),transparent 60%),#fff}
.post-card{position:relative;background:radial-gradient(380px circle at var(--mx) var(--my),rgba(47,195,238,.12),transparent 60%),linear-gradient(180deg,var(--card1),var(--card2))}
.post-card img{transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.post-card:hover img{transform:scale(1.05)}
.post-card:hover{box-shadow:inset 0 0 0 1px var(--glow),0 24px 50px rgba(0,0,0,.35)}
.card:hover{box-shadow:inset 0 0 0 1px var(--glow),0 24px 50px rgba(0,0,0,.3)}
.light .card:hover{box-shadow:inset 0 0 0 1px #bcd3dd,0 24px 50px rgba(14,30,40,.1)}
.card .ic{transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.card:hover .ic{transform:translateY(-3px) rotate(-6deg)}
.sec.light.feat{padding:96px 0}
/* blog */
.posts.feat .post-card:first-child{grid-column:span 2;display:grid;grid-template-columns:1.25fr 1fr}
.posts.feat .post-card:first-child img{height:100%;aspect-ratio:auto;min-height:300px}
.posts.feat .post-card:first-child .pc{padding:30px 30px 32px;justify-content:center}
.posts.feat .post-card:first-child h3{font-size:25px;line-height:1.22;letter-spacing:-.015em}
.posts.feat .post-card:first-child p{font-size:16px}
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:70;pointer-events:none}
.progress i{display:block;height:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--btn)}
.post-h1{font-size:clamp(32px,4vw,52px)}
.post-fig{margin:0 0 34px;border-radius:20px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line),0 30px 70px rgba(0,0,0,.4)}
.post-fig img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
@keyframes rise{from{opacity:0;transform:translateY(18px)}}
@keyframes panin{from{transform:translateY(28px) scale(.97)}}
@keyframes settle{to{transform:scale(1)}}
@keyframes aur{to{transform:translate(60px,40px) scale(1.12)}}
@keyframes boxmove{0%,100%{transform:translate(0,0)}35%{transform:translate(-40%,12%)}70%{transform:translate(-14%,-18%)}}
@keyframes draw{0%{stroke-dashoffset:900}55%,70%{stroke-dashoffset:0}100%{stroke-dashoffset:-900}}
@keyframes feedzoom{from{transform:scale(1)}to{transform:scale(1.05)}}
@keyframes det{0%{opacity:0;transform:scale(1.15)}6%{opacity:1;transform:scale(1)}55%{opacity:1}62%,100%{opacity:0}}
@keyframes line{0%,4%{opacity:0}9%,48%{opacity:1}53%,100%{opacity:0}}
@media (max-width:1060px){.ph-grid{grid-template-columns:1fr;gap:40px}.pan{max-width:640px}.feed-hud{display:none}
.hero-feed{flex-direction:column;align-items:stretch;min-height:0;padding-bottom:56px}.hero-feed .wrap{order:1}
.hero-feed .feed{position:relative;order:2;inset:auto;margin:40px 32px 0;border-radius:20px;aspect-ratio:1600/932;box-shadow:inset 0 0 0 1px var(--glow),0 30px 70px rgba(0,0,0,.45)}
.feed-box{inset:0;top:0;height:100%;min-height:0;width:100%;transform:none;animation:none}.feed-shade{background:linear-gradient(180deg,rgba(6,22,31,.4),transparent 30%)}
.posts.feat .post-card:first-child{grid-template-columns:1fr}}
@media (max-width:680px){.phero{padding:140px 0 60px}.phero.short{padding:140px 0 44px}.hero-feed .feed{margin:32px 16px 0}.det span{font-size:9.5px;top:-20px;padding:2px 5px}.posts.feat .post-card:first-child{grid-column:auto;display:flex}.posts.feat .post-card:first-child img{min-height:0;aspect-ratio:16/9}.pan-rec,.pan-clock,.pan-cam{font-size:11px}.pan-rec,.pan-cam{left:40px}.pan-clock{right:40px}}
@media (hover:none){.card,.post-card{--mx:-600px;--my:-600px}}

/* ===== Oct 14: video hero with synced story + site-wide fluid motion ===== */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.35s}
.hero-vid{min-height:100vh;min-height:100svh;padding:150px 0 190px;align-items:center}
.hero-vid::before{display:none}
.hero-vid .vid,.vid-poster,.vid-poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 50%}
.hero-vid .vid{z-index:1;animation:none;opacity:0;transition:opacity 1.2s ease}
.hero-vid .vid.on{opacity:1}
.vid-poster{z-index:0}
.vid-poster img{animation:kenburns 26s ease-in-out infinite alternate}
.vid-shade{position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,rgba(6,22,31,.94) 0%,rgba(6,22,31,.78) 32%,rgba(6,22,31,.18) 62%,rgba(6,22,31,0) 100%),linear-gradient(180deg,rgba(6,22,31,.75) 0,rgba(6,22,31,0) 170px,transparent 55%,rgba(6,22,31,.92) 100%)}
.t-tc .vid-shade{background:linear-gradient(90deg,rgba(4,11,26,.95) 0%,rgba(4,11,26,.8) 32%,rgba(4,11,26,.2) 62%,rgba(4,11,26,0) 100%),linear-gradient(180deg,rgba(4,11,26,.75) 0,rgba(4,11,26,0) 170px,transparent 55%,rgba(4,11,26,.94) 100%)}
.hero-vid .wrap{z-index:3;display:block}
.hero-vid .seq{max-width:680px}
.vid-live{position:absolute;z-index:3;right:32px;top:128px;display:flex;align-items:center;gap:9px;font:500 12.5px 'IBM Plex Mono',monospace;color:#EAF2F5;background:rgba(6,22,31,.7);backdrop-filter:blur(8px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);padding:9px 14px;border-radius:999px}
.vid-live i{width:8px;height:8px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 10px #ff3b3b;animation:blink 1.2s steps(1) infinite}
.t-tc .vid-live i{background:var(--ok);box-shadow:0 0 10px var(--ok);animation:ping 2s infinite}
.vid-live span{color:var(--ok)}
.story{position:absolute;z-index:3;left:0;right:0;bottom:34px}
.story ol{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.story li{position:relative;padding:16px 18px 20px;border-radius:16px;background:rgba(6,22,31,.62);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px rgba(234,242,245,.12);transition:background .5s,box-shadow .5s,transform .5s cubic-bezier(.2,.7,.2,1);overflow:hidden}
.t-tc .story li{background:rgba(4,11,26,.62)}
.st-k{display:flex;align-items:center;gap:10px;font-family:Sora;font-weight:700;font-size:17px;color:#9DB6C2;transition:color .4s}
.st-k::before{content:'';width:10px;height:10px;border-radius:50%;background:rgba(234,242,245,.25);transition:background .4s,box-shadow .4s}
.st-t{display:block;margin-top:6px;font-size:14.5px;line-height:1.4;color:#8ea6b2;transition:color .4s}
.st-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(234,242,245,.08)}
.st-bar b{display:block;height:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--btn)}
.story li.on{background:rgba(10,34,48,.86);box-shadow:inset 0 0 0 1px var(--glow),0 18px 40px rgba(0,0,0,.35);transform:translateY(-4px)}
.t-tc .story li.on{background:rgba(10,26,58,.88)}
.story li.on .st-k{color:#fff}.story li.on .st-t{color:#d6e6ec}
.story li.on .st-k::before{background:var(--sig);box-shadow:0 0 0 5px rgba(254,102,0,.18),0 0 14px var(--sig)}
.t-tc .story li.on .st-k::before{background:var(--teal-l);box-shadow:0 0 0 5px rgba(34,195,240,.18),0 0 14px var(--teal-l)}
.story li.done .st-k::before{background:var(--ok)}
.story li.done .st-bar b{transform:scaleX(1)}
/* scroll-linked motion (progressive enhancement) */
@supports (animation-timeline:view()){
  .hero-vid .seq,.phero .seq{animation:heroout linear both;animation-timeline:scroll(root);animation-range:0 70vh}
  .pan,.figure img,.post-fig img{animation-timeline:view();animation-range:entry 0% exit 100%}
  .figure img,.post-fig img{animation-name:parallax;animation-fill-mode:both;animation-timing-function:linear;scale:1.12}
  .sec h2.rv{animation:sharpen linear both;animation-timeline:view();animation-range:entry 5% cover 30%}
}
@keyframes heroout{to{opacity:.15;transform:translateY(-60px)}}
@keyframes parallax{from{transform:translateY(-6%)}to{transform:translateY(6%)}}
@keyframes sharpen{from{filter:blur(6px);letter-spacing:.01em}to{filter:none}}
.scrollbar{position:fixed;left:0;right:0;top:0;height:2px;z-index:71;transform-origin:0 50%;transform:scaleX(0);background:var(--btn);pointer-events:none}
@supports (animation-timeline:scroll()){.scrollbar{animation:grow linear both;animation-timeline:scroll(root)}}
@keyframes grow{to{transform:scaleX(1)}}
@media (max-width:860px){.hero-vid{padding:140px 0 40px;min-height:0;flex-direction:column;align-items:stretch}.story{position:relative;bottom:auto;margin-top:34px}.story ol{gap:8px}.story li{padding:12px 12px 15px}.st-t{display:none}.st-k{font-size:14.5px;gap:7px}.vid-live{display:none}.vid-shade{background:linear-gradient(180deg,rgba(6,22,31,.75),rgba(6,22,31,.55) 40%,rgba(6,22,31,.92))}.t-tc .vid-shade{background:linear-gradient(180deg,rgba(4,11,26,.75),rgba(4,11,26,.55) 40%,rgba(4,11,26,.94))}}
@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}.hero-vid .seq,.phero .seq,.figure img,.post-fig img,.sec h2.rv{animation:none!important;scale:none}}
.pan-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1s ease}
.pan-vid.on{opacity:1}
.hero-vid h1 .type{display:block;min-height:1.04em;white-space:nowrap}
.hero-vid h1 .caret{display:none}
.hero-vid h1 .type::after{content:'';display:inline-block;width:3px;height:.8em;background:var(--sig);margin-left:6px;vertical-align:-2px;animation:blink 1s steps(1) infinite}
.hero-vid h1{min-height:3.12em}
@media (max-width:680px){.hero-vid h1 .type{white-space:normal}.hero-vid h1{min-height:4.2em}}
@media (max-width:1060px){.hero-hud{display:none}.hero .wrap,.split,.cov,.answer{grid-template-columns:1fr}.radar{justify-self:start;max-width:480px}.svc-grid,.grid3,.posts,.plist{grid-template-columns:1fr 1fr}.grid4{grid-template-columns:1fr 1fr}.feature{grid-column:1/-1;grid-row:auto}.fgrid{grid-template-columns:1fr 1fr}.banner50{grid-template-columns:1fr}.qrs{border-left:0;border-top:4px solid #e3b33c}.qr-row{justify-content:center}.area-list{columns:2}}
@media (max-width:680px){body{font-size:16px}.wrap,.navbar,.topbar{padding-left:16px;padding-right:16px}.topbar .hide-sm{display:none}.svc-grid,.steps,.steps.s3,.grid3,.grid2,.grid4,.posts,.plist,.two-more,.fgrid,.fgrid2{grid-template-columns:1fr}.steps .rail{display:none}.sister{flex-direction:column;align-items:flex-start;padding:32px 24px}.office{flex-direction:column;align-items:flex-start}.hero{padding-top:150px}.phero{padding-top:160px}.brand img,.brand svg{height:44px}.card.mobile{padding-right:28px;padding-top:220px}.trailer{left:16px;right:16px;width:auto;height:190px;bottom:auto}.qr img{width:88px;height:88px}.answer{padding:26px 22px}.form-card{padding:24px 20px}.area-list{columns:1}.sec{padding:72px 0}.topbar .x{display:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rv{opacity:1;transform:none}.pan-img{transform:none}.det{opacity:1}.talk .line:first-of-type{opacity:1}.pan-pulse path{stroke-dashoffset:0}}

.figure-img{width:100%;height:auto;border-radius:22px;box-shadow:0 30px 70px rgba(0,0,0,.35),inset 0 0 0 1px var(--line);aspect-ratio:4/3;object-fit:cover}
.res-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:26px 0 30px}
.res-list a{display:flex;gap:12px;align-items:flex-start;padding:16px;border-radius:16px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line);transition:transform .25s,box-shadow .25s,background .25s;height:100%}
.light .res-list a{background:#fff;box-shadow:0 1px 0 rgba(6,22,31,.04),inset 0 0 0 1px rgba(6,22,31,.08)}
.res-list a:hover,.res-list a:focus-visible{transform:translateY(-3px);box-shadow:0 14px 30px rgba(6,22,31,.12),inset 0 0 0 1px var(--teal)}
.res-list svg{width:26px;height:26px;flex:none;color:var(--teal);margin-top:2px}
.res-list b{display:block;font-family:Sora,sans-serif;font-size:15.5px;margin-bottom:3px}
.res-list span{font-size:14px;line-height:1.45;color:var(--mut)}
.res-list span b{color:inherit}
.light .res-list b{color:#0b2230}
.stat-row{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:28px 0 32px}
.stat-row li{padding:16px 14px;border-radius:16px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line)}
.stat-row b{display:block;font-family:Sora,sans-serif;font-size:30px;line-height:1.1;color:var(--teal-l)}
.stat-row span{display:block;font-size:13px;line-height:1.4;color:var(--mut);margin-top:6px}
@media (max-width:680px){.res-list{grid-template-columns:1fr}.stat-row{grid-template-columns:1fr 1fr}}
.light .res-list span{color:var(--mut2)}.light .res-list a{color:var(--ink)}

.story.six ol{grid-template-columns:repeat(6,1fr);gap:10px}.story.six li{padding:13px 14px 17px}.story.six .st-k{font-size:14.5px}.story.six .st-t{font-size:12.5px;line-height:1.4}
@media (max-width:1180px){.story.six .st-t{display:none}}
@media (max-width:860px){.story.six ol{grid-template-columns:repeat(3,1fr)}.story.six .st-k{font-size:13px}}
.seq>h1{animation-name:riseT;animation-delay:0s!important}@keyframes riseT{from{transform:translateY(16px)}to{transform:none}}
.light .plist article{background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.08)}.light .plist h3{color:var(--ink)}.light .plist p{color:var(--mut2)}
.nav>li>a,.nav>li>button{white-space:nowrap}
@media (max-width:1400px){.t-tc .nav{display:none}.t-tc .menu-btn{display:inline-flex}}

.ctable{overflow-x:auto;border-radius:18px;box-shadow:inset 0 0 0 1px var(--line);margin-top:8px}
.ctable table{width:100%;border-collapse:collapse;min-width:640px;font-size:15px}
.ctable th,.ctable td{text-align:left;vertical-align:top;padding:14px 18px;border-bottom:1px solid var(--line);line-height:1.5}
.ctable thead th{font-family:Sora,sans-serif;font-size:14px;color:var(--teal-l);background:rgba(255,255,255,.03)}
.ctable tbody th{font-weight:600;color:#fff;width:24%}
.ctable td{color:#c9d8de}
.ctable tr:last-child th,.ctable tr:last-child td{border-bottom:0}
.light .ctable{background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.1)}.light .ctable th,.light .ctable td{border-color:rgba(6,22,31,.08)}.light .ctable tbody th{color:var(--ink)}.light .ctable td{color:var(--mut2)}.light .ctable thead th{color:var(--light-link);background:#F3F7F9}

.omap{margin:0 0 16px;border-radius:16px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line);background:rgba(255,255,255,.03)}
.omap iframe{display:block;width:100%;height:240px;border:0;filter:grayscale(.2)}
.omap figcaption{padding:12px 16px;font-size:14px;color:var(--mut)}.omap figcaption b{display:block;color:#fff;font-family:Sora,sans-serif;font-size:15px;margin-bottom:2px}.omap a{color:var(--teal-l);text-decoration:underline}
.light .omap figcaption{color:var(--mut2)}.light .omap figcaption b{color:var(--ink)}.light .omap a{color:var(--light-link)}

/* phone numbers: plain text + separate Call now button (tracked separately) */
.callgrp{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}
.cg-l{color:var(--mut)}
.pnum{font-weight:600;color:var(--frost);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.btn-call{display:inline-flex;align-items:center;gap:6px;padding:5px 12px 5px 10px;border-radius:999px;background:var(--sig);color:#111!important;font-family:Sora,sans-serif;font-weight:700;font-size:12.5px;line-height:1.2;text-decoration:none;box-shadow:0 4px 14px rgba(254,102,0,.28);transition:transform .2s,box-shadow .2s,background .2s}
.btn-call svg{width:14px;height:14px;flex:none}
.btn-call:hover,.btn-call:focus-visible{transform:translateY(-1px);background:var(--sig-l);box-shadow:0 8px 20px rgba(254,102,0,.35)}
.t-tc .btn-call{background:var(--teal);color:#fff!important;box-shadow:0 4px 14px rgba(43,107,255,.3)}.t-tc .btn-call:hover,.t-tc .btn-call:focus-visible{background:#4b82ff}
.topbar{padding-top:7px;padding-bottom:7px}
.tb-phones{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px}
.tb-phones .btn-call{padding:3px 10px 3px 8px;font-size:11.5px}
.tb-sep{width:1px;height:16px;background:var(--line)}
.x-pill{display:inline-flex;align-items:center;gap:10px;padding:5px 6px 5px 14px;border-radius:999px;background:rgba(43,107,255,.14);box-shadow:inset 0 0 0 1px rgba(64,140,255,.55);color:#dbe7ff!important;font-size:13px;text-decoration:none;transition:background .2s,box-shadow .2s}
.x-pill b{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:#1A5FD0;color:#fff;font-family:Sora,sans-serif;font-weight:700;font-size:12.5px}
.x-pill b svg{width:13px;height:13px}
.x-pill:hover,.x-pill:focus-visible{background:rgba(43,107,255,.24);box-shadow:inset 0 0 0 1px #5b9bff}
.x-pill.x-ts{background:rgba(254,102,0,.12);box-shadow:inset 0 0 0 1px rgba(255,146,72,.55);color:#ffe3cf!important}
.x-pill.x-ts b{background:linear-gradient(90deg,#FE6600,#FF9248);color:#111}
.x-pill.x-ts:hover,.x-pill.x-ts:focus-visible{background:rgba(254,102,0,.22)}
.callgrp.cg-hero{gap:12px;padding:6px 6px 6px 18px;border-radius:999px;box-shadow:inset 0 0 0 1.5px var(--line);background:rgba(6,22,31,.35)}
.callgrp.cg-hero .pnum{font-size:16px}
.callgrp.cg-hero .btn-call{padding:10px 16px 10px 14px;font-size:14px}
.light .pnum,.light .cg-l{color:var(--ink)}.light .callgrp.cg-hero{background:#fff;box-shadow:inset 0 0 0 1.5px #b9cbd4}
.cta-phones{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 26px;margin-top:20px}
.cta-phones .callgrp{gap:10px}.cta-phones .pnum{font-size:16px}
.office .ph{display:flex;align-items:center;gap:10px;font-family:Sora;font-weight:700;font-size:18px}
.f-call{display:inline-flex;align-items:center;gap:8px;margin-top:2px}.f-call .pnum{color:var(--sig-l)}.t-tc .f-call .pnum{color:var(--teal-l)}
.btn-call.sm{padding:3px 9px 3px 8px;font-size:11.5px}
.omap-call{display:inline-flex;align-items:center;gap:8px;margin-left:6px}
.area-call{display:flex;align-items:center;gap:10px;margin:-6px 0 14px}
.m-phones{display:grid;gap:10px;margin-top:14px}.m-phones .callgrp{justify-content:space-between;padding:10px 12px 10px 16px;border-radius:14px;box-shadow:inset 0 0 0 1px var(--line)}
.mlink.x-pill{display:flex;justify-content:space-between;margin-top:14px;font-size:14px}
@media (max-width:1180px){.topbar .x-pill span{display:none}.topbar .x-pill{padding:4px}}
@media (max-width:860px){.topbar{flex-direction:column;align-items:stretch;gap:6px}.topbar .x-pill{display:none}.tb-phones{justify-content:space-between}.tb-phones .dot,.tb-sep{display:none}.tb-phones .callgrp{gap:6px}.tb-phones .cg-l{font-size:12px}}
@media (max-width:420px){.tb-phones{flex-direction:column;align-items:stretch;gap:4px}.tb-phones .callgrp{justify-content:space-between}}
.pnum{white-space:nowrap}
.office .ph{flex-direction:column;align-items:flex-end;gap:8px;flex:none}
.m-phones .callgrp{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;white-space:normal}
.m-phones .cg-l{grid-column:1/-1;font-size:13px}
@media (max-width:680px){.office .ph{flex-direction:row;align-items:center}}

.sis-logo{height:38px;width:auto;margin-bottom:14px;display:block}
.sis-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.sis-chips li{font-size:13px;padding:5px 12px;border-radius:999px;background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);color:#dbe7ff}
.sis-btn{flex:none;padding:16px 26px;font-size:16px;display:inline-flex;align-items:center;gap:10px}
.sis-btn svg{width:16px;height:16px}

/* ================= design pass, Oct 14 2026 ================= */
/* headings: no lone last word */
h1,h2,h3,.post-card h3{text-wrap:balance}
.lead,.sub,.prose p{text-wrap:pretty}
.pnum,.callgrp,.ph{white-space:nowrap}
/* blog + keep reading cards: keep the 16:9 frame */
.post-card img{height:auto;aspect-ratio:16/9}
.post-card .pc p{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
/* dark cards keep light text even inside light sections */
.light .office,.light .post-card,.light .review,.light .sister,.light .omap{color:var(--frost)}
.light .office h3,.light .post-card h3,.light .review h3,.light .office .pnum,.light .review .pnum{color:#fff}
.light .office p,.light .post-card p,.light .review p{color:var(--mut)}
.light .office .dir,.light .review a.inline,.light .review .area-list a{color:var(--teal-l)}
.light .review .area-list,.light .review .area-list li{color:#d6e6ec}
.light .review .callgrp .cg-l{color:var(--mut)}
/* city lists: make the cities that have their own page look like links */
.area-list a.inline{color:var(--teal-l);text-decoration:underline;text-decoration-color:rgba(47,195,238,.45);text-underline-offset:3px;font-weight:500}
.area-list a.inline::after{content:' \2192';font-size:.85em;opacity:.7}
/* spacing: heading directly followed by content */
.sec .wrap>h2+.grid2,.sec .wrap>h2+.grid3,.sec .wrap>h2+.grid4,.sec .wrap>h2+.steps,.sec .wrap>h2+.faq,.sec .wrap>h2+.posts,.sec .wrap>h2+.checks,.sec .wrap>h2+.plist,.sec .wrap>h2+.ctable,.sec .wrap>h2+.rv,.sec .wrap>h2+.stat-row,.sec .wrap>h2+.marquee{margin-top:36px}
.sec .wrap>.ctas+.off-block,.off-block.after{margin-top:56px}
.off-block{max-width:none}
.off-block .office{max-width:none}
@media (min-width:861px){.off-block{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}.off-block>.kick,.off-block>.h2{grid-column:1/-1}}
/* sister band always gets breathing room */
.sis-sec{padding-top:56px!important}
.sec.light+.sis-sec,.sec.light+.sec.sis-sec{padding-top:72px!important}
/* balanced grids: center a short last row */
.grid2.bal,.grid3.bal,.grid4.bal{display:flex;flex-wrap:wrap;justify-content:center}
.grid2.bal>*{flex:0 1 calc((100% - 18px)/2)}
.grid3.bal>*{flex:0 1 calc((100% - 36px)/3)}
.grid4.bal>*{flex:0 1 calc((100% - 48px)/4)}
@media (max-width:1060px){.grid3.bal>*,.grid4.bal>*{flex-basis:calc((100% - 18px)/2)}}
@media (max-width:680px){.grid2.bal>*,.grid3.bal>*,.grid4.bal>*{flex-basis:100%}}
@media (max-width:1060px) and (min-width:681px){.posts>:last-child:nth-child(odd){grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.posts>:last-child:nth-child(odd) img{height:100%;aspect-ratio:auto}}
/* split sections without an image: single column, or maps on the right */
.split.solo{grid-template-columns:minmax(0,820px)}
.side-maps .omap:last-child{margin-bottom:0}
/* text-only sections: heading left, copy right */
@media (min-width:861px){
 .wrap.hsplit{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:72px;align-items:start}
 .hsplit>.kick,.hsplit>h2{grid-column:1}
 .hsplit>.hs-body,.hsplit>.tl-lead{grid-column:2;grid-row:1/span 2;max-width:none!important}
 .hsplit.tl>.tl-lead{grid-column:1;grid-row:auto}
 .hsplit.tl>.tline{grid-column:2;grid-row:1/span 3}
}
/* privacy policy: one reading column */
.sec.pm{padding:28px 0}
.sec.pm .wrap{max-width:820px}
.sec.pm h2{font-size:26px}
/* comparison tables: stacked cards on phones */
@media (max-width:640px){
 .ctable{overflow:visible;box-shadow:none;background:none!important}
 .ctable table{min-width:0}
 .ctable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .ctable tbody,.ctable tr,.ctable th,.ctable td{display:block;width:auto!important}
 .ctable tr{border-radius:16px;margin-bottom:12px;padding:6px 0;background:rgba(255,255,255,.03);box-shadow:inset 0 0 0 1px var(--line)}
 .light .ctable tr{background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.1)}
 .ctable tbody th{font-size:16px;padding:12px 16px 6px;border:0}
 .ctable td{padding:6px 16px;border:0}
 .ctable td::before{content:attr(data-label);display:block;font-family:Sora,sans-serif;font-size:12.5px;font-weight:600;color:var(--teal-l);margin-bottom:2px}
 .light .ctable td::before{color:var(--light-link)}
}
/* blog post body */
.post-body hr{border:0;height:1px;background:var(--line);margin:2em 0}
.post-body table{border-radius:14px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line);border-collapse:separate;border-spacing:0}
.post-body th{background:rgba(47,195,238,.1);color:#fff;font-family:Sora,sans-serif;font-size:15px}
.post-body th,.post-body td{border:0;border-bottom:1px solid var(--line)}
.post-body tr:nth-child(even) td{background:rgba(255,255,255,.025)}
@media (max-width:680px){.post-body table{display:block;overflow-x:auto;font-size:14.5px}.post-body th,.post-body td{min-width:140px}}
.post-body ul{list-style:none;padding-left:0}
.post-body ul>li{position:relative;padding-left:1.6em}
.post-body ul>li::before{content:'';position:absolute;left:.25em;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--teal-l)}
.post-body{counter-reset:solo}
.post-body ol:has(>li:only-child){list-style:none;padding-left:1.6em}
.post-body ol:has(>li:only-child)>li{counter-increment:solo;position:relative}
.post-body ol:has(>li:only-child)>li::before{content:counter(solo) '.';position:absolute;left:-1.6em;color:var(--teal-l);font-family:Sora,sans-serif;font-weight:600}
.post-body h2{line-height:1.25}
.post-fig{margin-top:-18px}
.phero.short .article .meta{margin-bottom:0}
@media (max-width:680px){.crumbs li:last-child:not(:first-child){display:none}.crumbs{margin-bottom:14px}}
/* FAQ: fixed icon box so open/close lines up */
.faq summary::after{display:grid;place-items:center;width:26px;height:26px;flex:none;line-height:1}
.faq details[open] summary::after{transform:rotate(45deg)}
/* camera-frame labels readable on light photos */
.pan-rec,.pan-clock,.pan-cam{padding:4px 8px;border-radius:7px;background:rgba(4,12,18,.62);backdrop-filter:blur(4px)}
.pan-cam{right:auto;max-width:calc(100% - 96px)}
@media (max-width:680px){.figure .tag{left:10px;right:auto;bottom:10px;max-width:70%;padding:8px 12px;font-size:12.5px}.figure .tag b{font-size:13px}}
/* map caption call button matches the rest */
.omap a.btn-call{text-decoration:none}
/* radar: stats strip goes under the map on phones */
@media (max-width:680px){
 .radar{aspect-ratio:auto;display:flex;flex-direction:column}
 .radar svg{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:1/1}
 .radar .hud{position:relative;left:auto;right:auto;bottom:auto;margin:0 14px 16px}
}
/* stats band */
.stat-band{grid-template-columns:repeat(3,1fr);margin:0}
.stat-band b{font-size:38px}
.stat-row b{font-variant-numeric:tabular-nums}
@media (max-width:680px){.stat-band{grid-template-columns:1fr}.stat-band b{font-size:32px}}
/* 50 years banner, rebuilt in the site style */
.banner50{background:linear-gradient(110deg,#071B28,#0B2A3D 55%,#132538);box-shadow:inset 0 0 0 1px rgba(227,179,60,.45),0 30px 70px rgba(0,0,0,.45)}
.t-tc .banner50{background:linear-gradient(110deg,#050F22,#0A1F44 55%,#141a3a)}
.b50{display:flex;align-items:center;gap:30px;padding:28px 36px;position:relative;overflow:hidden}
.b50::after{content:'';position:absolute;right:-60px;top:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(227,179,60,.16),transparent 65%);pointer-events:none}
.b50-badge{flex:none;width:118px;height:118px}
.b50-badge svg{width:100%;height:100%;display:block}
.b50-ring{transform-origin:60px 60px;animation:spin 40s linear infinite}
.b50-k{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:#E3B33C}
.b50-h{font-family:Sora,sans-serif;font-weight:700;font-size:clamp(24px,2.6vw,34px);line-height:1.1;color:#fff;margin:6px 0}
.b50-s{color:#c8d8ea;font-size:15px}
.b50-s span{color:#fff;font-style:italic;white-space:nowrap}
.qr .qr-m{display:none}
@media (max-width:680px){
 .b50{flex-direction:column;align-items:flex-start;gap:16px;padding:24px 22px}
 .b50-badge{width:84px;height:84px}
 .qr img,.qr small,.qr b{display:none}
 .qr .qr-m{display:block;font-style:normal;font-family:Sora,sans-serif;font-weight:600;font-size:14px}
 .qr{flex:1;padding:12px 10px;flex-direction:row;justify-content:center}
 .qr-head span{display:none}
 .qr-row{width:100%}
}
/* footer base: padded like everything else */
.fbase{padding-left:0;padding-right:0}
/* bottom call-to-action phones: one office per line on phones */
@media (max-width:560px){.cta-phones{flex-direction:column;align-items:center;gap:10px}.cta-phones .callgrp{flex-wrap:wrap;justify-content:center;white-space:normal}}
/* chips wrap two to a row on phones */
@media (max-width:680px){.chip{padding:10px 14px;font-size:14px;gap:8px}.inds{gap:8px}}
/* long city lists: two columns on phones */
@media (max-width:680px){.area-list,.area-list[style]{columns:2!important;font-size:14.5px}}
/* compact service cards on phones */
@media (max-width:680px){.card{padding:22px 20px}.card .ic{width:40px;height:40px;margin-bottom:12px}.card h3{font-size:18px}.card p{font-size:15px}}
/* partners: compact logo-style grid + slow marquee */
.pgrid{grid-template-columns:repeat(4,1fr);gap:10px}
.pgrid article{padding:14px 16px}
.pgrid h3{font-family:Sora,sans-serif;font-size:15px;letter-spacing:-.01em}
.pgrid p{font-size:13px;line-height:1.45}
@media (max-width:1060px){.pgrid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:680px){.pgrid{grid-template-columns:1fr 1fr}.pgrid p{display:none}.pgrid article{padding:12px 14px}}
.marquee{overflow:hidden;margin:4px 0 26px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-track{display:flex;gap:46px;width:max-content;animation:marquee 60s linear infinite}
.mq-track span{font-family:Sora,sans-serif;font-weight:700;font-size:22px;letter-spacing:-.02em;color:rgba(234,242,245,.42);white-space:nowrap}
.light .mq-track span{color:rgba(14,30,40,.32)}
.marquee:hover .mq-track{animation-play-state:paused}
/* forms */
.field input[type=file]{padding:10px;font-size:14.5px;color:var(--mut)}
.field input[type=file]::file-selector-button{font:600 14px Sora,sans-serif;margin-right:14px;padding:9px 16px;border:0;border-radius:999px;background:var(--btn);color:var(--btn-ink);cursor:pointer}
.field.check input[type=checkbox]{appearance:none;-webkit-appearance:none;width:22px;height:22px;border-radius:7px;border:1.5px solid rgba(234,242,245,.45);background:rgba(234,242,245,.06);display:grid;place-items:center;flex:none;cursor:pointer;transition:background .2s,border-color .2s}
.field.check input[type=checkbox]::after{content:'';width:10px;height:6px;border-left:2.5px solid var(--btn-ink);border-bottom:2.5px solid var(--btn-ink);transform:rotate(-45deg) scale(0);margin-top:-2px;transition:transform .2s}
.field.check input[type=checkbox]:checked{background:var(--sig);border-color:var(--sig)}
.field.check input[type=checkbox]:checked::after{transform:rotate(-45deg) scale(1)}
.field.check input[type=checkbox]:focus-visible{outline:3px solid var(--teal-l);outline-offset:2px}
.field input,.field select,.field textarea{transition:border-color .2s,box-shadow .2s,background .2s}
.field input:focus,.field select:focus,.field textarea:focus{box-shadow:0 0 0 6px rgba(47,195,238,.12)}
.field.ok input,.field.ok select,.field.ok textarea{border-color:rgba(59,224,154,.65)}
.field.ok label::after{content:' \2713';color:var(--ok);font-weight:700}
.btn.sending{pointer-events:none;opacity:.85}
.btn.sending::after{content:'';width:14px;height:14px;margin-left:10px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;display:inline-block;vertical-align:-2px;animation:spin .8s linear infinite}
.m-only{display:none}
@media (max-width:1060px){.m-only{display:block}.d-only{display:none}}
/* thanks page check */
.donecheck{width:64px;height:64px;margin-bottom:18px;fill:none;stroke-linecap:round;stroke-linejoin:round}
.donecheck circle{stroke:var(--ok);stroke-width:3;stroke-dasharray:183;stroke-dashoffset:183;animation:drawc .9s ease-out .2s forwards}
.donecheck path{stroke:var(--ok);stroke-width:4;stroke-dasharray:44;stroke-dashoffset:44;animation:drawc .45s ease-out 1s forwards}
@keyframes drawc{to{stroke-dashoffset:0}}
/* mobile header: after scrolling, the two phone rows collapse into one row */
@media (max-width:860px){
 header.site .topbar{transition:padding .25s}
 header.site.scrolled .tb-phones{flex-direction:row!important;justify-content:space-between;gap:8px}
 header.site.scrolled .tb-phones .callgrp .pnum,header.site.scrolled .tb-phones .cg-l,header.site.scrolled .tb-phones .tb-sep,header.site.scrolled .topbar .dot{display:none}
 header.site.scrolled .tb-phones .callgrp::before{content:attr(data-short);font-size:12.5px;color:var(--mut);margin-right:6px}
 header.site.scrolled .tb-phones .callgrp{justify-content:flex-start}
 .tb-phones .btn-call{padding:5px 12px 5px 10px;min-height:28px}
}
/* TechCore desktop menu fits from 1121px up */
@media (min-width:1121px) and (max-width:1400px){
 .t-tc .nav{display:flex}.t-tc .menu-btn{display:none}
 .t-tc .navbar{gap:10px}
 .t-tc .nav>li>a,.t-tc .nav>li>button{padding:9px 8px;font-size:13.5px}
 .t-tc .nav .btn{padding:10px 14px;font-size:13.5px;margin-left:4px}
 .t-tc .nav>li.sec-link{display:none}
 .t-tc .brand svg,.t-tc .brand img{height:40px;width:auto}
}
/* ================= animations (all respect reduced motion via the global rule) ================= */
/* 1. steps: each circle lights up as the rail fill reaches it */
.step b{transition:background .45s ease,color .45s ease,box-shadow .45s ease,transform .45s cubic-bezier(.3,1.6,.5,1);transition-delay:calc(.25s + var(--s,0) * (1.8s / max(var(--n,4) - 1, 1)))}
.steps.in .step b{background:var(--teal);color:#fff;box-shadow:inset 0 0 0 2px var(--teal),0 0 0 6px rgba(0,118,159,.14);transform:scale(1.06)}
.steps.in .step:last-child b{background:var(--sig);color:var(--btn-ink);box-shadow:inset 0 0 0 2px var(--sig),0 0 0 8px rgba(254,102,0,.18),0 0 22px rgba(254,102,0,.45)}
.t-tc .steps.in .step:last-child b{color:#fff}
.step h3,.step p{transition:opacity .5s ease;transition-delay:calc(.25s + var(--s,0) * (1.8s / max(var(--n,4) - 1, 1)))}

.no-js .steps .step h3,.no-js .steps .step p{opacity:1}
@media (max-width:680px){
 .steps{padding-left:0}
 .steps .rail{display:block;left:22px;right:auto;top:24px;bottom:24px;width:2px;height:auto}
 .steps .rail i{width:100%!important;height:0;transition:height 1.8s cubic-bezier(.2,.7,.2,1);background:linear-gradient(180deg,var(--teal),var(--sig))}
 .steps.in .rail i{height:100%}
 .step{display:grid;grid-template-columns:46px 1fr;column-gap:16px;align-items:start}
 .step b{grid-row:1/span 2;margin-bottom:0}
 .step h3{margin-top:10px}
}
/* 4. live monitoring: alert timeline */
.tline{list-style:none;position:relative;display:grid;gap:14px;counter-reset:none}
.tline::before{content:'';position:absolute;left:21px;top:22px;bottom:22px;width:2px;background:#d5e1e7;transform-origin:top;transform:scaleY(0);transition:transform 2.4s cubic-bezier(.2,.7,.2,1)}
.tline.in::before{transform:none;background:linear-gradient(180deg,var(--teal),var(--sig))}
.tline li{display:grid;grid-template-columns:44px 1fr;gap:16px;align-items:center;opacity:0;transform:translateX(10px);transition:opacity .5s ease,transform .5s ease;transition-delay:calc(.2s + var(--s) * .35s)}
.tline.in li{opacity:1;transform:none}
.tline b{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 2px var(--teal);color:var(--teal);font-family:Sora,sans-serif;position:relative;z-index:1}
.tline li:last-child b{box-shadow:inset 0 0 0 2px var(--sig);color:#B04500}
.tline span{padding:14px 18px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1px #dbe5ea;font-size:15.5px;color:var(--ink)}
.sec:not(.light) .tline span{background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line);color:#d6e6ec}
.no-js .tline li{opacity:1;transform:none}
/* 5. review stars fill once */
.stars-fill{position:relative;display:inline-block;font-size:28px;letter-spacing:4px;line-height:1}
.stars-fill.sm{font-size:19px;letter-spacing:2px}
.stars-fill .st-bg{color:rgba(255,194,74,.22)}
.stars-fill .st-fg{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;color:#ffc24a;width:0;transition:width 1.4s cubic-bezier(.2,.7,.2,1) .2s}
.stars-fill.in .st-fg,.in .stars-fill .st-fg,.no-js .stars-fill .st-fg{width:var(--r,92%)}
.rating{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 30px;padding:18px 22px;border-radius:18px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--glow)}
.rating p{color:var(--mut);font-size:15.5px}.rating b{color:#fff;font-family:Sora,sans-serif}
.light .rating{color:var(--frost)}
/* 6. service area map: pins drop, city dots fade in */
.radar svg circle[r="2.6"],.radar svg circle[r="2.4"],.radar svg text{opacity:0;transition:opacity .5s ease}
.radar.in svg circle[r="2.6"],.radar.in svg circle[r="2.4"],.radar.in svg text{opacity:1}
.radar.in svg g circle:nth-of-type(1),.radar.in svg g text:nth-of-type(1){transition-delay:.5s}
.radar.in svg g circle:nth-of-type(2),.radar.in svg g text:nth-of-type(2){transition-delay:.65s}
.radar.in svg g circle:nth-of-type(3),.radar.in svg g text:nth-of-type(3){transition-delay:.8s}
.radar.in svg g circle:nth-of-type(4),.radar.in svg g text:nth-of-type(4){transition-delay:.95s}
.radar.in svg g circle:nth-of-type(5),.radar.in svg g text:nth-of-type(5){transition-delay:1.1s}
.radar.in svg g circle:nth-of-type(6),.radar.in svg g text:nth-of-type(6){transition-delay:1.25s}
.radar.in svg g circle:nth-of-type(7),.radar.in svg g text:nth-of-type(7){transition-delay:1.4s}
.radar.in svg g circle:nth-of-type(8),.radar.in svg g text:nth-of-type(8){transition-delay:1.55s}
.radar svg>circle[r="8"]{transform-box:fill-box;transform-origin:center;transform:translateY(-14px) scale(.4);opacity:0;transition:transform .6s cubic-bezier(.3,1.6,.5,1),opacity .3s}
.radar.in svg>circle[r="8"]{transform:none;opacity:1}
.radar.in svg>circle[r="8"]:last-of-type{transition-delay:.25s}
.no-js .radar svg circle,.no-js .radar svg text{opacity:1!important;transform:none!important}
/* 8. cards lift on hover (desktop) */
@media (hover:hover){.card{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s}.card:hover{transform:translateY(-4px)}.card .ic{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}.card:hover .ic{transform:scale(1.08) rotate(-3deg)}}
@media (prefers-reduced-motion:reduce){.steps .step b,.steps .step h3,.steps .step p,.tline li{transition:none!important;opacity:1!important}.tline::before{transform:none}.stars-fill .st-fg{width:var(--r,92%)!important}.radar svg circle,.radar svg text{opacity:1!important;transform:none!important}.donecheck circle,.donecheck path{stroke-dashoffset:0!important}.mq-track{animation:none!important}}

.video .yt{position:absolute;inset:0;width:100%;height:100%;border:0;cursor:pointer;background:#000 center/cover no-repeat;display:grid;place-items:center}
.video .yt-play{width:68px;height:48px;transition:transform .2s}
.video .yt:hover .yt-play,.video .yt:focus-visible .yt-play{transform:scale(1.12)}
.video .yt:focus-visible{outline:3px solid var(--teal-l);outline-offset:3px}
.story li .st-k::before,.story li i{flex-shrink:0}
@media (max-width:680px){.pager a,.pager span{min-width:38px;padding:8px 10px}.pager{gap:6px;flex-wrap:wrap;justify-content:center}}
.card.mobile .trailer{background:#06161F;box-shadow:inset 0 0 0 1px var(--glow),0 14px 34px rgba(0,0,0,.35);padding:0;object-fit:contain}
#residential .ctas .btn{padding-left:18px;padding-right:18px;font-size:15px}
.mq-track span{color:var(--mut)}.light .mq-track span{color:var(--mut2)}
.stat-row b span{display:inline;font:inherit;color:inherit;margin:0;line-height:inherit}
.light .stat-row li{background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.1)}
.light .stat-row b{color:var(--light-link)}
.light .stat-row>li>span{color:var(--mut2)}

/* ===== re-check fixes, Oct 14 late ===== */
.nw{white-space:nowrap}
/* phone rows: label on top, number + button below, same for both offices */
@media (max-width:560px){
 .cta-phones .callgrp,.cg-hero[data-short]:has(.cg-l){display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;gap:4px 10px;white-space:nowrap}
 .cta-phones .cg-l,.cg-hero .cg-l{grid-column:1/-1;text-align:center}
 .cg-hero:has(.cg-l){border-radius:18px;padding:8px 10px;justify-content:start}
 .cg-hero:has(.cg-l) .cg-l{text-align:left;padding-left:8px}
}
.qr .qr-m{white-space:nowrap}
@media (max-width:680px){.office::after{display:none}.qr .qr-m{font-size:15px}}
/* blog post tables become stacked cards on phones */
@media (max-width:640px){
 .post-body table.stk{display:block;overflow:visible;box-shadow:none;border-radius:0}
 .post-body table.stk thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .post-body table.stk tbody,.post-body table.stk tr,.post-body table.stk td,.post-body table.stk th{display:block;min-width:0}
 .post-body table.stk tr:first-child:has(th){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .post-body table.stk tr{border-radius:14px;margin-bottom:12px;background:rgba(255,255,255,.03);box-shadow:inset 0 0 0 1px var(--line);padding:6px 0}
 .post-body table.stk td{border:0;padding:6px 16px;background:none!important}
 .post-body table.stk td[data-label]::before{content:attr(data-label);display:block;font:600 12.5px Sora,sans-serif;color:var(--teal-l);margin-bottom:2px}
}
/* wide banner images keep their shape; trailer cutouts show whole */
.post-fig.wide img{aspect-ratio:auto;height:auto}
.post-fig.cutout img,.post-card img[src*="mobile-security-system"]{object-fit:contain;background:#06161F}
.post-body ol>li::marker{color:var(--teal-l);font-family:Sora,sans-serif;font-weight:600}
/* less dead space under short heroes (blog, posts, forms) */
.phero.short{padding-bottom:28px}
.phero.short+.sec,.phero.short+.sec.tight{padding-top:28px}
@media (max-width:680px){.phero.short{padding-bottom:20px}.phero.short+.sec,.phero.short+.sec.tight{padding-top:20px}}
/* equal-height cards with links pinned to the bottom */
.grid2 .card,.grid3 .card,.grid4 .card{display:flex;flex-direction:column}
.grid2 .card>.more,.grid3 .card>.more,.grid4 .card>.more{margin-top:auto;padding-top:12px}
/* blog grid: center a lone last card */
@media (min-width:1061px){.posts>:last-child:nth-child(3n+1){grid-column:2}}
/* stacked splits on phones: smaller gap */
@media (max-width:1060px){.split{gap:28px}}
/* steps: desktop rail runs first circle to last circle */
.steps .rail{left:23px;right:calc((100% - (var(--n,4) - 1) * 24px) / var(--n,4) - 23px)}
@media (max-width:680px){
 .steps .rail{display:none!important}
 .step:not(:last-child)::after{content:'';position:absolute;left:22px;top:46px;bottom:-24px;width:2px;background:linear-gradient(180deg,var(--teal),var(--sig));transform-origin:top;transform:scaleY(0);transition:transform .5s ease;transition-delay:calc(.2s + var(--s,0) * .45s)}
 .steps.in .step:not(:last-child)::after{transform:none}
 .steps{gap:24px}
}
/* radar stats on phones: rows; Chattanooga stat always orange */
.hud .o b{color:#FF9248}
@media (max-width:680px){.radar .hud{flex-direction:column;gap:8px}.radar .hud>div{display:flex;justify-content:space-between;gap:12px}.radar .hud b{display:inline}}
@media (max-width:1060px){.radar{justify-self:center}}
/* timeline and heading-left sections: extra height goes to the bottom row */
@media (min-width:861px){
 .wrap.hsplit{grid-template-rows:auto auto 1fr}
 .hsplit>.hs-body{grid-row:1/4}
 .hsplit.tl{grid-template-rows:auto auto auto 1fr}
 .hsplit.tl>.tline{grid-row:1/5}
}
/* thanks page: check sits above the chip, aligned left */
.donecheck{display:block;width:56px;height:56px;margin:0 0 14px}
/* mobile header when scrolled: more solid */
@media (max-width:860px){header.site.scrolled{background:rgba(6,22,31,.97)}.t-tc header.site.scrolled{background:rgba(4,11,26,.97)}}
/* home: mobile camera card stacks image above text below 1060px */
@media (max-width:1060px){.card.mobile{padding-right:28px;padding-top:220px}.card.mobile .trailer{left:16px;right:16px;top:16px;width:auto;height:190px;bottom:auto}}
/* related-service button in posts wraps nicely on phones */
@media (max-width:680px){.answer .btn{white-space:normal;text-align:center;justify-content:center;width:100%}}
/* 50-year banner kicker never starts a line with a dot */
.b50-k{text-wrap:balance}

/* customer review quotes */
.quote{margin:0;padding:24px 24px 22px;border-radius:20px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--line);display:flex;flex-direction:column;gap:12px}
.quote blockquote{margin:0}
.quote blockquote p{font-size:16px;line-height:1.6;color:#d6e6ec}
.quote figcaption{margin-top:auto;font-size:13.5px;color:var(--mut)}
.quote figcaption b{color:#fff;font-family:Sora,sans-serif;font-size:15px;margin-right:6px}
.light .quote{color:var(--frost)}
.stars-fill .st-bg{color:rgba(255,194,74,.38)}

/* === FIX3-D layout === */
/* text-only heroes: compact info card on the right (desktop) */
.has-aside .ph-grid{grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:64px;align-items:center}
.ph-card{position:relative;justify-self:end;width:100%;border-radius:24px;padding:24px 26px 22px;background:linear-gradient(160deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--glow),0 30px 70px rgba(0,0,0,.4);overflow:hidden;animation:panin 1s .12s cubic-bezier(.2,.7,.2,1) both}
.ph-card::before{content:'';position:absolute;right:-90px;top:-90px;width:240px;height:240px;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 26px,var(--glow-s) 26px 27px),radial-gradient(circle,var(--glow-s),transparent 70%);pointer-events:none}
.ph-card>*{position:relative}
.phc-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.phc-k{font:500 12px 'IBM Plex Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-l)}
.phc-n{font-size:13px;color:var(--mut);white-space:nowrap}.phc-n b{font-family:Sora,sans-serif;color:#fff;font-size:15px}
.phc-rate{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.phc-rate p{font-size:14.5px;color:var(--mut)}.phc-rate b{color:#fff;font-family:Sora,sans-serif}
.phc-offs{list-style:none;display:grid;gap:14px;padding-top:16px}
.phc-offs li{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start}
.phc-ic{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:var(--glow-s);box-shadow:inset 0 0 0 1px var(--glow);color:var(--teal-l)}
.phc-offs li:last-child .phc-ic{color:var(--sig-l);background:rgba(254,102,0,.1);box-shadow:inset 0 0 0 1px rgba(254,102,0,.35)}
.t-tc .phc-offs li:last-child .phc-ic{color:var(--sig-l);background:rgba(123,92,255,.12);box-shadow:inset 0 0 0 1px rgba(161,139,255,.4)}
.phc-ic svg{width:19px;height:19px}
.phc-offs b{display:block;font-family:Sora,sans-serif;font-size:15px;color:#fff;line-height:1.3}
.phc-ad{display:block;font-size:13.5px;color:var(--mut);line-height:1.45}
.phc-call{display:flex;align-items:center;gap:10px;margin-top:6px}
.phc-call .pnum{font-size:15px}
@media (max-width:1060px){.ph-card{display:none}.has-aside .ph-grid{grid-template-columns:1fr}}
/* thanks: check and chip on one row; button-only band as a card */
.phero .donecheck{display:inline-block;vertical-align:middle;width:46px;height:46px;margin:0 12px 24px 0}
.phero .donecheck+.eyebrow{vertical-align:middle}
.wrap.hbtn{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px 40px;padding-top:36px;padding-bottom:36px;border-radius:24px;background:linear-gradient(135deg,var(--card1),var(--card2));box-shadow:inset 0 0 0 1px var(--glow)}
.wrap.hbtn>div[style*="height"]{display:none}
.wrap.hbtn>.ctas{margin-top:0!important}
.wrap.hbtn>h2{font-size:clamp(26px,2.8vw,36px)}
@media (max-width:680px){.wrap.hbtn{margin:0 16px;padding:26px 20px;flex-direction:column;align-items:flex-start}}
/* short heroes with the info card: text sits on the card's baseline, so the grid starts right under the intro */
.phero.short.has-aside .ph-grid{align-items:end}
/* blog grid: short last rows are centered (featured card counts as two) */
@media (min-width:1061px){
 .posts{display:flex;flex-wrap:wrap;justify-content:center}
 .posts>*{flex:0 1 calc((100% - 40px)/3)}
 .posts.feat>.post-card:first-child{flex-basis:calc((100% - 40px)/3*2 + 20px)}
}
/* pager: prev/next arrows; phones show a short window */
.pager{align-items:center}
.pager .pg-step svg{width:18px;height:18px}
.pager .pg-gap{display:none;box-shadow:none;min-width:20px;padding:0;color:var(--mut)}
@media (max-width:680px){.pager{flex-wrap:nowrap;gap:6px}.pager .pg-far{display:none}.pager .pg-gap{display:grid}}
/* posts: comfortable line length, wider featured image, tighter h3 */
.article{max-width:680px}
.post-body h3{line-height:1.3}
.post-body h2+*,.post-body h3+*{margin-top:.6em}
@media (min-width:1061px){.post-fig{margin-left:-110px;margin-right:-110px}.post-h1{font-size:clamp(32px,3.5vw,46px)}}
/* related-service button in posts: one centered line where possible */
@media (max-width:680px){.article .answer .btn{font-size:14px;padding:14px 18px;line-height:1.3}}
/* privacy policy: reading column starts on the same edge as the hero */
.sec.pm .wrap{max-width:1240px}
.sec.pm .wrap>*{max-width:760px}
/* sister band: white Turner wordmark */
.sis-logo.sis-light{height:34px;width:auto}
/* FAQ + offices: city list in three columns on desktop so the columns end closer together */
@media (min-width:1061px){.split .area-list[style]{columns:3!important;font-size:15px}.split .area-list li{padding:4px 0}}
/* local needs: list starts level with the paragraph */
.split>ul.checks{margin-top:4px}
/* office maps beside text stretch to the text height */
@media (min-width:1061px){
 .split>.side-maps{align-self:stretch;display:flex;flex-direction:column;gap:16px}
 .side-maps .omap{flex:1;display:flex;flex-direction:column;margin:0}
 .side-maps .omap iframe{flex:1;height:auto;min-height:240px}
}
/* phones: a map already shows the office, so the extra photo below it is skipped */
@media (max-width:680px){.split.center:has(.omap)>.figure{display:none}}
/* office and area cards: content top-aligned, buttons on one baseline */
.off-block .office{align-items:flex-start}
.off-block .office .ph{align-self:flex-end}
.grid2>.review{display:flex;flex-direction:column}
.grid2>.review>.ctas:last-child{margin-top:auto!important;padding-top:18px}
@media (max-width:680px){.review .ctas{display:grid;grid-template-columns:1fr 1fr;gap:10px}.review .ctas .btn{justify-content:center;text-align:center;padding:13px 12px;font-size:14px}}
/* phones: service cards are compact (icon beside the title) */
@media (max-width:680px){
 .grid2 .card,.grid3 .card,.grid4 .card{display:grid;grid-template-columns:40px 1fr;column-gap:14px;align-items:center;padding:18px 18px 20px}
 .grid2 .card>.ic,.grid3 .card>.ic,.grid4 .card>.ic{margin:0}
 .grid2 .card>h3,.grid3 .card>h3,.grid4 .card>h3{margin:0}
 .grid2 .card>h3:first-child,.grid3 .card>h3:first-child,.grid4 .card>h3:first-child{grid-column:1/-1}
 .grid2 .card>p,.grid3 .card>p,.grid4 .card>p,.grid2 .card>.more,.grid3 .card>.more,.grid4 .card>.more{grid-column:1/-1}
 .grid2 .card>p,.grid3 .card>p,.grid4 .card>p{margin-top:10px}
 .grid2 .card>.more,.grid3 .card>.more,.grid4 .card>.more{padding-top:8px;margin-top:0}
 .grid2.bal,.grid3.bal,.grid4.bal{gap:12px}
}
/* forms: short pairs side by side on phones, equal control heights, side column follows the form */
.field input:not([type=checkbox]):not([type=file]),.field select{height:52px}
@media (min-width:360px) and (max-width:680px){
 .fgrid2{grid-template-columns:1fr 1fr;column-gap:12px}
 .fgrid2>.field:has(input[type=email]),.fgrid2>.field:has(input[type=tel]),.fgrid2>.field:has(select),.fgrid2>.field:has(input[type=file]),.fgrid2>.field:has(#f-city){grid-column:1/-1}
}
@media (min-width:1061px){.wrap.split:has(>.form-card)>div:last-child{position:sticky;top:132px;align-self:start}}
/* TechCore notices use the TechCore accent */
.t-tc .notice{background:rgba(43,107,255,.1);box-shadow:inset 0 0 0 1px rgba(34,195,240,.4);color:#dbe7ff}
/* comparison tables: the recommended column gets a tint */
.ctable.acc2 tr>:nth-child(2),.ctable.acc3 tr>:nth-child(3){background:rgba(47,195,238,.07)}
.ctable.acc2 thead th:nth-child(2),.ctable.acc3 thead th:nth-child(3){color:#fff;background:rgba(47,195,238,.16);box-shadow:inset 0 -2px 0 var(--teal-l)}
.t-tc .ctable.acc2 tr>:nth-child(2),.t-tc .ctable.acc3 tr>:nth-child(3){background:rgba(43,107,255,.1)}
.light .ctable.acc2 tr>:nth-child(2),.light .ctable.acc3 tr>:nth-child(3){background:rgba(0,118,159,.06)}
.light .ctable.acc2 thead th:nth-child(2),.light .ctable.acc3 thead th:nth-child(3){color:var(--ink);background:rgba(0,118,159,.12);box-shadow:inset 0 -2px 0 var(--light-link)}
.t-tc .light .ctable.acc2 tr>:nth-child(2),.t-tc .light .ctable.acc3 tr>:nth-child(3){background:rgba(43,107,255,.07)}
@media (max-width:640px){
 .ctable.acc2 tr>:nth-child(2),.ctable.acc3 tr>:nth-child(3){margin:4px 10px 6px;padding:8px 12px;border-radius:10px;box-shadow:inset 3px 0 0 var(--teal-l)}
 .light .ctable.acc2 tr>:nth-child(2),.light .ctable.acc3 tr>:nth-child(3){box-shadow:inset 3px 0 0 var(--light-link)}
}
/* radar on phones: less empty space under the map, larger labels */
@media (max-width:680px){
 .radar svg{margin-bottom:-14%}
 .radar .hud{margin-top:0}
}
/* footer kicker never leaves a lone separator */
.b50-k .nw{display:inline-block}
/* chip rows of 7 or more: narrower box so rows split evenly instead of leaving one chip alone */
@media (min-width:1061px){.inds:has(>:nth-child(7)){max-width:860px}}
@media (max-width:379px){.review .ctas{grid-template-columns:1fr}}
/* pager fits at 360 */
@media (max-width:380px){.pager a,.pager span{min-width:34px;padding:0 8px}.pager{gap:5px}}
/* radar on phones: bottom corner marks would sit on the stats strip */
@media (max-width:680px){.radar .c3,.radar .c4{display:none}.radar svg g[font-size] text{font-size:13.5px}}
/* office cards on phones: both buttons stay on one line */
@media (max-width:680px){.review .ctas .btn{font-size:13.5px;padding:13px 8px;white-space:nowrap}}
.sis-logo.sis-light{height:40px}
/* text + checklist bands use the heading-left / copy-right split too */
.hs-col{margin-top:22px}
.hs-col>:first-child{margin-top:0!important}
@media (min-width:861px){.hsplit>.sub{grid-column:1;margin-bottom:0}.hs-col{margin-top:0}.hsplit>.hs-col .checks,.hsplit>.hs-col .prose{max-width:none!important}}
/* stat band on phones: compact rows (number left, label right) */
@media (max-width:680px){
 .stat-band{gap:8px}
 .stat-band li{display:grid;grid-template-columns:92px 1fr;align-items:center;column-gap:14px;padding:12px 16px}
 .stat-band b{font-size:26px}
 .stat-band>li>span{margin-top:0}
 .stat-row:not(.stat-band)>li:last-child:nth-child(odd){grid-column:1/-1}
}
/* map captions: phone row on its own line, flush with the address */
.omap-call{display:flex;flex-wrap:wrap;margin:6px 0 0}
/* card titles and FAQ questions: no lone words, no single-word first lines */
.card h3{text-wrap:pretty}
.faq summary{text-wrap:balance}
/* hero trust row fits on one line at 360 */
@media (max-width:380px){.phero .trust{gap:16px}.phero .trust b{font-size:19px}.phero .trust div{font-size:13px}}
/* scrolled header: solid enough that hero text does not show through */
header.site.scrolled{background:rgba(6,22,31,.96)}
.t-tc header.site.scrolled{background:rgba(4,11,26,.96)}
/* short heroes ending in the intro: no extra margin under it */
.phero.short .seq>.lead:last-child{margin-bottom:8px}
/* === END FIX3-D === */

/* === FIX3-B posts === */
/* emoji check / x lists from old posts render as real checklists */
.post-body ul.pb-checks,.post-body ul.pb-xs{display:grid;gap:10px}
.post-body ul.pb-checks>li+li,.post-body ul.pb-xs>li+li{margin-top:0}
.post-body ul.pb-checks>li,.post-body ul.pb-xs>li{padding-left:2.1em}
.post-body ul.pb-checks>li::before,.post-body ul.pb-xs>li::before{left:0;top:.28em;width:22px;height:22px;border-radius:50%;background:var(--glow-s) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233BE09A' stroke-width='3'%3E%3Cpath d='M6 12l4 4 8-8'/%3E%3C/svg%3E") center/14px no-repeat;box-shadow:inset 0 0 0 1px var(--glow)}
.post-body ul.pb-xs>li::before{background:rgba(255,107,107,.1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FF7A7A' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M7 7l10 10M17 7L7 17'/%3E%3C/svg%3E") center/13px no-repeat;box-shadow:inset 0 0 0 1px rgba(255,122,122,.35)}
/* numbered headings get a small number badge */
.post-body .hnum{position:relative;display:inline-grid;place-items:center;min-width:1.6em;height:1.6em;padding:0 .3em;margin-right:.5em;border-radius:999px;background:var(--glow-s);box-shadow:inset 0 0 0 1px var(--glow);color:var(--teal-l);font:700 .7em/1 Sora,sans-serif;vertical-align:.18em}
/* tighter wrapped subheads, phone numbers in prose stay on one line */
.post-body h3{line-height:1.3}
.post-body h4{line-height:1.35}
.pnum{white-space:nowrap}
/* stacked post tables on phones: the first cell reads as the card title */
@media (max-width:640px){.post-body table.stk td:first-child{font-family:Sora,sans-serif;font-weight:600;color:#fff;padding-top:10px}.post-body table.stk td:first-child::before{display:none}}
/* === END FIX3-B === */

/* === FIX3-A partners === */
/* logo grid: every logo sits on a white tile so dark marks read on dark sections */
.plogos article{display:flex;flex-direction:column}
.plogo{display:flex;align-items:center;justify-content:center;height:88px;margin-bottom:14px;padding:12px 14px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.08);overflow:hidden}
.plogo picture{display:contents}
.plogo img{display:block;max-width:100%;height:auto;object-fit:contain}
.pword{font-family:Sora,sans-serif;font-weight:700;font-size:17px;line-height:1.15;letter-spacing:-.01em;text-align:center;color:#55707D;overflow-wrap:anywhere}
.light .plogo{box-shadow:inset 0 0 0 1px rgba(6,22,31,.1)}
@media (max-width:680px){.plogo{height:72px;padding:10px;margin-bottom:10px}.plogo img{max-height:40px;max-width:82%;width:auto}.pword{font-size:15px}}
/* logo marquee: white pills, muted to grayscale, color on hover */
.mq-logos .mq-track{gap:14px;align-items:center}
.mq-logos .mq-logo{display:flex;align-items:center;justify-content:center;flex:none;height:58px;min-width:96px;padding:0 20px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px rgba(6,22,31,.08)}
.mq-logos .mq-logo img{display:block}
.mq-logos .mq-word{font-family:Sora,sans-serif;font-weight:700;font-size:15px;letter-spacing:-.01em;color:#55707D;white-space:nowrap}
@media (max-width:680px){.mq-logos .mq-logo{height:50px;padding:0 14px}}
/* === END FIX3-A === */

/* === 50-years banner logo (Oct 15) === */
.b50-k{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.b50-k picture{display:inline-flex}
.b50-logo{height:54px;width:auto;display:block}
.b50-since{color:#FE6600;font-weight:600}
@media (max-width:480px){.b50-logo{height:46px}}
/* === END 50-years === */

/* === TechCore logo in Business IT dropdown (Oct 15) === */
.dd a.dd-tc{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px 12px;margin-bottom:6px;border-bottom:1px solid rgba(255,255,255,.08);border-radius:10px 10px 0 0}
.dd a.dd-tc svg.logo{height:40px;width:auto}
.dd a.dd-tc span{font-size:12.5px;color:#9fd8ee;letter-spacing:.02em}
/* === END dd-tc === */

/* === LOGO-ANIM === */
/* About hero: animated Turner Security logo in place of the stock photo panel */
.phero.has-aside:has(.lgx){padding-bottom:72px}
.phero.has-aside:has(.lgx) .ph-grid{grid-template-columns:1.08fr .92fr;gap:56px;align-items:center}
.phero.has-aside:has(.lgx) h1{font-size:clamp(34px,3.9vw,54px)}
.phero.has-aside:has(.lgx) .lead{font-size:18px}
.lgx{position:relative;width:100%;border-radius:24px;padding:1px;background:linear-gradient(150deg,rgba(47,195,238,.5),rgba(234,242,245,.05) 40%,rgba(234,242,245,.04) 62%,rgba(254,102,0,.45));box-shadow:0 40px 90px rgba(0,0,0,.5)}
.lgx-stage{position:relative;aspect-ratio:4/3;border-radius:23px;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(20px,3.4vw,34px);background:radial-gradient(120% 90% at 50% 38%,#0f3850 0,#0a2535 46%,#06151f 100%)}
.lgx-grid{position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(47,195,238,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(47,195,238,.08) 1px,transparent 1px);background-size:30px 30px;background-position:center;-webkit-mask-image:radial-gradient(circle at 50% 40%,#000,transparent 68%);mask-image:radial-gradient(circle at 50% 40%,#000,transparent 68%)}
.lgx-emb{position:relative;width:clamp(150px,40%,236px);aspect-ratio:1}
.lgx-emb>*{position:absolute;inset:0;width:100%;height:100%;border-radius:50%}
.lgx-glow{inset:-34%;width:auto;height:auto;background:radial-gradient(circle,rgba(254,102,0,.3) 0,rgba(0,118,159,.22) 38%,transparent 66%);animation:lgxGlow 4s ease-in-out infinite alternate}
.lgx-sweep{inset:4%;width:92%;height:92%;background:conic-gradient(from 0deg,transparent 0 290deg,rgba(47,195,238,.06) 300deg,rgba(47,195,238,.42) 359deg,transparent 360deg);animation:lgxSpin 4.2s linear infinite}
.lgx-pulse{inset:17%;width:66%;height:66%;box-shadow:0 0 0 2px rgba(47,195,238,.55);opacity:0;animation:lgxPulse 3.6s cubic-bezier(.2,.6,.3,1) infinite}
.lgx-pulse.d2{animation-delay:1.8s}
.lgx-ring.r1{animation:lgxSpin 26s linear infinite}
.lgx-ring.r2{animation:lgxSpin 38s linear infinite reverse}
.lgx-t{inset:17%;width:66%;height:66%;z-index:2;filter:drop-shadow(0 6px 22px rgba(0,0,0,.45));animation:lgxIn 1s .1s cubic-bezier(.2,.7,.2,1) both}
.lgx-wm{position:relative;width:clamp(210px,62%,380px);animation:lgxRise 1.1s .35s cubic-bezier(.2,.7,.2,1) both}
.lgx-wm img{display:block;width:100%;height:auto}
.lgx-shine{position:absolute;inset:0;overflow:hidden;-webkit-mask:url(/brand/turner-wordmark.png) center/100% 100% no-repeat;mask:url(/brand/turner-wordmark.png) center/100% 100% no-repeat}
.lgx-shine b{position:absolute;top:0;bottom:0;left:0;width:34%;background:linear-gradient(100deg,transparent 0,rgba(255,236,214,.0) 20%,rgba(255,244,232,.9) 50%,rgba(255,236,214,0) 80%,transparent);transform:translateX(-120%);animation:lgxShine 7s 1.2s ease-in-out infinite}
.lgx-p{position:absolute;width:3px;height:3px;border-radius:50%;background:#2fc3ee;box-shadow:0 0 8px #2fc3ee;opacity:0;animation:lgxDrift 8s linear infinite}
.lgx-p.p1{left:14%;top:70%}.lgx-p.p2{left:26%;top:30%;animation-delay:-2s;background:#FE6600;box-shadow:0 0 8px #FE6600}.lgx-p.p3{left:80%;top:62%;animation-delay:-4s}.lgx-p.p4{left:72%;top:22%;animation-delay:-6s}.lgx-p.p5{left:88%;top:84%;animation-delay:-3s;background:#FE6600;box-shadow:0 0 8px #FE6600}.lgx-p.p6{left:8%;top:40%;animation-delay:-5s}
@keyframes lgxSpin{to{transform:rotate(360deg)}}
@keyframes lgxGlow{from{opacity:.55;transform:scale(.94)}to{opacity:1;transform:scale(1.04)}}
@keyframes lgxPulse{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.62)}}
@keyframes lgxShine{0%{transform:translateX(-120%)}32%,100%{transform:translateX(320%)}}
@keyframes lgxIn{from{opacity:0;transform:scale(.82)}to{opacity:1;transform:none}}
@keyframes lgxRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes lgxDrift{0%{opacity:0;transform:translateY(0)}20%{opacity:.8}80%{opacity:.5}100%{opacity:0;transform:translateY(-60px)}}
@media (max-width:1060px){.phero.has-aside:has(.lgx) .ph-grid{grid-template-columns:1fr;gap:36px}.lgx{max-width:640px}}
@media (max-width:680px){.phero.has-aside:has(.lgx){padding-bottom:44px}.lgx-stage{aspect-ratio:5/4}}
@media (prefers-reduced-motion:reduce){.lgx *{animation:none!important}.lgx-pulse,.lgx-sweep,.lgx-p,.lgx-shine{display:none}.lgx-glow{opacity:.8}}
/* === END LOGO-ANIM === */

/* === Homepage partner strip (Oct 15) === */
.pstrip-sec{padding:44px 0 8px}
.pstrip-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-bottom:18px}
.pstrip-head .kick{width:100%;margin:0}
.pstrip-head h2{font-size:clamp(22px,2.6vw,30px);margin:0}
.mq-home{margin:0}
.mq-home .mq-track{animation-duration:70s}
@media (prefers-reduced-motion:reduce){.mq-home .mq-track{animation:none}}
/* === END strip === */
/* === FINGERPRINT === */
/* "access granted" micro-animation on the header CTA. Base styles are the resting state, so reduced motion (animations off) just shows it settled. */
.fp-btn .fp{position:relative;flex:none;display:inline-grid;place-items:center;width:24px;height:24px;margin:-4px 0 -4px -8px;border-radius:50%;background:rgba(4,14,22,.82);color:#3BE09A;box-shadow:inset 0 0 0 1px rgba(59,224,154,.45);animation:fp-bg 2.4s ease both}
.fp-btn .fp svg{width:15px;height:15px;overflow:visible}
.fp-btn .fp::after{content:'';position:absolute;inset:0;border-radius:50%;border:2px solid #3BE09A;opacity:0;pointer-events:none;animation:fp-ring .7s 1.05s ease-out both}
.fp .fp-r{animation:fp-col 2.4s ease both,fp-swap 2.4s ease both}
.fp .fp-r path{stroke-dasharray:1;stroke-dashoffset:0;animation:fp-draw .8s cubic-bezier(.5,0,.3,1) both}
.fp .fp-r path:nth-child(2n){animation-delay:.08s}.fp .fp-r path:nth-child(3n){animation-delay:.16s}
.fp .fp-s{stroke:#2FC3EE;stroke-width:1.6;opacity:0;animation:fp-scan .9s .15s ease-in-out both}
.fp .fp-c{stroke-width:2.6;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;animation:fp-check 2.4s ease both}
@keyframes fp-draw{from{stroke-dashoffset:1}}
@keyframes fp-col{0%,40%{color:#2FC3EE}48%,100%{color:#3BE09A}}
@keyframes fp-swap{0%,40%{opacity:1}46%,76%{opacity:0}92%,100%{opacity:1}}
@keyframes fp-scan{0%{opacity:0;transform:translateY(2px)}15%,85%{opacity:1}100%{opacity:0;transform:translateY(20px)}}
@keyframes fp-check{0%,41%{opacity:0;stroke-dashoffset:1}44%{opacity:1;stroke-dashoffset:1}56%,76%{opacity:1;stroke-dashoffset:0}86%,100%{opacity:0;stroke-dashoffset:0}}
@keyframes fp-ring{0%{opacity:.85;transform:scale(1)}100%{opacity:0;transform:scale(1.55)}}
@keyframes fp-bg{0%,40%{box-shadow:inset 0 0 0 1px rgba(47,195,238,.5)}50%{box-shadow:inset 0 0 0 1px rgba(59,224,154,.9),0 0 10px rgba(59,224,154,.55)}100%{box-shadow:inset 0 0 0 1px rgba(59,224,154,.45)}}
@media (prefers-reduced-motion:reduce){.fp-btn .fp,.fp-btn .fp *,.fp-btn .fp::after{animation:none!important}}
/* === END FINGERPRINT === */

/* === PATROL-CAM === */
/* homepage hero: small wall-mounted camera that pans, with a faint view cone. Decorative, aria-hidden, CSS only. */
.pcam{position:absolute;z-index:3;right:0;top:176px;width:300px;height:170px;pointer-events:none;contain:layout paint}
.pcam svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 6px 10px rgba(0,0,0,.45))}
.pc-head{transform-box:view-box;transform-origin:268px 31.5px;transform:rotate(-16deg);animation:pcpan 9s infinite}
.pc-cone{animation:pccone 9s infinite}
.pc-led{animation:pcled 1.4s steps(1) infinite}
@keyframes pcpan{0%,8%{transform:rotate(-30deg);animation-timing-function:ease-in-out}50%,58%{transform:rotate(-4deg);animation-timing-function:ease-in-out}100%{transform:rotate(-30deg)}}
@keyframes pccone{0%,100%{opacity:.75}29%,79%{opacity:1}}
@keyframes pcled{0%{opacity:1}70%{opacity:.15}}
@media (max-width:1240px){.pcam{width:240px;height:136px;top:170px}}
@media (max-width:860px){.pcam{display:none}}
@media (prefers-reduced-motion:reduce){.pc-head,.pc-cone,.pc-led{animation:none}}
/* === END PATROL-CAM === */

/* === HOME-ANIM === */
.ha{position:absolute;inset:0;background:#06161F}
.ha svg{display:block;width:100%;height:100%}
.ha-lawn{fill:rgba(0,118,159,.1)}
.ha .ha-gnd{stroke:rgba(234,242,245,.28);stroke-width:2}
.ha-house,.ha-ceil,.ha-chim,.ha-door,.ha-win,.ha-wl,.ha-cam,.ha-ph,.ha-ph-n{fill:none;stroke:#EAF2F5;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.ha-house{stroke-width:3.5}.ha-ceil,.ha-wl{stroke-opacity:.35;stroke-width:2}.ha-chim{fill:#0C2836}
.ha-door{fill:rgba(0,118,159,.18)}.ha-win{fill:rgba(47,195,238,.08)}
.ha-lock{fill:#2FC3EE}.ha-dev{fill:#EAF2F5}.ha-cam rect{fill:#EAF2F5;stroke:none}
.ha-sd{fill:#EAF2F5}.ha-led{fill:#FE6600}.ha-led.sd{fill:#3BE09A}
.ha-cone{fill:#FE6600;opacity:.2}
.ha-per{fill:#2FC3EE;opacity:.9}
.ha-ln path{fill:none;stroke:rgba(234,242,245,.3);stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round}
.ha-sig path{fill:none;stroke:#FE6600;stroke-width:7;stroke-linecap:round;stroke-dasharray:4 300;stroke-dashoffset:4;opacity:0;filter:drop-shadow(0 0 5px #FE6600)}
.ha-sig .out{stroke:#2FC3EE;filter:drop-shadow(0 0 5px #2FC3EE)}
.ha-ping{fill:none;stroke:#FE6600;stroke-width:3;opacity:0;transform-box:fill-box;transform-origin:center}
.ha-pan{fill:#0C2836;stroke:#EAF2F5;stroke-width:2.5}
.ha-scr{fill:#123447}.ha-scr.on{fill:#FE6600}
.ha-keys{fill:rgba(234,242,245,.7)}
.ha-pglow{fill:url(#haGl)}.ha-mglow,.ha-fglow{fill:url(#haGb)}
.ha-card{fill:#0C2836;stroke:rgba(234,242,245,.4);stroke-width:2}.ha-card.on{fill:rgba(0,118,159,.35);stroke:#2FC3EE}
.ha-shd{fill:#00769F;stroke:#2FC3EE;stroke-width:2}.ha-chk{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.ha-big{font:700 34px Sora,sans-serif;fill:#fff}.ha-t{font:500 22px 'IBM Plex Sans',sans-serif;fill:#EAF2F5}
.ha-ph{fill:#0C2836}
.ha-note rect{fill:#EAF2F5}.ha-note circle{fill:#FE6600}.ha-note path{stroke:#0E1E28;stroke-width:4;stroke-linecap:round;opacity:.55}
.ha-lab text{font:600 21px 'IBM Plex Sans',sans-serif;fill:#EAF2F5;letter-spacing:.01em}
.ha-lab path{stroke:rgba(234,242,245,.4);stroke-width:1.5;stroke-dasharray:3 4}
@media (max-width:680px){.ha-lab text{font-size:25px}}
@media (prefers-reduced-motion:no-preference){
.ha *{animation-duration:10s;animation-iteration-count:infinite;animation-timing-function:ease-in-out}
.ha-per{animation-name:haWalk}
.ha-cone{animation-name:haCone}
.ha-ping{animation-name:haPing;animation-timing-function:ease-out}.ha-ping.p2{animation-delay:.3s}
.ha-sig path{animation-name:haTrav;animation-timing-function:linear}
.ha-sig .s1{animation-delay:2.4s}.ha-sig .s2{animation-delay:2.6s}.ha-sig .s3{animation-delay:3s}.ha-sig .s4{animation-delay:3.2s}.ha-sig .s5{animation-delay:5s}.ha-sig .s6{animation-delay:5.2s}
.ha-scr.on,.ha-pglow{animation-name:haPanel}
.ha-card.on,.ha-mglow{animation-name:haMon}
.ha-note,.ha-fglow{animation-name:haNote}
.ha-led.sd{animation:haBlink 2s steps(1) infinite}
}
@keyframes haWalk{0%{transform:translateX(-190px);opacity:0}4%{opacity:.9}20%{transform:none}86%{opacity:.9;transform:none}94%,100%{opacity:0;transform:none}}
@keyframes haCone{0%,19%{opacity:.06}23%,84%{opacity:.2}92%,100%{opacity:.06}}
@keyframes haPing{0%,19.9%{opacity:0;transform:scale(.5)}20%{opacity:1;transform:scale(.5)}32%,100%{opacity:0;transform:scale(2.6)}}
@keyframes haTrav{0%{stroke-dashoffset:4;opacity:1}14%{stroke-dashoffset:-100;opacity:1}15%,100%{stroke-dashoffset:-100;opacity:0}}
@keyframes haPanel{0%,43%{opacity:0}47%,86%{opacity:1}93%,100%{opacity:0}}
@keyframes haMon{0%,63%{opacity:0}67%,88%{opacity:1}95%,100%{opacity:0}}
@keyframes haNote{0%,64%{opacity:0;transform:translateY(10px)}68%,88%{opacity:1;transform:none}95%,100%{opacity:0;transform:none}}
@keyframes haBlink{0%{opacity:1}50%{opacity:.2}}
/* === END HOME-ANIM === */

/* === Nav: Contact link + orange CTA (Oct 15) === */
.nav>li>a.btn-primary{background:var(--btn);color:var(--btn-ink);box-shadow:0 10px 30px var(--btn-shadow)}
.nav>li>a.btn-primary:hover,.nav>li:focus-within>a.btn-primary{background:var(--btn);color:var(--btn-ink);filter:brightness(1.08)}
.mnav .m-contact{display:block;padding:14px 0;font-family:Sora;font-weight:600;font-size:17px;color:inherit;border-bottom:1px solid var(--line)}
/* === END nav === */
/* === Nav fit with Contact (Oct 15) === */
.navbar .brand{flex-shrink:0}
.t-tc .nav>li.sec-link{display:none}
@media (min-width:1121px) and (max-width:1340px){
 .nav>li>a,.nav>li>button{padding:9px 7px;font-size:13.5px}
 .nav .btn{padding:10px 13px;font-size:13.5px}
 .navbar{gap:10px}
}
@media (min-width:1121px) and (max-width:1240px){
 .t-tc .brand svg,.t-tc .brand img{height:34px}
 .t-tc .nav>li>a,.t-tc .nav>li>button{padding:8px 5px;font-size:13px}
 .nav .fp-btn .fp{display:none}
}
/* === END nav fit === */

/* === Footer service areas directory (Oct 15) === */
.fareas{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}
.fareas .fa-h{font-size:15px;margin:0 0 12px}
.fa-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px 36px}
.fa-label{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:#9fb4be;margin:0 0 8px}
.fareas ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.fareas li{font-size:13px;line-height:1.5}
.fa-city{font-weight:600;color:#e6eef2;margin-right:8px}
.fa-links a{color:#a9bcc5;margin-right:10px;white-space:nowrap}
.fa-links a:hover,.fa-city:hover{color:#fff;text-decoration:underline}
/* === END footer areas === */

/* === Page reviews (Oct 15) === */
.pq-sec{padding-top:56px}
.pq-more{margin-top:18px;font-size:14px}
/* === END page reviews === */

/* ===== NATMAP (Oct 16): nationwide coverage map ===== */
.natmap{position:relative;background:linear-gradient(180deg,#0b1a2b,#0a1522);border:1px solid rgba(47,195,238,.25);border-radius:18px;padding:18px 18px 14px;color:#cfe3ee;overflow:hidden}
.natmap svg{display:block;width:100%;height:auto}
.nm-hud{display:flex;justify-content:space-between;font:600 12px/1 ui-monospace,Menlo,monospace;letter-spacing:.12em;color:#7fd3ee;margin-bottom:8px}
.nm-hud .live{color:#4ade80}
.nm-can{fill:rgba(47,195,238,.10);stroke:rgba(47,195,238,.45);stroke-width:.8}
.nm-st{fill:rgba(47,195,238,.16);stroke:rgba(160,220,240,.55);stroke-width:.6}
.nm-hl{fill:rgba(254,102,0,.42);stroke:#FF9248;animation:nmPulse 2.8s ease-in-out infinite}
.nm-hub{fill:rgba(254,102,0,.65);stroke:#FFB37E}
.nm-arc{fill:none;stroke:#FF9248;stroke-width:1.4;stroke-dasharray:5 6;opacity:.8;animation:nmDash 2.4s linear infinite}
.nm-dot{fill:#FFB37E}.nm-ring{fill:none;stroke:#FF9248;stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:nmRing 2.4s ease-out infinite}
.nm-hdot{fill:#fff;stroke:#FE6600;stroke-width:2}.nm-hring{fill:none;stroke:#2FC3EE;stroke-width:1.6;transform-box:fill-box;transform-origin:center;animation:nmRing 2.6s ease-out infinite}.nm-hring.d2{animation-delay:1.3s}
.nm-legend{list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;margin:10px 0 0;padding:0;font-size:13.5px;color:#d7e7f0}
.nm-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:7px;vertical-align:-1px}
.k-hub{background:#FE6600}.k-hl{background:rgba(254,102,0,.5);outline:1px solid #FF9248}.k-all{background:rgba(47,195,238,.3);outline:1px solid rgba(160,220,240,.6)}
@keyframes nmPulse{0%,100%{fill-opacity:.55}50%{fill-opacity:1}}
@keyframes nmDash{to{stroke-dashoffset:-22}}
@keyframes nmRing{0%{transform:scale(.6);opacity:.9}100%{transform:scale(3.2);opacity:0}}
@media (prefers-reduced-motion:reduce){.nm-hl,.nm-arc,.nm-ring,.nm-hring{animation:none}}
.f-nation{margin-top:12px;font-size:14px}
.nm-mex{fill:rgba(255,255,255,.04);stroke:rgba(255,255,255,.12);stroke-width:.6}
.nm-inset{fill:#0b1a2b;stroke:rgba(47,195,238,.3);stroke-dasharray:3 3}
.nm-lbl{font:600 10px ui-monospace,Menlo,monospace;letter-spacing:.14em;fill:#7fd3ee}.nm-canlbl{font-size:13px;fill:rgba(127,211,238,.75)}
.nm-hublbl{font:700 12px Inter,Helvetica,sans-serif;fill:#fff;paint-order:stroke;stroke:#0a1522;stroke-width:3px}
.cov .natmap{width:100%}
.nm-hl-c{fill:rgba(254,102,0,.22);stroke:#FF9248;animation:nmPulseC 3.2s ease-in-out infinite}
@keyframes nmPulseC{0%,100%{fill-opacity:.5}50%{fill-opacity:1}}
@media (prefers-reduced-motion:reduce){.nm-hl-c{animation:none}}
/* ===== /NATMAP ===== */

/* ===== SVC-BTN (Oct 16): Request service button in header ===== */
.btn-svc{display:inline-flex;align-items:center;gap:7px;border:1.5px solid #FE6600;color:#fff;background:transparent;border-radius:999px;padding:9px 16px;font-weight:600;white-space:nowrap}
.btn-svc svg{width:16px;height:16px}
.btn-svc:hover,.btn-svc:focus-visible{background:rgba(254,102,0,.16)}
header.site.solid .btn-svc,header.site.scrolled .btn-svc{color:#fff}
.nav>li.nav-svc>a.btn-svc{padding:9px 15px;border:1.5px solid #FE6600;border-radius:999px;color:#fff;font-weight:600}
.mnav .ctas .btn-svc{justify-content:center}
/* ===== /SVC-BTN ===== */

/* ===== SVC-BTN fit (Oct 16) ===== */
@media (min-width:1061px) and (max-width:1380px){.nav{gap:2px}.nav>li>button,.nav>li>a:not(.btn){padding-left:8px;padding-right:8px}.nav>li.nav-svc>a.btn-svc{padding:8px 11px}.nav>li.nav-svc .btn-svc svg{display:none}}
@media (min-width:1061px) and (max-width:1220px){.nav>li.nav-contact{display:none}}
/* ===== /SVC-BTN fit ===== */

/* ===== TC-SVC fit (Oct 19): Request service button on TechCore header ===== */
@media (min-width:1061px) and (max-width:1600px){.t-tc .nav{gap:0}.t-tc .nav>li>button,.t-tc .nav>li>a:not(.btn){padding-left:7px;padding-right:7px}.t-tc .nav>li.nav-svc>a.btn-svc{padding:8px 11px}.t-tc .nav>li.nav-svc .btn-svc svg{display:none}.t-tc header.site .fp-btn .fp,.t-tc header.site .fp-btn svg{display:none}}
@media (min-width:1061px) and (max-width:1300px){.t-tc .nav>li>button,.t-tc .nav>li>a:not(.btn){padding-left:4px;padding-right:4px}.t-tc header.site .nav .fp-btn{padding-left:14px;padding-right:14px}}
@media (min-width:1061px) and (max-width:1500px){.t-tc .nav>li.nav-contact{display:none}}
@media (min-width:1061px) and (max-width:1200px){.t-tc .nav>li>button,.t-tc .nav>li>a:not(.btn){font-size:14px}}
@media (max-width:1240px){.t-tc .nav{display:none!important}.t-tc .menu-btn{display:inline-flex!important}}
/* ===== /TC-SVC fit ===== */

/* ===== M-SVC (Oct 19): Request service visible next to Menu on phones/tablets ===== */
.m-svc{display:none}
@media (max-width:1120px){.navbar .m-svc{display:inline-flex;margin-left:auto;padding:9px 14px;font-size:14px}}
@media (max-width:1439px){.t-tc .navbar .m-svc{display:inline-flex;margin-left:auto;padding:9px 14px;font-size:14px}}
@media (max-width:1439px){.navbar .m-svc{flex-shrink:0;white-space:nowrap}}
@media (max-width:520px){.navbar{gap:8px}.navbar .m-svc,.t-tc .navbar .m-svc{padding:8px 12px;font-size:13px}.navbar .menu-btn{font-size:0;gap:0;padding:10px 11px}.brand img{height:30px}.brand svg{height:34px}}
@media (max-width:360px){.brand img{height:26px}.brand svg{height:30px}.navbar .m-svc,.t-tc .navbar .m-svc{padding:7px 10px;font-size:12.5px}}
/* ===== /M-SVC ===== */

/* ===== TB-FIT (Oct 19): phone bar fits on small phones ===== */
@media (max-width:440px){.tb-phones .callgrp{min-width:0;max-width:100%}.tb-phones .cg-l{display:none}.tb-phones .callgrp::before{content:attr(data-short);font-size:12.5px;color:var(--mut);margin-right:auto}.tb-phones .pnum{margin-left:8px}}
/* ===== /TB-FIT ===== */
