    /* Theme tokens (CSS variables).
       We map to Bootstrap 5.3 CSS vars so most components inherit nicely.
       Theme is selected per-user via <html data-theme="...">. */

    @font-face {
      font-family: "Sentinel UI";
      src: url("/static/fonts/InterVariable.woff2") format("woff2");
      font-weight: 100 900;
      font-style: normal;
      font-display: swap;
    }

    @font-face {
      font-family: "Sentinel UI";
      src: url("/static/fonts/InterVariable-Italic.woff2") format("woff2");
      font-weight: 100 900;
      font-style: italic;
      font-display: swap;
    }

    html[data-theme="enterprise"] {
      --bs-body-bg: #f6f7fb;
      --bs-body-color: #0f172a;
      --bs-secondary-color: rgba(15, 23, 42, 0.68);
      --bs-border-color: rgba(15, 23, 42, 0.14);
      --bs-primary: #2563eb;
      --bs-link-color: #2563eb;
      --bs-table-bg: rgba(255, 255, 255, 0.9);
      --bs-table-striped-bg: rgba(148, 163, 184, 0.10);
      --bs-table-hover-bg: rgba(148, 163, 184, 0.14);
      --bs-table-border-color: rgba(15, 23, 42, 0.12);
      --bs-table-color: var(--bs-body-color);
      --bs-border-radius: 0.95rem;
      --bs-border-radius-lg: 1.15rem;
      --bs-border-radius-sm: 0.7rem;
      --bs-focus-ring-color: rgba(37, 99, 235, 0.35);
      --bs-focus-ring-width: 0.22rem;

      --ss-surface: #ffffff;
      --ss-surface-2: #ffffff;
      --ss-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
      --ss-radius: 14px;
      --ss-font: "Sentinel UI", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
      --ss-nav-bg: rgba(255, 255, 255, 0.75);
      --ss-nav-border: rgba(15, 23, 42, 0.10);
      --ss-nav-link: rgba(15, 23, 42, 0.78);
      --ss-nav-link-active-bg: rgba(37, 99, 235, 0.12);
      --ss-muted: rgba(15, 23, 42, 0.65);
      --ss-primary-1: #2563eb;
      --ss-primary-2: #1d4ed8;
      --ss-timeline-base: #e5e7eb;
      --ss-timeline-day: #eef2ff;
      --ss-timeline-quiet: #dcfce7;
      --ss-timeline-out: #f3f4f6;
      --ss-timeline-border: rgba(17, 24, 39, 0.10);
      --ss-danger: #ef4444;
    }

    html[data-theme="apple"] {
      --bs-body-bg: #ffffff;
      --bs-body-color: #0b1220;
      --bs-secondary-color: rgba(2, 6, 23, 0.66);
      --bs-border-color: rgba(2, 6, 23, 0.10);
      --bs-primary: #007aff;
      --bs-link-color: #007aff;
      --bs-table-bg: rgba(255, 255, 255, 0.9);
      --bs-table-striped-bg: rgba(2, 6, 23, 0.06);
      --bs-table-hover-bg: rgba(2, 6, 23, 0.08);
      --bs-table-border-color: rgba(2, 6, 23, 0.10);
      --bs-table-color: var(--bs-body-color);
      --bs-border-radius: 1.05rem;
      --bs-border-radius-lg: 1.3rem;
      --bs-border-radius-sm: 0.8rem;
      --bs-focus-ring-color: rgba(0, 122, 255, 0.30);
      --bs-focus-ring-width: 0.22rem;

      --ss-surface: rgba(255, 255, 255, 0.9);
      --ss-surface-2: rgba(255, 255, 255, 0.8);
      --ss-shadow: 0 18px 40px rgba(2, 6, 23, 0.08);
      --ss-radius: 18px;
      --ss-font: "Sentinel UI", ui-sans-serif, system-ui, -apple-system, "SF Pro Display", "SF Pro Text", Segoe UI, Roboto, Helvetica, Arial;
      --ss-nav-bg: rgba(255, 255, 255, 0.72);
      --ss-nav-border: rgba(2, 6, 23, 0.08);
      --ss-nav-link: rgba(2, 6, 23, 0.82);
      --ss-nav-link-active-bg: rgba(0, 122, 255, 0.10);
      --ss-muted: rgba(2, 6, 23, 0.60);
      --ss-primary-1: #007aff;
      --ss-primary-2: #0057d9;
      --ss-timeline-base: rgba(2, 6, 23, 0.10);
      --ss-timeline-day: rgba(0, 122, 255, 0.12);
      --ss-timeline-quiet: rgba(16, 185, 129, 0.16);
      --ss-timeline-out: rgba(2, 6, 23, 0.06);
      --ss-timeline-border: rgba(2, 6, 23, 0.12);
      --ss-danger: #ef4444;
    }

    html[data-theme="industrial"] {
      --bs-body-bg: #0b1220;
      --bs-body-color: #e5e7eb;
      --bs-secondary-color: rgba(229, 231, 235, 0.72);
      --bs-border-color: rgba(148, 163, 184, 0.22);
      --bs-primary: #22c55e;
      --bs-link-color: #22c55e;
      --bs-table-bg: rgba(15, 23, 42, 0.95);
      --bs-table-striped-bg: rgba(148, 163, 184, 0.10);
      --bs-table-hover-bg: rgba(148, 163, 184, 0.14);
      --bs-table-border-color: rgba(148, 163, 184, 0.22);
      --bs-table-color: var(--bs-body-color);
      --bs-border-radius: 0.9rem;
      --bs-border-radius-lg: 1.1rem;
      --bs-border-radius-sm: 0.7rem;
      --bs-focus-ring-color: rgba(34, 197, 94, 0.35);
      --bs-focus-ring-width: 0.22rem;

      --ss-surface: #0f172a;
      --ss-surface-2: #111c33;
      --ss-shadow: 0 10px 26px rgba(0, 0, 0, 0.35);
      --ss-radius: 14px;
      --ss-font: "Sentinel UI", ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
      --ss-nav-bg: rgba(15, 23, 42, 0.82);
      --ss-nav-border: rgba(148, 163, 184, 0.18);
      --ss-nav-link: rgba(229, 231, 235, 0.88);
      --ss-nav-link-active-bg: rgba(34, 197, 94, 0.14);
      --ss-muted: rgba(229, 231, 235, 0.66);
      --ss-primary-1: #22c55e;
      --ss-primary-2: #16a34a;
      --ss-timeline-base: rgba(148, 163, 184, 0.20);
      --ss-timeline-day: rgba(59, 130, 246, 0.22);
      --ss-timeline-quiet: rgba(34, 197, 94, 0.22);
      --ss-timeline-out: rgba(148, 163, 184, 0.10);
      --ss-timeline-border: rgba(148, 163, 184, 0.26);
      --ss-danger: #fb7185;
    }

    body {
      font-family: var(--ss-font);
      background: var(--bs-body-bg);
      color: var(--bs-body-color);
      line-height: 1.5;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-rendering: optimizeLegibility;
    }

    code, kbd, samp, pre {
      font-variant-numeric: tabular-nums;
    }

    .table, .badge, .btn, .navbar, .dropdown-menu {
      font-variant-numeric: tabular-nums;
    }

    .ss-subtle {
      color: var(--ss-muted);
    }

    .ss-mono {
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
      font-variant-numeric: tabular-nums;
    }

    .ss-toolbar {
      background: var(--ss-surface);
      border: 1px solid var(--bs-border-color);
      border-radius: var(--ss-radius);
      box-shadow: var(--ss-shadow);
      padding: 0.85rem 1rem;
    }

    .ss-toolbar--tight {
      padding: 0.65rem 0.85rem;
    }

    .ss-table {
      background: var(--ss-surface);
      border: 1px solid var(--bs-border-color);
      border-radius: var(--ss-radius);
      overflow: hidden;
      box-shadow: var(--ss-shadow);
    }

    .ss-table .table {
      margin-bottom: 0;
    }

    /* Tables: give the first/last column a bit more breathing room so content
       doesn't feel glued to the table edge (especially on dense table-sm views). */
    .ss-table .table > :not(caption) > * > :first-child {
      padding-left: 1rem;
    }

    .ss-table .table > :not(caption) > * > :last-child {
      padding-right: 1rem;
    }

    .table {
      color: var(--bs-body-color);
      border-color: var(--bs-table-border-color);
    }

    .table thead th {
      font-weight: 750;
      letter-spacing: -0.01em;
      color: var(--bs-secondary-color);
      background: var(--ss-surface-2);
      border-bottom: 1px solid var(--bs-table-border-color);
      vertical-align: middle;
    }

    .table td {
      vertical-align: middle;
    }

    html[data-theme="enterprise"] body {
      background:
        radial-gradient(1200px 420px at 20% 0%, rgba(37, 99, 235, 0.10), transparent 60%),
        radial-gradient(900px 360px at 90% 0%, rgba(99, 102, 241, 0.08), transparent 55%),
        var(--bs-body-bg);
    }

    html[data-theme="apple"] body {
      background:
        radial-gradient(1100px 420px at 15% 0%, rgba(0, 122, 255, 0.08), transparent 55%),
        radial-gradient(900px 360px at 85% 0%, rgba(16, 185, 129, 0.05), transparent 55%),
        var(--bs-body-bg);
    }

    html[data-theme="industrial"] body {
      background:
        radial-gradient(1100px 520px at 10% 0%, rgba(34, 197, 94, 0.12), transparent 60%),
        radial-gradient(900px 360px at 92% 0%, rgba(59, 130, 246, 0.08), transparent 60%),
        var(--bs-body-bg);
    }

    html[data-theme="enterprise"] body::before,
    html[data-theme="industrial"] body::before {
      content: "";
      position: fixed;
      inset: 0;
      pointer-events: none;
      background-image:
        linear-gradient(to right, rgba(148, 163, 184, 0.14) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(148, 163, 184, 0.14) 1px, transparent 1px);
      background-size: 72px 72px;
      opacity: 0.08;
      mask-image: radial-gradient(900px 520px at 40% 0%, #000 0%, transparent 70%);
      z-index: 0;
    }

    main.container {
      position: relative;
      z-index: 1;
    }

    .card, .table, .navbar, .dropdown-menu {
      border-color: var(--bs-border-color);
    }

    .card {
      border-radius: var(--ss-radius);
      box-shadow: var(--ss-shadow);
      background: var(--ss-surface);
    }

    a, button, .btn, .nav-link {
      transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
    }

    .btn {
      font-weight: 650;
      letter-spacing: -0.01em;
    }

    .btn-primary {
      background-image: linear-gradient(180deg, var(--ss-primary-1), var(--ss-primary-2));
      border-color: transparent;
      box-shadow: 0 10px 18px rgba(2, 6, 23, 0.12);
    }

    html[data-theme="industrial"] .btn-primary {
      box-shadow: 0 12px 22px rgba(0, 0, 0, 0.35);
    }

    .btn-primary:hover {
      transform: translateY(-1px);
    }

    .btn-outline-secondary {
      border-color: var(--bs-border-color);
      color: var(--bs-secondary-color);
    }

    .btn-outline-secondary:hover {
      background: rgba(148, 163, 184, 0.14);
      border-color: rgba(148, 163, 184, 0.22);
      color: var(--bs-body-color);
      transform: translateY(-1px);
    }

    .form-control, .form-select, .form-check-input, .form-range {
      border-radius: 0.9rem;
    }

    .form-control, .form-select {
      background: var(--ss-surface);
      color: var(--bs-body-color);
      border-color: var(--bs-border-color);
    }

    html[data-theme="industrial"] .form-control,
    html[data-theme="industrial"] .form-select {
      background: var(--ss-surface-2);
      color: var(--bs-body-color);
      border-color: var(--bs-border-color);
    }

    .form-control::placeholder {
      color: var(--ss-muted);
      opacity: 0.7;
    }

    .form-control:focus,
    .form-select:focus {
      border-color: var(--bs-primary);
      box-shadow: 0 0 0 var(--bs-focus-ring-width) var(--bs-focus-ring-color);
    }

    .form-label {
      font-weight: 650;
      letter-spacing: -0.01em;
      color: var(--bs-secondary-color);
    }

    .dropdown-menu {
      background: var(--ss-surface);
      border-color: var(--bs-border-color);
      border-radius: var(--ss-radius);
      box-shadow: var(--ss-shadow);
    }

    html[data-theme="industrial"] .dropdown-menu {
      background: var(--ss-surface-2);
    }

    .dropdown-item {
      color: var(--bs-body-color);
      font-weight: 600;
      letter-spacing: -0.01em;
    }

    .dropdown-item:hover,
    .dropdown-item:focus {
      background: rgba(148, 163, 184, 0.16);
      color: var(--bs-body-color);
    }

    .alert {
      border-radius: var(--ss-radius);
      border-color: var(--bs-border-color);
      background: var(--ss-surface);
      color: var(--bs-body-color);
      box-shadow: var(--ss-shadow);
    }

    .alert a {
      color: var(--bs-link-color);
      text-decoration: none;
      font-weight: 650;
    }

    .alert a:hover {
      text-decoration: underline;
    }

    .alert-info {
      border-left: 4px solid var(--bs-primary);
    }

    .alert-warning {
      border-left: 4px solid rgba(245, 158, 11, 0.85);
    }

    .alert-danger {
      border-left: 4px solid rgba(239, 68, 68, 0.85);
    }

    /* Navbar: "not bootstrap-y" */
    .ss-navbar {
      background: var(--ss-nav-bg) !important;
      border-bottom: 1px solid var(--ss-nav-border);
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
    }

    .ss-navbar .navbar-brand {
      font-weight: 750;
      letter-spacing: -0.02em;
    }

    .ss-brand {
      display: inline-flex;
      align-items: center;
      gap: 0.55rem;
      text-decoration: none;
      color: var(--ss-nav-link) !important;
    }

    .ss-brand:hover {
      color: var(--ss-nav-link) !important;
    }

    .ss-brand-mark {
      width: 22px;
      height: 22px;
      opacity: 0.95;
    }

    .ss-brand-name {
      display: inline-block;
      transform: translateY(-0.5px);
    }

    .ss-navbar .nav-link {
      color: var(--ss-nav-link) !important;
      padding: 0.45rem 0.75rem;
      border-radius: 999px;
      font-weight: 600;
      letter-spacing: -0.01em;
      margin-right: 0.25rem;
      display: inline-flex;
      align-items: center;
      gap: 0.45rem;
    }

    .ss-navbar .nav-link:hover {
      background: rgba(148, 163, 184, 0.16);
    }

    .ss-navbar .nav-link.active {
      background: var(--ss-nav-link-active-bg);
      color: var(--ss-nav-link) !important;
    }

    .ss-navbar .nav-link.disabled {
      opacity: 0.65;
    }

    .ss-icon {
      width: 18px;
      height: 18px;
      flex: 0 0 auto;
      opacity: 0.92;
    }

    .ss-icon--nav {
      width: 17px;
      height: 17px;
      opacity: 0.88;
    }

    .ss-navbar .nav-link.active .ss-icon {
      opacity: 1;
    }

      /* Event camera media cards */

    .event-media-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 1rem;
        margin-top: 0.5rem;
        margin-bottom: 1.5rem;
    }

    .event-media-card {
        background: var(--ss-surface);
        border-radius: 12px;
        border: 1px solid var(--bs-border-color);
        padding: 0.75rem 0.9rem;
        box-shadow: var(--ss-shadow);
        display: flex;
        flex-direction: column;
        gap: 0.5rem;
        font-size: 0.8rem;
    }

    .event-media-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 0.5rem;
    }

    .event-media-title {
        font-weight: 600;
        font-size: 0.9rem;
        color: var(--bs-body-color);
    }

    .event-media-meta {
        font-size: 0.75rem;
        color: var(--ss-muted);
        line-height: 1.3;
    }

    .event-media-body {
        margin-top: 0.25rem;
    }

    .event-media-thumb {
        display: block;
        width: 100%;
        height: auto;
        border-radius: 8px;
        border: 1px solid var(--bs-border-color);
        object-fit: cover;
    }

    .event-media-video {
        width: 100%;
        max-height: 240px;
        border-radius: 8px;
        border: 1px solid var(--bs-border-color);
        background: #000;
    }

    .event-media-footer {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-top: 0.25rem;
    }

    .event-media-link {
        font-size: 0.75rem;
        text-decoration: none;
        color: var(--bs-link-color);
    }

    .event-media-link:hover {
        text-decoration: underline;
    }

    body {
        padding-top: 4.5rem;
    }

    .badge-unclaimed {
        background-color: #ffc107;
        color: #000;
    }

    .badge-adopted {
        background-color: #198754;
    }
.devices-filter-control {
  margin-left: 0.75rem;
  font-size: 0.9rem;
}

.devices-filter-select {
  margin-left: 0.25rem;
}

.devices-toolbar-left a.devices-clear-link {
  text-decoration: none;
}

    /* Device detail header (if you reuse it) */
    .device-header {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 1.5rem;
        margin-bottom: 1.5rem;
    }

    .device-title {
        font-size: 1.6rem;
        font-weight: 600;
        color: var(--bs-body-color);
        margin: 0;
    }

    .device-subtitle {
        font-size: 0.85rem;
        color: var(--ss-muted);
        margin-top: 0.25rem;
    }

    .device-updated {
        text-align: right;
        font-size: 0.8rem;
        color: var(--ss-muted);
    }

    .device-updated-label {
        text-transform: uppercase;
        letter-spacing: 0.06em;
        font-weight: 600;
        font-size: 0.7rem;
        display: block;
        margin-bottom: 0.2rem;
    }

    .device-updated-value {
        font-weight: 500;
        color: var(--bs-body-color);
    }
.device-card-status-group {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
}

.wifi-pill {
  font-size: 0.65rem;
}

    /* Metric cards on detail page (if used there) */
    .metric-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
        gap: 1.5rem;
    }

    .metric-card {
        background: var(--ss-surface);
        border-radius: 12px;
        padding: 1.1rem 1.25rem;
        border: 1px solid var(--bs-border-color);
        box-shadow: var(--ss-shadow);
    }

    .metric-header {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 0.75rem;
        margin-bottom: 0.75rem;
    }

    .metric-label {
        font-size: 0.9rem;
        font-weight: 600;
        color: var(--bs-body-color);
    }

    .metric-subtitle {
        font-size: 0.75rem;
        color: var(--ss-muted);
        margin-top: 0.15rem;
    }

    .metric-main {
        display: flex;
        align-items: baseline;
        gap: 0.25rem;
        margin-bottom: 0.85rem;
    }

    .metric-value {
        font-size: 1.6rem;
        font-weight: 600;
        color: var(--bs-body-color);
    }

    .metric-unit {
        font-size: 0.8rem;
        color: var(--ss-muted);
    }

    .metric-footer {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 0.5rem;
    }

    .metric-note {
        font-size: 0.7rem;
        color: var(--ss-muted);
        text-align: right;
    }

    /* Status pills */
    .metric-status {
        font-size: 0.7rem;
        font-weight: 600;
        padding: 0.15rem 0.6rem;
        border-radius: 999px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
    }

    .metric-status--good {
        background-color: #dcfce7;
        color: #166534;
    }

    .metric-status--warn {
        background-color: #fef9c3;
        color: #854d0e;
    }

    .metric-status--bad {
        background-color: #fee2e2;
        color: #991b1b;
    }

    .metric-status--neutral {
        background-color: rgba(148, 163, 184, 0.22);
        color: var(--bs-secondary-color);
    }

    .metric-status--unknown {
        background-color: rgba(148, 163, 184, 0.22);
        color: var(--bs-secondary-color);
    }

	    /* Threshold controls (device/site) */
	    .ss-th-stack {
	        display: flex;
	        flex-direction: column;
	        gap: 0.5rem;
	    }

	    .ss-th-row {
	        display: grid;
	        grid-template-columns: 52px 1fr 72px;
	        align-items: center;
	        gap: 0.6rem;
	    }

    .ss-th-row-label {
        font-size: 0.75rem;
        font-weight: 600;
        color: var(--ss-muted);
        text-transform: uppercase;
        letter-spacing: 0.06em;
    }

    .ss-th-row .form-range {
        margin: 0;
    }

	    .ss-th-row .form-control-sm {
	        text-align: right;
	        font-variant-numeric: tabular-nums;
	    }

	    .ss-th-disclosure {
	        display: flex;
	        align-items: center;
	        justify-content: space-between;
	        width: 100%;
	        padding: 0.5rem 0;
	        border: 0;
	        background: transparent;
	        color: var(--ss-muted);
	        font-size: 0.75rem;
	        font-weight: 600;
	        letter-spacing: 0.06em;
	        text-transform: uppercase;
	    }

	    .ss-th-disclosure .ss-th-caret {
	        display: inline-block;
	        transition: transform 120ms ease;
	        color: var(--ss-text);
	        opacity: 0.7;
	    }

	    .ss-th-disclosure[aria-expanded="true"] .ss-th-caret {
	        transform: rotate(90deg);
	        opacity: 0.95;
	    }

	    .ss-th-panel {
	        padding-top: 0.25rem;
	    }

	    /* Threshold accordion (device detail) */
	    .ss-accordion {
	        --ss-acc-border: var(--ss-nav-border);
	    }

	    .ss-accordion .accordion-item {
	        background: var(--ss-surface-2);
	        border: 1px solid var(--ss-acc-border);
	        border-radius: 14px;
	        overflow: hidden;
	        margin-bottom: 0.75rem;
	        transition: box-shadow 140ms ease, border-color 140ms ease;
	    }

	    .ss-accordion .accordion-item:hover,
	    .ss-accordion .accordion-item:focus-within {
	        box-shadow: var(--ss-shadow);
	    }

	    .ss-accordion .accordion-button {
	        background: transparent;
	        padding: 18px;
	        box-shadow: none;
	    }

	    .ss-accordion .accordion-button::after {
	        display: none;
	    }

	    .ss-accordion .accordion-button:focus {
	        box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.14);
	    }

	    .ss-accordion .accordion-body {
	        padding: 16px 18px 18px;
	        border-top: 1px solid var(--ss-acc-border);
	    }

	    .ss-acc-head {
	        display: flex;
	        align-items: center;
	        gap: 12px;
	        width: 100%;
	        min-width: 0;
	    }

	    .ss-acc-head-main {
	        flex: 1;
	        min-width: 0;
	    }

	    .ss-acc-name {
	        font-weight: 600;
	        font-size: 0.98rem;
	        line-height: 1.2;
	        color: var(--bs-body-color);
	    }

	    .ss-acc-desc {
	        margin-top: 2px;
	        font-size: 0.8rem;
	        color: var(--ss-muted);
	        overflow: hidden;
	        text-overflow: ellipsis;
	        white-space: nowrap;
	    }

	    .ss-acc-value {
	        text-align: right;
	        min-width: 110px;
	    }

	    .ss-acc-value .num {
	        font-weight: 800;
	        font-size: 1.55rem;
	        line-height: 1;
	        font-variant-numeric: tabular-nums;
	    }

	    .ss-acc-value .unit {
	        margin-left: 4px;
	        font-size: 0.85rem;
	        color: var(--ss-muted);
	        font-weight: 600;
	    }

	    .ss-acc-right {
	        display: flex;
	        align-items: center;
	        gap: 10px;
	    }

	    .ss-acc-chevron {
	        display: inline-block;
	        transition: transform 120ms ease, opacity 120ms ease;
	        opacity: 0.7;
	        color: var(--bs-body-color);
	    }

	    .ss-accordion .accordion-button[aria-expanded="true"] .ss-acc-chevron {
	        transform: rotate(90deg);
	        opacity: 0.95;
	    }

	    .ss-th-grid {
	        display: block;
	    }

	    .ss-th-block-label {
	        font-size: 0.75rem;
	        font-weight: 600;
	        color: var(--ss-muted);
	        text-transform: uppercase;
	        letter-spacing: 0.06em;
	        margin-bottom: 0.35rem;
	    }

	    .ss-th-inline {
	        display: flex;
	        align-items: center;
	        gap: 0.6rem;
	    }

	    .ss-th-inline .form-range {
	        flex: 1;
	        margin: 0;
	    }

	    .ss-th-inline .form-control-sm {
	        width: 76px;
	        text-align: right;
	        font-variant-numeric: tabular-nums;
	    }

    /* Help icon + tooltip (used on detail cards) */
    .help-icon {
        position: relative;
        width: 20px;
        height: 20px;
        border-radius: 999px;
        border: 1px solid var(--bs-border-color);
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 0.75rem;
        font-weight: 600;
        color: var(--ss-muted);
        cursor: help;
        flex-shrink: 0;
    }

    .help-icon::after {
        content: attr(data-tooltip);
        position: absolute;
        bottom: 130%;
        left: 50%;
        transform: translateX(-50%) translateY(4px);
        background: #111827;
        color: #f9fafb;
        padding: 0.5rem 0.75rem;
        border-radius: 0.5rem;
        font-size: 0.75rem;
        line-height: 1.3;
        max-width: 260px;
        width: max-content;
        box-shadow: 0 10px 25px rgba(15, 23, 42, 0.35);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.15s ease, transform 0.15s ease;
        z-index: 20;
    }

    .help-icon:hover::after,
    .help-icon:focus-visible::after {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }

    .page-title {
        font-size: 1.6rem;
        font-weight: 750;
        letter-spacing: -0.02em;
        margin-bottom: 1rem;
    }

    /* Stay report: noise timeline */
    .noise-timeline-wrap {
      max-width: 1200px;
      width: 100%;
    }

    .noise-marker {
      font-size: 0.75rem;
      color: var(--ss-muted);
      line-height: 1;
      white-space: nowrap;
    }

    .noise-timeline-row {
      display: flex;
      gap: 10px;
      align-items: center;
      margin-bottom: 8px;
    }

    .noise-timeline-row--header {
      margin-bottom: 4px;
      align-items: flex-end;
    }

    .noise-date {
      width: 110px;
      font-size: 0.8rem;
      color: var(--ss-muted);
      text-align: right;
      flex: 0 0 auto;
    }

    .noise-grid {
      flex: 1 1 auto;
      display: grid;
      grid-template-columns: repeat(48, 1fr);
      gap: 4px;
      padding: 10px 12px;
      border: 1px solid var(--bs-border-color);
      border-radius: 12px;
      background: var(--ss-surface);
      box-shadow: var(--ss-shadow);
    }

    .noise-grid--header {
      padding: 0 12px;
      border: none;
      border-radius: 0;
      background: transparent;
      box-shadow: none;
      min-height: 16px;
      align-items: end;
    }

    .noise-block {
      width: 100%;
      height: 16px;
      border-radius: 6px;
      border: 1px solid var(--ss-timeline-border);
      background: var(--ss-timeline-base);
    }

    .noise-block--day { background: var(--ss-timeline-day); }
    .noise-block--quiet { background: var(--ss-timeline-quiet); }

    .noise-block--out {
      opacity: 0.22;
      background: var(--ss-timeline-out);
    }

    .noise-block--exceed {
      outline: 2px solid var(--ss-danger);
      outline-offset: 1px;
    }

    .noise-timeline-legend {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      align-items: center;
      max-width: 1200px;
    }

    .legend-item {
      display: inline-flex;
      gap: 8px;
      align-items: center;
      font-size: 0.85rem;
      color: var(--ss-muted);
    }

    .legend-swatch {
      width: 16px;
      height: 12px;
      border-radius: 4px;
      border: 1px solid var(--ss-timeline-border);
      display: inline-block;
      background: var(--ss-timeline-base);
    }

    .legend-swatch--day { background: var(--ss-timeline-day); }
    .legend-swatch--quiet { background: var(--ss-timeline-quiet); }
    .legend-swatch--exceed {
      background: var(--ss-surface);
      outline: 2px solid var(--ss-danger);
      outline-offset: 1px;
    }
.page-header-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.page-header-row .page-title {
  margin: 0;
}
/* Header row: title on the left, button on the right */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;   /* space before the alerts row */
}

/* Make the "+ Adopt New Device" look like a proper button */
.adopt-device-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.45rem 1.1rem;
  border-radius: 999px;   /* pill shape, optional */
  text-decoration: none;  /* kill underline */
}

/* Also make sure btn-primary never shows an underline on links */
.btn-primary,
.btn-primary:link,
.btn-primary:visited,
.btn-primary:hover {
  text-decoration: none;
}

    /* Alerts row */

    .alerts-row {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 1rem;
        margin-bottom: 1.25rem;
    }

    .alert-card {
        border-radius: 12px;
        padding: 0.75rem 1rem;
        color: #f9fafb;
        display: flex;
        flex-direction: column;
        gap: 0.25rem;
    }

    .alert-card--critical {
        background: #b91c1c;
    }

    .alert-card--warn {
        background: #f97316;
    }

    .alert-card--info {
        background: #0369a1;
    }

    .alert-card--events {
        background: #4b5563;
    }

    .alert-title {
        font-size: 0.9rem;
        font-weight: 600;
    }

    .alert-subtitle {
        font-size: 0.8rem;
        opacity: 0.9;
    }

    .alert-events-list {
        list-style: none;
        padding: 0;
        margin: 0.25rem 0 0;
        font-size: 0.75rem;
    }

    /* Toolbar */

    .devices-toolbar {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 1rem;
        margin-bottom: 1.25rem;
    }

    .devices-toolbar-left,
    .devices-toolbar-right {
        display: flex;
        align-items: center;
        gap: 0.5rem;
    }

    .devices-toolbar .form-control {
        min-width: 260px;
        max-width: 420px;
    }

    .devices-clear-link {
        font-size: 0.8rem;
        color: var(--ss-muted);
    }

    .page-size-label {
        font-size: 0.8rem;
        color: var(--ss-muted);
    }

    .devices-toolbar .form-select {
        width: auto;
        min-width: 84px;
    }

.alerts-pagination {
  margin-top: 0.5rem;
}

    /* Device cards on overview */

    .device-card-grid {
        display: grid;
        grid-template-columns: 1fr;
        gap: 1.25rem;
        margin-bottom: 1rem;
    }

    @media (min-width: 768px) {
      .device-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
    }

    @media (min-width: 1200px) {
      .device-card-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }
    }

    .device-card {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        background: var(--ss-surface);
        border-radius: 12px;
        padding: 1rem 1.1rem;
        border: 1px solid var(--bs-border-color);
        box-shadow: var(--ss-shadow);
    }

    .device-card-header {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 0.75rem;
        margin-bottom: 0.75rem;
    }

    .device-card-title-row {
        display: flex;
        align-items: center;
        gap: 0.35rem;
    }

    .device-card-title {
        font-size: 0.95rem;
        font-weight: 600;
        color: var(--bs-body-color);
    }

    .device-card-subtitle {
        font-size: 0.75rem;
        color: var(--ss-muted);
    }

.rename-form-inline {
  display: none;           /* hidden until pencil is clicked */
  align-items: center;
  gap: 0.25rem;
}

.rename-input-inline {
  max-width: 140px;
  padding: 0.15rem 0.3rem;
  border-radius: 6px;
  border: 1px solid var(--bs-border-color);
  background: var(--ss-surface);
  color: var(--bs-body-color);
  font-size: 0.75rem;
}

.rename-icon {
  border: none;
  background: transparent;
  font-size: 0.8rem;
  cursor: pointer;
  color: var(--ss-muted);
  padding: 0;
}
.device-chart {
  position: relative;
  height: 180px;   /* fixed height for all charts */
  max-height: 180px;
}

.device-chart canvas {
  width: 100% !important;
  height: 100% !important;
}

    /* Two-row metrics layout with Good/Watch/Alert chips */

    .device-card-metrics {
        display: flex;
        flex-direction: column;
        gap: 0.5rem;
        margin-bottom: 0.75rem;
    }

    .metric-row {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 0.5rem;
    }

    .metric-cell {
        display: flex;
        flex-direction: column;
        gap: 0.15rem;
    }

    .metric-label {
        font-size: 0.7rem;
        color: var(--ss-muted);
    }

    .metric-chip {
        font-size: 0.75rem;
        font-weight: 600;
        padding: 0.15rem 0.45rem;
        border-radius: 999px;
        text-align: center;
        white-space: nowrap;
        border: 1px solid var(--bs-border-color);
    }

    /* reuse metric-status colors for chips */
    .metric-chip.metric-status--good {
        background-color: #dcfce7;
        color: #166534;
    }

    .metric-chip.metric-status--warn {
        background-color: #fef9c3;
        color: #854d0e;
    }

    .metric-chip.metric-status--bad {
        background-color: #fee2e2;
        color: #991b1b;
    }

    .metric-chip.metric-status--unknown {
        background-color: rgba(148, 163, 184, 0.18);
        color: var(--bs-secondary-color);
    }

    html[data-theme="industrial"] .metric-chip.metric-status--good {
        background-color: rgba(34, 197, 94, 0.18);
        border-color: rgba(34, 197, 94, 0.26);
        color: rgba(229, 231, 235, 0.92);
    }

    html[data-theme="industrial"] .metric-chip.metric-status--warn {
        background-color: rgba(245, 158, 11, 0.18);
        border-color: rgba(245, 158, 11, 0.26);
        color: rgba(229, 231, 235, 0.92);
    }

    html[data-theme="industrial"] .metric-chip.metric-status--bad {
        background-color: rgba(251, 113, 133, 0.18);
        border-color: rgba(251, 113, 133, 0.26);
        color: rgba(229, 231, 235, 0.92);
    }

    html[data-theme="industrial"] .metric-chip.metric-status--unknown {
        background-color: rgba(148, 163, 184, 0.12);
        border-color: rgba(148, 163, 184, 0.22);
        color: rgba(229, 231, 235, 0.78);
    }

    /* Card footer */

    .device-card-footer {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 0.25rem;
    }

    .device-last-seen {
        font-size: 0.7rem;
        color: var(--ss-muted);
    }

    .device-view-link {
        font-size: 0.75rem;
        color: var(--bs-link-color);
        text-decoration: none;
    }

    /* Pagination */

    .pagination {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        gap: 0.75rem;
        margin: 0.75rem 0 1.25rem;
        font-size: 0.8rem;
    }

    .page-link {
        text-decoration: none;
        color: var(--bs-link-color);
    }

    .page-status {
        color: var(--ss-muted);
    }

        /* Event media (snapshots + clips) */

    .event-media-section-title {
        font-size: 1.2rem;
        font-weight: 600;
        margin-top: 1.5rem;
        margin-bottom: 0.5rem;
    }

    .event-media-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 1rem;
        margin-bottom: 1rem;
    }

    .event-media-card {
        background: #111827;
        border-radius: 12px;
        padding: 0.6rem 0.7rem;
        color: #f9fafb;
        font-size: 0.75rem;
        display: flex;
        flex-direction: column;
        gap: 0.4rem;
    }

    .event-media-thumb {
        width: 100%;
        border-radius: 8px;
        display: block;
        margin-bottom: 0.3rem;
    }

    .event-media-video {
        width: 100%;
        max-height: 220px;
        border-radius: 8px;
        background: #000;
    }

    .event-media-meta {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 0.25rem;
    }

    .event-media-label {
        font-weight: 600;
        font-size: 0.8rem;
    }

    .event-media-sub {
        font-size: 0.7rem;
        opacity: 0.8;
    }

    .event-media-download {
        font-size: 0.7rem;
        color: #bfdbfe;
        text-decoration: none;
        white-space: nowrap;
    }

    .event-media-empty {
        font-size: 0.8rem;
        color: #9ca3af;
        margin-top: 0.25rem;
    }
