/* NVALT operations UI — design tokens from ui-ux-pro-max design-system search
   (pattern: Real-Time/Operations, style: operational green / incident red / maintenance amber,
   typography: Inter, density 7 → 8–32px spacing). Light theme is the default for office use; the
   recommended dark palette is applied via prefers-color-scheme. No external fonts or CDN. */
:root {
  --color-background: #F8FAFC; --color-foreground: #0F172A;
  --color-card: #FFFFFF; --color-card-foreground: #0F172A;
  --color-muted: #E2E8F0; --color-muted-foreground: #475569;   /* 7.6:1 on card */
  --color-border: #CBD5E1;
  --color-primary: #15803D; --color-on-primary: #FFFFFF;        /* green-700: 5.0:1 on white */
  --color-ring: #15803D;
  --color-destructive: #B91C1C; --color-on-destructive: #FFFFFF; /* red-700: 6.0:1 */
  --color-warn: #92400E; --color-warn-bg: #FEF3C7;
  --color-ok-bg: #DCFCE7; --color-ok-fg: #14532D;
  --color-err-bg: #FEE2E2; --color-err-fg: #7F1D1D;
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px; --space-6: 32px;
  --radius: 8px; --font: Inter, "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace;
  --t-fast: 150ms; --t-base: 200ms;
}
@media (prefers-color-scheme: dark) {
  :root {
    --color-background: #0F172A; --color-foreground: #F8FAFC;
    --color-card: #111827; --color-card-foreground: #F8FAFC;
    --color-muted: #1E293B; --color-muted-foreground: #CBD5E1;
    --color-border: #334155;
    --color-primary: #22C55E; --color-on-primary: #052E16;
    --color-ring: #22C55E;
    --color-destructive: #F87171; --color-on-destructive: #450A0A;
    --color-warn: #FCD34D; --color-warn-bg: #451A03;
    --color-ok-bg: #052E16; --color-ok-fg: #BBF7D0;
    --color-err-bg: #450A0A; --color-err-fg: #FECACA;
  }
}
* { box-sizing: border-box; }
html { font-size: 100%; }
body { margin: 0; background: var(--color-background); color: var(--color-foreground); font: 400 16px/1.5 var(--font); -webkit-text-size-adjust: 100%; }
img, svg { max-width: 100%; }
.wrap { max-width: 1280px; margin: 0 auto; padding: 0 var(--space-4); }
@media (min-width: 768px) { .wrap { padding: 0 var(--space-5); } }
@media (min-width: 1024px) { .wrap { padding: 0 var(--space-6); } }

/* skip link + focus */
.skip-link { position: absolute; left: -999px; top: var(--space-2); background: var(--color-card); color: var(--color-foreground); padding: var(--space-2) var(--space-3); border-radius: var(--radius); z-index: 100; }
.skip-link:focus { left: var(--space-2); outline: 3px solid var(--color-ring); }
:focus-visible { outline: 3px solid var(--color-ring); outline-offset: 2px; }
main:focus { outline: none; }

/* top bar */
.topbar { background: var(--color-card); border-bottom: 1px solid var(--color-border); }
.topbar-inner { display: flex; align-items: center; gap: var(--space-3); min-height: 56px; }
.brand { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: 700; color: inherit; text-decoration: none; min-height: 44px; }
.topbar-actions { margin-left: auto; display: flex; align-items: center; gap: var(--space-3); }
.icon { width: 20px; height: 20px; flex: none; }

/* layout */
main { padding: var(--space-5) var(--space-4); }
.layout { display: grid; grid-template-columns: 1fr; gap: var(--space-5); }
@media (min-width: 1024px) { .layout { grid-template-columns: minmax(0, 3fr) minmax(320px, 2fr); } }
.card, .panel { background: var(--color-card); color: var(--color-card-foreground); border: 1px solid var(--color-border); border-radius: var(--radius); padding: var(--space-5); min-width: 0; }
.panel { padding: var(--space-4); }
.panel + .panel, .side > * + * { margin-top: var(--space-4); }
.card-narrow { max-width: 440px; margin: var(--space-6) auto; }
h1 { font-size: 1.5rem; line-height: 1.3; margin: 0 0 var(--space-4); }
h2 { font-size: 1.125rem; line-height: 1.3; margin: 0 0 var(--space-3); }
p { margin: 0 0 var(--space-3); }
.muted { color: var(--color-muted-foreground); }

/* forms */
.field { margin-bottom: var(--space-4); min-width: 0; }
.field label, .field legend { display: block; font-weight: 600; margin-bottom: var(--space-1); }
.field input, .field textarea { display: block; width: 100%; min-height: 44px; padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-card); color: inherit; font: inherit; transition: border-color var(--t-fast); }
.field input[type="file"] { padding: var(--space-2); }
.field input:focus-visible, .field textarea:focus-visible { border-color: var(--color-ring); }
.field [aria-invalid="true"] { border-color: var(--color-destructive); border-width: 2px; }
.field-error { color: var(--color-err-fg); background: var(--color-err-bg); border-radius: var(--radius); padding: var(--space-1) var(--space-2); margin: var(--space-1) 0 0; font-size: 0.9375rem; }
.hint { color: var(--color-muted-foreground); font-size: 0.9375rem; margin: var(--space-1) 0 0; }
.hint code { font-family: var(--mono); }
.checks { border: 1px solid var(--color-border); border-radius: var(--radius); padding: var(--space-3); }
.check { display: flex; align-items: flex-start; gap: var(--space-2); font-weight: 400; min-height: 44px; cursor: pointer; }
.check input { width: 20px; height: 20px; margin: 2px 0 0; flex: none; }
.grid-2 { display: grid; grid-template-columns: 1fr; gap: 0 var(--space-4); }
@media (min-width: 640px) { .grid-2 { grid-template-columns: 1fr 1fr; } }

/* buttons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: 44px; min-width: 44px; padding: var(--space-2) var(--space-4); border-radius: var(--radius); border: 1px solid var(--color-border); background: var(--color-card); color: inherit; font: inherit; font-weight: 600; cursor: pointer; transition: background var(--t-fast), border-color var(--t-fast), opacity var(--t-fast); }
.btn:hover { background: var(--color-muted); }
.btn-primary { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-on-primary); }
.btn-primary:hover { filter: brightness(1.08); background: var(--color-primary); }
.btn-danger { color: var(--color-destructive); border-color: var(--color-destructive); }
.btn-ghost { border-color: transparent; }
.btn-block { width: 100%; }
.btn:disabled, .btn[aria-disabled="true"] { opacity: 0.5; cursor: not-allowed; }
.actions { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; margin-top: var(--space-2); }
.actions form { margin: 0; }
.indicator { display: none; color: var(--color-muted-foreground); }
.htmx-request .indicator, .indicator.htmx-request { display: inline; }

/* alerts */
.alert { border-radius: var(--radius); padding: var(--space-3) var(--space-4); margin: var(--space-3) 0; }
.alert-title { font-size: 1rem; margin: 0 0 var(--space-2); }
.alert-error { background: var(--color-err-bg); color: var(--color-err-fg); }
.alert-error a { color: inherit; font-weight: 600; }
.alert-ok { background: var(--color-ok-bg); color: var(--color-ok-fg); }
.alert-warn { background: var(--color-warn-bg); color: var(--color-warn); }
.compact { margin: 0 0 var(--space-2) var(--space-4); padding: 0; }

/* status */
.status-line { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; min-height: 3rem; }
.msg { min-height: 1.5rem; margin: var(--space-2) 0 0; color: var(--color-err-fg); }
.num, .kv dd, .table td, .status-line strong, .log { font-variant-numeric: tabular-nums; }
.countdown { display: inline-block; min-width: 12ch; }
.alert-slot { min-height: 1.5rem; }
.alert-slot .alert { margin-bottom: 0; }
.result-slot { min-height: 3rem; }
.status-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--color-muted-foreground); flex: none; }
.status-running { background: var(--color-primary); }
.status-paused { background: var(--color-warn); }
.status-locked { background: var(--color-destructive); }
.status-scheduled { background: var(--color-primary); opacity: 0.6; }
.status-waiting { background: var(--color-warn); }
.status-ready { background: var(--color-muted-foreground); }
.kv { display: grid; grid-template-columns: 1fr; gap: var(--space-2); margin: 0 0 var(--space-3); }
@media (min-width: 480px) { .kv { grid-template-columns: 1fr 1fr; } }
.kv div { background: var(--color-background); border: 1px solid var(--color-border); border-radius: var(--radius); padding: var(--space-2) var(--space-3); }
.kv dt { font-size: 0.875rem; color: var(--color-muted-foreground); }
.kv dd { margin: 0; font-weight: 600; min-height: 1.5em; }
#wu-sched, #wu-next, #wu-today { min-height: 3em; }
.progress { height: 10px; background: var(--color-muted); border-radius: 999px; overflow: hidden; }
.progress-bar { height: 100%; width: 100%; background: var(--color-primary); transform-origin: left center; transform: scaleX(0); transition: transform var(--t-base) ease-out; }

/* tables */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.table th, .table td { text-align: left; padding: var(--space-2); border-bottom: 1px solid var(--color-border); white-space: nowrap; }
.table th { color: var(--color-muted-foreground); font-weight: 600; }
.table tr.is-paused td { color: var(--color-muted-foreground); }
details summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; font-weight: 600; }

/* live log */
.conn { min-height: 1.5rem; }
.log { list-style: none; margin: 0; padding: 0; min-height: 3rem; max-height: 420px; overflow: auto; overscroll-behavior: contain; font-family: var(--mono); font-size: 0.9375rem; }
.log li { padding: var(--space-2) 0; border-bottom: 1px dashed var(--color-border); overflow-wrap: anywhere; }
.empty { color: var(--color-muted-foreground); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}
