/* Structured cabling area pages (/structured-cabling-manhattan/, /structured-cabling-jersey-city-nj/).
   Loaded only by those pages (main.cam.sc), with the family script. Everything is scoped under main.cam,
   so nothing reaches the shared header, footer or mobile call bar.
   1. The structured cabling overview's page CSS, unchanged (its colour layer included).
   2. State copies (.msv / .ms-off), the off-screen pause and the mono fallback face (as ac-areas.css).
   3. The pages' own rules. Animations use only transform, opacity, stroke-dashoffset and offset-distance;
      keyframes the overview lacks are named sca-*. Page code prefixes: .cm- .cj- */

/* ---- 1. overview ---- */
/* Camera pages, shared rules. Everything is scoped under main.cam so nothing
   reaches the shared header, footer or mobile call bar. Animations use only
   transform, opacity, stroke-dashoffset and offset-distance. */
main.cam{display:block;background:#060910;color:#e8edf5;font-family:var(--sans)}
.cam a{color:#4d9eff}.cam a:hover{color:#8bbcff}
.cam .wrap{max-width:1200px;margin:0 auto;padding:0 24px}
.cam .m{font-family:var(--mono)}
.cam .sec{position:relative;padding:112px 0;overflow:hidden}
.cam .cam-hero{padding:calc(var(--nav-h) + 16px) 0 104px}
.cam .alt{background:#070b14;border-top:1px solid rgba(120,170,255,.12);border-bottom:1px solid rgba(120,170,255,.12)}
.cam .grid-bg{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(77,158,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(77,158,255,.07) 1px,transparent 1px),linear-gradient(rgba(77,158,255,.032) 1px,transparent 1px),linear-gradient(90deg,rgba(77,158,255,.032) 1px,transparent 1px);background-size:80px 80px,80px 80px,16px 16px,16px 16px;-webkit-mask-image:radial-gradient(80% 70% at 50% 40%,#000 25%,transparent 85%);mask-image:radial-gradient(80% 70% at 50% 40%,#000 25%,transparent 85%)}
.cam .crumb{font-family:var(--mono);font-size:12px;line-height:19.2px;letter-spacing:.08em;color:#7d92b3;margin-bottom:22px;padding-top:4px}
.cam .crumb a{color:#8a95a8;padding:14px 6px;margin:0 -6px}.cam .crumb a:hover{color:#e8edf5}
.cam .kick{display:flex;align-items:center;flex-wrap:wrap;gap:12px;font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:#7d92b3}
.cam .cnt{border:1px solid rgba(120,170,255,.35);padding:2px 7px;color:#e8edf5}
.cam h1{margin:0;font-weight:900;letter-spacing:-.045em;line-height:.98;color:#e8edf5}
.cam .h2{margin:0;font-size:clamp(34px,4.6vw,56px);font-weight:800;letter-spacing:-.035em;line-height:1.02;color:#e8edf5}
.cam .cam-lead{margin:0;font-size:17px;line-height:1.65;color:#a3adbd}
.cam .c{position:relative;display:flex;flex-direction:column;gap:10px;padding:26px;background:rgba(9,14,24,.82);border:1px solid rgba(120,170,255,.14);border-radius:4px;color:#e8edf5;overflow:hidden;transition:transform .3s}
.cam .c::before,.cam .c::after{content:"";position:absolute;width:12px;height:12px;border-color:#4d9eff;border-style:solid;opacity:.55;pointer-events:none}
.cam .c::before{top:-1px;left:-1px;border-width:2px 0 0 2px}
.cam .c::after{bottom:-1px;right:-1px;border-width:0 2px 2px 0}
.cam a.c:hover,.cam .c.hv:hover{border-color:rgba(77,158,255,.6);background:rgba(12,20,36,.92);transform:translateY(-3px);color:#e8edf5}
.cam a.c:hover::before,.cam a.c:hover::after,.cam .c.hv:hover::before,.cam .c.hv:hover::after{width:28px;height:28px;opacity:1}
.cam .n{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;color:#7d92b3;text-transform:uppercase}
.cam .t{margin:0;font-size:21px;font-weight:700;letter-spacing:-.015em;color:#e8edf5;line-height:1.25}
.cam .p{margin:0;font-size:15px;line-height:1.6;color:#a3adbd}
.cam .go{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#4d9eff}
.cam a.go{display:inline-flex;align-items:center;min-height:44px}
.cam .p a{text-decoration:underline;text-underline-offset:2px}
.cam .cam-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 22px;border-radius:6px;font-weight:700;font-size:15px;line-height:1.2;transition:transform .2s}
.cam .cam-btn-p{background:#0060df;color:#fff;box-shadow:0 10px 30px -10px rgba(29,123,255,.7)}
.cam .cam-btn-p:hover{background:#1d7bff;color:#fff;transform:translateY(-2px)}
.cam .cam-btn-g{border:1px solid rgba(120,170,255,.3);color:#e8edf5;background:rgba(9,14,24,.6)}
.cam .cam-btn-g:hover{color:#fff;border-color:#4d9eff}
.cam .pill{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 12px;border:1px solid rgba(120,170,255,.22);border-radius:999px;font-size:13px;font-weight:600;color:#c9d2e0;background:rgba(5,8,16,.5)}
.cam .pill i{width:6px;height:6px;border-radius:50%;background:#22c55e}
.cam .ill{stroke:#4d9eff;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.cam .dim{stroke:rgba(120,170,255,.35)}
.cam .lbl{font:600 10px var(--mono);fill:#8bbcff;letter-spacing:.08em}
.cam .lbl2{font:500 9.5px var(--mono);fill:#7d92b3;letter-spacing:.1em}
.cam .tog{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid rgba(120,170,255,.25);border-radius:5px;background:rgba(5,8,16,.6);color:#a9bddc;font:600 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.cam .tog:hover{border-color:#4d9eff;color:#fff}
.cam .tog.on{border-color:#4d9eff;background:rgba(29,123,255,.18);color:#fff}
.cam .tog.bad.on{border-color:#ff6b6b;background:rgba(255,107,107,.12);color:#ffb4b4}
.cam ul.lst{list-style:disc;margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px}
.cam [hidden]{display:none!important}

@keyframes cam-flow{to{stroke-dashoffset:-48}}
.cam .flow{stroke-dasharray:6 6;animation:cam-flow 1.6s linear infinite}
.cam .flow-r{stroke-dasharray:3 9;animation:cam-flow 1.6s linear infinite reverse}
@keyframes cam-blink{0%,100%{opacity:1}50%{opacity:.15}}
.cam .blink{animation:cam-blink 1.1s step-end infinite}

.cam details.rfi{border-top:1px solid rgba(120,170,255,.14)}
.cam details.rfi summary{list-style:none;display:grid;grid-template-columns:90px minmax(0,1fr) 28px;align-items:center;gap:16px;min-height:76px;cursor:pointer;color:#e8edf5;font-size:19px;font-weight:700;letter-spacing:-.01em;line-height:1.3;padding:8px 0}
.cam details.rfi summary::-webkit-details-marker{display:none}
.cam details.rfi .pl{width:28px;height:28px;border:1px solid rgba(120,170,255,.35);border-radius:4px;display:grid;place-items:center;color:#4d9eff;transition:transform .3s}
.cam details.rfi[open] .pl{transform:rotate(45deg)}
.cam .ans{margin:0 0 26px 106px;max-width:680px;font-size:15.5px}

/* Off-screen sections pause; reduced motion stops everything. */
.cam .paused,.cam .paused *{animation-play-state:paused!important}
@media (prefers-reduced-motion: reduce){
  .cam *,.cam *::before,.cam *::after{animation:none!important;transition:none!important}
}
@media (max-width:700px){
  .cam details.rfi summary{grid-template-columns:minmax(0,1fr) 28px;font-size:17px}
  .cam details.rfi summary .m{display:none}
  .cam .ans{margin-left:0}
  .cam .sec{padding:76px 0}
  .cam .cam-hero{padding:calc(var(--nav-h) + 16px) 0 72px}
}
/* Structured cabling page: violet accent (#a78bfa) next to the site blue. Scoped to main.cam.sc.
   Colour changes are instant or opacity layers; animations use transform, opacity and stroke-dashoffset. */
/* First paint uses a fallback font (Inter arrives with the async main.css). A fallback scaled
   to Inter's metrics keeps the hero lines and pill rows the same when Inter swaps in. */
@font-face{font-family:'Inter sc-fallback';src:local('Arial'),local('ArialMT'),local('Liberation Sans'),local('LiberationSans'),local('Helvetica');ascent-override:90.2%;descent-override:22.48%;line-gap-override:0%;size-adjust:107.4%}
@font-face{font-family:'Inter sc-fallback-h1';src:local('Arial'),local('ArialMT'),local('Liberation Sans'),local('LiberationSans'),local('Helvetica');ascent-override:90.2%;descent-override:22.48%;line-gap-override:0%;size-adjust:114.2%}
main.cam.sc{font-family:'Inter','Inter sc-fallback',system-ui,-apple-system,sans-serif}
.cam.sc h1{font-family:'Inter','Inter sc-fallback-h1',system-ui,-apple-system,sans-serif}
.cam.sc .c::before,.cam.sc .c::after{border-color:#a78bfa;opacity:.65}
.cam.sc a.c:hover,.cam.sc .c.hv:hover{border-color:rgba(167,139,250,.55)}
.cam.sc .vi{stroke:#a78bfa}
.cam.sc .tog{padding:0 14px;letter-spacing:.08em}
.cam.sc .tog:hover{border-color:#a78bfa;color:#fff}
.cam.sc .tog.on{border-color:#a78bfa;background:rgba(167,139,250,.16);color:#fff}
.cam.sc .tog.bad.on{border-color:#ff6b6b;background:rgba(255,107,107,.12);color:#ffb4b4}
.cam.sc details.rfi summary{grid-template-columns:minmax(0,1fr) 28px}
.cam.sc details.rfi .pl{color:#a78bfa}
.cam.sc .ans{margin:0 0 26px;max-width:720px}
@keyframes sc-ledp{0%,100%{opacity:.35}50%{opacity:1}}
.cam .ledp{animation:sc-ledp 1.4s ease-in-out infinite}

/* hero: jack tracer. The selected run, jack and port are opacity layers over the base drawing. */
.cam .tr .run{fill:none;stroke:rgba(167,139,250,.28);stroke-width:1.3}
.cam .tr .run-s,.cam .tr .run-r{fill:none;stroke-width:2.6;opacity:0;transition:opacity .3s}
.cam .tr .run-s{stroke:#c4b5fd}.cam .tr .run-r{stroke:#ff8a8a}
.cam .tr .runf{fill:none;stroke:#fff;stroke-width:2.6;stroke-dasharray:6 10;opacity:0}
.cam .tr .run-s.sel,.cam .tr .runf.sel{opacity:1}
.cam .tr .runf.sel{animation:cam-flow 1.2s linear infinite}
.cam .tr.messy .run-s.sel,.cam .tr.messy .runf.sel{opacity:0}
.cam .tr.messy .run-r.sel{opacity:1}
.cam .tr .jg{cursor:pointer}
.cam .tr text{pointer-events:none}
.cam .tr .jk{fill:#0b1324;stroke:#a78bfa;stroke-width:1.5}
.cam .tr .jk-s{fill:#a78bfa;stroke:#fff;stroke-width:1.5;opacity:0;transition:opacity .25s}
.cam .tr .jk-s.sel{opacity:1}
.cam .tr .port{fill:#1b2440}.cam .tr .port.used{fill:#3b3170}
.cam .tr .port-s{fill:#c4b5fd;opacity:0;transition:opacity .25s}
.cam .tr .port-s.sel{opacity:1}.cam .tr.messy .port-s.sel{opacity:0}
.cam .tr .lab{font:700 9px var(--mono);fill:#c4b5fd;opacity:1;transition:opacity .3s}
.cam .tr .q{font:700 10px var(--mono);fill:#ff8a8a;opacity:0;transition:opacity .3s}
.cam .tr.messy .lab{opacity:0}.cam .tr.messy .q{opacity:1}
.cam .tr .neat{opacity:1;transition:opacity .4s}.cam .tr .mess{opacity:0;transition:opacity .4s}
.cam .tr.messy .neat{opacity:0}.cam .tr.messy .mess{opacity:1}
.cam .jchip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:1px solid rgba(120,170,255,.2);border-radius:4px;background:transparent;color:#a9bddc;font:600 12px var(--mono);cursor:pointer}
.cam .jchip:hover{border-color:#a78bfa;color:#fff}
.cam .jchip.on{border-color:#a78bfa;color:#fff;background:rgba(167,139,250,.14)}
.cam .kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:10px 18px}
.cam .kv .k{font:600 10px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#7d92b3}
.cam .kv .v{font-size:15px;font-weight:600;line-height:1.35;color:#e8edf5;margin-top:3px}

/* included drawings */
@keyframes sc-lab{0%,20%{opacity:0;transform:translateY(-4px)}35%,90%{opacity:1;transform:none}100%{opacity:0}}
.cam .labin{animation:sc-lab 3.4s ease infinite}
@keyframes sc-drawl{0%{stroke-dashoffset:300}55%,100%{stroke-dashoffset:0}}
.cam .drawl{stroke-dasharray:300;animation:sc-drawl 3.6s ease-in-out infinite}

/* cable picker */
.cam .lenv{font-size:30px;font-weight:800;letter-spacing:-.02em;color:#e8edf5}
.cam .rng{width:100%;height:44px;margin:0;accent-color:#a78bfa;cursor:pointer}
.cam .bar{transform-box:view-box;transform-origin:0 0;transition:transform .3s}
.cam .axis{position:relative;height:34px;margin-top:-18px;font-size:11px;color:#7d92b3}
.cam .axis span{position:absolute;top:0}
.cam .axis .mid{transform:translateX(-50%);color:#f5c46b;text-align:center}
.cam .cbl{display:flex;flex-direction:column;gap:8px;padding:20px;border-radius:5px;border:1px solid rgba(120,170,255,.16);background:#070b14}
.cam .cbl .cn{font-size:20px;font-weight:800}
.cam .cbl.ok{border-color:rgba(74,222,128,.45);background:rgba(74,222,128,.05)}
.cam .cbl.no{border-color:rgba(255,107,107,.35);background:rgba(255,107,107,.04);opacity:.85}
.cam .cbl.best{box-shadow:0 0 0 2px #a78bfa}
.cam .cbl .st{font:700 12px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.cam .cbl.ok .st{color:#8bf0b0}.cam .cbl.no .st{color:#ff8a8a}
.cam .rate{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;border-radius:4px;background:#a78bfa;color:#0b0716;font:700 12px var(--mono);letter-spacing:.06em}
.cam .row2{display:grid;grid-template-columns:130px minmax(0,1fr);gap:14px;padding:10px 0;border-top:1px dashed rgba(120,170,255,.16)}
.cam .row2 .rk{font:600 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#7d92b3;padding-top:3px}
.cam .row2 .rv{font-size:15px;line-height:1.55;color:#dfe6f2}
.cam .rec{display:flex;gap:14px;align-items:baseline;padding-top:16px;border-top:1px dashed rgba(120,170,255,.2)}
.cam .cab{gap:22px;padding:30px;border-color:rgba(167,139,250,.35)}
.cam .xsbox{display:flex;flex-wrap:wrap;gap:24px 40px;align-items:center;padding:24px;border:1px solid rgba(120,170,255,.14);border-radius:6px;background:#070b14}
/* cross-section: jacket colours are three opacity layers */
.cam .xs .cu,.cam .xs .fbg{transform-box:view-box;transform-origin:130px 130px;transition:transform .5s cubic-bezier(.3,.7,.3,1),opacity .4s}
.cam .xs .fbg{opacity:0;transform:scale(.6)}
.cam .xs.fb .fbg{opacity:1;transform:none}
.cam .xs.fb .cu{opacity:0;transform:scale(.6)}
.cam .xs.c-5e .cu{transform:scale(.9)}
.cam .xs.c-6a .cu{transform:scale(1.04)}
.cam .xs .jkt{stroke-width:2;opacity:0;transition:opacity .4s}
.cam .xs .jk-in{fill:rgba(77,158,255,.25);stroke:#4d9eff}
.cam .xs .jk-pl{fill:rgba(226,232,240,.22);stroke:#e2e8f0}
.cam .xs .jk-out{fill:#111318;stroke:#94a3b8}
.cam .xs.j-in .jk-in,.cam .xs.j-pl .jk-pl,.cam .xs.j-out .jk-out{opacity:1}
.cam .xs .shield,.cam .xs .gelg{opacity:0;transition:opacity .4s}
.cam .xs.sh .shield,.cam .xs.gel .gelg{opacity:1}
.cam .xs .spline{transition:opacity .3s}
.cam .xs.c-5e .spline{opacity:0}
.cam .xs .pairs{transform-box:view-box;transform-origin:130px 130px;animation:sc-spin 26s linear infinite}
@keyframes sc-spin{to{transform:rotate(360deg)}}

/* messy vs clean, property tiles, repair chips */
.cam .pf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.cam .c.bad{background:rgba(255,107,107,.04);border-color:rgba(255,107,107,.22)}
.cam .c.good{background:rgba(74,222,128,.04);border-color:rgba(74,222,128,.25)}
.cam .chk{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.cam .chk li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;font-size:15px;line-height:1.5;color:#dfe6f2}
.cam .mk{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font:700 11px var(--sans);margin-top:1px}
.cam .pt{display:flex;flex-direction:column;gap:8px;min-height:180px}
.cam .pt svg{width:100%;height:64px}
.cam .bchip{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 16px;border:1px solid rgba(120,170,255,.2);border-radius:5px;background:rgba(5,8,16,.6);color:#e8edf5;font-weight:600;font-size:15px}
.cam .bchip:hover{border-color:#a78bfa;color:#fff}
.cam .bchip i{width:7px;height:7px;border-radius:50%;background:#a78bfa}
@media (max-width:760px){
  .cam .pf{grid-template-columns:minmax(0,1fr)}
  .cam .row2{grid-template-columns:minmax(0,1fr);gap:4px}
  .cam .cab{padding:22px 16px}
  .cam .xsbox{padding:18px 14px}
  .cam .rec{flex-direction:column;gap:6px}
  .cam .axis{height:48px;font-size:10px}
  .cam .axis .mid{width:76px}
  .cam.sc details.rfi summary{font-size:17px}
}

/* ---- 2. state copies (the family script) ---- */
.cam .ms-off{opacity:0!important}
.cam .msv{transition:opacity .35s}
.cam .paused,.cam .paused *{animation-play-state:paused!important}
/* mono labels keep their height when the web font arrives: the local fallback carries
   JetBrains Mono's vertical metrics (as cam-areas.css) */
@font-face{font-family:'JetBrains Mono Fallback';src:local('Menlo'),local('Consolas'),local('DejaVu Sans Mono'),local('Noto Mono'),local('Liberation Mono'),local('Courier New');ascent-override:102%;descent-override:30%;line-gap-override:0%}
main.cam{--mono:'JetBrains Mono','JetBrains Mono Fallback','Fira Code',monospace}

/* ---- 3. the pages' own rules ---- */
.cam .bad{background:rgba(255,107,107,.04);border-color:rgba(255,107,107,.22)}
@media (max-width:760px){.cam details.rfi summary{font-size:17px}}
@media (max-width:760px){.cam .sec{padding:76px 0}}
.cam .step{display:flex;flex-direction:column;gap:10px;padding:24px;border-top:2px solid rgba(167,139,250,.5);background:rgba(9,14,24,.6)}
.cam .step .sn{font:700 13px var(--mono);letter-spacing:.14em;color:#a78bfa}
.cam .sched{border:1px solid rgba(120,170,255,.16);border-radius:4px;background:rgba(5,8,16,.55);display:grid;grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr))}
.cam .shead{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid rgba(120,170,255,.16);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:#7d92b3}
.cam .srow{display:grid;grid-template-columns:58px minmax(0,1fr);gap:16px;padding:22px 20px;border-bottom:1px solid rgba(120,170,255,.1)}
.cam .srow:hover{background:rgba(29,123,255,.05)}
.cam .sno{font-size:11px;letter-spacing:.12em;color:#4d9eff;padding-top:4px}
.cam .stag{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border:1px solid rgba(120,170,255,.28);border-radius:3px;font:600 10.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#8bbcff}
.cam .tc{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid rgba(120,170,255,.14);border-radius:4px;background:rgba(9,14,24,.7);color:#e8edf5;min-height:120px;transition:transform .25s}
.cam .tc svg{width:100%;height:44px}
.cam .tc .tt2{font-size:15px;font-weight:700;letter-spacing:-.01em;color:#e8edf5}
.cam .tc .go{margin-top:auto;font-size:10.5px}
.cam a.tc:hover{border-color:rgba(77,158,255,.6);background:rgba(12,20,36,.92);transform:translateY(-2px)}
.cam .tc.here{border-style:dashed;border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.04)}
@media (max-width:560px){.cam .srow{grid-template-columns:1fr;gap:8px}}
.cam a.tc:hover{border-color:rgba(167,139,250,.6)}
.cam .tc.here{border-color:rgba(167,139,250,.45);background:rgba(167,139,250,.05)}
.cam .sno{color:#a78bfa}
.cam .stag{border-color:rgba(167,139,250,.35);color:#c4b5fd}
.cam .srow:hover{background:rgba(167,139,250,.05)}
.cam .hoods{display:flex;flex-direction:column;gap:14px;padding:22px 24px;margin-bottom:28px;border:1px solid rgba(120,170,255,.14);border-radius:4px;background:rgba(9,14,24,.6)}
.cam .hoods ul{margin:0;padding:0;list-style:none;columns:4 180px;column-gap:28px}
.cam .hoods li{font-size:14.5px;line-height:1.9;color:#c9d2e0;break-inside:avoid}
.cam .cj-hero{display:flex;flex-wrap:wrap;align-items:stretch}
.cam .cj-map{flex:1 1 300px;min-width:0;display:flex;justify-content:center;align-items:center;background:#04070d}
.cam .cj-map svg{display:block;width:100%;max-width:400px;height:auto}
.cam .cj-side{flex:0 1 240px;min-width:0;padding:18px 18px 16px;border-left:1px solid rgba(120,170,255,.14);background:linear-gradient(180deg,rgba(9,14,24,.9),rgba(5,8,16,.9));display:grid}
@media (max-width:640px){.cam .cj-side{flex-basis:100%;border-left:0;border-top:1px solid rgba(120,170,255,.14)}}
.cam .cj-lg{grid-area:1/1;display:flex;flex-direction:column;gap:10px;animation:sca-cj-in .5s ease both}
.cam .cj-lg.off{visibility:hidden;animation:none;opacity:0}
.cam .cj-ico{width:100%;height:40px;border:1px solid rgba(120,170,255,.14);border-radius:3px;background:rgba(4,7,13,.7)}
.cam .cj-ttl{font-size:16px;font-weight:800;letter-spacing:-.015em;line-height:1.2;color:#e8edf5}
.cam .cj-rows{list-style:none;margin:0;padding:8px 0;display:flex;flex-direction:column;gap:7px;border-top:1px solid rgba(120,170,255,.12);border-bottom:1px solid rgba(120,170,255,.12)}
.cam .cj-rows li{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px;align-items:baseline;font-size:12.5px;line-height:1.35;color:#c9d2e0}
.cam .cj-rows b{font:700 9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--a)}
.cam .cj-chips{display:flex;flex-wrap:wrap;gap:5px}
.cam .cj-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid var(--a);border-radius:999px;font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#e8edf5;background:rgba(5,8,16,.6)}
.cam .cj-ml{font:700 8.6px var(--mono);letter-spacing:.07em;paint-order:stroke;stroke:#04070d;stroke-width:3px;stroke-linejoin:round}
.cam .cj-ms{font:500 6.6px var(--mono);letter-spacing:.1em;paint-order:stroke;stroke:#04070d;stroke-width:2.4px;stroke-linejoin:round}
.cam .cj-g{transition:opacity .45s}
.cam .cj-g:not(.on){opacity:0}
.cam .cj-g.on .cj-zh{animation:sca-cj-zp 2.8s ease-in-out infinite}
.cam .cj-ld{stroke-dasharray:1 1;stroke-dashoffset:0}
.cam .cj-g.on .cj-ld{animation:sca-cj-dr .8s ease-out both}
.cam .cj-pd{transform-box:fill-box;transform-origin:center;animation:sca-cj-ping 2.2s ease-out infinite}
.cam .cj-c1{animation:sca-cj-fl 2.6s ease-in-out infinite}
.cam .cj-up{stroke-dasharray:4 8;animation:sca-cj-up 1.4s linear infinite}
.cam .cj-cl{font:600 6.8px var(--mono);letter-spacing:.16em}
.cam .cj-wl{font:500 6.6px var(--mono);letter-spacing:.3em;fill:#2c4266}
.cam .cj-ml{font-size:8px}
.cam .cj-c2{animation:sca-cj-fl 2.6s ease-in-out infinite}
.cam .cj-c4{stroke-dasharray:1 1;animation:sca-cj-c4 2.8s ease-in-out infinite}
.cam .cj-f1{stroke-dasharray:5 5;animation:sca-cj-up 1.2s linear infinite}
.cam .cj-tag{animation:sca-cj-fl 2s ease-in-out infinite}
.cam .cj-wt{transform:translateY(0)}
.cam .cj-g.on .cj-wt{animation:sca-cj-wt 5s ease-in-out infinite}
.cam .cj-xx{opacity:1}
.cam .cj-g.on .cj-xx{animation:sca-cj-xx 5s ease-in-out infinite}
.cam .cj-wn{transform-box:fill-box;transform-origin:center;animation:sca-cj-ping 2.2s ease-out infinite}
.cam .cj-ap{animation:sca-cj-fl 2.4s ease-in-out infinite}
.cam .cj-fx{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}
.cam .cj-fd{flex:5 1 480px;min-width:0;border:1px solid rgba(120,170,255,.16);border-radius:4px;background:#04070d}
.cam .cj-fd svg{display:block;width:100%;height:auto}
.cam .cj-fp{flex:3 1 280px;min-width:0;display:flex;flex-direction:column;gap:12px;padding:18px;border:1px solid rgba(120,170,255,.16);border-radius:4px;background:rgba(5,8,16,.6)}
.cam .cj-t1{font:700 12px var(--mono);letter-spacing:.07em;paint-order:stroke;stroke:#04070d;stroke-width:4px;stroke-linejoin:round}
.cam .cj-t3{font:500 9px var(--mono);letter-spacing:.08em;fill:#8a9bb5;paint-order:stroke;stroke:#04070d;stroke-width:3px;stroke-linejoin:round}
.cam .cj-lt{animation:sca-cj-lt 1.1s linear infinite}
.cam .cj-lks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px}
.cam .cj-lk{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border:1px solid rgba(120,170,255,.14);border-radius:4px;background:rgba(5,8,16,.6)}
.cam .cj-lk ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cam .cj-lk a{font-size:14.5px;color:#c9d2e0;border-bottom:1px solid rgba(167,139,250,.35)}
.cam .cj-lk a:hover{color:#fff;border-color:#a78bfa}
@media (prefers-reduced-motion:reduce){.cam .cj-lg{animation:none}}
.cam .cj-hint{display:none;font-size:11px;letter-spacing:.08em;color:#7d92b3}
@media (max-width:640px){.cam .cj-hint{display:block;flex-basis:100%;margin-top:-6px}}
.cam .cm-hero{display:flex;flex-wrap:wrap;align-items:stretch}
.cam .cm-map{flex:1 1 300px;min-width:0;display:flex;justify-content:center;align-items:center;background:#04070d}
.cam .cm-map svg{display:block;width:100%;max-width:440px;height:auto}
.cam .cm-side{flex:0 1 240px;min-width:0;padding:18px 18px 16px;border-left:1px solid rgba(120,170,255,.14);background:linear-gradient(180deg,rgba(9,14,24,.9),rgba(5,8,16,.9));display:grid}
@media (max-width:640px){.cam .cm-side{flex-basis:100%;border-left:0;border-top:1px solid rgba(120,170,255,.14)}}
.cam .cm-lg{grid-area:1/1;display:flex;flex-direction:column;gap:10px;animation:sca-cm-in .5s ease both}
.cam .cm-lg.off{visibility:hidden;animation:none;opacity:0}
.cam .cm-ico{width:100%;height:40px;border:1px solid rgba(120,170,255,.14);border-radius:3px;background:rgba(4,7,13,.7)}
.cam .cm-ttl{font-size:16px;font-weight:800;letter-spacing:-.015em;line-height:1.2;color:#e8edf5}
.cam .cm-rows{list-style:none;margin:0;padding:8px 0;display:flex;flex-direction:column;gap:7px;border-top:1px solid rgba(120,170,255,.12);border-bottom:1px solid rgba(120,170,255,.12)}
.cam .cm-rows li{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px;align-items:baseline;font-size:12.5px;line-height:1.35;color:#c9d2e0}
.cam .cm-rows b{font:700 9.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--a)}
.cam .cm-chips{display:flex;flex-wrap:wrap;gap:5px}
.cam .cm-chip{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid var(--a);border-radius:999px;font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#e8edf5;background:rgba(5,8,16,.6)}
.cam .cm-ml{font:700 8.6px var(--mono);letter-spacing:.07em;paint-order:stroke;stroke:#04070d;stroke-width:3px;stroke-linejoin:round}
.cam .cm-ms{font:500 6.6px var(--mono);letter-spacing:.1em;paint-order:stroke;stroke:#04070d;stroke-width:2.4px;stroke-linejoin:round}
.cam .cm-rv{font:500 6px var(--mono);letter-spacing:.32em;fill:rgba(139,188,255,.42)}
.cam .cm-gt{font:500 5.6px var(--mono);letter-spacing:.08em;fill:rgba(125,146,179,.7)}
.cam .cm-g{transition:opacity .45s}
.cam .cm-g:not(.on){opacity:0}
.cam .cm-g.on .cm-zh{animation:sca-cm-zp 2.8s ease-in-out infinite}
.cam .cm-ld{stroke-dasharray:1 1;stroke-dashoffset:0}
.cam .cm-g.on .cm-ld{animation:sca-cm-dr .8s ease-out both}
.cam .cm-pd{transform-box:fill-box;transform-origin:center;animation:sca-cm-ping 2.2s ease-out infinite}
.cam .cm-c1{animation:sca-cm-fl 2.6s ease-in-out infinite}
.cam .cm-up{stroke-dasharray:4 8;animation:sca-cm-up 1.4s linear infinite}
.cam .cm-c4{animation:sca-cm-fl 2.2s ease-in-out infinite}
.cam .cm-lift{animation:sca-cm-lift 5s ease-in-out infinite}
.cam .cm-wf{transform-box:fill-box;transform-origin:center bottom;animation:sca-cm-wf 2.4s ease-out infinite}
.cam .cm-fx{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}
.cam .cm-fd{flex:5 1 480px;min-width:0;border:1px solid rgba(120,170,255,.16);border-radius:4px;background:#04070d}
.cam .cm-fd svg{display:block;width:100%;height:auto}
.cam .cm-fp{flex:3 1 280px;min-width:0;display:flex;flex-direction:column;gap:12px;padding:18px;border:1px solid rgba(120,170,255,.16);border-radius:4px;background:rgba(5,8,16,.6)}
.cam .cm-t1{font:700 12px var(--mono);letter-spacing:.07em;paint-order:stroke;stroke:#04070d;stroke-width:4px;stroke-linejoin:round}
.cam .cm-t2{font:700 10.5px var(--mono);letter-spacing:.08em;fill:#c9d2e0}
.cam .cm-t3{font:500 9px var(--mono);letter-spacing:.08em;fill:#8a9bb5;paint-order:stroke;stroke:#04070d;stroke-width:3px;stroke-linejoin:round}
.cam .cm-draw,.cam .cm-draw2{stroke-dasharray:1 1;stroke-dashoffset:0}
.cam .cm-g.on .cm-draw{animation:sca-cm-dr 1.6s cubic-bezier(.4,.6,.3,1) both}
.cam .cm-g.on .cm-draw2{animation:sca-cm-dr .7s ease-out 1.5s both}
.cam .cm-pk{offset-distance:0%;opacity:0;animation:sca-cm-pk 2.2s linear infinite}
.cam .cm-lt{animation:sca-cm-lt 1.1s linear infinite}
.cam .cm-ok{transform-box:fill-box;transform-origin:center}
.cam .cm-g.on .cm-ok{animation:sca-cm-stamp .5s ease 1.7s both}
.cam .cm-g.on .cm-x{animation:sca-cm-in .4s ease .9s both}
.cam .cm-hi{opacity:.6}
.cam .cm-meter{display:flex;flex-direction:column;gap:6px;padding-top:4px}
.cam .cm-tr{position:relative;height:14px;border-radius:3px;background:rgba(120,170,255,.1);overflow:hidden}
.cam .cm-tr i{position:absolute;top:0;bottom:0;transform-origin:left;transition:transform .9s cubic-bezier(.4,.6,.3,1)}
.cam .cm-mg{left:0;width:42.86%;background:#4ade80}
.cam .cm-mr{left:42.86%;width:57.14%;background:#ff6b6b}
.cam .cm-mg.cm-s0{transform:scaleX(.333)}
.cam .cm-mg.cm-s1{transform:scaleX(.889)}
.cam .cm-mg.cm-s2{transform:scaleX(1)}
.cam .cm-mr.cm-s0,.cam .cm-mr.cm-s1{transform:scaleX(0)}
.cam .cm-mr.cm-s2{transform:scaleX(.917)}
.cam .cm-tr b{position:absolute;top:-2px;bottom:-2px;width:2px;background:#e8edf5}
.cam .cm-m90{left:42.86%}
.cam .cm-m100{left:47.62%;opacity:.5}
.cam .cm-sc{position:relative;height:14px;font-size:10px;color:#7d92b3}
.cam .cm-sc span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.cam .cm-sc span:first-child{transform:none}
.cam .cm-sc span:last-child{transform:translateX(-100%)}
.cam .cm-len{font-size:13px;color:#e8edf5}
.cam .cm-lks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px}
.cam .cm-lk{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border:1px solid rgba(120,170,255,.14);border-radius:4px;background:rgba(5,8,16,.6)}
.cam .cm-lk ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cam .cm-lk a{font-size:14.5px;color:#c9d2e0;border-bottom:1px solid rgba(167,139,250,.35)}
.cam .cm-lk a:hover{color:#fff;border-color:#a78bfa}
@media (max-width:640px){.cam .cm-fd{overflow-x:auto}}
@media (max-width:640px){.cam .cm-fd svg{min-width:560px}}
@media (max-width:640px){.cam .cm-fp{padding:14px}}
@media (max-width:640px){.cam .cm-sc span:nth-child(3){display:none}}
@media (prefers-reduced-motion:reduce){.cam .cm-hero *,.cam .cmx *,.cam .cm-c1,.cam .cm-up,.cam .cm-c4,.cam .cm-lift,.cam .cm-wf{animation:none!important}}
@media (prefers-reduced-motion:reduce){.cam .cm-pk{opacity:0}}
@media (prefers-reduced-motion:reduce){.cam .cm-lg{animation:none}}
.cam .cm-hint{display:none;font-size:11px;letter-spacing:.08em;color:#7d92b3}
@media (max-width:640px){.cam .cm-hint{display:block;flex-basis:100%;margin-top:-6px}}
@keyframes sca-cj-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes sca-cj-zp{50%{opacity:.62}}
@keyframes sca-cj-dr{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes sca-cj-ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(3.2);opacity:0}}
@keyframes sca-cj-fl{50%{opacity:.45}}
@keyframes sca-cj-up{to{stroke-dashoffset:24}}
@keyframes sca-cj-c4{0%{stroke-dashoffset:1}60%,100%{stroke-dashoffset:0}}
@keyframes sca-cj-wt{0%{transform:translateY(90px)}30%,88%{transform:translateY(0)}100%{transform:translateY(90px)}}
@keyframes sca-cj-xx{0%,22%{opacity:0}32%,88%{opacity:1}98%,100%{opacity:0}}
@keyframes sca-cj-lt{to{stroke-dashoffset:-29}}
@keyframes sca-cm-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes sca-cm-zp{50%{opacity:.62}}
@keyframes sca-cm-dr{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes sca-cm-ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(3.2);opacity:0}}
@keyframes sca-cm-fl{50%{opacity:.45}}
@keyframes sca-cm-up{to{stroke-dashoffset:24}}
@keyframes sca-cm-lift{0%,15%{transform:translateY(0)}45%,60%{transform:translateY(-60px)}90%,100%{transform:translateY(0)}}
@keyframes sca-cm-wf{0%{opacity:0;transform:scale(.6)}40%{opacity:.9}100%{opacity:0;transform:scale(1.2)}}
@keyframes sca-cm-pk{0%{offset-distance:0%;opacity:0}8%{opacity:1}90%{opacity:1}100%{offset-distance:100%;opacity:0}}
@keyframes sca-cm-lt{to{stroke-dashoffset:-29}}
@keyframes sca-cm-stamp{from{opacity:0;transform:scale(1.6)}to{opacity:1;transform:scale(1)}}
