﻿:root {
  --red:#ce0001; --yellow:#FFD400;
    --surface:#141414; --ink:#ffffff; --ink-2:#b8bcc4; --line:#2a2a2a; --code-bg:#0c0c0c; color-scheme:dark;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
  --bg:#000000; --surface:#141414; --ink:#ffffff; --ink-2:#b8bcc4; --line:#2a2a2a; --code-bg:#0c0c0c; color-scheme:dark; } }
:root[data-theme=dark] { --bg:#000000; --surface:#141414; --ink:#ffffff; --ink-2:#b8bcc4; --line:#2a2a2a; --code-bg:#0c0c0c; color-scheme:dark; }
html { scroll-padding-top:env(safe-area-inset-top,0px); }
*,*::before,*::after { box-sizing:inherit; }
body { margin:0; background:var(--bg); color:var(--ink); font-family:Poppins,"Segoe UI",Helvetica,Arial,sans-serif; font-size:15px; line-height:1.6; }
 
.awrap { max-width:1080px; margin:0 auto; padding:24px 20px 80px; }

.acopy:focus-visible, details.acode summary:focus-visible { outline:3px solid var(--yellow); outline-offset:2px; }

.apanel { display:none; } .apanel.aactive { display:block; }
.acrumb { color:var(--ink-2); font-size:13px; margin:14px 0 26px; }
.acrumb a { color:var(--ink-2); text-decoration:none; }
.asection-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; }
h4 { font-size:26px; font-weight:700; margin:0 0 4px; position:relative;   }

.acount { color:var(--ink-2); font-size:13px; }

.agrid { display:grid; grid-template-columns:repeat(3,1fr); gap:22px 34px; margin:22px 0 10px; }
@media (max-width:820px) { .agrid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:540px) { .agrid { grid-template-columns:1fr; } }

/* ===== Card: dark back + shadow ===== */
.aaddon {
 background: linear-gradient(180deg, #232323 0%, #000000 100%);
   border:1px solid var(--line);
  border-radius:16px;
  padding:22px 22px 24px;
  box-shadow:
    0 12px 32px rgba(0,0,0,.65),
    0 2px 6px rgba(0,0,0,.5),
    inset 0 1px 0 rgba(255,255,255,.05);
}
@media (prefers-reduced-motion:no-preference) {
  .aaddon { transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
}
.aaddon:hover {
  transform:translateY(-3px);
  border-color:#3a3a3a;
  box-shadow:
    0 18px 40px rgba(0,0,0,.75),
    0 0 0 1px rgba(206,0,1,.25),
    inset 0 1px 0 rgba(255,255,255,.06);
}
/* ==================================== */

.aaddon h6 { display:flex; align-items:center; gap:12px; font-size:14px; font-weight:700; letter-spacing:.3px; margin:0 0 6px; }
.aico { flex:none; width:45px; height:45px; display:inline-flex; }
.aico svg, .aico img { width:100%; height:100%; object-fit:contain; }
.aprice { color:var(--red); font-weight:600; margin:0 0 8px; }
.abrief { margin:0; color:var(--ink-2); font-size:14px; line-height:1.55; }

.anotice-h { font-size:18px; font-weight:700; margin:0 0 6px; }
.anotice { margin:0 0 30px; padding-left:18px; color:var(--ink-2); font-size:13.5px; }
.anotice li { margin:3px 0; }

details.acode { border:1px solid var(--line); border-radius:8px; background:var(--surface); padding:0 16px; }
details.acode summary { cursor:pointer; padding:12px 0; font-weight:600; font-size:14px; }
details.acode pre { background:var(--code-bg); border-radius:6px; padding:14px; font-size:12px; line-height:1.5; overflow-x:auto; margin:0 0 16px; max-height:420px; }
.acopy { font:inherit; font-size:13px; font-weight:600; padding:7px 14px; margin:0 0 10px; border:1.5px solid var(--red); background:transparent; color:var(--red); border-radius:6px; cursor:pointer; }
.acopy:hover { background:var(--red); color:#fff; }

.aicons { margin-top:56px; padding-top:28px; border-top:1px solid var(--line); }
.aicons h5 { font-size:18px; font-weight:700; margin:0 0 4px; }
.aicons p { color:var(--ink-2); font-size:13.5px; margin:0 0 18px; }
.aicons .asheet { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:18px; }
.aicons figure { margin:0; text-align:center; }
.aico.abig { width:72px; height:72px; margin:0 auto 8px; padding:10px; background:#0c0c0c; border:1px solid var(--line); border-radius:10px; }
figcaption { font-size:12px; color:var(--ink); font-family:ui-monospace,Menlo,Consolas,monospace; }
figcaption span { font-family:Poppins,sans-serif; color:var(--ink-2); }
@media (prefers-reduced-motion:no-preference) { .atabs button { transition:background .15s,color .15s; margin:15px 5px 10px 5px } }

.atabs button { background:transparent; color:#fff; border:1.5px solid #2a2a2a; outline:none; }
.atabs button.aactive { background:#FFD400; color:#000;   }
.atabs button:focus-visible { outline:3px solid #FFD400; outline-offset:2px; }















/* ===== Fiber coverage Ã¢â‚¬â€œ all rules scoped to .fhero / .fcover (no global leaks) ===== */
:root{
  --red:#ce0001; --red-deep:#c8121a; --yellow:#f4c81c; --yellow-ink:#ffd400;
  --paper:#131316; --mist:#1c1c21; --line:#2c2c34; --ink:#f1f1f3; --muted:#a2a2ad;
  --sea:#171c24; --land:#22252b; --shore:#3f4b5a;
  --fsticky-top:110px; /* auto-updated by JS from your fixed header; change this fallback if needed */
}

/* STICKY FIX: sticky breaks when ANY ancestor has overflow hidden/auto/scroll.
   'clip' hides overflow without creating a scroll container, so sticky keeps working. */
html, body, .container.c-container, .container.c-container > *{
  overflow-x: clip !important;
  overflow-y: visible !important;
}
.fcover, .fhero{ overflow: visible !important; }

.fhero *, .fcover *, .fhero *::before, .fhero *::after, .fcover *::before, .fcover *::after{box-sizing:border-box}
.fhero a, .fcover a{color:inherit}
.fhero :focus-visible, .fcover :focus-visible{outline:3px solid var(--red);outline-offset:3px}

.fwrap{max-width:1200px;margin:0 auto;padding:0 24px}

/* hero Ã¢â‚¬â€œ fully centered */
.fhero{padding:10px 0 36px;text-align:center;width:100%}
.fhero .container, .fhero .row, .fhero .col-lg-8, .fhero .fwrap{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;margin-left:auto;margin-right:auto}
.fhero h2{font-weight:700;font-size:2.5em;line-height:.95;letter-spacing:-.01em;margin:10px auto 14px;max-width:none;text-align:center;width:100%;color:var(--ink)}
.fhero p{margin:0 auto 24px;font-size:14px;color:var(--muted);text-align:center;max-width:85ch;width:100%}
.fsearch{position:relative;max-width:620px;margin:0 auto;width:100%}
.fsearch input{width:100%;height:60px;border:2px solid var(--ink);border-radius:8px;background:var(--paper);color:var(--ink);padding:0 118px 0 54px;font:inherit;font-size:19px}
.fsearch input:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 4px rgba(237,28,36,.15)}
.fsearch svg.fic{position:absolute;left:18px;top:19px;width:22px;height:22px;pointer-events:none}
.fsearch .fclear{position:absolute;right:8px;top:8px;height:44px;padding:0 16px;border:0;border-radius:6px;background:var(--mist);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
.fsearch .fclear[hidden]{display:none}
.fresult{min-height:28px;margin-top:12px;font-size:16px;text-align:center;width:100%}
.fresult .fok{color:var(--red);font-weight:600} .fresult .fsoon-t{color:var(--yellow-ink);font-weight:600}
.fresult ul{list-style:none;margin:6px auto 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px}
.fresult li a{text-decoration:none;border-bottom:1.5px solid var(--line)} .fresult li a:hover{border-color:var(--red)}
.fstats{display:flex;justify-content:center;gap:36px;margin:8px auto 0;padding:0;list-style:none;text-align:center;width:100%}
.fstats b{display:block;font-size:40px;line-height:1;font-weight:700;color:var(--ink)}
.fstats span{font-size:14px;color:#fff}
.fstats li:nth-child(2) b{color:var(--red)} .fstats li:nth-child(3) b{color:var(--yellow-ink)}

/* coverage: map + list */
.fcover{display:grid;grid-template-columns:minmax(300px,5fr) 7fr;gap:40px;align-items:start;padding:12px 24px 56px;border-top:1px solid var(--line);color:var(--ink)}
.fmapcol{
  position:-webkit-sticky;
  position:sticky;
  top:var(--fsticky-top);
  align-self:start;
  z-index:2;
}
.fseg{display:inline-flex;background:var(--mist);border-radius:8px;padding:4px;margin:20px 0 12px}
.fseg button{border:0;background:none;color:var(--muted);font:inherit;font-weight:600;font-size:15px;padding:8px 14px;border-radius:6px;cursor:pointer}
.fseg button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.fmapframe{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--sea)}
.fmap{display:block;width:100%;height:auto;max-height:calc(100vh - var(--fsticky-top) - 170px)}
.fmap[hidden]{display:none}
.fcover input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
.fmap .fsea{fill:var(--sea)} .fmap .fland{fill:var(--land)} .fmap .fshore{fill:none;stroke:var(--shore);stroke-width:2;stroke-linejoin:round}
.fmap .fplace{fill:var(--shore);font-size:14px;font-style:italic;letter-spacing:.04em}
.fmk{cursor:pointer;outline:none}
.fmk .fhalo{fill:var(--red);opacity:0;transition:opacity .2s;pointer-events:none}
.fmk .fdot{fill:var(--red);stroke:var(--paper);stroke-width:2.5}
.fmk.fsoon .fdot{fill:var(--paper);stroke:var(--yellow);stroke-width:3}
.fmk.fsoon .fhalo{fill:var(--yellow)}
.fmk text{font-size:17px;font-weight:600;fill:var(--ink);paint-order:stroke;stroke:var(--land);stroke-width:4px;stroke-linejoin:round}
.fmk.fsoon text{font-weight:500;fill:var(--muted)}
.fmk:hover .fhalo,.fmk:focus-visible .fhalo,.fmk.active .fhalo{opacity:.22}
.fmk.active .fdot{stroke:var(--ink)} .fmk.active text{fill:var(--red)} .fmk.fsoon.active text{fill:var(--yellow-ink)}
.fmk.fdim{opacity:.25}
.fcluster{cursor:pointer} .fcluster-box{fill:var(--red);fill-opacity:.08;stroke:var(--red);stroke-width:1.5;stroke-dasharray:4 4}
.fcluster:hover .fcluster-box,.fcluster:focus-visible .fcluster-box{fill-opacity:.18}
.fcluster-t{font-size:20px;font-weight:700;fill:var(--ink)}
.fcluster-s{font-size:14px;fill:var(--muted)} .fcluster-s2{font-size:14px;font-weight:600;fill:var(--red);text-decoration:underline}
.flegend{display:flex;gap:22px;margin:12px 0 0;padding:0;list-style:none;font-size:14px;color:var(--muted)}
.fpin{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-1px;margin-right:8px}
.fpin.flive{background:var(--red)} .fpin.fsoon{border:3px solid var(--yellow);background:var(--paper)}

.flistcol h2{font-weight:700;font-size:34px;margin:28px 0 4px;color:var(--ink)}
.flistcol .fsub{margin:0 0 18px;color:var(--muted);font-size:16px}
.fcos{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fco{border:1px solid var(--line);border-radius:10px;padding:16px 18px 14px;transition:border-color .15s,box-shadow .15s;scroll-margin-top:calc(var(--fsticky-top) + 10px);background-color: rgba(0, 0, 0, 0.1);}
.fco h3{margin:0 0 8px;font-size:20px;font-weight:700;color:var(--ink)}
.fco.active{border-color:var(--red);box-shadow:0 0 0 3px rgba(237,28,36,.15)}
.fco.fhide{display:none}
.fareas{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.fareas li{font-size:14px;padding:3px 9px;border-radius:5px; ;color:var(--ink)}
.fareas li.fhit{background:var(--yellow);color:#1b1b1f;font-weight:600}
.fempty{display:none;padding:28px;border:1px dashed var(--line);border-radius:10px;color:var(--muted)}
.fempty.fshow{display:block}
.fsoonlist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px 16px}
.fco-soon{padding:10px 0;border-bottom:1px solid var(--line);font-weight:500;scroll-margin-top:calc(var(--fsticky-top) + 10px)}
.fco-soon.active{color:var(--yellow-ink)}
.fco-soon.fhide{display:none}
.fnote{font-size:14px;color:var(--muted);margin:16px 0 0;max-width:62ch}

 
    .side-banner-fiber {
        display: none  ;
    }
 

@media (max-width: 1400px) {
     .side-banner-fiber  {
        display: none     }
}






@media (max-width:980px){
  .fcover{grid-template-columns:1fr;gap:28px}
  .fmapcol{position:static;top:auto}
  .fmap{max-height:none}
  .fcos{grid-template-columns:1fr}
}
@media (max-width:760px){
  .fstats{gap:22px} .fstats b{font-size:32px}
  .fseg{display:flex} .fseg button{flex:1;padding:8px 6px;font-size:14px}
  .fsearch input{height:54px;font-size:17px;padding-right:96px}
  .fsearch .fclear{top:5px}
}
@media (prefers-reduced-motion:reduce){.fhero *, .fcover *{transition:none!important;scroll-behavior:auto!important}}







