/* =================================================================
   OLT-TOOLS — tema "fibra" (mesmo design do painel Hotspot RADIUS)
   Camada por cima do style.css: só visual, nenhuma regra de layout de
   dados muda. Para voltar ao visual anterior, basta tirar este arquivo
   do index.html.
   Azul = descida / informação · Verde = subida / saúde OK
   ================================================================= */

@font-face { font-family: "Chakra Petch"; font-weight: 500; font-display: swap; src: url(/vendor/fonts/chakra-petch-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "Chakra Petch"; font-weight: 600; font-display: swap; src: url(/vendor/fonts/chakra-petch-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family: "Chakra Petch"; font-weight: 700; font-display: swap; src: url(/vendor/fonts/chakra-petch-latin-700-normal.woff2) format("woff2"); }
@font-face { font-family: "Instrument Sans"; font-weight: 400; font-display: swap; src: url(/vendor/fonts/instrument-sans-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family: "Instrument Sans"; font-weight: 500; font-display: swap; src: url(/vendor/fonts/instrument-sans-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "Instrument Sans"; font-weight: 600; font-display: swap; src: url(/vendor/fonts/instrument-sans-latin-600-normal.woff2) format("woff2"); }
@font-face { font-family: "JetBrains Mono"; font-weight: 500; font-display: swap; src: url(/vendor/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: "JetBrains Mono"; font-weight: 600; font-display: swap; src: url(/vendor/fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2"); }

/* ---------------- tokens: escuro (padrão do sistema) ---------------- */
html[data-theme="dark"], html:not([data-theme]) {
  --f-display: "Chakra Petch", system-ui, sans-serif;
  --f-body: "Instrument Sans", system-ui, sans-serif;
  --f-mono: "JetBrains Mono", ui-monospace, monospace;
  --fx-bg: #050e1a;
  --fx-bg-2: #081628;
  --fx-panel: rgba(11, 28, 50, .74);
  --fx-panel-solid: #0b1d33;
  --fx-panel-2: rgba(20, 44, 76, .55);
  --fx-line: rgba(120, 170, 230, .14);
  --fx-line-strong: rgba(120, 170, 230, .28);
  --fx-text: #e6f0ff;
  --fx-muted: #8ba3c4;
  --fx-faint: #5b7397;
  --fx-blue: #3b8bff;
  --fx-green: #2ee6a6;
  --fx-cyan: #22c3e6;
  --fx-warn: #ffb547;
  --fx-bad: #ff5c7a;
  --fx-glow-blue: rgba(59, 139, 255, .35);
  --fx-glow-green: rgba(46, 230, 166, .28);
  --fx-shadow: 0 20px 60px -20px rgba(0, 0, 0, .7);
  --fx-dot: rgba(120, 170, 230, .09);

  /* variáveis do style.css, redirecionadas para a paleta nova */
  --ops-canvas: #050e1a; --ops-canvas-deep: #030a14; --ops-nav: rgba(8, 22, 40, .82);
  --ops-panel: #0b1d33; --ops-panel-head: rgba(20, 44, 76, .45); --ops-control: rgba(11, 29, 51, .7);
  --ops-line: rgba(120, 170, 230, .16); --ops-text: #e6f0ff; --ops-muted: #8ba3c4;
  --ops-blue: #3b8bff; --ops-green: #2ee6a6; --ops-gray: #5b7397; --ops-orange: #ffb547;
  --blue-50: rgba(59, 139, 255, .12); --blue-100: rgba(59, 139, 255, .2); --blue-500: #3b8bff; --blue-600: #3b8bff; --blue-700: #7fb4ff;
  --success: #2ee6a6; --warning: #ffb547; --danger: #ff5c7a;
  --kpi-blue: #3b8bff; --kpi-green: #2ee6a6; --kpi-gray: #8ba3c4; --kpi-amber: #ffb547;
  --sig-good: #2ee6a6; --sig-warn: #ffb547; --sig-low: #ff5c7a; --sig-off: #5b7397;
  --seg-on: rgba(59, 139, 255, .2); --seg-on-line: rgba(59, 139, 255, .65);
  --radius-sm: 12px; --radius-md: 18px;
  color-scheme: dark;
}

/* ---------------- tokens: claro ---------------- */
html[data-theme="light"] {
  --f-display: "Chakra Petch", system-ui, sans-serif;
  --f-body: "Instrument Sans", system-ui, sans-serif;
  --f-mono: "JetBrains Mono", ui-monospace, monospace;
  --fx-bg: #eef4fb;
  --fx-bg-2: #e2ebf6;
  --fx-panel: rgba(255, 255, 255, .84);
  --fx-panel-solid: #ffffff;
  --fx-panel-2: rgba(226, 236, 248, .8);
  --fx-line: rgba(20, 70, 140, .12);
  --fx-line-strong: rgba(20, 70, 140, .24);
  --fx-text: #0b1b30;
  --fx-muted: #536a89;
  --fx-faint: #8396b1;
  --fx-blue: #1463e0;
  --fx-green: #0a9a68;
  --fx-cyan: #0a8fb0;
  --fx-warn: #c27a00;
  --fx-bad: #d92d52;
  --fx-glow-blue: rgba(20, 99, 224, .18);
  --fx-glow-green: rgba(10, 154, 104, .14);
  --fx-shadow: 0 18px 50px -24px rgba(20, 60, 120, .35);
  --fx-dot: rgba(20, 70, 140, .08);

  --ops-canvas: #eef4fb; --ops-canvas-deep: #e2ebf6; --ops-nav: rgba(255, 255, 255, .86);
  --ops-panel: #ffffff; --ops-panel-head: rgba(226, 236, 248, .6); --ops-control: rgba(255, 255, 255, .85);
  --ops-line: rgba(20, 70, 140, .13); --ops-text: #0b1b30; --ops-muted: #536a89;
  --blue-50: rgba(20, 99, 224, .08); --blue-100: rgba(20, 99, 224, .14); --blue-500: #1463e0; --blue-600: #1463e0; --blue-700: #0f4fb5;
  --success: #0a9a68; --warning: #c27a00; --danger: #d92d52;
  --kpi-blue: #1463e0; --kpi-green: #0a9a68; --kpi-gray: #536a89; --kpi-amber: #c27a00;
  --sig-good: #0a9a68; --sig-warn: #c27a00; --sig-low: #d92d52; --sig-off: #8396b1;
  --seg-fill: #fff; --seg-line: rgba(20, 70, 140, .18); --seg-on: rgba(20, 99, 224, .1); --seg-on-line: #1463e0;
  --radius-sm: 12px; --radius-md: 18px;
  color-scheme: light;
}

/* ---------------- base: fundo pontilhado + dois focos de luz ---------------- */
html[data-theme] body, html[data-theme] :root { font-family: var(--f-body); }
/* O fundo fica no html; o body transparente deixa aparecer os focos de luz (o ::before fica atrás dele). */
html[data-theme] { background: var(--fx-bg); }
html[data-theme] body { background: transparent; color: var(--fx-text); -webkit-font-smoothing: antialiased; }
html[data-theme] body::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(900px 600px at 85% -10%, var(--fx-glow-blue), transparent 60%),
    radial-gradient(700px 500px at -10% 110%, var(--fx-glow-green), transparent 60%),
    radial-gradient(circle at 1px 1px, var(--fx-dot) 1px, transparent 0) 0 0 / 22px 22px,
    var(--fx-bg);
}
html[data-theme] .shell, html[data-theme] .main { background: transparent; color: var(--fx-text); }
html[data-theme] button, html[data-theme] input, html[data-theme] select, html[data-theme] textarea { font-family: var(--f-body); }
html[data-theme] :focus-visible { outline: 2px solid var(--fx-cyan); outline-offset: 2px; }

/* dados técnicos em fonte mono */
html[data-theme] .col-mac, html[data-theme] .mac-strong, html[data-theme] .signal-value, html[data-theme] .col-onu,
html[data-theme] .col-num, html[data-theme] code, html[data-theme] .mono, html[data-theme] .footer-version,
html[data-theme] .olt-health-row-meta { font-family: var(--f-mono); letter-spacing: -.01em; }

/* ---------------- títulos ---------------- */
html[data-theme] .page-heading h1, html[data-theme] .content h1 {
  font: 600 26px/1.1 var(--f-display); letter-spacing: .05em; text-transform: uppercase; color: var(--fx-text);
}
html[data-theme] .page-heading p, html[data-theme] .content p { color: var(--fx-muted); }
html[data-theme] .panel-title, html[data-theme] .olt-health-heading h2, html[data-theme] dialog h2 {
  font-family: var(--f-display); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--fx-text);
}
html[data-theme] .panel-title { font-size: 14px; }
html[data-theme] dialog h2 { font-size: 17px; }

/* ---------------- menu lateral (desktop) ---------------- */
@media (min-width: 1101px) {
  html[data-theme] .sidebar {
    inset: 0 auto 0 0; width: 248px; height: 100vh; padding: 22px 14px; display: flex; flex-direction: column; gap: 6px;
    background: color-mix(in srgb, var(--fx-bg-2) 70%, transparent); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border: 0; border-right: 1px solid var(--fx-line); box-shadow: none;
  }
  html[data-theme] .sidebar > .brand { height: auto; padding: 4px 10px 18px; border: 0; color: var(--fx-text); }
  html[data-theme] .nav-label { display: block; }
  html[data-theme] .workspace, html[data-theme] .health { display: flex; }
  html[data-theme] .health { display: block; }
  html[data-theme] .nav { display: flex; flex-direction: column; gap: 2px; height: auto; padding: 0; overflow-y: auto; }
  html[data-theme] .nav button {
    position: relative; width: 100%; height: 42px; margin: 0; padding: 0 12px; border-radius: 12px; justify-content: flex-start;
    font-size: 14px; font-weight: 500; white-space: nowrap; color: var(--fx-muted); background: transparent; box-shadow: none;
  }
  html[data-theme] .nav button:hover { color: var(--fx-text); background: var(--fx-panel-2); }
  html[data-theme] .nav button.active {
    color: var(--fx-text); background: linear-gradient(90deg, color-mix(in srgb, var(--fx-blue) 22%, transparent), transparent); box-shadow: none;
  }
  html[data-theme] .nav button.active::before {
    content: ""; position: absolute; left: -14px; top: 9px; bottom: 9px; width: 3px; border-radius: 0 3px 3px 0;
    background: linear-gradient(var(--fx-blue), var(--fx-green)); box-shadow: 0 0 14px var(--fx-blue);
  }
  html[data-theme] .sidebar-bottom { display: block; margin: auto 0 0; padding: 14px 0 0; border: 0; border-top: 1px solid var(--fx-line); }
  html[data-theme] .profile { height: auto; padding: 0 4px; border: 0; color: var(--fx-text); }
  html[data-theme] .main { margin-left: 248px; width: calc(100% - 248px); padding-top: 0; }
  html[data-theme] .topbar { display: none; }
}

/* menu em gaveta (tablet/celular) */
@media (max-width: 1100px) {
  html[data-theme] .sidebar { background: var(--fx-bg-2); border-right: 1px solid var(--fx-line); }
  html[data-theme] .sidebar > .brand { border-color: var(--fx-line); color: var(--fx-text); }
  html[data-theme] .nav button { border-radius: 12px; color: var(--fx-muted); }
  html[data-theme] .nav button:hover { background: var(--fx-panel-2); color: var(--fx-text); }
  html[data-theme] .nav button.active { color: var(--fx-text); background: linear-gradient(90deg, color-mix(in srgb, var(--fx-blue) 24%, transparent), transparent); }
  html[data-theme] .sidebar-bottom { border-color: var(--fx-line); }
  html[data-theme] .topbar {
    background: color-mix(in srgb, var(--fx-bg) 72%, transparent); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
    border-color: var(--fx-line); color: var(--fx-text); box-shadow: none;
  }
  html[data-theme] .topbar button { color: var(--fx-muted); }
}

/* marca, bloco da empresa, saúde e perfil */
html[data-theme] .brand-name, html[data-theme] .sidebar .brand-name {
  font: 700 17px/1 var(--f-display); letter-spacing: .08em; text-transform: uppercase; color: var(--fx-text);
}
html[data-theme] .brand-mark, html[data-theme] .sidebar .brand-mark {
  width: 34px; height: 34px; border-radius: 10px; color: #fff;
  background: linear-gradient(135deg, var(--fx-blue), var(--fx-green)); box-shadow: 0 8px 20px -8px var(--fx-glow-blue);
}
html[data-theme] .nav-label { font: 500 10.5px var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fx-faint); margin: 14px 12px 6px; }
html[data-theme] .workspace, html[data-theme] .health {
  border: 1px solid var(--fx-line); border-radius: 14px; background: var(--fx-panel-2); color: var(--fx-text);
}
html[data-theme] .workspace small, html[data-theme] .health small, html[data-theme] .profile small { color: var(--fx-muted); }
html[data-theme] .avatar, html[data-theme] .profile .avatar, html[data-theme] .top-actions .avatar, html[data-theme] .workspace .avatar {
  border-radius: 12px; border: 0; color: #fff; font-family: var(--f-display); font-weight: 700;
  background: linear-gradient(135deg, var(--fx-blue), var(--fx-green));
}
html[data-theme] .profile button, html[data-theme] .theme-toggle { color: var(--fx-muted); }
html[data-theme] .count { background: color-mix(in srgb, var(--fx-green) 18%, transparent); color: var(--fx-green); font: 600 11px var(--f-mono); border-radius: 99px; padding: 2px 7px; }

/* ---------------- painéis de vidro com borda em degradê ---------------- */
html[data-theme] .panel, html[data-theme] .olt-health-list, html[data-theme] .olt-health-card, html[data-theme] .olt-group,
html[data-theme] .data-sheet, html[data-theme] .form-section, html[data-theme] .traffic-cards > *, html[data-theme] .stat {
  border: 1px solid transparent; border-radius: 18px;
  background:
    linear-gradient(var(--fx-panel), var(--fx-panel)) padding-box,
    linear-gradient(140deg, var(--fx-line-strong), var(--fx-line) 40%, var(--fx-line) 60%, color-mix(in srgb, var(--fx-green) 30%, transparent)) border-box;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: var(--fx-shadow); color: var(--fx-text);
}
html[data-theme] .panel-head, html[data-theme] .olt-health-list-head, html[data-theme] .olt-group-head {
  background: transparent; border-color: var(--fx-line);
}
html[data-theme] .panel-head p, html[data-theme] .olt-health-heading p { color: var(--fx-muted); }
html[data-theme] .footer, html[data-theme] .footer-version { color: var(--fx-faint); }

/* ---------------- KPIs: vidro com cor de destaque ---------------- */
html[data-theme] .kpi {
  position: relative; overflow: hidden; border: 1px solid transparent; border-radius: 18px; color: var(--fx-text);
  background:
    linear-gradient(var(--fx-panel), var(--fx-panel)) padding-box,
    linear-gradient(140deg, color-mix(in srgb, var(--k, var(--fx-blue)) 55%, transparent), var(--fx-line) 45%, var(--fx-line)) border-box;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: var(--fx-shadow);
}
html[data-theme] .kpi::after { /* linha de luz no topo */
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px;
  background: linear-gradient(90deg, var(--k, var(--fx-blue)), transparent 70%);
}
html[data-theme] .kpi.kpi-blue { --k: var(--fx-blue); }
html[data-theme] .kpi.kpi-green { --k: var(--fx-green); }
html[data-theme] .kpi.kpi-gray { --k: var(--fx-muted); }
html[data-theme] .kpi.kpi-amber { --k: var(--fx-warn); }
html[data-theme] .kpi .kpi-icon { color: var(--k, var(--fx-blue)); }
html[data-theme] .kpi .kpi-icon svg { stroke: currentColor; opacity: 1; }
html[data-theme] .kpi .kpi-value {
  font-family: var(--f-display); font-weight: 600; letter-spacing: -.01em; color: var(--fx-text);
}
html[data-theme] .kpi .kpi-label { font-family: var(--f-display); letter-spacing: .05em; text-transform: uppercase; color: var(--fx-text); }
html[data-theme] .kpi .kpi-foot { border-color: var(--fx-line); color: var(--fx-muted); background: transparent; }
html[data-theme] .kpi .kpi-foot * { color: inherit; }
html[data-theme] .kpi-time { color: var(--fx-faint); font-family: var(--f-mono); }

/* ---------------- botões (canto chanfrado) ---------------- */
html[data-theme] button.primary, html[data-theme] .auth-submit {
  --cut: 12px; border: 0; color: #fff; border-radius: 0;
  font: 600 13.5px/1 var(--f-display); letter-spacing: .04em; text-transform: uppercase;
  background: linear-gradient(120deg, var(--fx-blue), var(--fx-cyan) 55%, var(--fx-green)); background-size: 180% 100%;
  clip-path: polygon(var(--cut) 0, 100% 0, 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, 0 100%, 0 var(--cut));
  transition: background-position .4s ease, filter .2s, transform .1s; box-shadow: none;
}
html[data-theme] button.primary:hover, html[data-theme] .auth-submit:hover { background-position: 100% 0; filter: brightness(1.08); }
html[data-theme] button.primary:disabled { opacity: .45; filter: grayscale(1); }
html[data-theme] .main button:not(.primary):not(.segment):not(.active):not(.theme-toggle):not(.mobile-menu):not([class*="ftth"]),
html[data-theme] dialog button:not(.primary) {
  border-radius: 12px; border: 0; color: var(--fx-text); background: var(--fx-panel-2); box-shadow: inset 0 0 0 1px var(--fx-line-strong);
}
html[data-theme] .main button:not(.primary):not(.segment):not(.active):not(.theme-toggle):not(.mobile-menu):not([class*="ftth"]):hover,
html[data-theme] dialog button:not(.primary):hover { box-shadow: inset 0 0 0 1px var(--fx-blue); background: var(--fx-panel-2); }
html[data-theme] button.danger, html[data-theme] .danger-zone button { color: var(--fx-bad); }
html[data-theme] button.danger.primary { background: linear-gradient(120deg, #ff5c7a, #ff8a5c); color: #fff; }

/* ---------------- campos ---------------- */
html[data-theme] input:not([type=checkbox]):not([type=radio]):not([type=range]), html[data-theme] select, html[data-theme] textarea,
html[data-theme] dialog input, html[data-theme] dialog select, html[data-theme] .search input {
  border-radius: 12px; border: 1px solid var(--fx-line-strong);
  background: color-mix(in srgb, var(--fx-panel-solid) 60%, transparent); color: var(--fx-text);
}
html[data-theme] input::placeholder, html[data-theme] textarea::placeholder { color: var(--fx-faint); }
html[data-theme] input:focus, html[data-theme] select:focus, html[data-theme] textarea:focus {
  outline: none; border-color: var(--fx-blue); box-shadow: 0 0 0 4px color-mix(in srgb, var(--fx-blue) 18%, transparent);
}
html[data-theme] label, html[data-theme] dialog label, html[data-theme] .filter-label {
  font-family: var(--f-mono); font-size: 11px; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--fx-muted);
}
html[data-theme] .search { border-radius: 12px; border-color: var(--fx-line-strong); background: var(--fx-panel-2); color: var(--fx-muted); }

/* ---------------- segmentos (filtros de estado/sinal) ---------------- */
html[data-theme] .segments { background: var(--fx-panel-2); border-radius: 12px; box-shadow: inset 0 0 0 1px var(--fx-line); padding: 3px; border: 0; }
html[data-theme] .segment { border-radius: 9px; border: 0; color: var(--fx-muted); background: transparent; }
html[data-theme] .segment.selected { background: var(--fx-panel-solid); color: var(--fx-text); box-shadow: 0 2px 8px -2px rgba(0, 0, 0, .3), inset 0 0 0 1px var(--seg-on-line); }

/* ---------------- tabelas ---------------- */
html[data-theme] .data-table, html[data-theme] table { color: var(--fx-text); }
html[data-theme] .data-table th, html[data-theme] table th, html[data-theme] .olt-health-list-head {
  font: 500 10.5px var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--fx-faint);
  background: transparent; border-color: var(--fx-line);
}
html[data-theme] .data-table td, html[data-theme] table td { border-color: var(--fx-line); }
html[data-theme] .data-table tbody tr:hover, html[data-theme] table tbody tr:hover, html[data-theme] .olt-health-row:hover {
  background: color-mix(in srgb, var(--fx-blue) 7%, transparent);
}
html[data-theme] .olt-health-row { border-color: var(--fx-line); color: var(--fx-text); background: transparent; }
html[data-theme] .olt-health-row-name { font-family: var(--f-display); letter-spacing: .03em; font-weight: 600; }
html[data-theme] .pagination button.selected { background: linear-gradient(135deg, var(--fx-blue), var(--fx-green)); color: #fff; box-shadow: none; }

/* ---------------- pílulas de estado ---------------- */
html[data-theme] .status, html[data-theme] .olt-health-pill, html[data-theme] .type-tag, html[data-theme] .vendor {
  display: inline-flex; align-items: center; gap: 6px; border-radius: 99px; border: 0;
  font: 600 11px var(--f-mono); letter-spacing: .06em; text-transform: uppercase;
  color: var(--fx-green); background: color-mix(in srgb, var(--fx-green) 14%, transparent);
}
html[data-theme] .status.alert, html[data-theme] .olt-health-pill.stale, html[data-theme] .olt-health-pill.warn, html[data-theme] .olt-health-pill.pending { color: var(--fx-warn); background: color-mix(in srgb, var(--fx-warn) 14%, transparent); }
html[data-theme] .status.offline, html[data-theme] .olt-health-pill.down, html[data-theme] .olt-health-pill.offline, html[data-theme] .olt-health-pill.error { color: var(--fx-bad); background: color-mix(in srgb, var(--fx-bad) 14%, transparent); }
html[data-theme] .type-tag, html[data-theme] .vendor { color: var(--fx-blue); background: color-mix(in srgb, var(--fx-blue) 14%, transparent); }

/* ---------------- janelas, avisos ---------------- */
html[data-theme] dialog {
  border: 1px solid transparent; border-radius: 18px; color: var(--fx-text);
  background:
    linear-gradient(var(--fx-panel-solid), var(--fx-panel-solid)) padding-box,
    linear-gradient(140deg, var(--fx-line-strong), var(--fx-line) 50%, color-mix(in srgb, var(--fx-green) 30%, transparent)) border-box;
  box-shadow: var(--fx-shadow);
}
html[data-theme] dialog::backdrop { background: rgba(2, 8, 18, .6); backdrop-filter: blur(6px); }
html[data-theme] #toast {
  border-radius: 14px; color: var(--fx-text); background: var(--fx-panel-solid);
  box-shadow: var(--fx-shadow), inset 0 0 0 1px var(--fx-line-strong); font-family: var(--f-body);
}

/* ---------------- tela de entrada ---------------- */
html[data-theme] .auth { background: transparent; color: var(--fx-text); }
html[data-theme] .auth-side {
  position: relative; overflow: hidden; background: transparent; border-right: 1px solid var(--fx-line); color: var(--fx-text);
}
html[data-theme] .auth-side > *:not(.fibras) { position: relative; z-index: 1; }
html[data-theme] .auth-side .fibras { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }
html[data-theme] .auth-side-body h1 {
  font: 700 clamp(34px, 4.4vw, 60px)/1.02 var(--f-display); letter-spacing: -.01em; text-transform: uppercase; margin: 0;
  background: linear-gradient(90deg, var(--fx-text) 20%, var(--fx-blue) 60%, var(--fx-green));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
html[data-theme] .auth-side-body p { color: var(--fx-muted); }
html[data-theme] .auth-side svg { color: var(--fx-cyan); }
html[data-theme] .auth-main { background: transparent; }
html[data-theme] .auth-card h2 { font: 600 24px var(--f-display); letter-spacing: .04em; text-transform: uppercase; color: var(--fx-text); }
html[data-theme] .auth .auth-field, html[data-theme] .auth-field {
  border-radius: 12px; border: 1px solid var(--fx-line-strong); background: color-mix(in srgb, var(--fx-panel-solid) 60%, transparent); color: var(--fx-muted);
}
html[data-theme] .auth .auth-field input, html[data-theme] .auth-field input { border: 0; background: transparent; box-shadow: none; color: var(--fx-text); }
html[data-theme] .auth .auth-field:focus-within, html[data-theme] .auth-field:focus-within {
  border-color: var(--fx-blue); box-shadow: 0 0 0 4px color-mix(in srgb, var(--fx-blue) 18%, transparent);
}
html[data-theme] .auth-submit { height: 48px; width: 100%; }
html[data-theme] .auth .auth-error, html[data-theme] .auth-error { color: var(--fx-bad); background: transparent; }
html[data-theme] .auth-foot { color: var(--fx-faint); font-family: var(--f-mono); }

@media (prefers-reduced-motion: reduce) {
  html[data-theme] *, html[data-theme] *::before, html[data-theme] *::after { animation: none !important; transition: none !important; }
}

/* busca: a borda fica no contêiner; o campo dentro dele fica limpo */
html[data-theme] .search input, html[data-theme] .search input:focus { border: 0; background: transparent; box-shadow: none; }
html[data-theme] .search:focus-within { border-color: var(--fx-blue); box-shadow: 0 0 0 4px color-mix(in srgb, var(--fx-blue) 18%, transparent); }

/* Mapa FTTH: com o menu lateral o mapa fica mais estreito; a busca de lugar vai para a esquerda
   (ao lado do zoom) e encolhe, para nunca ficar debaixo do seletor Ruas/Satélite/Híbrido. */
@media (min-width: 1101px) {
  html[data-theme] .ftth-place { left: 52px; transform: none; width: min(420px, calc(100% - 290px)); }
}

/* Provisionamento no celular: cada ONU pendente vira um cartão (a tabela larga escondia o botão
   Provisionar fora da tela, cortado pela caixa da OLT). */
@media (max-width: 700px) {
  .pending-table thead { display: none; }
  .pending-table, .pending-table tbody, .pending-table tr, .pending-table td { display: block; width: 100%; }
  .pending-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 14px 16px; border-top: 1px solid var(--fx-line, var(--ops-line)); }
  .pending-table td { padding: 0; border: 0; text-align: left; }
  .pending-table td[data-label="MAC"] { grid-column: 1 / -1; font-size: 15px; overflow-wrap: anywhere; }
  .pending-table td[data-label="PON"]::before, .pending-table td[data-label="Detectada"]::before {
    content: attr(data-label) " "; color: var(--fx-muted, var(--ops-muted)); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; margin-right: 4px;
  }
  .pending-table td[data-label="Detectada"] { grid-column: 1 / -1; font-size: 12px; }
  .pending-table td[data-label="Detectada"] small { display: block; }
  .pending-table td.col-action { grid-column: 1 / -1; margin-top: 6px; }
  .pending-table td.col-action:empty { display: none; }
  .pending-table td.col-action button { width: 100%; justify-content: center; }
}
