/* ============================================================
   VOLTAGE — Parsley Automation theme
   Dark industrial + amber diagonal slash.  v1 — home page.
   Reusable: future pages just <link> this file.
   ============================================================ */
:root{
  --bg:#0E1318; --bg2:#131A22; --panel:#1A2230; --panel2:#222C3B; --bd:#2A3543; --bd2:#3A4757;
  --ink:#EEF3F8; --mut:#8E9BAA; --dim:#AEB9C6;
  --ylw:#FFC21A; --ylw2:#FFD24A; --ink-on-ylw:#14110A; --sub-on-ylw:#6b5008;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:ui-monospace,'Cascadia Code','SF Mono',Menlo,Consolas,monospace;
  --wrap:1120px;
  --gutter:max(calc((100vw - var(--wrap)) / 2), 28px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;overflow-x:clip}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}

/* ---------- top nav (sticky) ---------- */
.nav{position:sticky;top:0;z-index:50;background:rgba(14,19,24,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--bd)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:66px}
.brand{display:flex;align-items:center;gap:10px}
.brand .logo{background:var(--ylw);color:var(--ink-on-ylw);font-weight:800;font-size:12px;padding:5px 7px;border-radius:5px;letter-spacing:.02em}
.brand .bname{color:var(--ink);font-weight:700;font-size:13px;letter-spacing:.05em}
.navlinks{display:flex;gap:22px}
.navlinks a{color:var(--dim);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;transition:color .15s}
.navlinks a:hover{color:var(--ylw)}

/* ---------- shared atoms ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:9px;font:600 11px/1 var(--mono);letter-spacing:.14em;color:var(--ylw);text-transform:uppercase;border:1px solid var(--bd);border-radius:30px;padding:8px 14px;background:rgba(255,194,26,.05)}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--ylw);box-shadow:0 0 10px var(--ylw)}
.cta{display:flex;gap:11px;flex-wrap:wrap;margin-top:24px}
.btn{display:inline-flex;align-items:center;gap:7px;font:700 12px/1 var(--sans);letter-spacing:.05em;text-transform:uppercase;padding:13px 20px;border-radius:8px;cursor:pointer;transition:transform .12s ease,filter .15s ease,border-color .15s ease,color .15s ease;border:1px solid transparent}
.btn:active{transform:translateY(1px)}
.btn-y{background:var(--ylw);color:var(--ink-on-ylw)}
.btn-y:hover{filter:brightness(1.07)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--bd2)}
.btn-ghost:hover{border-color:var(--ylw);color:var(--ylw)}
.slash{display:inline-block;width:15px;height:10px;background:var(--ylw);transform:skewX(-18deg);flex:none}

/* ---------- hero (diagonal slash) ---------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--bd);background:linear-gradient(160deg,#10161d,#0c1116)}
.hero-slab{position:absolute;top:0;bottom:0;right:0;width:min(54vw,820px);z-index:1;display:flex;align-items:center;justify-content:flex-end;padding-right:var(--gutter);background:linear-gradient(150deg,var(--ylw2),var(--ylw));clip-path:polygon(20% 0,100% 0,100% 100%,0 100%)}
.hero-slab .stats{text-align:right}
.hero-slab .si{margin-bottom:22px}
.hero-slab .si:last-child{margin-bottom:0}
.hero-slab .n{color:var(--ink-on-ylw);font-weight:900;font-size:2.1rem;line-height:1;letter-spacing:-.01em}
.hero-slab .l{color:var(--sub-on-ylw);font-weight:800;font-size:11px;letter-spacing:.1em;text-transform:uppercase;margin-top:4px}
.hero-grid{position:relative;z-index:2;display:flex;align-items:center;min-height:618px}
.hero-copy{max-width:560px;padding:54px 0}
.hero h1{font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:.92;font-size:clamp(2.6rem,6vw,4.4rem);margin-top:18px;color:var(--ink)}
.hero-sub{color:var(--ylw);font-weight:800;text-transform:uppercase;letter-spacing:.01em;font-size:clamp(.9rem,1.6vw,1.1rem);margin-top:14px}
.hero-lead{color:var(--mut);font-size:1rem;line-height:1.6;margin-top:14px;max-width:44ch}
/* hero code watermark — Ignition error-logger drifting as amber texture */
.codewall{position:absolute;inset:0;overflow:hidden;overflow-anchor:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 26%,#000 100%)}
.code-stream{position:absolute;left:0;right:0;bottom:0;padding:0 8% 24px 12%;overflow-anchor:none}
.code-line{font-family:var(--mono);font-size:clamp(17px,2vw,26px);line-height:1.42;font-weight:800;letter-spacing:-.01em;color:rgba(20,16,4,.14);white-space:pre;overflow:hidden;overflow-anchor:none}
.code-line .kw,.code-line .st,.code-line .cm,.code-line .fn{color:inherit;font-style:normal}
.slab-tag{position:absolute;right:var(--gutter);bottom:36px;z-index:2;display:inline-flex;align-items:center;gap:8px;background:#14110A;color:var(--ylw);font:700 11px var(--mono);letter-spacing:.06em;padding:8px 13px;border-radius:20px;box-shadow:0 10px 24px rgba(0,0,0,.25)}
.slab-tag .dot{width:7px;height:7px;border-radius:50%;background:#5fd38a;box-shadow:0 0 8px #5fd38a;animation:plc-breathe 1.6s infinite}
@media(max-width:760px){.code-stream{padding:0 22px 18px 22px}.code-line{font-size:clamp(16px,5vw,22px)}.slab-tag{right:auto;left:22px;bottom:18px}}

/* ---------- trust strip ---------- */
.trust{border-bottom:1px solid var(--bd);background:var(--bg2)}
.trust-row{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:16px 28px}
.trust .tl{font:600 10.5px var(--mono);letter-spacing:.16em;color:var(--mut);text-transform:uppercase}
.trust .chip{font:600 10.5px var(--mono);letter-spacing:.05em;color:var(--ink);border:1px solid var(--bd2);border-radius:20px;padding:6px 12px;text-transform:uppercase}

/* ---------- generic section + heading ---------- */
.section{padding:112px 0;position:relative}
/* per-section sizes — locked in from the drag tuner */
#live{padding-top:52px;padding-bottom:52px}
#modules{padding-bottom:36px}
#industries{padding-top:96px;padding-bottom:128px}
.section.alt{background:var(--bg2);border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.shead{max-width:660px;margin-bottom:30px}
.seyebrow{display:inline-flex;align-items:center;gap:10px;font:600 12px var(--mono);letter-spacing:.14em;color:var(--ylw);text-transform:uppercase}
.stitle{font-weight:900;font-size:clamp(1.6rem,3.4vw,2.2rem);letter-spacing:-.01em;color:var(--ink);text-transform:uppercase;margin-top:14px;line-height:1.04}
.sintro{color:var(--mut);font-size:15px;line-height:1.6;margin-top:12px}
.section-foot{margin-top:20px}

/* ---------- card grids ---------- */
.grid{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.g5{grid-template-columns:repeat(5,1fr)}
.card{background:var(--panel);border:1px solid var(--bd);border-radius:14px;padding:24px;transition:transform .16s ease,border-color .16s ease}
.card:hover{transform:translateY(-3px);border-color:var(--bd2)}
.card .ci{font-size:26px;color:var(--ylw);display:block;margin-bottom:14px;line-height:1}
.card h3{font-weight:800;font-size:15px;letter-spacing:.02em;color:var(--ink);text-transform:uppercase;margin-bottom:8px}
.card p{color:var(--mut);font-size:13.5px;line-height:1.55}
.more{display:inline-block;color:var(--ylw);font:700 12px var(--sans);letter-spacing:.04em;text-transform:uppercase}
.more:hover{text-decoration:underline}
.card .more{margin-top:14px}
.mtop{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.mtop .ci{margin:0}
.price{font:800 13px var(--mono);color:var(--ylw)}

/* ---------- industry tiles ---------- */
.itile{background:var(--panel);border:1px solid var(--bd);border-radius:12px;padding:22px 12px;text-align:center;transition:transform .16s ease,border-color .16s ease}
.itile:hover{border-color:var(--ylw);transform:translateY(-3px)}
.itile i{font-size:26px;color:var(--ylw);display:block;margin-bottom:11px;line-height:1}
.itile span{font:700 11px var(--sans);letter-spacing:.05em;color:var(--ink);text-transform:uppercase}

/* ---------- about band (mirrored slab) ---------- */
.about{background:var(--bg);border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.about-grid{display:grid;grid-template-columns:minmax(210px,.46fr) 1fr;min-height:428px}
.about-slab{position:relative;background:linear-gradient(150deg,var(--ylw2),var(--ylw));clip-path:polygon(0 0,100% 0,82% 100%,0 100%);display:flex;align-items:center;justify-content:center;padding:24px}
.amono{width:145px;height:145px;border-radius:50%;border:3px solid var(--ink-on-ylw);display:grid;place-items:center}
.amono i{font-size:50px;color:var(--ink-on-ylw)}
.amono.photo{background:url('assets/nathan.jpg') 50% 12%/175% no-repeat;box-shadow:0 8px 22px rgba(0,0,0,.28)}
.about-tag{font:800 11px var(--mono);color:var(--ink-on-ylw);letter-spacing:.12em;margin-top:14px;text-align:center}
.about-content{align-self:center;padding:44px 0 44px 40px}
.abstats{color:var(--mut);font:600 12px var(--mono);letter-spacing:.06em;margin-top:16px}

/* ---------- blog ---------- */
.blogcard{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--bd);border-radius:14px;padding:22px;transition:transform .16s ease,border-color .16s ease}
.blogcard:hover{transform:translateY(-3px);border-color:var(--bd2)}
.bdate{font:600 10.5px var(--mono);letter-spacing:.08em;color:var(--mut);text-transform:uppercase}
.blogcard h2,.blogcard h3{font-weight:800;font-size:14px;color:var(--ink);text-transform:uppercase;line-height:1.25;margin:10px 0 8px}
.blogcard p{color:var(--mut);font-size:13px;line-height:1.5;margin-bottom:14px}
.blogcard .more{margin-top:auto}
#blog{padding-bottom:150px}

/* ---------- blog index + article pages ---------- */
.bloglist{max-width:var(--wrap);margin:0 auto;padding:120px 28px 110px}
.bloglead{color:var(--mut);font-size:15px;line-height:1.6;margin:12px 0 34px;max-width:60ch}
.post{max-width:760px;margin:0 auto;padding:118px 28px 96px}
.post-back{display:inline-flex;align-items:center;gap:7px;font:600 12px var(--mono);letter-spacing:.06em;color:var(--mut);text-transform:uppercase;margin-bottom:28px}
.post-back:hover{color:var(--ylw)}
.post-date{font:600 11px var(--mono);letter-spacing:.1em;color:var(--ylw);text-transform:uppercase}
.post h1{font-weight:900;font-size:clamp(1.9rem,4.5vw,2.9rem);line-height:1.06;letter-spacing:-.01em;color:var(--ink);margin:12px 0 0}
.post-lead{color:var(--ink);font-size:1.18rem;line-height:1.55;margin:16px 0 0;font-weight:500}
.post-byline{display:flex;align-items:center;gap:10px;margin-top:22px;padding-bottom:28px;border-bottom:1px solid var(--bd);font:600 12px var(--mono);letter-spacing:.04em;color:var(--mut)}
.post-byline .dot{width:5px;height:5px;border-radius:50%;background:var(--bd2)}
.post-body{margin-top:34px;color:#C5D0DC;font-size:1.04rem;line-height:1.78}
.post-body h2{font-weight:800;font-size:1.4rem;color:var(--ink);margin:38px 0 14px;letter-spacing:-.005em}
.post-body p{margin:0 0 20px}
.post-body ul,.post-body ol{margin:0 0 20px;padding-left:22px}
.post-body li{margin:0 0 9px}
.post-body li::marker{color:var(--ylw)}
.post-body a{color:var(--ylw);text-decoration:underline;text-underline-offset:2px}
.post-body strong{color:var(--ink);font-weight:700}
.post-body code{font-family:var(--mono);font-size:.88em;background:var(--panel);border:1px solid var(--bd);border-radius:5px;padding:1px 6px;color:#ffd24a}
.post-body pre{background:#0b1016;border:1px solid var(--bd);border-radius:10px;padding:16px 18px;overflow-x:auto;margin:0 0 22px}
.post-body pre code{background:none;border:0;padding:0;color:#c2cedb;font-size:13px;line-height:1.65}
.post-cta{margin-top:46px;padding:22px 24px;background:var(--panel);border:1px solid var(--bd);border-radius:14px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.post-cta p{margin:0;color:var(--mut);font-size:14px;line-height:1.5}
.post-cta b{color:var(--ink)}
/* landing/hub pages ported into the .post layout */
.post-crumbs{font:600 11px var(--mono);letter-spacing:.06em;color:var(--mut);text-transform:uppercase;margin-bottom:18px}
.post-crumbs a{color:var(--mut)}
.post-crumbs a:hover{color:var(--ylw)}
.post-eyebrow{font:600 11px var(--mono);letter-spacing:.1em;color:var(--ylw);text-transform:uppercase}
.post-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:30px 0 8px}
.post-grid .card{display:block}
.post-grid .card h3{font-weight:800;font-size:15px;letter-spacing:.02em;color:var(--ink);text-transform:uppercase;margin-bottom:8px}
.post-grid .card p{color:var(--mut);font-size:13.5px;line-height:1.55;margin:0}
.post-nearby{margin-top:44px;padding-top:24px;border-top:1px solid var(--bd);text-align:center;color:var(--mut);font-size:14px}
.post-nearby a{color:var(--ylw)}
@media(max-width:600px){.post-grid{grid-template-columns:1fr}}
.post-body figure{margin:26px 0}
.post-body figure svg{width:100%;height:auto;display:block;background:#0b1016;border:1px solid var(--bd);border-radius:10px;padding:12px}
.post-body figcaption{font-size:12.5px;color:var(--mut);text-align:center;margin-top:9px}
.post-body em{color:var(--dim)}
.post-body h3{font-weight:800;font-size:1.12rem;color:var(--ink);margin:26px 0 10px}

/* ---------- contact CTA band (slab bleeds right, like the hero) ---------- */
.cta-band{position:relative;overflow:hidden;border-top:1px solid var(--bd);background:linear-gradient(160deg,#10161d,#0c1116)}
.cta-slab{position:absolute;top:0;bottom:0;right:0;width:min(50vw,720px);z-index:1;display:flex;align-items:center;justify-content:flex-end;padding-right:var(--gutter);background:linear-gradient(150deg,var(--ylw2),var(--ylw));clip-path:polygon(26% 0,100% 0,100% 100%,0 100%)}
.cta-info{text-align:right}
.cta-info div{color:var(--ink-on-ylw);font:800 13px var(--mono);letter-spacing:.02em;margin-bottom:12px}
.cta-info div:last-child{margin-bottom:0}
.cta-info i{margin-right:6px}
.cta-info .loc{color:var(--sub-on-ylw);font:700 10.5px var(--sans);letter-spacing:.08em;text-transform:uppercase}
.cta-grid{position:relative;z-index:2;display:flex;align-items:center;min-height:300px}
.cta-content{max-width:520px;padding:48px 0}
.cta-title{font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:.94;font-size:clamp(1.9rem,4.4vw,2.9rem);margin-top:14px;color:var(--ink)}
/* contact form inside the CTA band */
.cta-form{margin-top:22px;max-width:430px}
.cta-form label{display:block;font:600 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:12px 0 6px}
.cta-form input,.cta-form textarea{width:100%;background:var(--panel);border:1px solid var(--bd2);border-radius:8px;padding:11px 13px;color:var(--ink);font-family:var(--sans);font-size:14px}
.cta-form input:focus,.cta-form textarea:focus{outline:none;border-color:var(--ylw)}
.cta-form textarea{resize:vertical}
.cta-form button{margin-top:16px;width:100%;justify-content:center;border:0;cursor:pointer}
.cta-msg{margin-top:10px;font:600 11px var(--mono);min-height:14px;color:var(--mut)}
.cta-reach{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin-top:18px;font:600 13px var(--mono);letter-spacing:.02em}
.cta-reach a{color:var(--ylw)}
.cta-reach a:hover{text-decoration:underline}
.cta-reach span{color:var(--mut)}
.cta-reach i{margin-right:6px}
@media(max-width:760px){.cta-slab:empty{display:none}}

/* ---------- footer ---------- */
.footer{background:#0A0E13;border-top:1px solid var(--bd);padding:38px 0 22px}
.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;gap:22px}
.fbrand .brand{margin-bottom:12px}
.fbrand p{color:var(--mut);font-size:13px;line-height:1.5;max-width:30ch}
.fcol h3{font:700 10px var(--sans);letter-spacing:.12em;color:var(--mut);text-transform:uppercase;margin-bottom:13px}
.fcol a,.fcol span{display:block;color:var(--dim);font-size:13px;line-height:1.5;margin-bottom:9px}
.fcol a:hover{color:var(--ylw)}
.fbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;border-top:1px solid var(--bd);margin-top:26px;padding-top:16px;color:var(--mut);font:500 11px var(--sans)}

/* ---------- live PLC rack (animated ControlLogix drop-in, ported from CVI-site) ---------- */
.plc{margin-top:8px;text-align:center}
.plc-cap{display:flex;align-items:center;justify-content:center;gap:9px;font:600 10.5px var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--mut);margin-bottom:14px}
.plc-cap .pip{width:7px;height:7px;border-radius:50%;background:#5fd38a;box-shadow:0 0 8px #5fd38a;animation:plc-breathe 2.6s infinite}
@keyframes plc-breathe{0%,100%{opacity:1}50%{opacity:.45}}
.plc-svg{width:100%;height:auto;display:block;filter:drop-shadow(0 16px 34px rgba(0,0,0,.55))}
.plc-svg .plc-led{fill:#262c33;stroke:#0b0e12;stroke-width:.5;transition:fill .25s}
.plc-svg .plc-led.g{fill:#5fd38a;filter:drop-shadow(0 0 2.2px rgba(95,211,138,.9))}
.plc-svg .plc-led.r{fill:#fb6f63;filter:drop-shadow(0 0 2.4px rgba(251,111,99,.95))}
.plc-svg .plc-led.a{fill:#ffc233;filter:drop-shadow(0 0 2.4px rgba(255,194,51,.9))}
.plc-svg .plc-led.blink{animation:plc-blink 1.2s steps(1,end) infinite}
@keyframes plc-blink{0%,55%{opacity:1}56%,100%{opacity:.2}}
.plc-svg .plc-bar{fill:#5fd38a;filter:drop-shadow(0 0 2px rgba(95,211,138,.55));transition:width .4s ease,fill .25s}
.plc-svg .plc-bar.r{fill:#fb6f63;filter:drop-shadow(0 0 2px rgba(251,111,99,.6))}
.plc-svg .plc-brand{fill:#eef1f4;font-family:var(--sans);font-weight:700;font-size:13px;letter-spacing:.04em}
.plc-svg .plc-cat{fill:#aab4bf;font-family:var(--mono);font-size:6px;font-weight:700;letter-spacing:.04em}
.plc-svg .plc-name{fill:#7e8c9a;font-family:var(--mono);font-size:6.5px;letter-spacing:.05em}
.plc-svg .plc-ll{fill:#9aa4ad;font-family:var(--mono);font-size:6px;font-weight:700;letter-spacing:.02em}
.plc-svg .plc-num{fill:#6c7884;font-family:var(--mono);font-size:5.5px;font-weight:700}
.plc-svg .plc-ch{fill:#8a97a4;font-family:var(--mono);font-size:6px;font-weight:700;letter-spacing:.03em}
.plc-svg .plc-chv{fill:#9fb0bd;font-family:var(--mono);font-size:6px;letter-spacing:.02em}
.plc-svg .plc-ip{fill:#7e8c9a;font-family:var(--mono);font-size:6.5px;letter-spacing:.04em}
.plc-svg .plc-disp{fill:#5fd38a;font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.04em}
.plc-svg .plc-disp.warn{fill:#fb6f63}
.plc .btn{margin-top:22px}
@media(max-width:760px){.plc-svg{min-width:0}}

/* ---------- energy — animated power-plant process flow ---------- */
.ppwrap{margin-top:28px;background:#0b1016;border:1px solid var(--bd);border-radius:14px;padding:16px 18px 12px;overflow:hidden}
.pp-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.pp-eyebrow{display:inline-flex;align-items:center;gap:9px;font:600 11px var(--mono);letter-spacing:.13em;color:var(--ylw);text-transform:uppercase}
.pp-sub{margin-left:auto;font:600 10px var(--mono);letter-spacing:.06em;color:var(--mut);text-transform:uppercase}
.pp-svg{width:100%;height:auto;display:block;min-width:680px}
.pp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.pp-lbl{fill:#8e9baa;font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.06em}
.pp-lbl-s{fill:#6c7884;font-family:var(--mono);font-size:8px;letter-spacing:.04em}
.pp-val{fill:#FFC21A;font-family:var(--mono);font-size:12px;font-weight:700}
.pp-val2{fill:#eef3f8;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.04em}
@keyframes pp-flow{to{stroke-dashoffset:-220}}
.pp-static{fill:none;stroke:#36404c;stroke-width:3;stroke-linecap:round}
.pp-wire{fill:none;stroke:#3a4450;stroke-width:1.6}
.pp-steam{fill:none;stroke:#ff9d3c;stroke-width:3;stroke-linecap:round;stroke-dasharray:3 11;animation:pp-flow 5s linear infinite}
.pp-water{fill:none;stroke:#4a9fe0;stroke-width:3;stroke-linecap:round;stroke-dasharray:3 11;animation:pp-flow 8s linear infinite}
.pp-cool{fill:none;stroke:#36c0c8;stroke-width:3;stroke-linecap:round;stroke-dasharray:3 11;animation:pp-flow 7s linear infinite}
.pp-elec{fill:none;stroke:#FFC21A;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:1 9;animation:pp-flow 2.4s linear infinite}
@keyframes pp-spin{to{transform:rotate(360deg)}}
.pp-rotor{transform-box:fill-box;transform-origin:center;animation:pp-spin 1.3s linear infinite}
.pp-rotor.slow{animation-duration:1.9s}
@keyframes pp-flame{0%,100%{transform:scaleY(.9);opacity:.82}50%{transform:scaleY(1.14);opacity:1}}
.pp-flame{transform-box:fill-box;transform-origin:bottom center;animation:pp-flame .6s ease-in-out infinite}
.pp-flame.f2{animation-duration:.78s;animation-delay:.15s}
.pp-flame.f3{animation-duration:.5s;animation-delay:.28s}
@keyframes pp-rise{0%{transform:translateY(0) scale(.5);opacity:0}25%{opacity:.5}100%{transform:translateY(-46px) scale(1.6);opacity:0}}
.pp-puff{transform-box:fill-box;transform-origin:center;animation:pp-rise 3.2s ease-out infinite}
.pp-puff.p2{animation-delay:1.05s}
.pp-puff.p3{animation-delay:2.1s}
@keyframes pp-glow{0%,100%{opacity:.28}50%{opacity:.8}}
.pp-glow{animation:pp-glow 2.2s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.pp-svg [class*="pp-"]{animation:none!important}}

/* ---------- energy — solar EMS single-line dashboard ----------
   Lives in #industries inside the shared .ppwrap chrome. The thermal power-plant
   flow it replaced is parked in _parts/power-plant-flow.html (its .pp-* styles
   above are kept so it can drop straight back in). */
.ems-svg{width:100%;height:auto;display:block;min-width:880px}
.ems-svg text{font-family:var(--sans)}
.ems-svg .lab{font:600 9.5px var(--sans);letter-spacing:.12em;fill:#7C8AA0}
.ems-svg .cap{font:600 9px var(--sans);letter-spacing:.1em;fill:#7C8AA0}
.ems-svg .capd{font:500 9px var(--sans);letter-spacing:.06em;fill:#5F7188}
.ems-svg .dev{font:700 10.5px var(--mono);fill:#C9D6E8}
.ems-svg .devv{font:600 10px var(--mono);fill:#93A5BD}
.ems-svg .val-xl{font:700 19px var(--mono);fill:#E9EFF7}
.ems-svg .val{font:700 12px var(--mono);fill:#E9EFF7}
.ems-svg .unit{font:600 10px var(--sans);letter-spacing:.04em;fill:#7C8AA0}
.ems-svg .wire{fill:none;stroke:#26334D;stroke-width:2;stroke-linejoin:round}
@keyframes ems-flow{to{stroke-dashoffset:-180}}
.ems-svg .f-dc{fill:none;stroke:#F59E0B;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 9;animation:ems-flow 7.5s linear infinite}
.ems-svg .f-ac{fill:none;stroke:#FFC21A;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 9;animation:ems-flow 7.5s linear infinite}
.ems-svg .f-bat{fill:none;stroke:#34D399;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 9;animation:ems-flow 6.5s linear infinite}
.ems-svg .f-h2o{fill:none;stroke:#38BDF8;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 9;animation:ems-flow 7s linear infinite}
.ems-svg .f-rej{fill:none;stroke:#F87171;stroke-width:2;stroke-linecap:round;stroke-dasharray:2 8;animation:ems-flow 5.5s linear infinite}
.ems-svg .ewire{fill:none;stroke:#26334D;stroke-width:2;stroke-linejoin:round}
.ems-svg #s-flows.idle .f-dc,.ems-svg #s-flows.idle .f-ac{animation:none;stroke:#39465A;opacity:.5}
.ems-svg .flows.idle path,.ems-svg .flows path.idle{animation:none;stroke:#39465A;opacity:.5}
.ems-svg .dead{stroke:#F87171 !important;animation:none !important;opacity:.55 !important}
.ems-svg .led{stroke:#070A0F;stroke-width:.6;transition:fill .3s}
@keyframes ems-blink{0%,55%{opacity:1}56%,100%{opacity:.25}}
.ems-svg .blink{animation:ems-blink 1.2s steps(1,end) infinite}
@keyframes ems-ray{0%,100%{opacity:.5}50%{opacity:1}}
.ems-svg .sun{animation:ems-ray 5.5s ease-in-out infinite}
.ems-svg .hero{filter:drop-shadow(0 0 6px rgba(255,194,26,.25))}
@media(prefers-reduced-motion:reduce){.ems-svg .f-dc,.ems-svg .f-ac,.ems-svg .f-bat,.ems-svg .f-h2o,.ems-svg .f-rej,.ems-svg .sun,.ems-svg .blink{animation:none!important}}
/* industry panel switcher (Industries tiles act as tabs over the EMS panels) */
.itile{cursor:pointer}
.itile.active{border-color:var(--ylw);background:rgba(255,194,26,.07)}
.itile:focus-visible{outline:2px solid var(--ylw);outline-offset:2px}
.ind-panel[hidden]{display:none}

/* ---------- responsive ---------- */
@media(max-width:960px){
  .fgrid{grid-template-columns:1fr 1fr}
  .fbrand{grid-column:1 / -1}
  .g2,.g3{grid-template-columns:1fr 1fr}
  .g5{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:760px){
  .navlinks{display:none}
  .hero{display:flex;flex-direction:column}
  .hero-grid{order:1;min-height:0}
  .hero-copy{padding:36px 0 30px;max-width:none}
  .hero-slab{order:2;position:static;width:auto;margin:0 -28px;padding:34px 28px;clip-path:polygon(0 12%,100% 0,100% 100%,0 100%);justify-content:flex-start}
  .hero-slab .stats{display:flex;gap:30px;flex-wrap:wrap;text-align:left}
  .hero-slab .si{margin-bottom:0}
  .about-grid{grid-template-columns:1fr}
  .about-slab{clip-path:polygon(0 0,100% 0,100% 86%,0 100%);min-height:200px}
  .about-content{padding:34px 0 6px}
  .cta-band{display:flex;flex-direction:column}
  .cta-grid{order:1;min-height:0}
  .cta-content{padding:40px 0 26px;max-width:none}
  .cta-slab{order:2;position:static;width:auto;margin:0 -28px;padding:30px 28px;clip-path:polygon(0 14%,100% 0,100% 100%,0 100%);justify-content:flex-start}
  .cta-info{text-align:left}
  .g2,.g3,.g5{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){
  .g2,.g3,.g5{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- mobile nav menu (CSS-only) + phone spacing ---------- */
.nav-burger{display:none}
@media(max-width:760px){
  .nav .wrap{position:relative}
  .nav-burger{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid var(--bd2);border-radius:9px;color:var(--ink);font-size:20px;cursor:pointer}
  .nav-burger:active{background:var(--panel)}
  .nav-toggle:checked ~ .navlinks{
    display:flex;flex-direction:column;
    position:absolute;left:0;right:0;top:calc(100% + 1px);
    background:#0c1117;border-top:1px solid var(--bd);border-bottom:1px solid var(--bd);
    box-shadow:0 18px 40px rgba(0,0,0,.55);padding:4px 0;z-index:60
  }
  .nav-toggle:checked ~ .navlinks a{padding:14px 28px;font-size:13px;letter-spacing:.06em}
  .nav-toggle:checked ~ .navlinks a:not(:last-child){border-bottom:1px solid var(--bd)}
  /* trim oversized desktop section padding on phones */
  .section{padding:54px 0}
  #live{padding:44px 0}
  #industries{padding:48px 0}
  #blog{padding:54px 0 78px}
  .about-grid{min-height:0}
  .trust{display:none}
  .ems-svg{min-width:0}
  .ppwrap{padding:10px}
  .hero-slab{display:none}
}
@media(max-width:520px){.g5{grid-template-columns:1fr 1fr}}


/* === inline icon set (replaces the Tabler webfont - render-blocking 36KB CSS + 447KB font removed).
   Markup stays <i class="ti ti-xxx">; each icon is a tiny base64 SVG mask tinted by currentColor. === */
.ti{display:inline-block;width:1em;height:1em;background-color:currentColor;vertical-align:-.125em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
.ti-menu-2{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTQgNmwxNiAwIiAvPiA8cGF0aCBkPSJNNCAxMmwxNiAwIiAvPiA8cGF0aCBkPSJNNCAxOGwxNiAwIiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTQgNmwxNiAwIiAvPiA8cGF0aCBkPSJNNCAxMmwxNiAwIiAvPiA8cGF0aCBkPSJNNCAxOGwxNiAwIiAvPiA8L3N2Zz4=")}
.ti-code{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcgOGwtNCA0bDQgNCIgLz4gPHBhdGggZD0iTTE3IDhsNCA0bC00IDQiIC8+IDxwYXRoIGQ9Ik0xNCA0bC00IDE2IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcgOGwtNCA0bDQgNCIgLz4gPHBhdGggZD0iTTE3IDhsNCA0bC00IDQiIC8+IDxwYXRoIGQ9Ik0xNCA0bC00IDE2IiAvPiA8L3N2Zz4=")}
.ti-layout-dashboard{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgNGg0YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAwIDEgLTEgMWgtNGExIDEgMCAwIDEgLTEgLTF2LTZhMSAxIDAgMCAxIDEgLTEiIC8+IDxwYXRoIGQ9Ik01IDE2aDRhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMXYtMmExIDEgMCAwIDEgMSAtMSIgLz4gPHBhdGggZD0iTTE1IDEyaDRhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMXYtNmExIDEgMCAwIDEgMSAtMSIgLz4gPHBhdGggZD0iTTE1IDRoNGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxIC0xIDFoLTRhMSAxIDAgMCAxIC0xIC0xdi0yYTEgMSAwIDAgMSAxIC0xIiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgNGg0YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAwIDEgLTEgMWgtNGExIDEgMCAwIDEgLTEgLTF2LTZhMSAxIDAgMCAxIDEgLTEiIC8+IDxwYXRoIGQ9Ik01IDE2aDRhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMXYtMmExIDEgMCAwIDEgMSAtMSIgLz4gPHBhdGggZD0iTTE1IDEyaDRhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMXYtNmExIDEgMCAwIDEgMSAtMSIgLz4gPHBhdGggZD0iTTE1IDRoNGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxIC0xIDFoLTRhMSAxIDAgMCAxIC0xIC0xdi0yYTEgMSAwIDAgMSAxIC0xIiAvPiA8L3N2Zz4=")}
.ti-plug-connected{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcgMTJsNSA1bC0xLjUgMS41YTMuNTM2IDMuNTM2IDAgMSAxIC01IC01bDEuNSAtMS41IiAvPiA8cGF0aCBkPSJNMTcgMTJsLTUgLTVsMS41IC0xLjVhMy41MzYgMy41MzYgMCAxIDEgNSA1bC0xLjUgMS41IiAvPiA8cGF0aCBkPSJNMyAyMWwyLjUgLTIuNSIgLz4gPHBhdGggZD0iTTE4LjUgNS41bDIuNSAtMi41IiAvPiA8cGF0aCBkPSJNMTAgMTFsLTIgMiIgLz4gPHBhdGggZD0iTTEzIDE0bC0yIDIiIC8+IDwvc3ZnPg==");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcgMTJsNSA1bC0xLjUgMS41YTMuNTM2IDMuNTM2IDAgMSAxIC01IC01bDEuNSAtMS41IiAvPiA8cGF0aCBkPSJNMTcgMTJsLTUgLTVsMS41IC0xLjVhMy41MzYgMy41MzYgMCAxIDEgNSA1bC0xLjUgMS41IiAvPiA8cGF0aCBkPSJNMyAyMWwyLjUgLTIuNSIgLz4gPHBhdGggZD0iTTE4LjUgNS41bDIuNSAtMi41IiAvPiA8cGF0aCBkPSJNMTAgMTFsLTIgMiIgLz4gPHBhdGggZD0iTTEzIDE0bC0yIDIiIC8+IDwvc3ZnPg==")}
.ti-report-analytics{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTkgNWgtMmEyIDIgMCAwIDAgLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyIC0ydi0xMmEyIDIgMCAwIDAgLTIgLTJoLTIiIC8+IDxwYXRoIGQ9Ik05IDVhMiAyIDAgMCAxIDIgLTJoMmEyIDIgMCAwIDEgMiAyYTIgMiAwIDAgMSAtMiAyaC0yYTIgMiAwIDAgMSAtMiAtMiIgLz4gPHBhdGggZD0iTTkgMTd2LTUiIC8+IDxwYXRoIGQ9Ik0xMiAxN3YtMSIgLz4gPHBhdGggZD0iTTE1IDE3di0zIiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTkgNWgtMmEyIDIgMCAwIDAgLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyIC0ydi0xMmEyIDIgMCAwIDAgLTIgLTJoLTIiIC8+IDxwYXRoIGQ9Ik05IDVhMiAyIDAgMCAxIDIgLTJoMmEyIDIgMCAwIDEgMiAyYTIgMiAwIDAgMSAtMiAyaC0yYTIgMiAwIDAgMSAtMiAtMiIgLz4gPHBhdGggZD0iTTkgMTd2LTUiIC8+IDxwYXRoIGQ9Ik0xMiAxN3YtMSIgLz4gPHBhdGggZD0iTTE1IDE3di0zIiAvPiA8L3N2Zz4=")}
.ti-building-factory-2{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgMjFoMTgiIC8+IDxwYXRoIGQ9Ik01IDIxdi0xMmw1IDR2LTRsNSA0aDQiIC8+IDxwYXRoIGQ9Ik0xOSAyMXYtOGwtMS40MzYgLTkuNTc0YS41IC41IDAgMCAwIC0uNDk1IC0uNDI2aC0xLjE0NWEuNSAuNSAwIDAgMCAtLjQ5NCAuNDE4bC0xLjQzIDguNTgyIiAvPiA8cGF0aCBkPSJNOSAxN2gxIiAvPiA8cGF0aCBkPSJNMTQgMTdoMSIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgMjFoMTgiIC8+IDxwYXRoIGQ9Ik01IDIxdi0xMmw1IDR2LTRsNSA0aDQiIC8+IDxwYXRoIGQ9Ik0xOSAyMXYtOGwtMS40MzYgLTkuNTc0YS41IC41IDAgMCAwIC0uNDk1IC0uNDI2aC0xLjE0NWEuNSAuNSAwIDAgMCAtLjQ5NCAuNDE4bC0xLjQzIDguNTgyIiAvPiA8cGF0aCBkPSJNOSAxN2gxIiAvPiA8cGF0aCBkPSJNMTQgMTdoMSIgLz4gPC9zdmc+")}
.ti-bottle{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEwIDVoNHYtMmExIDEgMCAwIDAgLTEgLTFoLTJhMSAxIDAgMCAwIC0xIDF2MiIgLz4gPHBhdGggZD0iTTE0IDMuNWMwIDEuNjI2IC41MDcgMy4yMTIgMS40NSA0LjUzN2wuMDUgLjA3YTguMDkzIDguMDkzIDAgMCAxIDEuNSA0LjY5NHY2LjE5OWEyIDIgMCAwIDEgLTIgMmgtNmEyIDIgMCAwIDEgLTIgLTJ2LTYuMmMwIC0xLjY4MiAuNTI0IC0zLjMyMiAxLjUgLTQuNjkzbC4wNSAtLjA3YTcuODIzIDcuODIzIDAgMCAwIDEuNDUgLTQuNTM3IiAvPiA8cGF0aCBkPSJNNyAxNC44MDNhMi40IDIuNCAwIDAgMCAxIC0uODAzYTIuNCAyLjQgMCAwIDEgMiAtMWEyLjQgMi40IDAgMCAxIDIgMWEyLjQgMi40IDAgMCAwIDIgMWEyLjQgMi40IDAgMCAwIDIgLTFhMi40IDIuNCAwIDAgMSAxIC0uODA1IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEwIDVoNHYtMmExIDEgMCAwIDAgLTEgLTFoLTJhMSAxIDAgMCAwIC0xIDF2MiIgLz4gPHBhdGggZD0iTTE0IDMuNWMwIDEuNjI2IC41MDcgMy4yMTIgMS40NSA0LjUzN2wuMDUgLjA3YTguMDkzIDguMDkzIDAgMCAxIDEuNSA0LjY5NHY2LjE5OWEyIDIgMCAwIDEgLTIgMmgtNmEyIDIgMCAwIDEgLTIgLTJ2LTYuMmMwIC0xLjY4MiAuNTI0IC0zLjMyMiAxLjUgLTQuNjkzbC4wNSAtLjA3YTcuODIzIDcuODIzIDAgMCAwIDEuNDUgLTQuNTM3IiAvPiA8cGF0aCBkPSJNNyAxNC44MDNhMi40IDIuNCAwIDAgMCAxIC0uODAzYTIuNCAyLjQgMCAwIDEgMiAtMWEyLjQgMi40IDAgMCAxIDIgMWEyLjQgMi40IDAgMCAwIDIgMWEyLjQgMi40IDAgMCAwIDIgLTFhMi40IDIuNCAwIDAgMSAxIC0uODA1IiAvPiA8L3N2Zz4=")}
.ti-droplet{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcuNTAyIDE5LjQyM2MyLjYwMiAyLjEwNSA2LjM5NSAyLjEwNSA4Ljk5NiAwYzIuNjAyIC0yLjEwNSAzLjI2MiAtNS43MDggMS41NjYgLTguNTQ2bC00Ljg5IC03LjI2Yy0uNDIgLS42MjUgLTEuMjg3IC0uODAzIC0xLjkzNiAtLjM5N2ExLjM3NiAxLjM3NiAwIDAgMCAtLjQxIC4zOTdsLTQuODkzIDcuMjZjLTEuNjk1IDIuODM4IC0xLjAzNSA2LjQ0MSAxLjU2NyA4LjU0NiIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTcuNTAyIDE5LjQyM2MyLjYwMiAyLjEwNSA2LjM5NSAyLjEwNSA4Ljk5NiAwYzIuNjAyIC0yLjEwNSAzLjI2MiAtNS43MDggMS41NjYgLTguNTQ2bC00Ljg5IC03LjI2Yy0uNDIgLS42MjUgLTEuMjg3IC0uODAzIC0xLjkzNiAtLjM5N2ExLjM3NiAxLjM3NiAwIDAgMCAtLjQxIC4zOTdsLTQuODkzIDcuMjZjLTEuNjk1IDIuODM4IC0xLjAzNSA2LjQ0MSAxLjU2NyA4LjU0NiIgLz4gPC9zdmc+")}
.ti-plant-2{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTIgOWExMCAxMCAwIDEgMCAyMCAwIiAvPiA8cGF0aCBkPSJNMTIgMTlhMTAgMTAgMCAwIDEgMTAgLTEwIiAvPiA8cGF0aCBkPSJNMiA5YTEwIDEwIDAgMCAxIDEwIDEwIiAvPiA8cGF0aCBkPSJNMTIgNGE5LjcgOS43IDAgMCAxIDIuOTkgNy41IiAvPiA8cGF0aCBkPSJNOS4wMSAxMS41YTkuNyA5LjcgMCAwIDEgMi45OSAtNy41IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTIgOWExMCAxMCAwIDEgMCAyMCAwIiAvPiA8cGF0aCBkPSJNMTIgMTlhMTAgMTAgMCAwIDEgMTAgLTEwIiAvPiA8cGF0aCBkPSJNMiA5YTEwIDEwIDAgMCAxIDEwIDEwIiAvPiA8cGF0aCBkPSJNMTIgNGE5LjcgOS43IDAgMCAxIDIuOTkgNy41IiAvPiA8cGF0aCBkPSJNOS4wMSAxMS41YTkuNyA5LjcgMCAwIDEgMi45OSAtNy41IiAvPiA8L3N2Zz4=")}
.ti-bolt{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEzIDNsMCA3bDYgMGwtOCAxMWwwIC03bC02IDBsOCAtMTEiIC8+IDwvc3ZnPg==");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEzIDNsMCA3bDYgMGwtOCAxMWwwIC03bC02IDBsOCAtMTEiIC8+IDwvc3ZnPg==")}
.ti-mail{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgN2EyIDIgMCAwIDEgMiAtMmgxNGEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMSAtMiAyaC0xNGEyIDIgMCAwIDEgLTIgLTJ2LTEwIiAvPiA8cGF0aCBkPSJNMyA3bDkgNmw5IC02IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgN2EyIDIgMCAwIDEgMiAtMmgxNGEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMSAtMiAyaC0xNGEyIDIgMCAwIDEgLTIgLTJ2LTEwIiAvPiA8cGF0aCBkPSJNMyA3bDkgNmw5IC02IiAvPiA8L3N2Zz4=")}
.ti-map-pin{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTkgMTFhMyAzIDAgMSAwIDYgMGEzIDMgMCAwIDAgLTYgMCIgLz4gPHBhdGggZD0iTTE3LjY1NyAxNi42NTdsLTQuMjQzIDQuMjQzYTIgMiAwIDAgMSAtMi44MjcgMGwtNC4yNDQgLTQuMjQzYTggOCAwIDEgMSAxMS4zMTQgMCIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTkgMTFhMyAzIDAgMSAwIDYgMGEzIDMgMCAwIDAgLTYgMCIgLz4gPHBhdGggZD0iTTE3LjY1NyAxNi42NTdsLTQuMjQzIDQuMjQzYTIgMiAwIDAgMSAtMi44MjcgMGwtNC4yNDQgLTQuMjQzYTggOCAwIDEgMSAxMS4zMTQgMCIgLz4gPC9zdmc+")}
.ti-arrow-left{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgMTJsMTQgMCIgLz4gPHBhdGggZD0iTTUgMTJsNiA2IiAvPiA8cGF0aCBkPSJNNSAxMmw2IC02IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgMTJsMTQgMCIgLz4gPHBhdGggZD0iTTUgMTJsNiA2IiAvPiA8cGF0aCBkPSJNNSAxMmw2IC02IiAvPiA8L3N2Zz4=")}

.ti-device-cctv{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgNGExIDEgMCAwIDEgMSAtMWgxNmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxIC0xIDFoLTE2YTEgMSAwIDAgMSAtMSAtMWwwIC0yIiAvPiA8cGF0aCBkPSJNOCAxNGE0IDQgMCAxIDAgOCAwYTQgNCAwIDEgMCAtOCAwIiAvPiA8cGF0aCBkPSJNMTkgN3Y3YTcgNyAwIDAgMSAtMTQgMHYtNyIgLz4gPHBhdGggZD0iTTEyIDE0bC4wMSAwIiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgNGExIDEgMCAwIDEgMSAtMWgxNmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxIC0xIDFoLTE2YTEgMSAwIDAgMSAtMSAtMWwwIC0yIiAvPiA8cGF0aCBkPSJNOCAxNGE0IDQgMCAxIDAgOCAwYTQgNCAwIDEgMCAtOCAwIiAvPiA8cGF0aCBkPSJNMTkgN3Y3YTcgNyAwIDAgMSAtMTQgMHYtNyIgLz4gPHBhdGggZD0iTTEyIDE0bC4wMSAwIiAvPiA8L3N2Zz4=")}
.ti-bell{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEwIDVhMiAyIDAgMSAxIDQgMGE3IDcgMCAwIDEgNCA2djNhNCA0IDAgMCAwIDIgM2gtMTZhNCA0IDAgMCAwIDIgLTN2LTNhNyA3IDAgMCAxIDQgLTYiIC8+IDxwYXRoIGQ9Ik05IDE3djFhMyAzIDAgMCAwIDYgMHYtMSIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEwIDVhMiAyIDAgMSAxIDQgMGE3IDcgMCAwIDEgNCA2djNhNCA0IDAgMCAwIDIgM2gtMTZhNCA0IDAgMCAwIDIgLTN2LTNhNyA3IDAgMCAxIDQgLTYiIC8+IDxwYXRoIGQ9Ik05IDE3djFhMyAzIDAgMCAwIDYgMHYtMSIgLz4gPC9zdmc+")}
.ti-table{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgNWEyIDIgMCAwIDEgMiAtMmgxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMSAtMiAyaC0xNGEyIDIgMCAwIDEgLTIgLTJ2LTE0IiAvPiA8cGF0aCBkPSJNMyAxMGgxOCIgLz4gPHBhdGggZD0iTTEwIDN2MTgiIC8+IDwvc3ZnPg==");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgNWEyIDIgMCAwIDEgMiAtMmgxNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMSAtMiAyaC0xNGEyIDIgMCAwIDEgLTIgLTJ2LTE0IiAvPiA8cGF0aCBkPSJNMyAxMGgxOCIgLz4gPHBhdGggZD0iTTEwIDN2MTgiIC8+IDwvc3ZnPg==")}

/* === modules store: pricing tiers + module cards === */
.tiers{--chk:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNSAxMmw1IDVsMTAgLTExIi8+PC9zdmc+");display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:56px 0 0;align-items:stretch}
.tier{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--bd);border-radius:14px;padding:24px 18px 20px;position:relative}
.tier.popular{border-color:var(--ylw);box-shadow:inset 0 0 0 1px var(--ylw)}
.tier-badge{position:absolute;top:-10px;left:18px;background:var(--ylw);color:var(--ink-on-ylw);font:800 9px var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;border-radius:20px}
.tier h3{font:800 14px var(--sans);letter-spacing:.04em;color:var(--ink);text-transform:uppercase;margin-bottom:4px}
.tier .sub{color:var(--mut);font-size:12px;min-height:32px;margin-bottom:10px;line-height:1.4}
.tier .amt{font:800 30px var(--mono);color:var(--ink);line-height:1}
.tier.popular .amt{color:var(--ylw)}
.tier .per{display:block;color:var(--mut);font:500 11px var(--mono);letter-spacing:.03em;margin-top:7px}
.tier ul{list-style:none;margin:16px 0 18px;padding:0;flex:1}
.tier li{position:relative;padding-left:20px;margin:0 0 9px;color:var(--dim);font-size:13px;line-height:1.45}
.tier li::before{content:"";position:absolute;left:0;top:3px;width:13px;height:13px;background-color:var(--ylw);-webkit-mask:var(--chk) center/contain no-repeat;mask:var(--chk) center/contain no-repeat}
.tier .btn{width:100%;justify-content:center}
/* v72 "zoned": the fine print is secondary, so it sits under a hairline at a
   smaller size and looser leading instead of pressing against the buy buttons. */
.tier-note{color:var(--mut);font-size:12px;line-height:1.8;text-align:center;
  margin-top:44px;padding-top:22px;border-top:1px solid var(--bd)}
/* caption under a figure -- was borrowing .tier-note before the v72 zoned
   treatment gave that class a rule and a 44px gap. */
.cap-note{color:var(--mut);font-size:12.5px;text-align:center;margin-top:12px}
.cap-note b{color:var(--ink)}
.modsoon{opacity:.5}
@media(max-width:960px){.tiers{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.tiers{grid-template-columns:1fr}}

/* === camera-feed mockups (cvi-rtsp use cases) === */
.uc-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:26px 0 8px}
.uc{background:var(--panel);border:1px solid var(--bd);border-radius:14px;overflow:hidden}
.uc-cap{padding:14px 16px}
.uc-cap h3{font:800 13px var(--sans);letter-spacing:.04em;color:var(--ink);text-transform:uppercase;margin-bottom:5px}
.uc-cap p{color:var(--mut);font-size:12.5px;line-height:1.5;margin:0}
.cam{position:relative;display:block;aspect-ratio:16/9;background:#05080c;overflow:hidden}
.cam img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.9) contrast(1.05)}
.cam::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.4),transparent 24%,transparent 68%,rgba(0,0,0,.5))}
.cam-top{position:absolute;top:7px;left:8px;right:8px;display:flex;justify-content:space-between;align-items:center;z-index:2;font:700 9px var(--mono);letter-spacing:.08em;color:#dfe8f2;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.7)}
.cam-rec{display:inline-flex;align-items:center;gap:5px;color:#ff6b6b}
.cam-rec::before{content:"";width:7px;height:7px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 6px #ff3b3b;animation:cam-blink 1.4s steps(1,end) infinite}
@keyframes cam-blink{0%,60%{opacity:1}61%,100%{opacity:.25}}
.cam-tag{position:absolute;bottom:7px;left:8px;z-index:2;font:700 9px var(--mono);letter-spacing:.06em;color:#cdd9e6;text-transform:uppercase;background:rgba(7,11,16,.62);border:1px solid rgba(255,255,255,.12);padding:2px 7px;border-radius:5px}
.cam-quad{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#05080c}
.cam-quad .cam{aspect-ratio:16/10}
.cam-quad .cam-top{font-size:8px}
.cam-quad .cam-tag{font-size:8px;bottom:5px;left:5px;padding:1px 5px}
.cam-kpis{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;padding:20px 8px 7px;background:linear-gradient(180deg,transparent,rgba(7,11,16,.85))}
.cam-kpis .k{flex:1;text-align:center}
.cam-kpis .kv{display:block;font:800 16px var(--mono);color:var(--ylw);line-height:1}
.cam-kpis .kl{font:600 7.5px var(--mono);letter-spacing:.08em;color:#9fb0c2;text-transform:uppercase}
.cam.is-alarm img{filter:saturate(1.1) contrast(1.05) brightness(.78)}
.cam-alarm{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);text-align:center;z-index:2}
.cam-alarm span{display:inline-block;background:rgba(220,38,38,.92);color:#fff;font:800 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:8px 16px;border-radius:6px;box-shadow:0 0 0 3px rgba(220,38,38,.35);animation:cam-pulse 1.1s ease-in-out infinite}
@keyframes cam-pulse{0%,100%{opacity:1}50%{opacity:.5}}
.cam-box{position:absolute;z-index:2;border:2px solid var(--ylw);border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.45)}
.cam-box::after{content:attr(data-l);position:absolute;top:-14px;left:-1px;background:var(--ylw);color:var(--ink-on-ylw);font:700 8px var(--mono);letter-spacing:.05em;padding:1px 5px;border-radius:3px;white-space:nowrap}
.cam-bay{position:absolute;bottom:7px;right:8px;z-index:2;font:700 9px var(--mono);letter-spacing:.06em;color:#06120b;text-transform:uppercase;background:#34d399;padding:2px 8px;border-radius:5px}
@media(prefers-reduced-motion:reduce){.cam-rec::before,.cam-alarm span{animation:none}}
@media(max-width:760px){.uc-grid{grid-template-columns:1fr}}

/* pricing: break the 4-up tier grid out of the narrow .post column for room */
.post .tiers{width:min(1080px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%)}
@media(max-width:760px){.post .tiers{width:100%;margin-left:0;transform:none}}

/* === HMI dashboard mockups (cvi-rtsp use cases) === */
.post .screen{width:min(1000px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%)}
.screen{border:1px solid var(--bd);border-radius:14px;overflow:hidden;background:#0a0e13;box-shadow:0 16px 38px rgba(0,0,0,.4);margin:16px 0 4px}
.screen-bar{display:flex;align-items:center;gap:10px;padding:9px 14px;background:#0d141f;border-bottom:1px solid #1e2a3b}
.screen-bar .nm{font:800 11px var(--sans);letter-spacing:.06em;color:#e9eff7;text-transform:uppercase}
.screen-bar .pill{font:700 9px var(--mono);letter-spacing:.07em;text-transform:uppercase;padding:3px 9px;border-radius:20px;display:inline-flex;align-items:center;gap:6px}
.screen-bar .pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.ok{color:#34d399;background:rgba(52,211,153,.1);border:1px solid rgba(52,211,153,.35)}
.pill.warn{color:#fbbf24;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.35)}
.pill.crit{color:#ff5b5b;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.4);animation:cam-pulse 1.1s ease-in-out infinite}
.screen-bar .sp{margin-left:auto;font:600 9px var(--mono);letter-spacing:.03em;color:#7c8aa0}
.screen-body{display:grid;gap:8px;padding:8px;background:#0a0e13}
.sb-2{grid-template-columns:1fr 244px}
.feedgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.feedgrid .cam{border-radius:8px}
.cam.alarm{outline:2px solid #ff3b3b;outline-offset:-2px}
.panel{background:#0d141f;border:1px solid #1e2a3b;border-radius:8px;padding:11px;display:flex;flex-direction:column}
.panel h4{font:700 9px var(--mono);letter-spacing:.12em;color:#8fa0b8;text-transform:uppercase;margin:0 0 9px;display:flex;justify-content:space-between}
.panel h4 .ct{color:#ff6b6b}
.alm{display:flex;gap:8px;align-items:flex-start;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05);font:600 10px var(--mono)}
.alm .d{width:7px;height:7px;border-radius:50%;margin-top:3px;flex:none}
.alm .d.c{background:#ff3b3b;box-shadow:0 0 6px #ff3b3b}
.alm .d.w{background:#fbbf24}
.alm .d.g{background:#34d399}
.alm .tx{flex:1;color:#cdd9e6;line-height:1.35}
.alm .tx b{color:#fff;font-weight:700}
.alm .tm{color:#6f7e92;font-size:8.5px;white-space:nowrap}
.alm.cleared{opacity:.5}
.alm:last-child{border-bottom:0}
.zone{display:flex;justify-content:space-between;align-items:center;padding:8px 9px;border-radius:6px;margin-bottom:5px;font:700 10px var(--mono);background:rgba(52,211,153,.06);color:#9fdcc4}
.zone.alarm{background:rgba(248,113,113,.14);color:#ffb4b4;animation:cam-pulse 1.2s ease-in-out infinite}
.zone .st{font-size:8.5px;letter-spacing:.05em;opacity:.85}
.actbtns{display:flex;gap:6px;margin-top:auto;padding-top:9px}
.actbtns span{flex:1;text-align:center;font:800 9px var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:7px;border-radius:6px;background:#101826;color:#9fb0c2;border:1px solid #1e2a3b}
.actbtns span.evac{background:rgba(248,113,113,.16);color:#ffb4b4;border-color:rgba(248,113,113,.45)}
.bayrow{display:flex;justify-content:space-between;align-items:center;padding:8px 9px;border-radius:6px;margin-bottom:5px;font:700 10px var(--mono);background:#101826;color:#c9d6e8;border:1px solid #1e2a3b}
.bayrow .s{font-size:8px;letter-spacing:.05em;padding:2px 8px;border-radius:10px}
.s.occ{background:rgba(52,211,153,.14);color:#34d399}
.s.empty{background:rgba(143,160,184,.12);color:#8fa0b8}
.s.open{background:rgba(251,191,36,.14);color:#fbbf24}
.kpibar{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.kpibox{background:#101826;border:1px solid #1e2a3b;border-radius:8px;padding:11px 6px;text-align:center}
.kpibox .v{font:800 19px var(--mono);color:var(--ylw);line-height:1}
.kpibox .l{font:600 8px var(--mono);letter-spacing:.07em;color:#8fa0b8;text-transform:uppercase;margin-top:4px}
.fire-cam::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 78%,rgba(255,95,0,.45),rgba(255,60,0,.12) 45%,transparent 68%);animation:cam-pulse 1.7s ease-in-out infinite}
.scap{font-size:12.5px;color:var(--mut);text-align:center;margin:8px auto 0;max-width:720px;line-height:1.5}
.scap b{color:var(--ink)}
@media(max-width:760px){.post .screen{width:100%;margin-left:0;transform:none}.sb-2{grid-template-columns:1fr}}

/* pricing breathing room */
.post .tiers{margin-top:56px}
.post .tier-note{margin-bottom:52px}

/* === dashboard carousel (cvi-rtsp) === */
.scarousel{position:relative;width:min(1040px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%);margin-top:26px}
.scar-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.scar-track::-webkit-scrollbar{display:none}
.scar-slide{flex:0 0 100%;min-width:0;scroll-snap-align:center;padding:0 2px;align-self:flex-start}
.post .scar-slide .screen{width:100%;margin:0;transform:none;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.scar-slide .scap{margin-top:12px}
.scar-btn{position:absolute;top:130px;transform:translateY(-50%);z-index:5;width:38px;height:38px;border-radius:50%;background:rgba(13,20,31,.92);border:1px solid var(--bd2);color:var(--ink);cursor:pointer;display:grid;place-items:center;font-size:20px;line-height:1;transition:border-color .15s,color .15s}
.scar-btn:hover{border-color:var(--ylw);color:var(--ylw)}
.scar-prev{left:-8px}
.scar-next{right:-8px}
.scar-dots{display:flex;gap:8px;justify-content:center;margin:14px 0 4px}
.scar-dot{width:8px;height:8px;border-radius:50%;background:var(--bd2);border:0;cursor:pointer;padding:0;transition:width .2s,background .2s}
.scar-dot.on{background:var(--ylw);width:22px;border-radius:5px}
@media(max-width:760px){.scarousel{width:100%;margin-left:0;transform:none}.scar-btn{display:none}}

/* === cvi-rtsp full-bleed camera-wall hero (control room) === */
.rhero{position:relative;background:#0a0e13;border-bottom:1px solid var(--bd);overflow:hidden}
.rhero-grid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:1fr;gap:3px;height:clamp(300px,40vw,448px)}
.rhero .cam{aspect-ratio:auto;height:100%;border-radius:0}
.rhero::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(7,11,16,.45),transparent 28%,transparent 50%,rgba(7,11,16,.82))}
.rhero-badge{position:absolute;top:14px;right:16px;z-index:1;font:700 10px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:#34d399;background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.4);padding:5px 11px;border-radius:20px;display:inline-flex;align-items:center;gap:7px}
.rhero-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 6px #34d399;animation:cam-blink 1.5s steps(1,end) infinite}
.rhero-cap{position:absolute;left:max(28px,calc((100vw - 1120px)/2));bottom:24px;z-index:3;max-width:600px}
.rhero-cap .e{font:600 11px var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ylw)}
.rhero-cap h1{font:900 clamp(1.8rem,4vw,2.7rem);line-height:1.03;letter-spacing:-.01em;color:#fff;margin:10px 0 0;text-transform:uppercase}
.rhero-cap .s{font-size:14px;color:#c7d3e0;margin:11px 0 0;max-width:46ch;line-height:1.5}
.rhero-cap .b{margin-top:16px}
.rhero+main .post{padding-top:40px}
@media(max-width:760px){.rhero-grid{grid-template-columns:repeat(3,1fr);height:340px}.rhero-cap{left:18px;right:18px;bottom:16px}.rhero::after{background:linear-gradient(180deg,rgba(7,11,16,.4),transparent 22%,rgba(7,11,16,.86))}}

/* === hero backdrop — tunable scrim (dev slider sets --hero-grad on .rhero) === */
.rhero-cap h1,.rhero-cap .s,.rhero-cap .e{text-shadow:0 2px 14px rgba(0,0,0,.82)}
.rhero::after{z-index:2;background:linear-gradient(22deg,rgba(7,11,16,.88) 0%,rgba(7,11,16,.88) 48%,rgba(7,11,16,.519) 58%,rgba(7,11,16,0) 68%)}

/* hero layout — 6-camera live wall */
.rhero-b{display:block;position:relative}
.rwall{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:3px;height:clamp(320px,38vw,440px)}
.rwall .cam{height:100%;border-radius:0}
.rwall .cam.camoff img{filter:saturate(.18) brightness(.3) contrast(1.05)}
.rwall .cam-top,.rwall .cam-tag,.rwall .cam-rec{opacity:.5}
.cam-recon{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);z-index:2;display:flex;align-items:center;justify-content:center;gap:8px;font:700 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#ffb84d}
.cam-recon .sp{width:11px;height:11px;border:2px solid rgba(255,184,77,.32);border-top-color:#ffb84d;border-radius:50%;animation:cam-spin .8s linear infinite}
@keyframes cam-spin{to{transform:rotate(360deg)}}
.rhero-alert{position:absolute;bottom:14px;right:16px;z-index:3;display:inline-flex;align-items:center;gap:8px;font:700 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#ffd6d6;background:rgba(220,38,38,.18);border:1px solid rgba(248,113,113,.5);padding:6px 11px;border-radius:7px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.rhero-alert .d{width:7px;height:7px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 7px #ff3b3b;animation:cam-blink 1.1s steps(1,end) infinite}
@media(max-width:760px){.rwall{grid-template-columns:1fr 1fr;height:auto}.rwall .cam{aspect-ratio:16/10;height:auto}.rhero-alert{display:none}}

/* rhero mobile caption fix — flow under the featured image, no badge overlap */
@media(max-width:760px){
  .rhero-b .feat{display:flex;flex-direction:column}
  .rhero-cap{position:relative;z-index:4;left:auto;right:auto;bottom:auto;max-width:none;padding:14px 18px 4px}
  .rhero::after{display:none}
  .rhero-cap h1{font-size:1.55rem}
  .rhero-badge{top:10px;right:10px}
}

.ti-shield-check{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTExLjQ2IDIwLjg0NmExMiAxMiAwIDAgMSAtNy45NiAtMTQuODQ2YTEyIDEyIDAgMCAwIDguNSAtM2ExMiAxMiAwIDAgMCA4LjUgM2ExMiAxMiAwIDAgMSAtLjA5IDcuMDYiIC8+IDxwYXRoIGQ9Ik0xNSAxOWwyIDJsNCAtNCIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTExLjQ2IDIwLjg0NmExMiAxMiAwIDAgMSAtNy45NiAtMTQuODQ2YTEyIDEyIDAgMCAwIDguNSAtM2ExMiAxMiAwIDAgMCA4LjUgM2ExMiAxMiAwIDAgMSAtLjA5IDcuMDYiIC8+IDxwYXRoIGQ9Ik0xNSAxOWwyIDJsNCAtNCIgLz4gPC9zdmc+")}
.ti-flame{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEyIDEwLjk0MWMyLjMzMyAtMy4zMDggLjE2NyAtNy44MjMgLTEgLTguOTQxYzAgMy4zOTUgLTIuMjM1IDUuMjk5IC0zLjY2NyA2LjcwNmMtMS40MyAxLjQwOCAtMi4zMzMgMy4yOTQgLTIuMzMzIDUuNTg4YzAgMy43MDQgMy4xMzQgNi43MDYgNyA2LjcwNmMzLjg2NiAwIDcgLTMuMDAyIDcgLTYuNzA2YzAgLTEuNzEyIC0xLjIzMiAtNC40MDMgLTIuMzMzIC01LjU4OGMtMi4wODQgMy4zNTMgLTMuMjU3IDMuMzUzIC00LjY2NyAyLjIzNSIgLz4gPC9zdmc+");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTEyIDEwLjk0MWMyLjMzMyAtMy4zMDggLjE2NyAtNy44MjMgLTEgLTguOTQxYzAgMy4zOTUgLTIuMjM1IDUuMjk5IC0zLjY2NyA2LjcwNmMtMS40MyAxLjQwOCAtMi4zMzMgMy4yOTQgLTIuMzMzIDUuNTg4YzAgMy43MDQgMy4xMzQgNi43MDYgNyA2LjcwNmMzLjg2NiAwIDcgLTMuMDAyIDcgLTYuNzA2YzAgLTEuNzEyIC0xLjIzMiAtNC40MDMgLTIuMzMzIC01LjU4OGMtMi4wODQgMy4zNTMgLTMuMjU3IDMuMzUzIC00LjY2NyAyLjIzNSIgLz4gPC9zdmc+")}
.ti-chart-bar{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgMTNhMSAxIDAgMCAxIDEgLTFoNGExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMCAxIC0xIDFoLTRhMSAxIDAgMCAxIC0xIC0xbDAgLTYiIC8+IDxwYXRoIGQ9Ik0xNSA5YTEgMSAwIDAgMSAxIC0xaDRhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEgLTEgMWgtNGExIDEgMCAwIDEgLTEgLTFsMCAtMTAiIC8+IDxwYXRoIGQ9Ik05IDVhMSAxIDAgMCAxIDEgLTFoNGExIDEgMCAwIDEgMSAxdjE0YTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMWwwIC0xNCIgLz4gPHBhdGggZD0iTTQgMjBoMTQiIC8+IDwvc3ZnPg==");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTMgMTNhMSAxIDAgMCAxIDEgLTFoNGExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMCAxIC0xIDFoLTRhMSAxIDAgMCAxIC0xIC0xbDAgLTYiIC8+IDxwYXRoIGQ9Ik0xNSA5YTEgMSAwIDAgMSAxIC0xaDRhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEgLTEgMWgtNGExIDEgMCAwIDEgLTEgLTFsMCAtMTAiIC8+IDxwYXRoIGQ9Ik05IDVhMSAxIDAgMCAxIDEgLTFoNGExIDEgMCAwIDEgMSAxdjE0YTEgMSAwIDAgMSAtMSAxaC00YTEgMSAwIDAgMSAtMSAtMWwwIC0xNCIgLz4gPHBhdGggZD0iTTQgMjBoMTQiIC8+IDwvc3ZnPg==")}
.ti-truck{-webkit-mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgMTdhMiAyIDAgMSAwIDQgMGEyIDIgMCAxIDAgLTQgMCIgLz4gPHBhdGggZD0iTTE1IDE3YTIgMiAwIDEgMCA0IDBhMiAyIDAgMSAwIC00IDAiIC8+IDxwYXRoIGQ9Ik01IDE3aC0ydi0xMWExIDEgMCAwIDEgMSAtMWg5djEybS00IDBoNm00IDBoMnYtNmgtOG0wIC01aDVsMyA1IiAvPiA8L3N2Zz4=");mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiA+IDxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz4gPHBhdGggZD0iTTUgMTdhMiAyIDAgMSAwIDQgMGEyIDIgMCAxIDAgLTQgMCIgLz4gPHBhdGggZD0iTTE1IDE3YTIgMiAwIDEgMCA0IDBhMiAyIDAgMSAwIC00IDAiIC8+IDxwYXRoIGQ9Ik01IDE3aC0ydi0xMWExIDEgMCAwIDEgMSAtMWg5djEybS00IDBoNm00IDBoMnYtNmgtOG0wIC01aDVsMyA1IiAvPiA8L3N2Zz4=")}

/* === operator workstation (cvi-rtsp dashboards) === */
.ows{display:flex;gap:10px;margin:24px 0 6px}
.post .ows{width:min(1040px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%)}
.ows-rail{flex:0 0 158px;display:flex;flex-direction:column;gap:8px}
.ows-tab{display:flex;align-items:center;gap:11px;padding:13px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--bd);color:var(--dim);font:700 11px var(--sans);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;text-align:left;transition:border-color .15s,color .15s,background .15s}
.ows-tab i{font-size:18px;color:var(--mut);flex:none}
.ows-tab:hover{border-color:var(--bd2);color:var(--ink)}
.ows-tab.on{border-color:var(--ylw);background:rgba(255,194,26,.08);color:var(--ink)}
.ows-tab.on i{color:var(--ylw)}
.ows-screen{flex:1;min-width:0;background:#0a0e13;border:1px solid var(--bd);border-radius:14px;overflow:hidden;box-shadow:0 16px 38px rgba(0,0,0,.4)}
.ows-stage{position:relative}
.ows .scene{display:none}
.ows .scene.on{display:block;animation:owsfade .35s ease}
@keyframes owsfade{from{opacity:.15}to{opacity:1}}
@media(max-width:760px){.ows{flex-direction:column}.ows-rail{flex-direction:row;flex:none;overflow-x:auto}.ows-tab{flex:1;flex-direction:column;gap:5px;text-align:center;padding:10px 6px;font-size:10px}}

/* === cvi-rtsp layout v18 — cap hero, balance wide blocks, grid dashboard, FAQ accordion === */
.rhero-b{max-width:1080px;margin-left:auto;margin-right:auto}
.rhero-cap{left:24px;right:auto}
.post .feat6{width:min(1080px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%);grid-template-columns:repeat(3,1fr)}
.post .dashwrap{width:min(1080px,calc(100vw - 40px));margin-left:50%;transform:translateX(-50%);margin-top:24px}
.gridview{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.gridview .cam{aspect-ratio:16/10;border-radius:0}
.faq{border:1px solid var(--bd);border-radius:10px;background:var(--panel);margin:0 0 9px;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;padding:14px 16px;font:700 14px var(--sans);color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:14px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:400 20px var(--mono);color:var(--ylw);line-height:1;flex:none}
.faq[open] summary::after{content:"\2013"}
.faq summary:hover{color:var(--ylw)}
.faq[open] summary{border-bottom:1px solid var(--bd)}
.faq .a{padding:12px 16px 15px;color:var(--dim);font-size:14px;line-height:1.6}
.faq .a code{font-family:var(--mono);font-size:.88em;background:var(--bg);border:1px solid var(--bd);border-radius:5px;padding:1px 5px;color:#ffd24a}
@media(max-width:900px){.post .feat6{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.post .feat6,.post .dashwrap{width:100%;margin-left:0;transform:none}.post .feat6{grid-template-columns:1fr}.gridview{grid-template-columns:1fr 1fr}}

.rhero-b{position:relative}

/* === cvi-rtsp left-align v20 — one shared left edge, 25-cam wall === */
.post.rtsp{max-width:1080px}
.post.rtsp .feat6,.post.rtsp .dashwrap,.post.rtsp .tiers{width:100%;margin-left:0;margin-right:0;transform:none}
.post.rtsp > .tiers{margin-bottom:40px}
.post.rtsp .dashwrap .screen{width:100%;max-width:none;margin-left:0;margin-right:0;transform:none}
.post.rtsp > .ucgrid{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
@media(max-width:760px){.post.rtsp > .ucgrid{grid-template-columns:1fr}}
.post.rtsp > .usenote{width:100%;margin-top:70px;background:#15110a;border:1px solid #3a3320;border-left:3px solid var(--ylw);border-radius:10px;padding:14px 18px;font-size:13px;line-height:1.62;color:var(--dim)}
.post.rtsp > .usenote strong{color:var(--ink)}
.post.rtsp > .usenote b{color:#EEF3F8;font-weight:700}
.post.rtsp > .usenote a{color:var(--ylw);text-decoration:underline;text-underline-offset:2px}
.post.rtsp > .tier-note + .usenote{margin-top:18px}
@media(max-width:760px){.post.rtsp > .usenote{margin-top:18px}}
.post.rtsp .post-lead,.post.rtsp .post-body,.post.rtsp .tier-note,.post.rtsp .post-crumbs{max-width:none;margin-left:0;margin-right:auto}
.post.rtsp .tier-note{text-align:left}
/* v72: prose spans the same 1024 column as the cards, tiers and CTA, matching
   company-news and rest-to-tags. Was capped at 760, which left the text short
   of every block beside it. */
.post.rtsp > .post-body{max-width:none;margin-right:0}
.post.rtsp > .post-cta{max-width:none;margin-left:0;margin-right:0}
.gridview{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){.gridview{grid-template-columns:repeat(4,1fr)}}
@media(max-width:600px){.gridview{grid-template-columns:repeat(3,1fr)}}

/* === OEE dashboard (cvi-rtsp) v21 === */
.screen-body.oee{display:flex;flex-direction:column;gap:8px}
.oee-kpis{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1fr 1fr;gap:6px}
.oee-kpis .kpibox{padding:12px 6px}
.oee-kpis .kpibox .v{color:#E9EFF7;font-size:17px}
.oee-kpis .kpibox.big{background:#141d2a;border-color:#3a4757}
.oee-kpis .kpibox.big .v{font-size:30px;color:var(--ylw)}
.oee-mid{display:grid;grid-template-columns:1fr 250px;gap:8px;align-items:stretch}
.oee-cams{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.oee-cams .cam{aspect-ratio:16/10;border-radius:6px;height:auto}
.oee-rate{margin-top:auto;padding-top:12px}
.oee-rate .rl{display:flex;justify-content:space-between;font:600 9px var(--mono);letter-spacing:.06em;color:#8fa0b8;text-transform:uppercase;margin-bottom:5px}
.oee-rate .track{height:6px;border-radius:3px;background:#172230;overflow:hidden}
.oee-rate .fill{height:100%;background:var(--ylw);border-radius:3px}
@media(max-width:760px){.oee-kpis{grid-template-columns:repeat(3,1fr)}.oee-mid{grid-template-columns:1fr}.oee-cams{grid-template-columns:1fr 1fr}}

/* === cvi-rtsp section-gap (locked 70px) === */
.post.rtsp > .feat6,
.post.rtsp > .post-body,
.post.rtsp > .tiers,
.post.rtsp > .post-cta{margin-top:var(--sec-gap,70px)}

/* === legal pages + footer legal (v38) === */
.post.legal{max-width:860px;margin:0 auto;padding:46px 0 96px}
.post.legal h1{font-weight:900;font-size:1.9rem;letter-spacing:-.01em;color:var(--ink);margin:0 0 6px}
.post.legal .eff{font:600 12px var(--mono);letter-spacing:.04em;color:var(--mut);text-transform:uppercase;margin:0 0 26px}
.post.legal h2{font-weight:800;font-size:1.18rem;color:var(--ink);margin:30px 0 10px}
.post.legal h3{font-weight:700;font-size:1rem;color:var(--ink);margin:20px 0 8px}
.post.legal p,.post.legal li{color:#c5d0dc;font-size:15px;line-height:1.72}
.post.legal p{margin:0 0 14px}
.post.legal ul,.post.legal ol{margin:0 0 16px;padding-left:22px}
.post.legal li{margin:0 0 8px}
.post.legal li::marker{color:var(--ylw)}
.post.legal a{color:var(--ylw);text-decoration:underline;text-underline-offset:2px}
.post.legal .caps{display:block;font-size:13px;color:#aeb9c6;background:#0b1016;border:1px solid var(--bd);border-radius:8px;padding:14px 16px;line-height:1.62;margin:0 0 14px}
.draft-banner{max-width:860px;margin:22px auto 0;background:#2a1410;border:1px solid #6b2d22;border-left:3px solid #ff6b52;border-radius:10px;padding:13px 16px;color:#ffd6cd;font-size:13px;line-height:1.55}
.draft-banner b{color:#fff}
.footer .flegal{display:flex;flex-wrap:wrap;gap:5px 4px;font:600 12px var(--sans);margin:0 0 10px}
.footer .flegal a{color:var(--mut);text-decoration:none}
.footer .flegal a:hover{color:var(--ylw)}
.footer .ftm{font-size:11px;line-height:1.55;color:#6c7886;margin:0 0 14px;max-width:1000px}

/* self-hosted Inter (privacy: no Google Fonts CDN) */
@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url('assets/fonts/inter-var.woff2') format('woff2')}

/* === "Who we work with" — editorial two-column (v44) === */
.iw-edit{display:grid;grid-template-columns:.9fr 1.3fr;gap:40px;align-items:start}
.iw-edit .lead .stitle{margin-top:8px}
.iw-edit .lead p{color:var(--mut);font-size:14px;line-height:1.65;margin:12px 0 0;max-width:44ch}
.iw-list .iw-row{display:flex;gap:16px;padding:16px 0;border-top:1px solid var(--bd)}
.iw-list .iw-row:first-child{border-top:0;padding-top:0}
.iw-list .iw-row .ti{font-size:22px;color:var(--ylw);flex:none;margin-top:2px}
.iw-list .iw-row h3{font:800 15px var(--sans);color:var(--ink);margin:0 0 3px}
.iw-list .iw-row p{color:var(--mut);font-size:13.5px;line-height:1.55;margin:0}
@media(max-width:820px){.iw-edit{grid-template-columns:1fr;gap:22px}}

/* === modules — featured + coming-soon (v47) === */
.modfeat{display:grid;grid-template-columns:1.35fr 1fr;gap:16px}
.modfeat .mf-big{background:var(--panel);border:1px solid var(--ylw);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;transition:box-shadow .16s,transform .16s}
.modfeat .mf-big:hover{box-shadow:0 14px 34px rgba(0,0,0,.4)}
.mf-shot{position:relative;display:block;overflow:hidden}
.mf-shot img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:#05080c}
.mf-shot::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,11,16,.28),transparent 34%,transparent 62%,rgba(7,11,16,.55))}
.mf-live{position:absolute;right:10px;top:9px;z-index:2;font:700 9px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#ff6b6b;display:inline-flex;align-items:center;gap:5px}
.mf-live::before{content:"";width:6px;height:6px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 6px #ff3b3b}
.mf-tag{position:absolute;left:10px;bottom:9px;z-index:2;font:700 9px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:#cdd9e6;background:rgba(7,11,16,.66);border:1px solid rgba(255,255,255,.12);padding:3px 8px;border-radius:5px}
.mf-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1}
.mf-hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mf-body h3{font:900 24px var(--sans);text-transform:uppercase;letter-spacing:-.01em;margin:0;color:var(--ink)}
.mf-body .price{font:800 13px var(--mono);color:var(--ylw);white-space:nowrap}
.mf-body p{color:var(--dim);font-size:14px;line-height:1.6;margin:10px 0 0}
.mf-body .more{margin-top:auto;padding-top:18px;color:var(--ylw);font:700 12.5px var(--sans);text-transform:uppercase;letter-spacing:.04em}
.mf-side{display:grid;grid-template-rows:1fr 1fr;gap:16px}
.mf-soon{position:relative;background:var(--panel);border:1px solid var(--bd);border-radius:16px;padding:22px 24px;overflow:hidden;display:flex;flex-direction:column}
.mf-ghost{position:absolute;right:-10px;bottom:-22px;font:900 clamp(46px,6.2vw,72px) var(--sans);letter-spacing:-.03em;color:#fff;opacity:.055;text-transform:uppercase;line-height:.8;pointer-events:none;text-align:right}
.mf-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;position:relative}
.mf-top .ci{font-size:26px;color:var(--ylw)}
.mf-pill{font:700 9.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:20px;color:var(--mut);background:rgba(142,155,170,.08);border:1px solid var(--bd)}
.mf-soon h3{font:800 18px var(--sans);color:var(--ink);margin:0 0 7px;position:relative}
.mf-soon p{color:var(--mut);font-size:13px;line-height:1.55;margin:0;position:relative;max-width:36ch}
@media(max-width:900px){.modfeat{grid-template-columns:1fr}.mf-side{grid-template-rows:auto auto}.mf-body h3{font-size:21px}}

/* === modules catalog table (modules.html) v48 === */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.modtbl{border:1px solid var(--bd);border-radius:14px;overflow:hidden;background:var(--panel);margin-top:8px}
.modtbl-scroll{overflow-x:auto}
.modtbl table.spec{width:100%;border-collapse:collapse;min-width:640px}
.modtbl table.spec th{text-align:left;font:700 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut);padding:13px 18px;border-bottom:1px solid var(--bd);background:#0f1622;white-space:nowrap}
.modtbl table.spec td{padding:14px 18px;border-bottom:1px solid var(--bd);vertical-align:middle;font-size:13px;color:var(--dim)}
.modtbl table.spec tbody tr:last-child td{border-bottom:0}
.modtbl table.spec tbody tr:hover{background:rgba(255,255,255,.015)}
.mthumb{width:104px;height:58px;border-radius:8px;object-fit:cover;display:block;background:#0f1622;border:1px solid var(--bd)}
.mthumb-alt{width:104px;height:58px;border-radius:8px;background:#0f1622;border:1px solid var(--bd);display:flex;align-items:center;justify-content:center}
.mthumb-alt .ti{font-size:24px;color:var(--ylw);opacity:.6}
.modtbl .mname{font:800 15px var(--sans);color:var(--ink);display:block;line-height:1.3}
.modtbl .mdesc{color:var(--mut);font-size:12.5px;line-height:1.5;margin:3px 0 0;max-width:52ch}
.modtbl .price{font:800 13.5px var(--mono);color:var(--ylw);white-space:nowrap}
.modtbl .price.na{color:#4b5563}
.modtbl .pill{font:700 9.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:20px;display:inline-block;white-space:nowrap}
.modtbl .pill.now{color:#5fd38a;background:rgba(95,211,138,.1);border:1px solid rgba(95,211,138,.4)}
.modtbl .pill.soon{color:var(--mut);background:rgba(142,155,170,.08);border:1px solid var(--bd)}
.modtbl .go{color:var(--ylw);font:700 11px var(--sans);text-transform:uppercase;letter-spacing:.05em;text-decoration:none;white-space:nowrap}
.modtbl .go:hover{text-decoration:underline}
.modtbl .go.mut{color:var(--mut)}

/* modules table — break out of the 760px prose column, fluid up to 1080 (v49) */
.post .modtbl{width:min(1080px,calc(100vw - 56px));margin-left:50%;transform:translateX(-50%)}
.modtbl table.spec td:nth-child(2){width:auto}
.modtbl .mdesc{max-width:none}
/* View action as a real button */
.modtbl .go{display:inline-block;padding:9px 16px;border-radius:7px;border:1px solid var(--ylw);background:var(--ylw);color:var(--ink-on-ylw);font:800 11px var(--sans);letter-spacing:.05em;text-transform:uppercase;text-decoration:none;transition:filter .15s}
.modtbl .go:hover{filter:brightness(1.08);text-decoration:none}
.modtbl .go.mut{background:transparent;border-color:var(--bd2);color:var(--dim)}
.modtbl .go.mut:hover{border-color:var(--ylw);color:var(--ylw)}
.modtbl table.spec td:last-child{text-align:right;white-space:nowrap}
@media(max-width:1180px){.post .modtbl{width:calc(100vw - 40px)}}
@media(max-width:820px){.post .modtbl{width:100%;margin-left:0;transform:none}}
/* contain absolutely-positioned .visually-hidden labels inside the scroller (fixes mobile page overflow) */
.modtbl,.modtbl-scroll{position:relative}

/* === modules.html — one shared left edge + breathing room (v51) === */
.post.mods{max-width:1080px;padding-left:28px;padding-right:28px}
/* everything aligns to the same left edge; prose stays readable */
.post.mods .post-crumbs,.post.mods .post-eyebrow,.post.mods h1,.post.mods .post-lead,.post.mods .post-body{max-width:none;margin-left:0;margin-right:auto}
/* table fills the full 1080 column, no breakout transform needed */
.post.mods .modtbl{width:100%;margin-left:0;transform:none}
.post.mods .post-cta{width:100%;margin-left:0;transform:none}
/* vertical rhythm */
.post.mods .post-lead{margin-bottom:0}
.post.mods .modtbl{margin-top:44px}
.post.mods .post-body{margin-top:44px}
.post.mods .post-cta{margin-top:52px}
.post.mods .modtbl table.spec td{padding-top:18px;padding-bottom:18px}
.post.mods .modtbl table.spec td:first-child{padding-left:22px}
.post.mods .modtbl table.spec td:last-child{padding-right:22px}
.post.mods .modtbl table.spec th:first-child{padding-left:22px}
.post.mods .modtbl table.spec th:last-child{padding-right:22px}
@media(max-width:820px){.post.mods{padding-left:20px;padding-right:20px}.post.mods .modtbl{margin-top:30px}}
/* clickable coming-soon module card (v52) */
a.mf-soon{text-decoration:none;transition:border-color .15s}
a.mf-soon:hover{border-color:var(--bd2)}
.mf-more{margin-top:auto;padding-top:14px;color:var(--ylw);font:700 11.5px var(--sans);text-transform:uppercase;letter-spacing:.04em;position:relative}
/* available-tier pill on module cards (v53) */
.mf-pill.live{color:#5fd38a;background:rgba(95,211,138,.1);border-color:rgba(95,211,138,.4)}

/* === modules package builder — price matrix (v73) === */
.post.mods .pkgtblwrap{width:100%;overflow-x:auto;margin-top:40px;border:1px solid var(--bd);border-radius:14px;background:var(--panel)}
table.pkgtbl{width:100%;border-collapse:collapse;min-width:930px;table-layout:fixed}
/* Fixed columns so every tier cell is the same width regardless of how long its
   detail text is; the boxes inside then share one min-height and match exactly. */
table.pkgtbl thead th:nth-child(1){width:26%}
table.pkgtbl thead th:nth-child(2),
table.pkgtbl thead th:nth-child(3),
table.pkgtbl thead th:nth-child(4),
table.pkgtbl thead th:nth-child(5){width:14.5%}
table.pkgtbl thead th:nth-child(6){width:16%}
table.pkgtbl th,table.pkgtbl td{padding:0;text-align:left;vertical-align:top}
table.pkgtbl thead th{font:800 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);padding:16px 14px;border-bottom:1px solid var(--bd);white-space:nowrap}
table.pkgtbl thead th:first-child{padding-left:28px}
table.pkgtbl thead th:last-child{padding-right:28px}
table.pkgtbl tbody tr{border-bottom:1px solid rgba(42,53,67,.6)}
table.pkgtbl tbody tr:last-child{border-bottom:0}
table.pkgtbl tbody tr.on{background:rgba(255,194,26,.045)}
/* Every cell rule below is qualified with table.pkgtbl so it outranks the
   `table.pkgtbl td{padding:0}` reset above — a bare class loses that contest and the
   icon ends up flush against the table edge. */
table.pkgtbl td.pkgtmod{padding:18px 16px 18px 28px;min-width:250px}
.pkgtmod .h{display:flex;gap:13px;align-items:flex-start}
.pkgtmod .ic{width:34px;height:34px;flex:none;border-radius:9px;background:rgba(255,194,26,.07);border:1px solid rgba(255,194,26,.24);display:flex;align-items:center;justify-content:center}
.pkgtmod .ic .ti{font-size:17px;color:var(--ylw)}
.pkgtmod h3{font:800 15px var(--sans);margin:0 0 3px}
.pkgtmod p{color:var(--mut);font-size:12.3px;line-height:1.45;margin:0;max-width:34ch}
/* The module link sits in its own column at the far right of the ribbon so it reads as
   an action on the row rather than as tail text under the description. */
table.pkgtbl td.pkgtviewcell{padding:18px 28px 18px 10px;text-align:right;white-space:nowrap}
.pkgtview{display:inline-block;color:var(--dim);font:700 10px var(--sans);text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--bd);border-radius:7px;padding:9px 14px;transition:border-color .12s,color .12s}
.pkgtview:hover{border-color:var(--ylw);color:var(--ylw)}
table.pkgtbl td.pkgtcell{padding:10px 8px}
/* One shared box for every cell in the grid — priced, free or not offered — so the
   rows line up instead of each cell sizing itself to its own contents. */
.pkgtprice,.pkgtfree,.pkgtna{display:flex;flex-direction:column;width:100%;min-height:80px;padding:12px;border-radius:10px;box-sizing:border-box;text-align:left;margin:0}
.pkgtprice{background:#0d1420;border:1px solid var(--bd);cursor:pointer;font:inherit;color:var(--ink);transition:border-color .12s,background .12s}
.pkgtprice:hover{border-color:var(--bd2)}
.pkgtprice:focus-visible{outline:2px solid var(--ylw);outline-offset:1px}
.pkgtprice.sel{border-color:var(--ylw);background:rgba(255,194,26,.1)}
.pkgtprice .p{font:800 16px var(--mono);color:var(--ylw);display:block}
.pkgtprice .d{font:600 10px var(--mono);text-transform:uppercase;letter-spacing:.03em;color:var(--mut);display:block;margin-top:4px;line-height:1.4}
.pkgtprice.sel .d{color:var(--dim)}
table.pkgtbl .pkgtfree{border:1px dashed var(--bd)}
.pkgtfree .p{font:800 14px var(--mono);color:#5fd38a;display:block}
.pkgtfree .d{font:600 10px var(--mono);text-transform:uppercase;color:var(--mut);display:block;margin-top:4px;line-height:1.4}
table.pkgtbl .pkgtna{align-items:center;justify-content:center;color:#3f4a58;font:700 15px var(--mono);border:1px solid transparent}

.post.mods .pkgsum{width:100%;display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start;margin-top:20px}
.pkgpanel{background:var(--panel);border:1px solid var(--bd);border-radius:14px;padding:20px 22px}
.pkgpanel h2{font:800 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:0 0 14px}
.pkgsum .btn{width:100%;justify-content:center;box-sizing:border-box}
.pkgsum .btn.off{opacity:.35;pointer-events:none}
.pkgsumbtns{display:grid;gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid rgba(42,53,67,.7)}
@media(max-width:900px){.post.mods .pkgsum{grid-template-columns:1fr}}

.pkgline{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:10px 0;border-bottom:1px solid rgba(42,53,67,.7)}
.pkgline .cn{font:700 13px var(--sans);color:var(--ink)}
.pkgline .ct{font:600 10.5px var(--mono);color:var(--mut);text-transform:uppercase;letter-spacing:.03em;display:block;margin-top:2px}
.pkgline .cright{display:flex;align-items:center;gap:9px}
.pkgline .cp{font:800 13px var(--mono);color:var(--ink);white-space:nowrap}
.pkgline .cdrop{background:none;border:0;color:var(--mut);font:700 17px var(--sans);line-height:1;cursor:pointer;padding:1px 4px;border-radius:5px}
.pkgline .cdrop:hover{color:#ff8b82;background:rgba(255,106,94,.1)}
.pkgdisc{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(42,53,67,.7);color:#5fd38a;font:700 12.5px var(--sans)}
#pkglines > :last-child{border-bottom:0}
.pkgempty{color:var(--mut);font-size:12.5px;line-height:1.55;margin:0;padding:6px 0 12px}
.pkgtot{display:flex;justify-content:space-between;align-items:baseline;padding:18px 0 4px;margin-top:4px;border-top:1px solid var(--bd)}
.pkgtot .l{font:800 11.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.pkgtot .v{font:900 25px var(--mono);color:var(--ylw)}
.pkgnote{font-size:11.5px;line-height:1.5;color:var(--mut);margin:12px 0 0}
.pkghint{background:rgba(95,211,138,.07);border:1px solid rgba(95,211,138,.3);border-radius:9px;padding:10px 12px;font-size:12px;line-height:1.5;color:#9fe0c9;margin-top:16px}
.pkgsub{display:block;text-align:center;margin-top:11px;font-size:11.5px;line-height:1.5;color:var(--mut)}

/* gateway requirements — a verdict sentence, then the per-module detail.
   Hidden entirely until something is in the package; the margin collapses with it. */
.post.mods .pkgreq{width:100%;background:var(--panel);border:1px solid var(--bd);border-radius:14px;margin-top:114px;padding:0;overflow:hidden}
.pkgreq .verdict{background:rgba(255,194,26,.07);border-bottom:1px solid rgba(255,194,26,.28);padding:20px 24px;display:flex;gap:15px;align-items:flex-start}
.pkgreq .verdict .bolt{width:34px;height:34px;flex:none;border-radius:9px;background:rgba(255,194,26,.12);border:1px solid rgba(255,194,26,.4);display:flex;align-items:center;justify-content:center}
.pkgreq .verdict .bolt .ti{font-size:17px;color:var(--ylw)}
.pkgreq .verdict .t{font:900 19px var(--sans);color:var(--ink);margin:0 0 5px;line-height:1.35;letter-spacing:-.01em}
.pkgreq .verdict .t em{font-style:normal;color:var(--ylw)}
.pkgreq .verdict .s{font-size:12.5px;line-height:1.55;color:var(--mut);margin:0}
.pkgreq .inner{padding:20px 24px 22px}
.pkgreq table{width:100%;border-collapse:collapse}
.pkgreq th{font:800 9.5px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--mut);text-align:left;padding:0 12px 10px 0;border-bottom:1px solid var(--bd)}
.pkgreq td{padding:12px 12px 12px 0;border-bottom:1px solid rgba(42,53,67,.5);vertical-align:top;font-size:12.4px;line-height:1.55;color:var(--mut)}
.pkgreq tbody tr:last-child td{border-bottom:0}
.pkgreq td.nm{font:700 13px var(--sans);color:var(--ink);white-space:nowrap}
.pkgreq td.ig{font:700 11.5px var(--mono);color:var(--ylw);white-space:nowrap}
.pkgreq td.sc{font:600 10px var(--mono);text-transform:uppercase;color:var(--dim);white-space:nowrap}
.pkgreqfoot{font-size:11.5px;line-height:1.6;color:var(--mut);margin:16px 0 0;padding-top:15px;border-top:1px solid rgba(42,53,67,.7)}
.pkgreqfoot a{color:var(--ylw)}
.pkgreqfoot a:hover{text-decoration:underline}
@media(max-width:720px){
  .pkgreq table,.pkgreq thead,.pkgreq tbody,.pkgreq tr,.pkgreq td,.pkgreq th{display:block}
  .pkgreq thead{display:none}
  .pkgreq td{border:0;padding:2px 0}
  .pkgreq tbody tr{padding:12px 0;border-bottom:1px solid rgba(42,53,67,.5)}
}

/* in development */
.post.mods .pkgsoonwrap{width:100%;margin-top:56px}
.pkgsoonhd{font:800 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);margin:0 0 12px}
.pkgsoonrow{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:var(--panel);border:1px solid var(--bd);border-radius:12px;padding:14px 18px;margin-bottom:9px;opacity:.78}
.pkgsoonrow .ic{width:34px;height:34px;flex:none;border-radius:9px;background:rgba(142,155,170,.06);border:1px solid var(--bd);display:flex;align-items:center;justify-content:center}
.pkgsoonrow .ic .ti{font-size:17px;color:var(--mut)}
.pkgsoonrow h3{font:800 14.5px var(--sans);margin:0 0 2px;color:var(--ink)}
.pkgsoonrow p{color:var(--mut);font-size:12.5px;line-height:1.45;margin:0}
.pkgnotify{color:var(--mut);font:700 10px var(--sans);text-transform:uppercase;letter-spacing:.05em;text-decoration:none;border:1px solid var(--bd);border-radius:7px;padding:8px 13px;white-space:nowrap}
.pkgnotify:hover{border-color:var(--ylw);color:var(--ylw)}
@media(max-width:640px){.pkgsoonrow{grid-template-columns:auto 1fr;row-gap:10px}.pkgnotify{grid-column:1/-1;text-align:center}}
