/*
 * Shared foundation for every page. Light is the base palette and dark overrides it through
 * prefers-color-scheme, so no page has to redeclare a theme. Page styles consume these tokens
 * (`--surface`, `--surface-2`, `--surface-3`, `--border`, `--input-border`, `--border-strong`,
 * `--text`, `--muted`, `--muted-2`, `--accent`, `--accent-hover`, `--accent-ink`, `--link`,
 * `--selection`, `--danger`, `--success`, `--warning`, `--chart-grid`, `--shadow*`,
 * `--radius-sm` (controls), `--radius-md`, `--radius-lg` (panels), `--control-height`,
 * `--duration-*`, `--ease-*`) instead of hardcoding light-only or dark-only values.
 */
:root {
  color-scheme: light dark;
  --bg: #f7f9fc;
  --surface: #ffffff;
  --surface-2: #f1f5f9;
  --surface-3: #e2e8f0;
  --text: #111827;
  --muted: #5f6b7a;
  --muted-2: #55606e;
  --border: #dce4ee;
  --input-border: #7d8794;
  --border-strong: #6b7280;
  --accent: #0063d1;
  --accent-hover: #006fe6;
  --accent-ink: #ffffff;
  --link: #005bc2;
  --link-hover: #004c9e;
  --selection: rgba(0, 99, 209, 0.1);
  --focus-ring: #0063d1;
  --focus-ring-soft: rgba(0, 99, 209, 0.16);
  --danger: #c0272d;
  --danger-fill: rgba(192, 39, 45, 0.1);
  --success: #087a4b;
  --success-fill: rgba(8, 122, 75, 0.08);
  --warning: #8a5306;
  --warning-fill: rgba(138, 83, 6, 0.1);
  --chart-grid: #e2e8f0;
  --chart-grid-strong: #cbd5e1;
  --shadow: 0 12px 32px rgb(15 23 42 / 8%);
  --shadow-soft: 0 6px 18px rgb(15 23 42 / 6%);
  --radius-lg: 14px;
  --radius-md: 12px;
  --radius-sm: 10px;
  --control-height: 44px;
  --page-width: 100%;
  --font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  --page-wash:
    radial-gradient(900px 520px at 8% -10%, rgba(0, 99, 209, 0.06), transparent 62%),
    radial-gradient(760px 560px at 100% 10%, rgba(15, 23, 42, 0.03), transparent 65%);
  --network-trace-width: 3px;
  --network-trace-top: rgba(0, 99, 209, 0.75);
  --network-trace-duration: 1.4s;
  --network-trace-tail: 100%;
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --duration-fast: 140ms;
  --duration-med: 220ms;
  --duration-slow: 360ms;
}

@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --bg: #09090b;
    --surface: #141418;
    --surface-2: #1d1d22;
    --surface-3: #29292f;
    --text: #f5f5f7;
    --muted: #a1a1aa;
    --muted-2: #8e8e99;
    --border: #29292f;
    --input-border: #6b7280;
    --border-strong: #9a9aa4;
    --accent: #0a6ae0;
    --accent-hover: #0f70e0;
    --accent-ink: #ffffff;
    --link: #4da3ff;
    --link-hover: #7dbcff;
    --selection: rgba(77, 163, 255, 0.16);
    --focus-ring: #4da3ff;
    --focus-ring-soft: rgba(77, 163, 255, 0.24);
    --danger: #fc9295;
    --danger-fill: rgba(252, 146, 149, 0.14);
    --success: #4ade80;
    --success-fill: rgba(74, 222, 128, 0.14);
    --warning: #fbbf24;
    --warning-fill: rgba(251, 191, 36, 0.14);
    --chart-grid: #2a2a31;
    --chart-grid-strong: #3a3a42;
    --shadow: 0 18px 48px rgb(0 0 0 / 28%);
    --shadow-soft: 0 10px 28px rgb(0 0 0 / 24%);
    --page-wash: radial-gradient(circle at 50% -20%, rgba(10, 132, 255, 0.08), transparent 36rem);
    --network-trace-top: rgba(77, 163, 255, 0.8);
  }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-family);
  font-size: 14px;
  font-kerning: normal;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  line-height: 1.5;
  color: var(--text);
  background-color: var(--bg);
  background-image: var(--page-wash);
}

[data-network-trace-layer] {
  position: fixed;
  top: 0;
  width: var(--network-trace-width);
  height: 100vh;
  pointer-events: none;
  z-index: 999;
  overflow: hidden;
}

[data-network-trace-layer][data-side="left"] {
  left: 0;
}

[data-network-trace-layer][data-side="right"] {
  right: 0;
}

[data-network-trace] {
  position: absolute;
  inset: 0;
  opacity: 0.9;
  animation-duration: var(--network-trace-duration);
  animation-timing-function: linear;
  animation-fill-mode: both;
  will-change: transform, opacity;
}

[data-network-trace="up"] {
  background: linear-gradient(
    to top,
    transparent 0%,
    transparent calc(100% - var(--network-trace-tail)),
    var(--network-trace-top) 100%
  );
  animation-name: network-trace-up;
}

[data-network-trace="down"] {
  background: linear-gradient(
    to bottom,
    transparent 0%,
    transparent calc(100% - var(--network-trace-tail)),
    var(--network-trace-top) 100%
  );
  animation-name: network-trace-down;
}

@keyframes network-trace-up {
  0% {
    transform: translateY(100%);
    opacity: 0.9;
  }
  100% {
    transform: translateY(-100%);
    opacity: 0;
  }
}

@keyframes network-trace-down {
  0% {
    transform: translateY(-100%);
    opacity: 0.9;
  }
  100% {
    transform: translateY(100%);
    opacity: 0;
  }
}

a {
  color: inherit;
  text-decoration: none;
}

a[data-button]:hover,
[data-actions] a[aria-current="page"] {
  text-decoration: none;
}

button {
  border: none;
  background: none;
  color: inherit;
  font: inherit;
}

label {
  font: inherit;
}

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

ol,
ul {
  margin: 0;
  padding: 0;
}

code {
  font-family: var(--mono);
  font-size: 0.9em;
  padding: 2px 6px;
  border-radius: 6px;
  background: var(--surface-2);
  color: inherit;
}

pre[data-code] code {
  padding: 0;
  background: none;
}

[data-shell] {
  width: 100%;
  max-width: var(--page-width);
  margin: 0 auto;
  padding: calc(20px + env(safe-area-inset-top)) clamp(16px, 3vw, 40px) calc(56px + env(safe-area-inset-bottom));
  display: grid;
  gap: 18px;
}

header[data-shared-header] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 8px 10px 8px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  box-shadow: var(--shadow-soft);
}

[data-brand] {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: -0.01em;
}

[data-brand-link] {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

[data-brand-link]:hover {
  text-decoration: none;
}

[data-brand] > [data-muted] {
  color: var(--muted-2);
}

[data-logo] {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  display: block;
  color: inherit;
  object-fit: contain;
}

[data-muted] {
  color: var(--muted-2);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

[data-pill] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface-2);
  color: var(--muted);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

[data-pill] strong {
  color: var(--text);
  font-weight: 600;
}

[data-actions] {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

[data-actions] a[data-button] {
  min-height: var(--control-height);
  padding: 0 14px;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--muted);
  font-size: 0.875rem;
  font-weight: 500;
  white-space: nowrap;
}

[data-actions] a[aria-current="page"] {
  background: var(--selection);
  color: var(--link);
}

main {
  display: grid;
  gap: 16px;
}

[data-hero] {
  display: grid;
  gap: 12px;
}

h1 {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.02em;
}

h2 {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.01em;
}

p {
  margin: 0;
}

[data-lead] {
  color: var(--muted);
  font-size: 0.9375rem;
  line-height: 1.6;
  max-width: 68ch;
}

[data-layout="grid"] {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 16px;
}

[data-card] {
  grid-column: span 12;
  display: grid;
  gap: 14px;
  padding: clamp(18px, 3.5vw, 24px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background: var(--surface);
  box-shadow: var(--shadow-soft);
  position: relative;
  overflow: hidden;
  transition:
    border-color var(--duration-fast) var(--ease-out),
    transform var(--duration-med) var(--ease-out),
    box-shadow var(--duration-med) var(--ease-out);
}

@media (hover: hover) and (pointer: fine) {
  body[data-page="home"] [data-card]:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow);
  }
}

[data-card] > header {
  display: grid;
  gap: 4px;
}

[data-card] > header p {
  max-width: 68ch;
  color: var(--muted);
  font-size: 0.8125rem;
  line-height: 1.5;
}

[data-card-body] {
  display: grid;
  gap: 12px;
}

pre[data-code] {
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface-2);
  font-family: var(--mono);
  font-size: 0.8125rem;
  line-height: 1.6;
  overflow: auto;
}

[data-layout="row"] {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

button,
a[data-button] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  min-height: var(--control-height);
  border: 1px solid var(--input-border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition:
    background-color var(--duration-fast) ease,
    border-color var(--duration-fast) ease,
    color var(--duration-fast) ease,
    box-shadow var(--duration-med) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}

button[data-icon-button] {
  width: var(--control-height);
  height: var(--control-height);
  min-height: var(--control-height);
  padding: 0;
}

button[data-icon-button] svg {
  width: 18px;
  height: 18px;
  stroke: currentcolor;
  fill: none;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

button [data-material-icon],
a[data-button] [data-material-icon] {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  fill: currentcolor;
  stroke: none;
}

button[data-icon-button] svg[data-material-icon] {
  width: 20px;
  height: 20px;
  fill: currentcolor;
  stroke: none;
}

button[data-tooltip] {
  position: relative;
}

button[data-tooltip]::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  z-index: 30;
  width: max-content;
  max-width: min(260px, 72vw);
  padding: 7px 9px;
  border-radius: var(--radius-sm);
  background: var(--text);
  color: var(--bg);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0;
  text-transform: none;
  text-align: center;
  white-space: normal;
  box-shadow: var(--shadow);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 4px) scale(0.97);
  transform-origin: 50% 100%;
  transition:
    opacity var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}

button[data-tooltip]:focus-visible::after {
  opacity: 1;
  transform: translate(-50%, 0) scale(1);
}

a[data-button] {
  text-decoration: none;
}

/* A bare [data-variant="primary"] loses to the `button, a[data-button]` base rule, so this
 * variant selector names the element too instead of adding a second override layer. */
button[data-variant="primary"],
a[data-button][data-variant="primary"] {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-ink);
  font-weight: 600;
}

[data-variant="danger"] {
  background: var(--danger-fill);
  border-color: transparent;
  color: var(--danger);
}

button:active,
a[data-button]:active {
  transform: scale(0.97);
}

button:focus-visible,
a[data-button]:focus-visible,
a:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

button:disabled {
  opacity: 0.52;
  cursor: not-allowed;
  transform: none;
}

@media (hover: hover) and (pointer: fine) {
  a:hover {
    text-decoration: underline;
  }

  a:not([data-button]):not([data-brand-link]):hover {
    color: var(--link-hover);
  }

  button:not(:disabled):hover,
  a[data-button]:hover {
    background: var(--surface-2);
    border-color: var(--border-strong);
  }

  button:not(:disabled)[data-variant="primary"]:hover,
  a[data-button][data-variant="primary"]:hover {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
    color: var(--accent-ink);
  }

  button:not(:disabled)[data-variant="danger"]:hover,
  a[data-button][data-variant="danger"]:hover {
    background: var(--danger-fill);
    border-color: var(--danger);
  }

  [data-actions] a[data-button]:hover {
    background: var(--surface);
    color: var(--text);
  }

  [data-actions] a[aria-current="page"]:hover {
    background: var(--selection);
    color: var(--link);
  }

  button[data-tooltip]:hover::after {
    opacity: 1;
    transform: translate(-50%, 0) scale(1);
  }
}

[data-badge] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 26px;
  padding: 4px 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface-2);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  transition:
    background-color var(--duration-med) var(--ease-out),
    border-color var(--duration-med) var(--ease-out),
    color var(--duration-med) var(--ease-out);
}

[data-badge][data-state="ok"] {
  border-color: var(--success);
  background: var(--success-fill);
  color: var(--success);
}

[data-badge][data-state="bad"] {
  border-color: var(--danger);
  background: var(--danger-fill);
  color: var(--danger);
}

[data-badge][data-state="unknown"] {
  color: var(--muted-2);
}

[data-field] {
  display: grid;
  gap: 6px;
}

[data-label] {
  color: var(--text);
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.005em;
}

input,
textarea,
select {
  width: 100%;
  min-height: var(--control-height);
  padding: 10px 12px;
  border: 1px solid var(--input-border);
  border-radius: var(--radius-sm);
  background-color: var(--surface);
  color: var(--text);
  transition:
    border-color var(--duration-fast) var(--ease-out),
    background-color var(--duration-fast) var(--ease-out),
    box-shadow var(--duration-fast) var(--ease-out);
}

select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 34px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--muted-2) 50%),
    linear-gradient(135deg, var(--muted-2) 50%, transparent 50%);
  background-position:
    right 18px center,
    right 12px center;
  background-size: 6px 6px;
  background-repeat: no-repeat;
}

select option,
select optgroup {
  background-color: var(--surface);
  color: var(--text);
}

input::placeholder,
textarea::placeholder {
  color: var(--muted-2);
}

textarea {
  resize: vertical;
}

input:focus,
textarea:focus,
select:focus {
  outline: none;
  border-color: var(--focus-ring);
  box-shadow: 0 0 0 3px var(--focus-ring-soft);
}

label[data-check] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: 0.875rem;
}

input[type="checkbox"] {
  accent-color: var(--accent);
  width: 16px;
  height: 16px;
  min-height: 16px;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 4px;
  background-color: transparent;
  flex: 0 0 auto;
  cursor: pointer;
  box-shadow: none;
}

input[type="checkbox"]:focus {
  background-color: transparent;
  box-shadow: 0 0 0 3px var(--focus-ring-soft);
}

@media (hover: hover) and (pointer: fine) {
  input:hover,
  textarea:hover,
  select:hover {
    border-color: var(--border-strong);
  }
}

[data-chat] {
  display: grid;
  gap: 12px;
}

[data-messages] {
  min-height: min(52vh, 480px);
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-2);
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow: auto;
}

[data-message] {
  max-width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface);
  white-space: pre-wrap;
  word-break: break-word;
  line-height: 1.5;
  font-size: 14px;
}

[data-message="user"] {
  align-self: flex-end;
  border-color: transparent;
  background: var(--accent);
  color: var(--accent-ink);
}

[data-message="assistant"] {
  align-self: flex-start;
}

[data-message="system"] {
  align-self: center;
  border-color: transparent;
  color: var(--muted);
  font-size: 12.5px;
  background: var(--surface-3);
}

[data-message="error"] {
  align-self: center;
  border-color: var(--danger);
  background: var(--danger-fill);
  color: var(--danger);
}

[data-chat-form] {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

[data-chat-form] textarea {
  flex: 1 1 460px;
  min-height: 56px;
}

[data-key-list] {
  display: grid;
  gap: 14px;
}

[data-key] {
  --key-accent: var(--muted-2);
  padding: 16px 18px 16px 24px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  box-shadow: var(--shadow-soft);
  position: relative;
  display: grid;
  gap: 12px;
  overflow: hidden;
  content-visibility: auto;
  contain-intrinsic-size: 180px;
}

[data-sublist] {
  display: grid;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-2);
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

[data-subtile] {
  --key-accent: var(--muted);
  padding: 12px 14px 12px 20px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface);
  box-shadow: none;
  position: relative;
  display: grid;
  gap: 10px;
  overflow: hidden;
}

[data-key][data-state="active"] {
  --key-accent: var(--accent);
}

[data-key][data-state="warning"] {
  --key-accent: var(--warning);
}

[data-key][data-state="expired"] {
  --key-accent: var(--warning);
}

[data-key][data-state="revoked"] {
  --key-accent: var(--danger);
}

[data-subtile][data-state="active"] {
  --key-accent: var(--accent);
}

[data-subtile][data-state="warning"] {
  --key-accent: var(--warning);
}

[data-subtile][data-state="revoked"] {
  --key-accent: var(--danger);
}

[data-key]::before {
  content: "";
  position: absolute;
  left: 10px;
  top: 16px;
  bottom: 16px;
  width: 3px;
  border-radius: 999px;
  background: var(--key-accent);
}

[data-subtile]::before {
  left: 8px;
  top: 12px;
  bottom: 12px;
  width: 2px;
}

[data-key-main] {
  display: grid;
  gap: 10px;
}

[data-key-header] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

[data-key-title] {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.01em;
}

[data-subtile] [data-key-title] {
  font-size: 0.875rem;
}

[data-key-controls] {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

[data-key-actions],
[data-action-row] {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

[data-key-edit],
[data-edit-panel] {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

[data-key-edit-fields],
[data-edit-fields] {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

[data-key-info] {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 8px 16px;
  padding: 10px;
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

[data-subtile] [data-key-info] {
  padding: 8px;
  gap: 6px 12px;
}

/* --muted measures 4.40:1 on --surface-3 in light; --text clears 4.5:1 in both schemes. */
[data-key-info-item] {
  display: grid;
  gap: 4px;
  padding: 6px 8px;
  border-radius: var(--radius-sm);
  background: var(--surface-3);
  color: var(--text);
}

[data-subtile] [data-key-info-item] {
  padding: 5px 6px;
}

[data-key-info-item][data-state="bad"] {
  color: var(--danger);
}

[data-key-info-item][data-state="bad"] [data-key-info-value] {
  color: var(--danger);
}

[data-key-info-item][data-state="warning"] {
  color: var(--text);
  background: var(--warning-fill);
}

[data-key-info-item][data-state="warning"] [data-key-info-value] {
  color: var(--text);
}

[data-key-info-label] {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text);
}

[data-subtile] [data-key-info-label] {
  font-size: 10px;
}

[data-key-info-value] {
  font-size: 0.75rem;
  color: var(--text);
  overflow-wrap: anywhere;
}

[data-subtile] [data-key-info-value] {
  font-size: 11px;
}

[data-meta-item] {
  display: grid;
  gap: 4px;
  color: var(--muted);
}

[data-meta-item][data-state="bad"] {
  color: var(--danger);
}

[data-meta-item][data-state="bad"] [data-meta-value] {
  color: var(--danger);
}

[data-meta-label] {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted-2);
}

[data-meta-value] {
  font-size: 0.75rem;
  color: var(--text);
  overflow-wrap: anywhere;
}

[data-mono] {
  font-family: var(--mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

details[data-usage] {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 8px 10px;
  background: var(--surface-2);
}

details[data-usage][open] {
  background: var(--surface-3);
}

summary[data-usage-title] {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  list-style: none;
  margin: 0;
}

summary[data-usage-title]::-webkit-details-marker {
  display: none;
}

summary[data-usage-title]::after {
  content: "▾";
  margin-left: 6px;
  opacity: 0.6;
  font-size: 11px;
  display: inline-block;
  transition: transform var(--duration-fast) var(--ease-in-out);
}

details[data-usage][open] summary[data-usage-title]::after {
  transform: rotate(180deg);
}

[data-usage-label] {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted-2);
}

[data-usage-summary] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-wrap: wrap;
  margin-left: auto;
}

[data-usage-spark] {
  --spark-height: 96px;
  margin-top: 10px;
  display: grid;
  gap: 4px;
}

[data-usage-spark-scale],
[data-usage-spark-axis] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted-2);
}

[data-usage-spark-scale] {
  justify-content: flex-end;
  color: var(--muted-2);
}

[data-usage-spark-axis][data-single="true"] {
  justify-content: flex-end;
}

[data-usage-spark-chart] {
  height: var(--spark-height);
  overflow: hidden;
}

[data-usage-spark-chart] svg {
  display: block;
  width: 100%;
  height: 100%;
}

[data-usage-spark-grid] {
  stroke: var(--chart-grid);
  stroke-dasharray: 4 6;
  vector-effect: non-scaling-stroke;
}

[data-usage-spark-grid="vertical"] {
  stroke: var(--chart-grid-strong);
  stroke-dasharray: 2 10;
}

[data-usage-spark-area] {
  opacity: 0.6;
}

[data-usage-spark-trend] {
  opacity: 0.6;
  vector-effect: non-scaling-stroke;
}

[data-usage-spark-line] {
  vector-effect: non-scaling-stroke;
}

[data-usage-pill] {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

[data-usage-pill][data-state="bad"] {
  border-color: var(--danger);
  background: var(--danger-fill);
  color: var(--danger);
}

[data-usage-list] {
  margin-top: 8px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 16px;
}

[data-usage-empty] {
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.75rem;
}

[data-empty] {
  color: var(--muted);
  font-size: 0.8125rem;
}

[data-tabs] {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: var(--surface-2);
}

[data-tabs] [role="tab"] {
  padding: 8px 12px;
  border: 0;
  border-radius: var(--radius-sm);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  background: transparent;
  transition:
    background-color var(--duration-fast) ease,
    color var(--duration-fast) ease;
}

[data-tabs] [role="tab"][aria-selected="true"] {
  background: var(--selection);
  color: var(--link);
}

/* Admin grid cards have no entrance animation: a tab change re-shows them, so it would replay each time. */
@keyframes rise {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (min-width: 760px) {
  [data-card][data-span="half"] {
    grid-column: span 6;
  }
}

@media (min-width: 900px) {
  [data-usage-list] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 760px), (pointer: coarse) {
  input,
  textarea {
    font-size: 16px;
  }
}

@media (max-width: 760px) {
  [data-shell] {
    padding: calc(14px + env(safe-area-inset-top)) 12px calc(48px + env(safe-area-inset-bottom));
    gap: 14px;
  }

  header[data-shared-header] {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    min-width: 0;
    max-width: 100%;
    padding: 10px;
  }

  [data-brand] {
    min-width: 0;
    max-width: 100%;
  }

  [data-actions] {
    gap: 2px;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    flex-wrap: wrap;
    scrollbar-width: none;
  }

  [data-actions]::-webkit-scrollbar {
    display: none;
  }

  [data-actions] a[data-button] {
    flex: 1 1 auto;
    min-width: 0;
    padding: 0 8px;
    white-space: normal;
  }

  [data-card] {
    padding: 18px;
  }

  [data-chat-form] {
    flex-direction: column;
    align-items: stretch;
  }

  [data-chat-form] textarea {
    flex: 1 1 auto;
  }

  [data-chat-form] button {
    width: 100%;
  }

  [data-chat-form] button[data-icon-button] {
    width: var(--control-height);
    height: var(--control-height);
    align-self: flex-end;
  }

  [data-key-header] {
    flex-direction: column;
    align-items: flex-start;
  }

  [data-key-info] {
    grid-template-columns: 1fr;
  }

  [data-usage-summary] {
    margin-left: 0;
    justify-content: flex-start;
  }

  [data-usage-list] {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  [data-brand] > [data-muted] {
    display: none;
  }
}

[data-toaster] {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: min(360px, calc(100vw - 32px));
  pointer-events: none;
}

[data-toaster] > [data-toast] {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-left: 3px solid var(--muted-2);
  border-radius: var(--radius-lg);
  background: var(--surface);
  box-shadow: var(--shadow);
  color: var(--text);
  opacity: 0;
  transform: translateY(8px) scale(0.98);
  transition:
    opacity var(--duration-med) var(--ease-out),
    transform var(--duration-med) var(--ease-out);
}

[data-toaster] > [data-toast][data-visible] {
  opacity: 1;
  transform: translateY(0) scale(1);
}

[data-toaster] > [data-toast][data-exiting] {
  opacity: 0;
  transform: translateY(8px) scale(0.98);
  transition-duration: var(--duration-fast);
}

[data-toast][data-type="success"] {
  border-left-color: var(--success);
}

[data-toast][data-type="error"] {
  border-left-color: var(--danger);
}

[data-toast-title] {
  font-size: 0.875rem;
  font-weight: 600;
}

[data-toast-desc] {
  margin-top: 2px;
  font-size: 0.8125rem;
  color: var(--muted);
}

[data-toast-close] {
  flex: 0 0 auto;
  align-self: center;
  width: 32px;
  height: 32px;
  min-height: 32px;
  margin-left: auto;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  color: var(--muted-2);
  cursor: pointer;
  background: transparent;
  transition:
    color var(--duration-fast) var(--ease-out),
    background-color var(--duration-fast) var(--ease-out);
}

@media (pointer: coarse) {
  [data-toast-close] {
    width: 44px;
    height: 44px;
    min-height: 44px;
  }
}

@media (hover: hover) and (pointer: fine) {
  [data-toast-close]:hover {
    color: var(--text);
    background: var(--surface-2);
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-network-trace-layer] {
    display: none;
  }

  button,
  a[data-button],
  [data-card],
  input,
  textarea,
  select,
  [data-badge],
  [data-tabs] [role="tab"],
  button[data-tooltip]::after,
  summary[data-usage-title]::after,
  [data-toast],
  [data-toast-close] {
    transition-property: background-color, border-color, color, opacity, box-shadow;
    transition-duration: var(--duration-fast);
  }

  [data-toaster] > [data-toast],
  [data-toaster] > [data-toast][data-visible],
  [data-toaster] > [data-toast][data-exiting] {
    transform: none;
    transition: opacity var(--duration-fast) var(--ease-out);
  }

  [data-card]:hover,
  body[data-page="home"] [data-card]:hover,
  button:active,
  a[data-button]:active {
    transform: none;
  }
}

/* Secondary information stays available without competing with the current task. */
details[data-disclosure] > summary {
  padding-block: 10px;
  color: var(--muted);
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
}

details[data-disclosure] > summary:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 4px;
  border-radius: 4px;
}

details[data-disclosure][open] > summary {
  color: var(--text);
}

details[data-disclosure][open] > :not(summary) {
  margin-block: 12px;
}

details[data-disclosure][data-card] {
  display: block;
}
