/**
 * Impeccable design overlay for GenieACS UI
 * Product register — network ops dashboard
 */

@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,400,0,0");

:root {
  --ia-bg: oklch(0.98 0.005 240);
  --ia-surface: oklch(1 0 0);
  --ia-ink: oklch(0.25 0.02 240);
  --ia-muted: oklch(0.50 0.02 240);
  --ia-accent: oklch(0.45 0.08 220);
  --ia-accent-hover: oklch(0.38 0.09 220);
  --ia-border: oklch(0.90 0.01 240);
  --ia-radius: 10px;
  --ia-radius-sm: 6px;
  --ia-shadow: 0 1px 3px oklch(0 0 0 / 0.06), 0 10px 24px oklch(0 0 0 / 0.04);
  --ia-shadow-hover: 0 6px 18px oklch(0 0 0 / 0.08);
  --ia-transition: 180ms ease-out;
  --ia-touch: 44px;
}

/* ── Base & typography (typeset) ─────────────────────────── */
body {
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  color: var(--ia-ink);
  background: var(--ia-bg);
  -webkit-font-smoothing: antialiased;
}

h3 {
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ia-muted);
  margin: 1.25rem 0 0.5rem;
  padding-bottom: 0.375rem;
  border-bottom: 1px solid var(--ia-border);
}

/* ── Drawer / navigation (layout + polish) ───────────────── */
.drawer-wrapper {
  background: var(--ia-surface);
  border-bottom: 1px solid var(--ia-border);
  box-shadow: var(--ia-shadow);
}

.drawer {
  background: var(--ia-surface) !important;
  border-color: var(--ia-border) !important;
  border-radius: 0 0 var(--ia-radius) var(--ia-radius);
}

.logo {
  opacity: 0.9;
}

.user-menu {
  font-size: 0.8125rem;
}

/* ── Tables & device list (layout + distill) ─────────────── */
.table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
}

.table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: oklch(0.96 0.008 240);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--ia-muted);
  padding: 0.5rem 0.625rem;
  border-bottom: 2px solid var(--ia-border);
  white-space: nowrap;
}

.table tbody td {
  padding: 0.4375rem 0.625rem;
  border-bottom: 1px solid var(--ia-border);
  vertical-align: middle;
}

.table tbody tr:hover td {
  background: oklch(0.97 0.01 220);
}

.table tbody tr.highlight td {
  background: oklch(0.95 0.03 220);
}

/* ── Parameter lists (device summary groups) ─────────────── */
.parameter-list {
  width: 100%;
  margin-bottom: 0.5rem;
}

.parameter-list td:first-child {
  color: var(--ia-muted);
  font-size: 0.8125rem;
  padding: 0.3125rem 0.75rem 0.3125rem 0;
  white-space: nowrap;
  width: 1%;
  vertical-align: top;
}

.parameter-list td:last-child {
  padding: 0.3125rem 0;
  font-size: 0.8125rem;
  word-break: break-word;
}

.container-full-width {
  margin-bottom: 0.25rem;
}

.container-full-width + .container-full-width {
  margin-top: 0.5rem;
}

/* ── Filters (distill + layout) ──────────────────────────── */
.filter {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  margin: 0 0.75rem 0.5rem 0;
  font-size: 0.8125rem;
}

.filter input,
.filter select {
  border: 1px solid var(--ia-border);
  border-radius: 4px;
  padding: 0.25rem 0.5rem;
  font-size: 0.8125rem;
  transition: border-color var(--ia-transition), box-shadow var(--ia-transition);
}

.filter input:focus,
.filter select:focus {
  outline: none;
  border-color: var(--ia-accent);
  box-shadow: 0 0 0 2px oklch(0.45 0.08 220 / 0.2);
}

/* ── Overview charts (layout + colorize) ─────────────────── */
.page-overview {
  padding: 0.5rem 0;
}

.overview-chart-group {
  gap: 1.5rem;
  flex-wrap: wrap;
  padding: 0.75rem 0;
}

.overview-chart-group > div {
  min-width: 180px;
}

.pie-chart {
  filter: drop-shadow(0 1px 2px oklch(0 0 0 / 0.05));
}

.legend {
  font-size: 0.75rem;
  line-height: 1.5;
}

.legend-line {
  padding: 0.125rem 0;
}

/* ── Status indicators (polish) ────────────────────────────── */
.status.active,
.inform.active {
  color: oklch(0.45 0.15 145);
}

.status.stale,
.inform.stale {
  color: oklch(0.55 0.12 85);
}

.status.fault,
.inform.fault {
  color: oklch(0.50 0.18 25);
}

.overview-dot {
  margin-left: 0.25rem;
}

/* ── Actions & buttons (polish + a11y) ─────────────────────── */
.actions-bar {
  margin: 0.75rem 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

button,
.primary {
  transition: background-color var(--ia-transition), border-color var(--ia-transition);
}

button:focus-visible,
.primary:focus-visible,
a:focus-visible {
  outline: 2px solid var(--ia-accent);
  outline-offset: 2px;
}

.primary {
  background-color: var(--ia-accent) !important;
  border-color: var(--ia-accent) !important;
  color: white !important;
  border-radius: 4px;
}

.primary:hover {
  background-color: var(--ia-accent-hover) !important;
  border-color: var(--ia-accent-hover) !important;
}

/* ── Tags ────────────────────────────────────────────────── */
.tag,
.tags .tag {
  border-radius: 4px;
  font-size: 0.75rem;
  padding: 0.125rem 0.375rem;
}

/* ── Notifications (harden + polish) ─────────────────────── */
.notifications-wrapper {
  z-index: 100;
}

.notification {
  background: var(--ia-surface) !important;
  border-color: var(--ia-border) !important;
  border-radius: var(--ia-radius) !important;
  box-shadow: 0 4px 12px oklch(0 0 0 / 0.1) !important;
  font-size: 0.8125rem;
}

.notification.error {
  background: oklch(0.97 0.02 25) !important;
}

.notification.success {
  background: oklch(0.97 0.02 145) !important;
}

.notification.warning {
  background: oklch(0.97 0.03 85) !important;
}

/* ── Overlays & dialogs ──────────────────────────────────── */
.overlay {
  backdrop-filter: blur(2px);
}

.wizard-dialog {
  border-radius: var(--ia-radius);
  box-shadow: 0 8px 32px oklch(0 0 0 / 0.12);
}

/* ── Loading states (animate) ──────────────────────────────── */
.loading-overlay {
  background: oklch(1 0 0 / 0.7);
}

.progress-bar {
  will-change: transform;
}

/* ── Links ───────────────────────────────────────────────── */
a {
  color: var(--ia-accent);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* ── Reduced motion (harden) ───────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ── Responsive (adapt) ────────────────────────────────────── */
@media (max-width: 768px) {
  .overview-chart-group {
    flex-direction: column;
    align-items: stretch;
  }

  .table {
    font-size: 0.75rem;
  }

  .filter {
    display: flex;
    width: 100%;
    margin-right: 0;
  }
}

/* ── Modern Material-style upgrade ────────────────────────── */
.drawer-wrapper {
  position: sticky;
  top: 0;
  z-index: 30;
  backdrop-filter: saturate(1.2) blur(10px);
  background: oklch(1 0 0 / 0.86);
}

.drawer a,
.user-menu a,
.actions a,
.actions-bar a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-height: 2.25rem;
  border-radius: 999px;
  padding: 0.25rem 0.7rem;
  color: var(--ia-ink);
  transition: background-color var(--ia-transition), color var(--ia-transition), box-shadow var(--ia-transition);
}

.drawer a:hover,
.user-menu a:hover,
.actions a:hover,
.actions-bar a:hover {
  background: oklch(0.94 0.025 220);
  color: var(--ia-accent);
  text-decoration: none;
}

.drawer a::before,
.user-menu a::before,
.actions a::before,
.actions-bar a::before,
h3::before {
  direction: ltr;
  display: inline-block;
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1.15rem;
  font-style: normal;
  font-weight: 400;
  letter-spacing: normal;
  line-height: 1;
  text-rendering: optimizeLegibility;
  text-transform: none;
  vertical-align: -0.18em;
  white-space: nowrap;
  word-wrap: normal;
}

.drawer a[href*="overview"]::before,
.drawer a[href="#!/"]::before {
  content: "dashboard";
}

.drawer a[href*="devices"]::before {
  content: "devices";
}

.drawer a[href*="fault"]::before {
  content: "warning";
}

.drawer a[href*="preset"]::before {
  content: "tune";
}

.drawer a[href*="provision"]::before {
  content: "rule_settings";
}

.drawer a[href*="file"]::before {
  content: "folder";
}

.drawer a[href*="admin"]::before,
.drawer a[href*="config"]::before {
  content: "admin_panel_settings";
}

.user-menu a::before {
  content: "account_circle";
}

h3 {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  text-transform: none;
  letter-spacing: 0.01em;
  color: var(--ia-ink);
}

.page-overview h3::before,
.overview-chart-group h3::before {
  content: "monitoring";
  color: var(--ia-accent);
}

.container-full-width:empty {
  display: none;
}

.page-overview,
.overview-chart-group {
  align-items: stretch;
}

.overview-chart-group > div {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  padding: 0.85rem;
  transition: box-shadow var(--ia-transition), transform var(--ia-transition);
}

.overview-chart-group > div:hover {
  box-shadow: var(--ia-shadow-hover);
  transform: translateY(-1px);
}

.table {
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  background: var(--ia-surface);
  box-shadow: var(--ia-shadow);
}

table.table,
table.table.highlight {
  width: max-content;
  max-width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

.table tbody tr {
  transition: background-color var(--ia-transition);
}

input,
select,
textarea,
button {
  min-height: 2.25rem;
  border-radius: var(--ia-radius-sm);
}

button,
.primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0.35rem 0.8rem;
  box-shadow: none;
}

button:hover,
.primary:hover {
  box-shadow: 0 2px 8px oklch(0 0 0 / 0.10);
}

.filter {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: 999px;
  padding: 0.25rem 0.4rem 0.25rem 0.7rem;
  box-shadow: 0 1px 2px oklch(0 0 0 / 0.04);
}

.filter::before {
  content: "filter_alt";
  color: var(--ia-muted);
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1rem;
}

.filter input,
.filter select {
  border-color: transparent;
  background: oklch(0.97 0.006 240);
}

.tag,
.tags .tag {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  min-height: 1.45rem;
  background: oklch(0.94 0.025 220);
  color: var(--ia-accent);
}

.tag::before,
.tags .tag::before {
  content: "sell";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 0.9rem;
}

.parameter-value,
.long-text,
code,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
}

@media (max-width: 1024px) {
  .overview-chart-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  }
}

@media (max-width: 768px) {
  body {
    font-size: 14px;
  }

  .drawer-wrapper {
    overflow-x: auto;
  }

  .drawer {
    min-width: max-content;
  }

  .drawer a,
  .user-menu a,
  button,
  .primary {
    min-height: var(--ia-touch);
  }

  .container-full-width {
    padding: 0.7rem;
  }

  .page-overview .parameter-list td:first-child,
  .page-overview .parameter-list td:last-child {
    display: block;
    width: auto;
    padding-right: 0;
  }

  .page-overview .parameter-list td:first-child {
    padding-bottom: 0.05rem;
    font-size: 0.75rem;
  }

  .page-overview .parameter-list td:last-child {
    padding-top: 0;
    padding-bottom: 0.65rem;
  }

  .actions-bar {
    position: sticky;
    bottom: 0;
    z-index: 20;
    margin: 0.75rem -0.5rem 0;
    padding: 0.5rem;
    background: oklch(1 0 0 / 0.92);
    backdrop-filter: blur(8px);
    border-top: 1px solid var(--ia-border);
  }

  .actions-bar > * {
    flex: 1 1 44%;
  }
}

@media (max-width: 520px) {
  .overview-chart-group {
    grid-template-columns: 1fr;
  }

  .filter {
    border-radius: var(--ia-radius);
  }

  .table table,
  table.table {
    width: max-content;
    max-width: none;
  }
}

/* ── Device list: Show action as button ─────────────────── */
#content.page-devices:has(table.table.highlight) {
  overflow-x: auto;
}

.table-row-links {
  position: sticky;
  right: 0;
  z-index: 2;
  width: 4.75rem;
  min-width: 4.75rem;
  max-width: 4.75rem;
  padding-left: 0.45rem;
  padding-right: 0.45rem;
  text-align: center;
  vertical-align: middle;
  background: var(--ia-surface);
  box-shadow: -6px 0 10px -8px oklch(0 0 0 / 0.18);
  white-space: nowrap;
}

table.table.highlight thead th.show-col {
  position: sticky;
  right: 0;
  z-index: 4;
  width: 4.75rem;
  min-width: 4.75rem;
  max-width: 4.75rem;
  text-align: center;
  background: oklch(0.96 0.008 240);
  box-shadow: -6px 0 10px -8px oklch(0 0 0 / 0.12);
}

.table-row-links a,
.table-row-links button,
.show-device-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.2rem;
  min-height: 1.9rem;
  min-width: 3.6rem;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
}

.table-row-links button,
.show-device-btn {
  background: var(--ia-accent) !important;
  border: 1px solid var(--ia-accent) !important;
  color: #fff !important;
  box-shadow: 0 1px 2px oklch(0 0 0 / 0.08);
}

.table-row-links button:hover,
.show-device-btn:hover {
  background: var(--ia-accent-hover) !important;
  border-color: var(--ia-accent-hover) !important;
  text-decoration: none;
}

.table-row-links button::before,
.show-device-btn::before {
  content: "open_in_new";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1rem;
  margin-right: 0;
}

.table tbody tr:hover .table-row-links button,
.table tbody tr:hover .table-row-links a {
  opacity: 1;
}

/* ── Device list table symmetry ───────────────────────────── */
table.table.highlight thead th,
table.table.highlight tbody td {
  box-sizing: border-box;
  padding: 0.55rem 0.6rem;
  vertical-align: middle;
  line-height: 1.35;
  font-size: 0.8125rem;
}

table.table.highlight thead th {
  text-align: left;
}

table.table.highlight tbody td {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Actual device list columns:
   1 checkbox, 2 tags, 3 status, 4 PPPoE, 5 SN, 6 PON,
   7 RX, 8 SSID, 9 Last Inform, 10 Refresh, 11 Show */
table.table.highlight th:nth-child(1),
table.table.highlight td:nth-child(1) {
  width: 3rem;
  text-align: center;
}

table.table.highlight th:nth-child(2),
table.table.highlight td:nth-child(2) {
  width: 7.5rem;
  white-space: normal;
}

table.table.highlight th:nth-child(3),
table.table.highlight td:nth-child(3) {
  width: 7rem;
  text-align: center;
}

table.table.highlight th:nth-child(4),
table.table.highlight td:nth-child(4) {
  width: 12rem;
}

table.table.highlight th:nth-child(5),
table.table.highlight td:nth-child(5) {
  width: 11rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: 0.76rem;
}

table.table.highlight th:nth-child(6),
table.table.highlight td:nth-child(6) {
  width: 6rem;
  text-align: center;
}

table.table.highlight th:nth-child(7),
table.table.highlight td:nth-child(7) {
  width: 6.5rem;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

table.table.highlight th:nth-child(8),
table.table.highlight td:nth-child(8) {
  width: 13rem;
}

table.table.highlight th:nth-child(9),
table.table.highlight td:nth-child(9) {
  width: 11.5rem;
  font-variant-numeric: tabular-nums;
}

table.table.highlight th:nth-child(10),
table.table.highlight td:nth-child(10) {
  width: 4.25rem;
  text-align: center;
}

table.table.highlight th.show-col,
table.table.highlight td.table-row-links {
  width: 4.75rem;
  text-align: center;
}

table.table.highlight tbody tr:hover td.table-row-links,
table.table.highlight tbody tr:nth-child(even) td.table-row-links {
  background: var(--ia-surface);
}

table.table.highlight tbody tr:hover td.table-row-links {
  background: oklch(0.97 0.012 220);
}

table.table.highlight .inform,
table.table.highlight span.inform,
table.table.highlight .container {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  white-space: nowrap;
}

table.table.highlight .overview-dot {
  display: inline-flex;
  align-items: center;
  margin: 0;
}

table.table.highlight .overview-dot svg {
  margin: 0;
}

table.table.highlight a {
  display: inline;
  text-decoration: none;
}

table.table.highlight a:hover {
  text-decoration: underline;
}

table.table.highlight tbody td button.primary:not(.show-device-btn) {
  min-width: 2.1rem;
  min-height: 2.1rem;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0;
  border-radius: 999px;
  font-size: 0;
  line-height: 0;
}

table.table.highlight tbody td button.primary:not(.show-device-btn)::before {
  content: "refresh";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1rem;
  line-height: 1;
  margin: 0;
}

table.table.highlight tfoot td {
  padding: 0.65rem 0.7rem;
  background: oklch(0.98 0.004 240);
  border-top: 1px solid var(--ia-border);
}

table.table.highlight tbody tr:nth-child(even) td {
  background: oklch(0.995 0.002 240);
}

table.table.highlight tbody tr:hover td {
  background: oklch(0.97 0.012 220) !important;
}

/* ── Device detail page ───────────────────────────────────── */
#content.page-devices:not(:has(table.table.highlight)) {
  max-width: 1200px;
  padding-bottom: 5rem;
}

#content.page-devices:not(:has(table.table.highlight)) > h1 {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0 0 1rem;
  padding: 0.8rem 1rem;
  font-size: 1.05rem;
  font-weight: 700;
  text-align: left;
  letter-spacing: 0.01em;
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
}

#content.page-devices:not(:has(table.table.highlight)) > h1::before {
  content: "router";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1.35rem;
  color: var(--ia-accent);
  font-weight: 400;
}

#content.page-devices:not(:has(table.table.highlight)) h3 {
  margin: 0 0 0.55rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px solid var(--ia-border);
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ia-ink);
}

#content.page-devices:not(:has(table.table.highlight)) h3:empty {
  display: none;
}

#content.page-devices:not(:has(table.table.highlight)) .container-full-width {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  padding: 0.75rem 0.9rem;
  margin-bottom: 0;
}

.device-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin-bottom: 1rem;
}

.device-summary-grid > .container-full-width {
  height: 100%;
  margin: 0;
}

.device-tags-bar {
  grid-column: 1 / -1;
  order: -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  padding: 0.55rem 0.75rem;
  background: oklch(0.97 0.01 220);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
}

.device-tags-bar:empty {
  display: none;
}

#content.page-devices:not(:has(table.table.highlight)) .parameter-list {
  margin-bottom: 0;
}

#content.page-devices:not(:has(table.table.highlight)) .parameter-list td:first-child {
  width: 42%;
  min-width: 8.5rem;
  padding: 0.35rem 0.75rem 0.35rem 0;
  vertical-align: middle;
  white-space: normal;
}

#content.page-devices:not(:has(table.table.highlight)) .parameter-list td:last-child {
  width: 58%;
  padding: 0.35rem 0;
  vertical-align: middle;
}

#content.page-devices:not(:has(table.table.highlight)) .parameter-list tr + tr td {
  border-top: 1px solid oklch(0.94 0.006 240);
}

#content.page-devices:not(:has(table.table.highlight)) > table.parameter-list,
#content.page-devices:not(:has(table.table.highlight)) > div:not(.device-summary-grid):not(.device-detail-section) > table.parameter-list,
#content.page-devices:not(:has(table.table.highlight)) .device-detail-section {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  padding: 0.75rem 0.9rem;
  margin: 0 0 0.75rem;
}

#content.page-devices:not(:has(table.table.highlight)) > table.parameter-list {
  display: block;
  width: 100%;
  box-sizing: border-box;
}

#content.page-devices:not(:has(table.table.highlight)) table.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.8125rem;
}

#content.page-devices:not(:has(table.table.highlight)) table.table thead th {
  text-align: left;
  padding: 0.5rem 0.65rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ia-muted);
  background: oklch(0.97 0.006 240);
  border-bottom: 1px solid var(--ia-border);
}

#content.page-devices:not(:has(table.table.highlight)) table.table tbody td {
  padding: 0.45rem 0.65rem;
  border-bottom: 1px solid oklch(0.95 0.004 240);
  vertical-align: top;
}

#content.page-devices:not(:has(table.table.highlight)) table.table tbody tr:hover td {
  background: oklch(0.98 0.01 220);
}

#content.page-devices:not(:has(table.table.highlight)) .device-detail-section h3 {
  margin-top: 0;
}

#content.page-devices:not(:has(table.table.highlight)) .device-detail-all-params {
  overflow-x: auto;
}

#content.page-devices:not(:has(table.table.highlight)) .device-detail-all-params .all-parameters,
#content.page-devices:not(:has(table.table.highlight)) .all-parameters {
  max-height: 420px;
  overflow: auto;
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius-sm);
  background: oklch(0.99 0.002 240);
}

#content.page-devices:not(:has(table.table.highlight)) > div:not(.device-summary-grid):not(.device-detail-section):not(.container-full-width) {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  padding: 0.75rem 0.9rem;
  margin-bottom: 0.75rem;
}

#content.page-devices:not(:has(table.table.highlight)) .actions-bar,
#content.page-devices:not(:has(table.table.highlight)) [class*="device-actions"] {
  position: sticky;
  bottom: 0;
  z-index: 30;
  margin: 1rem 0 0;
  padding: 0.65rem 0.75rem;
  background: oklch(1 0 0 / 0.94);
  backdrop-filter: blur(8px);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: 0 -4px 16px oklch(0 0 0 / 0.06);
}

#content.page-devices:not(:has(table.table.highlight)) span.inform {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

/* WAN tabs (PPP / IP groups) */
.wan-tab-group {
  margin: 0 0 0.85rem;
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  overflow: hidden;
}

.wan-tab-group::before {
  content: attr(data-wan-type);
  display: block;
  padding: 0.55rem 0.85rem 0;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ia-muted);
}

.wan-tab-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.55rem 0.75rem 0.65rem;
  border-bottom: 1px solid var(--ia-border);
  background: oklch(0.98 0.004 240);
}

.wan-tab-btn {
  appearance: none;
  border: 1px solid var(--ia-border);
  border-radius: 999px;
  background: var(--ia-surface);
  color: var(--ia-muted);
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1;
  padding: 0.42rem 0.75rem;
  cursor: pointer;
  transition: background var(--ia-transition), color var(--ia-transition),
    border-color var(--ia-transition);
}

.wan-tab-btn:hover {
  color: var(--ia-accent);
  border-color: oklch(0.75 0.04 220);
}

.wan-tab-btn.active {
  background: var(--ia-accent);
  border-color: var(--ia-accent);
  color: #fff;
}

.wan-tab-panels {
  padding: 0.65rem 0.85rem 0.75rem;
}

.wan-tab-panel {
  display: none;
}

.wan-tab-panel.active {
  display: block;
}

.wan-ppp-panel-hidden {
  display: none !important;
}

.wan-panel-hidden {
  display: none !important;
}

.wan-ppp-tab-bar,
.wan-ip-tab-bar {
  margin: 0 0 0.85rem;
}

#content.page-devices:not(:has(table.table.highlight)) .detail-verbose-block {
  display: none;
}

#content.page-devices:not(:has(table.table.highlight)).show-detail-verbose .detail-verbose-block {
  display: block;
}

#content.page-devices:not(:has(table.table.highlight)) .detail-verbose-toggle {
  display: inline-flex;
  margin: 0.5rem 0 0.75rem;
}

.wan-tab-panel .parameter-list {
  margin-bottom: 0.35rem;
}

.wan-tab-panel > table.parameter-list:first-child tr:first-child th,
.wan-tab-panel > table.parameter-list:first-child tr:first-child td:first-child {
  display: none;
}

.wan-tab-panel > table.parameter-list:first-child tr:first-child td:last-child {
  display: none;
}

.wan-tab-panel > table.parameter-list:first-child tr:first-child {
  display: none;
}

@media (max-width: 900px) {
  .device-summary-grid {
    grid-template-columns: 1fr;
  }

  #content.page-devices:not(:has(table.table.highlight)) .parameter-list td:first-child,
  #content.page-devices:not(:has(table.table.highlight)) .parameter-list td:last-child {
    display: table-cell;
    width: auto;
  }
}

@media (max-width: 768px) {
  #content.page-devices:not(:has(table.table.highlight)) > h1 {
    font-size: 0.95rem;
    padding: 0.65rem 0.8rem;
  }

  #content.page-devices:not(:has(table.table.highlight)) .parameter-list td:first-child {
    width: 40%;
    min-width: 6.5rem;
    font-size: 0.75rem;
  }
}

/* ── Admin panel: side menu and config context ───────────── */
#content-wrapper {
  gap: 0;
  background: var(--ia-bg);
}

#side-menu {
  position: sticky;
  top: 4rem;
  align-self: flex-start;
  width: 240px;
  min-width: 240px;
  margin: 0.75rem 0 0.75rem 0.75rem;
  padding: 0.5rem;
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
}

#side-menu > ul {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
}

#side-menu > ul > li {
  font-weight: 500;
}

#side-menu > ul > li > a {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  min-height: 2.35rem;
  margin: 0;
  padding: 0.45rem 0.65rem;
  border-radius: var(--ia-radius-sm);
  background: transparent;
  color: var(--ia-ink);
  font-size: 0.85rem;
  text-decoration: none;
  transition: background-color var(--ia-transition), color var(--ia-transition);
}

#side-menu > ul > li > a::before {
  content: "settings";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1.1rem;
  color: var(--ia-muted);
}

#side-menu > ul > li.presets > a::before {
  content: "tune";
}

#side-menu > ul > li.provisions > a::before {
  content: "rule_settings";
}

#side-menu > ul > li.virtualParameters > a::before {
  content: "data_object";
}

#side-menu > ul > li.files > a::before {
  content: "folder";
}

#side-menu > ul > li.config > a::before {
  content: "manufacturing";
}

#side-menu > ul > li.permissions > a::before {
  content: "security";
}

#side-menu > ul > li.users > a::before {
  content: "group";
}

#side-menu > ul > li > a:hover {
  background: oklch(0.95 0.018 220);
  color: var(--ia-accent);
}

#side-menu > ul > li.active > a {
  background: oklch(0.92 0.035 220);
  color: var(--ia-accent);
  font-weight: 700;
}

#side-menu > ul > li.active > a::before {
  color: var(--ia-accent);
}

#content {
  margin: 0.75rem;
}

#content[class*="page-"] {
  min-width: 0;
}

#content.page-config,
#content.page-users,
#content.page-permissions,
#content.page-presets,
#content.page-provisions,
#content.page-virtualParameters,
#content.page-files {
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
  padding: 1rem;
}

#content h1 {
  margin: 0 0 0.85rem;
  text-align: left;
  color: var(--ia-ink);
  font-size: 1.05rem;
  font-weight: 700;
}

#content.page-config > input[type="text"] {
  max-width: 520px;
  min-height: 2.5rem;
  margin: 0 0 0.9rem;
  padding: 0.45rem 0.8rem 0.45rem 2.25rem;
  background:
    linear-gradient(transparent, transparent),
    var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: 999px;
  box-shadow: inset 0 0 0 1px transparent;
}

#content.page-config > input[type="text"]::placeholder {
  color: var(--ia-muted);
}

#content.page-config table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  overflow: hidden;
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  background: var(--ia-surface);
}

#content.page-config tbody tr {
  transition: background-color var(--ia-transition);
}

#content.page-config tbody tr:nth-child(even) {
  background: oklch(0.985 0.004 240);
}

#content.page-config tbody tr:hover {
  background: oklch(0.965 0.012 220);
}

#content.page-config td {
  padding: 0.6rem 0.75rem;
  border-bottom: 1px solid var(--ia-border);
  vertical-align: middle;
}

#content.page-config tr:last-child td {
  border-bottom: 0;
}

#content.page-config td.left {
  width: 42%;
  color: var(--ia-ink);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: 0.76rem;
}

#content.page-config td.right {
  width: 58%;
}

#content.page-config td.right > span {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 0.4rem;
}

#content.page-config .long-text {
  display: block;
  overflow: hidden;
  color: var(--ia-muted);
  text-overflow: ellipsis;
  white-space: nowrap;
}

#content.page-config button,
#content.page-users button,
#content.page-permissions button,
#content.page-presets button,
#content.page-provisions button,
#content.page-virtualParameters button,
#content.page-files button {
  min-width: 2rem;
  min-height: 2rem;
  padding: 0.25rem 0.55rem;
  border: 1px solid var(--ia-border);
  border-radius: 999px;
  background: var(--ia-surface);
}

#content.page-config button:hover,
#content.page-users button:hover,
#content.page-permissions button:hover,
#content.page-presets button:hover,
#content.page-provisions button:hover,
#content.page-virtualParameters button:hover,
#content.page-files button:hover {
  background: oklch(0.94 0.02 220);
  color: var(--ia-accent);
}

#content.page-config button[title*="Edit"]::before {
  content: "edit";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1rem;
}

#content.page-config button[title*="Delete"]::before {
  content: "delete";
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1rem;
}

#content.page-config button[title*="Edit"],
#content.page-config button[title*="Delete"] {
  font-size: 0;
}

#content.page-config button[title*="Edit"] .icon,
#content.page-config button[title*="Delete"] .icon,
#content.page-config button[title*="Edit"] svg,
#content.page-config button[title*="Delete"] svg {
  display: none;
}

.put-form {
  min-width: min(760px, calc(100vw - 2rem));
  max-width: 960px;
  padding: 1rem;
  background: var(--ia-surface);
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius);
  box-shadow: var(--ia-shadow);
}

.put-form form {
  min-width: 0;
}

.put-form label {
  display: block;
  margin: 0.75rem 0 0.25rem;
  color: var(--ia-muted);
  font-size: 0.78rem;
  font-weight: 600;
}

.put-form input,
.put-form select,
.put-form textarea {
  width: 100%;
  min-height: 2.35rem;
  box-sizing: border-box;
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius-sm);
  background: oklch(0.985 0.004 240);
}

.put-form .CodeMirror {
  border: 1px solid var(--ia-border);
  border-radius: var(--ia-radius-sm);
  font-size: 0.82rem;
}

/* ── Login page (Impeccable welcome card) ────────────────── */
body:has(#content.page-login) #content-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 4.25rem);
  margin: 0;
  padding: 1.5rem 1.5rem 2rem;
  background:
    radial-gradient(circle at 18% 18%, oklch(0.78 0.10 220 / 0.28), transparent 26rem),
    radial-gradient(circle at 82% 12%, oklch(0.84 0.08 170 / 0.22), transparent 22rem),
    linear-gradient(160deg, oklch(0.98 0.01 240), oklch(0.94 0.025 225));
}

#content.page-login {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: stretch;
  width: 360px;
  max-width: calc(100vw - 3rem);
  margin: 0 auto;
  padding: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  box-shadow: none;
  min-height: 0;
}

#content.page-login::before,
#content.page-login::after {
  content: none;
  display: none;
}

#content.page-login > h1 {
  position: relative;
  box-sizing: border-box;
  margin: 0;
  padding: 1.5rem 1.6rem 0.75rem 5.2rem;
  border: 1px solid var(--ia-border);
  border-bottom: 0;
  border-radius: 20px 20px 0 0;
  background: var(--ia-surface);
  color: var(--ia-ink);
  font-size: 1.65rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  text-align: left;
  text-transform: none;
}

#content.page-login > h1::before {
  content: "router";
  position: absolute;
  top: 1.35rem;
  left: 1.4rem;
  width: 3.2rem;
  height: 3.2rem;
  margin: 0;
  display: grid;
  place-items: center;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--ia-accent), oklch(0.58 0.11 200));
  box-shadow: 0 12px 28px oklch(0.35 0.08 220 / 0.2);
  color: white;
  font-family: "Material Symbols Rounded";
  font-feature-settings: "liga";
  font-size: 1.75rem;
  font-weight: 400;
}

#content.page-login > h1::after {
  content: "Masuk ke panel GenieACS";
  display: block;
  margin-top: 0.35rem;
  color: var(--ia-muted);
  font-size: 1rem;
  font-weight: 500;
  letter-spacing: 0;
}

#content.page-login > form {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 0.5rem 1.6rem 1.8rem;
  border: 1px solid var(--ia-border);
  border-top: 0;
  border-radius: 0 0 20px 20px;
  background: var(--ia-surface);
  box-shadow: 0 20px 44px oklch(0 0 0 / 0.08);
}

#content.page-login > form p {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 1.2rem 0 0;
}

#content.page-login > form p:has(button.primary) {
  margin-top: 1.8rem;
}

#content.page-login label {
  display: block;
  margin: 0;
  color: var(--ia-muted);
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

#content.page-login input {
  display: block;
  width: 100%;
  min-height: 3.2rem;
  box-sizing: border-box;
  padding: 0.75rem 1rem;
  border: 1px solid var(--ia-border);
  border-radius: 12px;
  background: oklch(0.985 0.004 240);
  color: var(--ia-ink);
  font-size: 1.05rem;
  transition: border-color var(--ia-transition), box-shadow var(--ia-transition), background var(--ia-transition);
}

#content.page-login input:focus {
  outline: none;
  border-color: var(--ia-accent);
  background: white;
  box-shadow: 0 0 0 4px oklch(0.45 0.08 220 / 0.14);
}

#content.page-login button.primary {
  display: flex;
  width: 100%;
  min-height: 3.2rem;
  margin: 0;
  padding: 0.75rem 1.25rem;
  border: 0;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--ia-accent), oklch(0.55 0.10 210));
  box-shadow: 0 12px 24px oklch(0.40 0.08 220 / 0.16);
  color: white;
  font-size: 1.05rem;
  font-weight: 700;
}

#content.page-login button.primary:hover {
  background: linear-gradient(135deg, var(--ia-accent-hover), var(--ia-accent));
}

#content.page-login > a {
  width: 100%;
  margin: 1.4rem 0 0;
  color: var(--ia-muted);
  font-size: 0.95rem;
  text-align: center;
  text-decoration: none;
}

#content.page-login > a:hover {
  color: var(--ia-accent);
  text-decoration: underline;
}

/* ── Login: override GenieACS header/drawer (mobile breakage) ─ */
#header > .drawer-wrapper {
  position: sticky;
  top: 0;
  left: auto;
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  z-index: 30;
}

body:has(#content.page-login) #header {
  overflow: hidden;
}

body:has(#content.page-login) #header > nav {
  display: none;
}

body:has(#content.page-login) #header > .logo > img {
  height: 40px;
  margin: 8px 10px;
}

body:has(#content.page-login) #header > .user-menu {
  margin: 8px 10px;
  font-size: 0.85rem;
}

body:has(#content.page-login) #content-wrapper {
  min-height: calc(100dvh - 3.75rem);
  min-height: calc(100svh - 3.75rem);
  padding:
    max(1rem, env(safe-area-inset-top))
    max(1rem, env(safe-area-inset-right))
    max(1.25rem, env(safe-area-inset-bottom))
    max(1rem, env(safe-area-inset-left));
  overflow-x: hidden;
}

@media (max-width: 900px) {
  #content-wrapper {
    display: block;
  }

  body:has(#content.page-login) #content-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    padding:
      max(0.75rem, env(safe-area-inset-top))
      max(0.75rem, env(safe-area-inset-right))
      max(1rem, env(safe-area-inset-bottom))
      max(0.75rem, env(safe-area-inset-left));
  }

  #content.page-login {
    width: min(100%, 24rem);
    max-width: 100%;
  }

  #content.page-login > h1 {
    padding: 1.15rem 1.15rem 0.65rem;
    font-size: 1.35rem;
    text-align: center;
  }

  #content.page-login > h1::before {
    position: static;
    display: flex;
    width: 3rem;
    height: 3rem;
    margin: 0 auto 0.75rem;
    font-size: 1.55rem;
  }

  #content.page-login > h1::after {
    font-size: 0.92rem;
    line-height: 1.35;
  }

  #content.page-login > form {
    padding: 0.35rem 1.15rem 1.35rem;
    border-radius: 0 0 16px 16px;
  }

  #content.page-login > form p {
    margin-top: 1rem;
  }

  #content.page-login input {
    min-height: var(--ia-touch);
    font-size: 16px;
  }

  #content.page-login button.primary {
    min-height: var(--ia-touch);
    font-size: 1rem;
  }

  #side-menu {
    position: static;
    width: auto;
    min-width: 0;
    margin: 0.75rem;
    overflow-x: auto;
  }

  #side-menu > ul {
    flex-direction: row;
    min-width: max-content;
  }

  #side-menu > ul > li > a {
    white-space: nowrap;
  }

  #content.page-config td,
  #content.page-config td.left,
  #content.page-config td.right {
    display: block;
    width: auto;
  }

  #content.page-config td.left {
    padding-bottom: 0.2rem;
  }

  #content.page-config td.right {
    padding-top: 0.2rem;
  }
}

@media (max-width: 520px) {
  body:has(#content.page-login) #content-wrapper {
    align-items: flex-start;
    padding-top: max(0.5rem, env(safe-area-inset-top));
  }

  #content.page-login {
    width: 100%;
    margin-top: 0.25rem;
  }

  #content.page-login > h1 {
    border-radius: 14px 14px 0 0;
    padding-top: 1rem;
  }

  #content.page-login > form {
    border-radius: 0 0 14px 14px;
    box-shadow: 0 12px 28px oklch(0 0 0 / 0.07);
  }

  #content.page-login > a {
    margin-top: 1rem;
    font-size: 0.9rem;
  }
}

@media (max-width: 768px) {
  #header > nav > ul > li > :is(a, a:visited, a:hover) {
    min-width: 0;
    padding: 8px 10px;
    font-size: 0.82rem;
  }

  #header > .logo > img {
    height: 44px;
    margin: 8px;
  }

  #header > .user-menu {
    margin: 8px;
  }
}
