@import url("./components/drawer.css");
@import url("./theme.css");
@import url("./components/custom-select.css");
@import url("./components/custom-checkbox.css");
@import url("./components/monitor-summaries.css");


* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.5;
}

button,
input,
textarea,
select {
  font: inherit;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 28px clamp(20px, 4vw, 56px);
  border-bottom: 3px solid var(--header-accent);
  background: var(--header-bg);
  color: var(--header-text);
}

.topbar p {
  color: var(--header-muted);
}

.topbarActions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

h1,
h2,
p {
  margin: 0;
}

h1 {
  font-size: 28px;
  line-height: 1.15;
}

h2 {
  font-size: 18px;
}

.brandWordmark {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  color: var(--header-text);
  text-decoration: none;
  font-size: 23px;
  line-height: 1.5;
  font-weight: 800;
  letter-spacing: -0.8px;
}

.brandWordmark img { display: block; }
.brandDot { color: var(--brand-amber); }

.copyrightFooter {
  padding: 20px 24px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.8;
  text-align: center;
}

.copyrightLegalLinks {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 20px;
  margin-bottom: 12px;
}

.copyrightFooter a {
  color: var(--accent);
  font-weight: 700;
  text-underline-offset: 3px;
}

.copyrightFooter a:hover {
  color: var(--attention);
}

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

.layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 380px;
  gap: 20px;
  padding: 24px clamp(20px, 4vw, 56px);
}

.panel {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 18px;
}

.wide {
  grid-column: 1 / -1;
}

.panelHeader {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.modalForm {
  display: grid;
  gap: 16px;
  padding: 22px;
}

.modalForm .formActions {
  justify-content: flex-end;
}

label,
.codeLabel {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
}

input,
textarea,
select {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px 12px;
  color: var(--text);
  background: var(--panel);
}

textarea {
  resize: vertical;
}

.button,
.iconButton {
  border: 1px solid transparent;
  border-radius: 6px;
  background: var(--accent);
  color: var(--on-accent);
  cursor: pointer;
  font-weight: 700;
  min-height: 42px;
  padding: 0 14px;
}

.button:hover,
.iconButton:hover {
  border-color: var(--accent);
  background: var(--panel);
  color: var(--accent);
}

.button:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.secondary,
.iconButton {
  background: var(--surface-soft);
  color: var(--accent-strong);
}

.small {
  min-height: 34px;
  padding: 0 10px;
  font-size: 13px;
}

.danger,
.resumeButton {
  background: var(--attention);
  color: var(--on-accent);
}

.danger:hover,
.resumeButton:hover {
  border-color: var(--attention-hover);
  background: var(--attention-hover);
  color: var(--on-accent);
}

.siteList,
.incidentList,
.embedSites {
  display: grid;
  gap: 10px;
}

.siteItem,
.incidentItem,
.embedSite,
.detectionItem {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px;
}

.siteItem.selected {
  border-color: var(--attention);
  box-shadow: inset 3px 0 0 var(--brand-amber);
  background: var(--surface-soft);
}

.siteBody {
  min-width: 0;
  cursor: pointer;
}

.siteTitle {
  font-weight: 800;
}

.siteDetectionsButton {
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.siteUrl {
  display: block;
  overflow: hidden;
  color: var(--accent-strong);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.siteMeta,
.incidentItem p,
.embedSite p,
.embedIncidents p {
  color: var(--muted);
  font-size: 13px;
}

.siteActions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.statusDot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  margin-top: 6px;
  background: var(--unknown);
}

.statusDot.up,
.checkBar.up,
.summaryBadge.up,
.monitorBadge.up {
  background: var(--up);
}

.statusDot.down,
.checkBar.down,
.summaryBadge.down,
.monitorBadge.down {
  background: var(--down);
}

.statusDot.paused,
.summaryBadge.paused,
.monitorBadge.paused {
  background: var(--paused);
}

.statusDot.unknown,
.summaryBadge.unknown,
.monitorBadge.unknown {
  background: var(--unknown);
}

.checkBars {
  display: flex;
  gap: 3px;
  height: 22px;
  margin-top: 10px;
  overflow: hidden;
}

.checkBar {
  width: 7px;
  height: 22px;
  border-radius: 3px;
  background: var(--unknown);
}

.embedPicker {
  display: grid;
  gap: 8px;
  max-height: 180px;
  overflow: auto;
  padding: 2px;
}

.checkChoice {
  display: flex;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 8px;
  color: var(--text);
  font-weight: 600;
}

.checkChoice input {
  width: auto;
}

.formActions,
.widgetActions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.widgetList {
  display: grid;
  gap: 8px;
  margin: 14px 0;
}

.widgetItem {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px;
}

.widgetItem.selected {
  border-color: var(--accent);
  box-shadow: inset 3px 0 0 var(--accent);
}

.widgetSelect {
  display: grid;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  cursor: pointer;
  text-align: left;
}

.widgetSelect span {
  overflow: hidden;
  color: var(--muted);
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.previewFrame {
  width: 100%;
  height: 320px;
  margin-top: 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--panel);
}

.incidentItem {
  grid-template-columns: minmax(0, 1fr) auto;
}

.detectionList {
  display: grid;
  gap: 10px;
}

.detectionItem {
  grid-template-columns: minmax(0, 1fr) auto;
  overflow-wrap: anywhere;
}

.detectionItem > div {
  min-width: 0;
}

.detectionItem.down {
  border-color: var(--down-border);
}

.detectionItem details {
  grid-column: 1 / -1;
}

.detectionItem summary {
  color: var(--accent);
  cursor: pointer;
  font-weight: 800;
}

.detectionItem pre {
  max-height: 320px;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-code);
  color: var(--text);
  font-size: 12px;
  line-height: 1.45;
  padding: 12px;
  white-space: pre-wrap;
  word-break: break-word;
}

.incidentDuration {
  border-radius: 999px;
  background: var(--surface-badge);
  color: var(--text);
  font-size: 13px;
  font-weight: 700;
  padding: 4px 10px;
}

.emptyState {
  border: 1px dashed var(--border);
  border-radius: 8px;
  color: var(--muted);
  padding: 18px;
  text-align: center;
}

.confirmDialog,
.formModal,
.contentModal {
  width: min(100% - 32px, 420px);
  border: 0;
  border-radius: 8px;
  padding: 0;
  box-shadow: 0 24px 80px var(--modal-shadow);
  background: var(--panel);
  color: var(--text);
}

.confirmDialog::backdrop,
.formModal::backdrop,
.contentModal::backdrop {
  background: var(--modal-backdrop);
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}

.largeModal {
  width: min(100% - 32px, 880px);
  max-height: 85vh;
  overflow-y: auto;
}

.contentModalPanel {
  padding: 22px;
}



.confirmDialogPanel {
  display: grid;
  gap: 18px;
  padding: 22px;
}

.confirmDialogPanel p {
  margin-top: 6px;
  color: var(--muted);
}

.confirmDialogActions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.compact {
  padding: 10px;
}

.error {
  color: var(--error-text);
}

.errorText {
  color: var(--error-text);
  font-size: 13px;
  font-weight: 700;
}

.embedBody {
  background: var(--panel);
}

.embedShell {
  min-width: 260px;
  padding: 16px;
}

.embedSummary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}

.embedSummary h1 {
  font-size: 20px;
}

.summaryBadge {
  border-radius: 999px;
  color: var(--on-status);
  font-size: 12px;
  font-weight: 800;
  padding: 5px 10px;
  text-transform: uppercase;
}

.embedSites {
  margin-top: 14px;
}

.embedSite {
  grid-template-columns: auto minmax(0, 1fr);
  padding: 10px;
}

.embedSiteHeader {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.monitorBadge {
  border-radius: 999px;
  color: var(--on-status);
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 800;
  padding: 3px 8px;
  text-transform: uppercase;
}

.embedCheckBars {
  display: flex;
  gap: 2px;
  height: 16px;
  margin-top: 8px;
  overflow: hidden;
}

.embedCheckBars .checkBar {
  width: 6px;
  height: 16px;
}

.embedIncidents {
  margin-top: 16px;
}

.embedIncidents h2 {
  font-size: 14px;
  margin-bottom: 6px;
}

.embedIncident {
  border-top: 1px solid var(--border);
  padding: 8px 0;
}

.embedIncident strong {
  display: block;
  font-size: 13px;
}

.embedIncident p {
  color: var(--muted);
  font-size: 12px;
}

.embedMoreButton {
  margin-top: 8px;
}

@media (max-width: 920px) {
  .layout {
    grid-template-columns: 1fr;
  }

  .topbar {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media (max-width: 560px) {
  .siteItem {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .siteActions {
    grid-column: 1 / -1;
    justify-content: flex-start;
  }
}

.formModal {
  max-height: 85vh;
  overflow-y: auto;
}

.monitorPicker {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}

.monitorPicker legend {
  color: var(--muted);
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 6px;
}

.largeModal .embedPicker {
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  max-height: 40vh;
}

.largeModal .checkChoice {
  overflow-wrap: anywhere;
}

.embedCodeActions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.widgetPreviewModal .previewFrame {
  display: block;
  height: 60vh;
  margin: 0;
}

.actionIcon {
  margin-inline-end: 0.25em;
  flex-shrink: 0;
}

.widgetSelect strong {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.widgetSelect strong span {
  color: inherit;
  font-size: inherit;
}

@media (prefers-reduced-motion: reduce) {
  .actionIcon.fa-spin {
    animation: none;
  }
}

.embedMetrics {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin-top: 4px;
}

.embedSiteHeader strong {
  min-width: 0;
  overflow-wrap: anywhere;
}

.embedSummary .summaryBadge {
  flex-shrink: 0;
}

.adminTheme :is(button, input, textarea, select, a, summary):focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
}

.adminTheme input[type="checkbox"] {
  accent-color: var(--accent);
}

/* Shared monitor browser: dashboard and widget picker. */
.siteSearchLabel { display: grid; gap: 6px; font-size: 14px; font-weight: 600; }
.siteSearchLabel input { width: 100%; min-width: 0; }
.siteSearchHint { margin: 6px 0 12px; font-size: 12px; }
.sitePaging { display: flex; align-items: center; gap: 12px; justify-content: space-between; margin-bottom: 16px; }
.sitePaging [role="status"] { font-size: 12px; text-align: center; }
@media (max-width: 480px) { .sitePaging { flex-wrap: wrap; } .sitePaging [role="status"] { order: 3; width: 100%; } }

.monitorFilters { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; margin-block: 12px; }
.monitorFilters label { flex: 1 1 160px; min-width: 0; }
.monitorFilters input { width: 100%; }

/* Widget editor: compact shared filters, a bounded picker and quiet embed tools. */
.widgetEditorForm { gap: 20px; }
.widgetEditorForm h2,
.widgetEditorForm p { margin: 0; }
.widgetEditorForm .monitorPicker legend { color: var(--text); margin-bottom: 12px; }
.monitorPickerBody { display: grid; gap: 12px; }
.compactSiteBrowser { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: 8px 12px; }
.compactSiteBrowser .siteSearchLabel { font-size: 13px; }
.compactSiteBrowser .monitorFilters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) auto; gap: 8px; margin: 0; }
.compactSiteBrowser .siteSearchHint,
.compactSiteBrowser .errorText { grid-column: 1 / -1; }
.compactSiteBrowser .clearFilters { min-height: 42px; }
.widgetEditorForm .selectionCount { font-size: 12px; }
.widgetEditorForm .embedPicker { gap: 6px; max-height: 240px; padding: 4px; border: 1px solid var(--border); border-radius: 6px; }
.widgetEditorForm .checkChoice { padding: 10px; border-radius: 4px; font-size: 13px; cursor: pointer; }
.widgetEditorForm .checkChoice:hover,
.widgetEditorForm .checkChoice:has(input:checked) { background: var(--surface-soft); }
.widgetEditorForm .checkChoice input { margin: 0; flex-shrink: 0; accent-color: var(--accent); }
.widgetEditorForm .sitePaging { margin: 0; }
.widgetEmbedSection { border-top: 1px solid var(--border); padding-top: 16px; }
.widgetEmbedSection summary { cursor: pointer; font-size: 13px; font-weight: 600; }
.widgetEmbedSection summary:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 4px; }
.widgetEmbedBody { display: grid; gap: 12px; padding-top: 12px; }
.widgetEditorForm .widgetEmbedCode { font-family: monospace; font-size: 12px; background: var(--surface-code); }
.widgetEmbedPending,
.widgetEditorForm .copyFeedback { font-size: 12px; }
.widgetEditorForm .formActions,
.monitorEditorForm .formActions { position: sticky; bottom: 0; margin: 0 -22px -22px; padding: 16px 22px; background: var(--panel); border-top: 1px solid var(--border); z-index: 1; }
@media (max-width: 640px) {
  .compactSiteBrowser { grid-template-columns: minmax(0, 1fr); }
  .compactSiteBrowser .monitorFilters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .compactSiteBrowser .clearFilters { grid-column: 1 / -1; justify-self: start; min-height: auto; }
}

.helpField { display: grid; gap: 6px; }
.fieldLabelRow { display: flex; align-items: center; gap: 8px; }
.helpTooltip { position: relative; display: inline-flex; }
.helpTooltipButton { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--muted); cursor: help; }
.helpTooltipButton:hover { color: var(--attention); background: var(--surface-soft); }
.helpTooltipText { position: absolute; z-index: 3; bottom: 100%; left: -100px; width: min(260px, 70vw); padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel); color: var(--text); box-shadow: 0 4px 16px var(--modal-shadow); font-size: 12px; font-weight: 400; line-height: 1.5; }

/* Bounded bulk actions share the monitor list, brand tokens and modal system. */
.bulkSelectionHeader { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--border); }
.bulkPageChoice { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.bulkPageChoice input,
.monitorSelection { width: 18px; height: 18px; margin: 0; accent-color: var(--accent); flex-shrink: 0; }
.bulkSelectionCount { color: var(--muted); font-size: 12px; }
.bulkActionBar { padding: 14px; margin-bottom: 12px; border: 1px solid var(--border); border-inline-start: 3px solid var(--brand-amber); border-radius: 8px; background: var(--surface-soft); }
.bulkActionIntro { display: grid; gap: 4px; margin-bottom: 12px; font-size: 13px; }
.bulkActionIntro span { font-size: 12px; }
.bulkButtons { display: flex; flex-wrap: wrap; gap: 8px; }
.bulkFeedback { font-size: 13px; color: var(--text); margin: 0 0 12px; }
.siteMarker { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.bulkLabelField { display: grid; gap: 8px; }
.bulkLabelField input[readonly] { background: var(--surface-soft); color: var(--muted); }

.bulkLabelSummary { margin: 0; font-size: 13px; }
.bulkLabelField ~ .fieldLabelRow { position: relative; font-size: 12px; }
.bulkLabelField ~ .fieldLabelRow .helpTooltip { position: static; }
.bulkLabelField ~ .fieldLabelRow .helpTooltipText { left: 0; }

.monitorPanelActions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
.monitorImportForm .transferIntro,
.monitorImportForm .transferHint,
.monitorImportForm .importStatus { margin: 0; font-size: 13px; line-height: 1.5; }
.monitorImportForm .transferHint { font-size: 12px; }
.importPreview { max-height: 36vh; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
.importPreview table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 12px; }
.importPreview th { position: sticky; top: 0; background: var(--surface-soft); text-align: left; }
.importPreview th, .importPreview td { padding: 12px; vertical-align: top; overflow-wrap: anywhere; border-bottom: 1px solid var(--border); }
.importPreview th:first-child { width: 46%; }
.importPreview th:nth-child(2) { width: 20%; }
.importPreview td span { display: block; margin-top: 4px; color: var(--muted); }
@media (max-width: 560px) {
  .monitorPanelActions .button { font-size: 12px; padding: 10px; }
  .importPreview th, .importPreview td { padding: 8px; }
}

.importCaption { text-align: left; padding: 8px 12px; font-weight: 600; color: var(--muted); }

.monitorImportForm input[type="file"]::file-selector-button { border: 0; border-radius: 4px; padding: 8px 10px; margin-right: 10px; background: var(--surface-soft); color: var(--text); font: inherit; cursor: pointer; }

/* Shared monitor editor: essentials first, optional settings progressively disclosed. */
.monitorEditorForm { gap: 20px; }
.monitorEditorForm > h2 { margin: 0; }
.monitorIntro { margin: -10px 0 0; color: var(--muted); font-size: 13px; line-height: 1.6; }
.monitorEssentials { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 20px; }
.monitorSection { display: grid; align-content: start; gap: 14px; min-width: 0; }
.monitorEditorForm h3 { margin: 0; color: var(--text); font-size: 14px; font-weight: 600; }
.monitorSchedule { padding: 18px; border-radius: 8px; background: var(--surface-soft); }
.monitorHint { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; font-weight: 400; }
.monitorSettingsSection { border: 1px solid var(--border); border-radius: 8px; padding: 16px; min-width: 0; }
.monitorSettingsSection summary { cursor: pointer; color: var(--text); font-size: 14px; font-weight: 600; }
.monitorSettingsSection summary::marker { color: var(--attention); }
.monitorSettingsSection summary:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 5px; border-radius: 2px; }
.monitorSummaryHint { display: block; margin: 5px 0 0 18px; color: var(--muted); font-size: 12px; line-height: 1.5; font-weight: 400; }
.httpSettingsFields, .monitorOrganizationFields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; padding-top: 20px; }
.monitorHttpBasics, .monitorResponseRules { display: grid; align-content: start; gap: 12px; min-width: 0; }
.monitorResponseRules { padding-left: 24px; border-left: 1px solid var(--border); }
.monitorFieldPair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.monitorEditorForm .fieldLabelRow { position: relative; min-height: 24px; }
.monitorEditorForm .helpTooltip { position: static; }
.monitorEditorForm .helpTooltipText { left: 0; max-width: min(260px, 70vw); }
.keywordFields { display: grid; gap: 12px; padding: 12px; background: var(--surface-soft); border-radius: 6px; }
.keywordFields[hidden] { display: none; }
@media (max-width: 640px) {
  .monitorEssentials, .httpSettingsFields, .monitorOrganizationFields { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .monitorResponseRules { padding: 18px 0 0; border-left: 0; border-top: 1px solid var(--border); }
  .monitorSettingsSection { padding: 14px; }
}

/* Fixed, full-width feedback. Semantic colors are centralized in theme.css. */
.confirmationStrip { position: fixed; inset: auto 0 0; z-index: 2147483647; width: auto; max-width: none; max-height: min(45vh, 320px); overflow-y: auto; box-sizing: border-box; display: flex; align-items: center; gap: 12px; margin: 0; padding: 13px clamp(20px, 4vw, 56px); padding-bottom: calc(13px + env(safe-area-inset-bottom, 0px)); border: 0; border-top: 1px solid var(--feedback-success-border); border-radius: 0; background: var(--feedback-success-bg); color: var(--feedback-success-text); animation: confirmationAppear 180ms ease-out; }
.confirmationStrip[data-tone="error"] { background: var(--feedback-error-bg); color: var(--feedback-error-text); border-color: var(--feedback-error-border); }
.confirmationStrip[data-tone="info"] { background: var(--surface-soft); color: var(--text); border-color: var(--border); }
.confirmationStrip[hidden] { display: none; }
.confirmationStrip p { flex: 1; font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; min-width: 0; }
.confirmationMark { color: inherit; font-size: 20px; }
.confirmationStrip button { flex-shrink: 0; width: 36px; height: 36px; border: 0; border-radius: 6px; color: inherit; background: transparent; font-size: 24px; cursor: pointer; }
.confirmationStrip button:hover { background: var(--panel); color: var(--text); }
@keyframes confirmationAppear { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .confirmationStrip { animation: none; } }

.confirmationAnnouncement { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.jsonSettingsFields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; padding-top: 20px; align-items: start; }
.jsonFields { display: grid; gap: 12px; min-width: 0; }
.jsonComparison { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.jsonFields[hidden], .jsonComparison[hidden], .jsonValueField[hidden] { display: none; }
@media (max-width: 640px) { .jsonSettingsFields { grid-template-columns: minmax(0, 1fr); gap: 18px; } }

.requestSettingsFields, .requestDetailsFields, .requestHeaders, .requestAuthFields { display: grid; gap: 14px; min-width: 0; }
.requestSettingsFields { padding-top: 20px; }
.requestSettingsFields > label, .requestSettingsFields > .helpField { max-width: 400px; }
.requestHeaderSection { display: grid; gap: 12px; }
.requestHeaderRow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 12px; align-items: end; }
.requestBasic { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.requestDetailsFields { padding: 16px; background: var(--surface-soft); border-radius: 8px; }
.monitorRequestSettings [hidden] { display: none; }
.requestHeaderRow .iconButton { margin-bottom: 4px; }
@media (max-width: 640px) {
  .requestBasic { grid-template-columns: minmax(0, 1fr); }
  .requestHeaderRow { grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
  .requestHeaderRow label { grid-column: 1; }
  .requestHeaderRow .iconButton { grid-column: 2; grid-row: 1 / 3; align-self: center; }
}

/* Shared search feedback stays inside the field without shifting the toolbar. */
.siteSearchLabel { position: relative; }
.siteSearchLabel input { padding-right: 40px; }
.searchLoader { position: absolute; right: 14px; bottom: 13px; width: 16px; height: 16px; border: 2px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: searchSpin .75s linear infinite; pointer-events: none; }
.searchLoader[hidden] { display: none; }
@keyframes searchSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .searchLoader { animation: none; border-style: dotted; } }

.statusDot.delayed, .summaryBadge.delayed, .monitorBadge.delayed { background: var(--delayed); }

.statusDot.maintenance, .summaryBadge.maintenance, .monitorBadge.maintenance, .checkBar.maintenance { background: var(--maintenance); }
.detectionItem.maintenance { border-left: 3px solid var(--maintenance); }

.maintenanceSettingsFields { display: grid; gap: 14px; padding-top: 18px; }
.maintenanceFields input { min-width: 0; width: 100%; }
@media (max-width: 640px) { .maintenanceFields .monitorFieldPair { grid-template-columns: minmax(0, 1fr); } }

/* Security shares the standard drawer and central theme palette. */
.securityToolbar { display: flex; margin: 1.5rem 0 1rem; }
.securitySessions { display: grid; gap: 1rem; margin-bottom: 1rem; }
.securitySession { display: flex; align-items: flex-start; gap: 1rem; padding: 1.25rem; border: 1px solid var(--border); border-radius: 18px; }
.securitySession > div { min-width: 0; flex: 1; }
.securitySession h3 { margin: 0 0 .65rem; font-size: 1rem; }
.securitySession p { font-size: .82rem; line-height: 1.6; margin: .35rem 0; overflow-wrap: anywhere; }
.securityDevice { max-height: 5.3em; overflow: auto; }
.securitySession .button { flex-shrink: 0; }
@media (max-width: 520px) { .securitySession { flex-direction: column; } }

.topbarActions .iconButton { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; text-decoration: none; }
.topbarActions .iconButton .actionIcon { margin: 0; }

.resourceAccessForm { display:grid; gap:16px; }
.accessMember { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:16px 0; border-bottom:1px solid var(--border); }
.accessMember strong,.accessMember p { overflow-wrap:anywhere; }
.accessMember p { margin:4px 0 0; font-size:12px; }
.accessMember .customSelect { width:160px; flex-shrink:0; }
.accessOwner { color:var(--muted); font-size:13px; white-space:nowrap; }
.resourceAccessModal .accessMore { justify-self:start; }
@media(max-width:600px) { .accessMember { align-items:flex-start; flex-direction:column; gap:10px; } .accessMember .customSelect { width:100%; } }

.resourceAccessForm[hidden], .siteActions [hidden], .widgetActions [hidden] { display:none; }

.widgetBrandingSection { border:1px solid var(--border); border-radius:14px; padding:16px; }
.widgetBrandingSection summary { cursor:pointer; font-weight:600; }
.widgetBrandingFields { display:grid; gap:16px; padding-top:16px; }
.widgetBrandingFields p { margin:0; font-size:13px; line-height:1.6; }
.widgetColors { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.widgetColors input[type=color] { width:100%; height:44px; padding:4px; cursor:pointer; }
.resetWidgetBranding { justify-self:start; }
@media(max-width:600px) { .widgetColors { grid-template-columns:repeat(2,minmax(0,1fr)); } }

.widgetLogoActions { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.previewWidgetDraft { justify-self:start; }

.widgetLogoThumbnail { width:40px; height:40px; flex:0 0 40px; object-fit:contain; padding:4px; border:1px solid var(--border); border-radius:8px; background:var(--surface-soft); }
.widgetLogoThumbnail[hidden] { display:none; }

/* Keep language controls compact in both shared widget surfaces. */
.widgetLanguagePicker, .widgetPreviewLanguage { display: grid; gap: .4rem; }
.widgetLanguagePicker label, .widgetPreviewLanguage label { display: grid; gap: .4rem; max-width: 22rem; }
.widgetLanguageHelp { margin: 0; font-size: .82rem; line-height: 1.5; }
.widgetPreviewLanguage { margin-bottom: 1rem; }

.widgetLocalizedCopy { border:1px solid var(--border); border-radius:14px; padding:16px; }
.widgetLocalizedCopy summary { cursor:pointer; font-weight:600; }

.widgetEditorHeader { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; }
.widgetEditorHeader h2 { margin:0; padding-top:4px; }
.widgetEditorHeader .widgetLanguagePicker, .widgetPreviewLanguage { width:240px; flex:0 0 240px; margin-left:auto; margin-bottom:0; }
.widgetLanguageHelp[hidden] { display:none; }
.widgetCopyContext { display:grid; gap:8px; }
.widgetCopyContext p { margin:0; font-size:12px; line-height:1.6; }
.widgetCopyLocale, .widgetEmbedLocale { display:inline-flex; width:fit-content; align-items:center; border:1px solid var(--border); border-radius:999px; background:var(--surface-soft); color:var(--text); font-size:12px; font-weight:600; padding:6px 10px; }
.widgetEmbedContext { display:flex; gap:10px; align-items:center; flex-wrap:wrap; font-size:12px; }
@media(max-width:600px) {
  .widgetEditorHeader { flex-wrap:wrap; gap:12px; }
  .widgetEditorHeader .widgetLanguagePicker { flex:1 1 100%; width:100%; }
  .widgetPreviewModal .panelHeader { flex-wrap:wrap; }
  .widgetPreviewLanguage { order:3; width:100%; flex:1 1 100%; }
}

/* Shared UptimeOwl preparation overlay. */
.pageLoader { position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:24px;border:0;background:transparent;color:var(--text); }
.pageLoader[open] { display:grid;place-items:center; }
.pageLoader::backdrop { background:var(--modal-backdrop);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px); }
.pageLoaderPanel { width:min(100%,390px);padding:40px 28px;text-align:center;border:1px solid var(--border);border-radius:24px;background:var(--panel);box-shadow:0 24px 80px var(--modal-shadow);outline:none; }
.pageLoaderMascot { position:relative;display:grid;place-items:center;width:100px;height:100px;margin:0 auto 20px; }
.pageLoaderMascot img { object-fit:contain; }.pageLoaderMascot span { position:absolute;inset:0;border:2px solid var(--border);border-top-color:var(--brand-amber);border-radius:50%;animation:owlLoadingOrbit 1.4s linear infinite; }
.pageLoaderBrand { font-size:1.4rem;font-weight:700;letter-spacing:-.04em;margin:0 0 20px; }.pageLoaderBrand span { color:var(--brand-amber); }
.pageLoaderMessage { font-size:.95rem;line-height:1.6;margin:0 0 10px; }.pageLoaderHint { font-size:.8rem;line-height:1.6;color:var(--muted);margin:0; }
@keyframes owlLoadingOrbit { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){.pageLoaderMascot span{animation:none;}}

.billingRecovery { padding:24px;border:1px solid var(--brand-amber);border-radius:20px;background:var(--panel);margin-bottom:28px; }
.billingRecovery h2 { margin:4px 0 12px; }.recoveryCopy { color:var(--muted);line-height:1.6;max-width:80ch; }
.recoveryInvoice { display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-top:1px solid var(--border); }.recoveryInvoice p { margin:6px 0 0; }.recoveryInvoice strong { color:var(--text); }.recoveryReturn { margin-top:16px; }
@media(max-width:600px){.billingRecovery{padding:18px;}.recoveryInvoice{align-items:flex-start;flex-direction:column;gap:12px;}.recoveryInvoice .button{width:100%;}}

.workspaceBillingNotice {display:flex;align-items:center;gap:14px;margin:0 0 24px;padding:16px 20px;border:1px solid var(--border);border-radius:16px;background:var(--panel);color:var(--text)}
.workspaceBillingNotice>i {color:var(--accent);font-size:1.2rem;flex-shrink:0}.workspaceBillingNotice p {margin:0;flex:1;font-size:.9rem;line-height:1.55}.workspaceBillingNotice a {font-weight:700;white-space:nowrap;color:var(--text)}
.workspaceBillingNotice.needsPayment {border-color:var(--feedback-error-border);background:var(--feedback-error-bg);border-left-width:4px}
.billingSuspension {display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:32px;padding:24px;border:1px solid var(--border);border-radius:18px}.billingSuspension h2 {margin:4px 0 10px}.billingSuspension .accountHelp {max-width:720px;margin:0}.suspensionActions {display:flex;gap:8px;flex-shrink:0}
@media(max-width:640px){.workspaceBillingNotice{flex-wrap:wrap;padding:14px}.workspaceBillingNotice p{flex-basis:80%}.workspaceBillingNotice a{margin-left:32px}.billingSuspension{flex-direction:column;align-items:stretch;padding:18px}.suspensionActions{flex-wrap:wrap}}

.workspaceBillingNotice[hidden] {display:none}

/* Keep stale protected views out of sight while access-change navigation finishes. */
body.accessChanging > :not(.accessChangeMessage) { display:none !important; }

[data-registration-link][hidden] { display:none !important; }

.confirmationName { display:grid; gap:8px; margin-top:20px; font-size:13px; }
.confirmationName[hidden] { display:none; }
.confirmationName input { width:100%; box-sizing:border-box; }

.confirmationStrip::backdrop { background:transparent; pointer-events:none; }

.widgetLanguageLabel { position:relative; }
.widgetLanguageLabel .helpTooltip { position:static; }
.widgetLanguageLabel .helpTooltipText { top:calc(100% + 8px); bottom:auto; left:auto; right:0; }

.contractRecord { border-top: 1px solid var(--border); padding: 12px 0; }
.contractRecord summary { cursor: pointer; color: var(--accent); font-weight: 700; }
.contractRecord > .accountHelp { overflow-wrap: anywhere; }

.monitorGuideLink { display:inline-flex; align-items:center; flex-wrap:wrap; gap:6px; align-self:flex-start; color:var(--brand-amber-strong); font-size:12px; font-weight:600; line-height:1.6; text-decoration:none; margin-block:4px; }
.monitorGuideLink:hover { color:var(--brand-amber-hover); text-decoration:underline; text-underline-offset:3px; }
.monitorGuideLink:focus-visible { outline:2px solid var(--focus-ring); outline-offset:4px; border-radius:4px; }

/* Shared switches used by account settings and dashboard branding. */
.toggleField { display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-bottom:1px solid var(--border);margin-bottom:16px; }
.toggleField label { cursor:pointer; }.toggleField .accountHelp { margin:6px 0 0; }
input.toggleSwitch { appearance:none;flex:0 0 46px;width:46px;height:26px;min-height:0;padding:0;margin:0;border:1px solid var(--border);border-radius:999px;background:var(--muted);cursor:pointer;position:relative;transition:background .2s; }
input.toggleSwitch::after { content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--panel);transition:transform .2s; }
input.toggleSwitch:checked { background:var(--brand-midnight);border-color:var(--brand-midnight); }
input.toggleSwitch:checked::after { transform:translateX(20px);background:var(--brand-amber); }
input.toggleSwitch:focus-visible { outline:3px solid var(--brand-amber);outline-offset:3px; }
input.toggleSwitch:disabled { opacity:.5;cursor:not-allowed; }
@media(prefers-reduced-motion:reduce){input.toggleSwitch,input.toggleSwitch::after{transition:none;}}

.toggleField .accountHelp{font-size:.85rem;line-height:1.5;color:var(--muted)}

/* Shared field-help layout; keep long hints anchored within the field width. */
.fieldWithHelp { display:grid;gap:8px;min-width:0; }
.fieldHelpRow { position:relative;justify-content:flex-start; }
.fieldHelpRow .helpTooltip { position:static; }
.fieldHelpRow .helpTooltipText { left:0;max-width:100%; }

/* Protocol-specific editor fields must respect their shared hidden state. */
.monitorEditorForm [hidden] { display:none; }

/* Keep long secret commands within the shared dialog on narrow screens. */
.heartbeatCredentialsForm { grid-template-columns: minmax(0, 1fr); }
.heartbeatCredentialsForm > * { min-width: 0; }

/* Monitor views and setup intent share the existing theme and editor structure. */
.monitorViews { display:flex;flex-wrap:wrap;gap:8px;margin-block:4px 12px; }
.monitorViews a { display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:12px;color:var(--muted);text-decoration:none;font-weight:650; }
.monitorViews a[aria-current] { background:var(--brand-midnight);color:var(--brand-amber); }
.monitorViews a:hover { box-shadow:inset 0 0 0 1px var(--border); }
.monitorViewHint { color:var(--muted);font-size:13px;margin:0 0 20px; }
.monitorPurpose { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px; }
.monitorPurpose button { display:flex;align-items:center;gap:14px;text-align:left;padding:16px;border:1px solid var(--border);border-radius:14px;background:var(--panel);color:var(--text);cursor:pointer; }
.monitorPurpose button[aria-pressed="true"] { border-color:var(--brand-amber);background:var(--surface-soft); }
.monitorPurpose button>i { color:var(--brand-amber-strong); }
.monitorPurpose strong,.monitorPurpose small { display:block; }
.monitorPurpose small { margin-top:5px;color:var(--muted);font-weight:400; }
.monitorPurpose button:disabled { cursor:default;opacity:.65; }
@media(max-width:600px){.monitorPurpose{grid-template-columns:minmax(0,1fr);}.monitorViews a{padding:9px 10px;font-size:12px;}}

.monitorDomainSettings .domainDnsFields,.monitorDomainSettings .domainExpiryFields { display:grid;gap:14px;min-width:0; }
.monitorDomainSettings [hidden] { display:none; }
