/* Dang Enterprise × ARIA
   Tron: Ares light-lines, Blade Runner 2049 fog, Star Citizen holographic instrumentation.
   Red belongs to ARIA. Holo steel is the system. Cyan is healthy data. */

/* ── tokens ───────────────────────────────────────────────────────────── */
:root {
  --bg: #05060A;
  --surface: rgba(12, 15, 22, 0.74);
  --surface-2: rgba(18, 22, 31, 0.82);
  --inset: rgba(4, 6, 10, 0.85);
  --line: rgba(160, 200, 235, 0.12);
  --line-2: rgba(160, 200, 235, 0.26);
  --holo: rgba(170, 215, 250, 0.75);   /* the system: frames, corner brackets */
  --aria: #FF2E43;                      /* ARIA: her light, her voice, her actions */
  --aria-hot: #FFE9EB;                  /* white-hot core of her light */
  --aria-soft: rgba(255, 46, 67, 0.09);
  --data: #5EC8FF;                      /* healthy data */
  --warn: #FF8A3D;
  --danger: #FF3EA5;
  --text: #E6EBF2;
  --text-2: #8792A3;
  --text-3: #525C6B;
  --f-display: 'Michroma', 'Saira', sans-serif;
  --f-body: 'Saira', system-ui, sans-serif;
  --f-mono: 'Martian Mono', ui-monospace, monospace;
  --bloom: 0 0 6px rgba(255, 46, 67, 0.9), 0 0 22px rgba(255, 46, 67, 0.55), 0 0 60px rgba(255, 46, 67, 0.25);
  --glow-aria: 0 0 18px rgba(255, 46, 67, 0.4);
  --glow-data: 0 0 10px rgba(94, 200, 255, 0.45);
  --r: 3px;
  --bracket: 12px;
  color-scheme: dark;
}

/* ── base ─────────────────────────────────────────────────────────────── */
* { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0; background: var(--bg); color: var(--text);
  font: 400 15px/1.55 var(--f-body); font-variation-settings: 'wdth' 100;
  -webkit-font-smoothing: antialiased; overflow: hidden;
}
button, input, select, textarea { font: inherit; color: inherit; }
a { color: var(--aria); }
::selection { background: var(--aria); color: #fff; }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: 3px; }
::-webkit-scrollbar-track { background: transparent; }
:focus-visible { outline: 1px solid var(--aria); outline-offset: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
kbd, code, pre { font-family: var(--f-mono); font-variation-settings: 'wdth' 75; }
[hidden] { display: none !important; }

/* micro-label: the Star Citizen instrument caption */
.panel-head .aux, .gauge-cap, .ro small, .am-sub, .am-meta, .msg-tag, .composer-foot, .stat-row .k, .kv-grid span {
  font-family: var(--f-mono); font-variation-settings: 'wdth' 75; text-transform: uppercase; letter-spacing: 0.16em;
}

/* ── atmosphere: 2049 fog over an Ares horizon ────────────────────────── */
.atmos { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden;
  background:
    radial-gradient(ellipse 90% 45% at 50% 100%, rgba(150, 18, 32, 0.32), transparent 70%),
    radial-gradient(ellipse 120% 70% at 50% 120%, rgba(60, 10, 20, 0.5), transparent 75%),
    linear-gradient(180deg, #05060A 0%, #070810 55%, #0B070C 100%);
}
.atmos i { display: none; }
.atmos::before { /* light-floor, dissolving into the haze */
  content: ''; position: absolute; left: -60%; right: -60%; bottom: -12%; height: 46%;
  background-image:
    linear-gradient(rgba(255, 46, 67, 0.22) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 46, 67, 0.16) 1px, transparent 1px);
  background-size: 120px 60px;
  transform: perspective(380px) rotateX(70deg); transform-origin: 50% 100%;
  mask-image: linear-gradient(to top, rgba(0, 0, 0, 0.75), transparent 75%);
}
.atmos::after { /* the horizon line */
  content: ''; position: absolute; left: 0; right: 0; bottom: 24%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255, 70, 90, 0.85) 30%, #fff 50%, rgba(255, 70, 90, 0.85) 70%, transparent);
  box-shadow: 0 0 18px 2px rgba(255, 46, 67, 0.45), 0 0 80px 10px rgba(255, 46, 67, 0.12);
  opacity: 0.4;
}

/* ── shell layout ─────────────────────────────────────────────────────── */
body { display: grid; grid-template-rows: auto minmax(0, 1fr); height: 100dvh; }
.stage { display: grid; grid-template-columns: minmax(0, 1fr) 440px; gap: 18px; min-height: 0;
  padding: 0 max(18px, env(safe-area-inset-right)) 18px max(18px, env(safe-area-inset-left)); }
.views { min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: 2px; }
.view { display: none; }
.view.view-on { display: block; animation: viewIn .35s ease-out; }
@keyframes viewIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ── holographic frame: hairline + corner brackets ────────────────────── */
.panel, .console, .ro, .cmdbar input, .composer-box, .approval, .push-box, .alert-item, .ctr, .suggests button, .msg.user .bubble {
  position: relative; border-radius: var(--r);
}
.panel, .console {
  background: linear-gradient(180deg, rgba(170, 215, 250, 0.035), transparent 140px), var(--surface);
  border: 1px solid var(--line); backdrop-filter: blur(6px);
}
.panel { padding: 18px 20px 20px; }
.panel::after, .console::after {
  content: ''; position: absolute; inset: -1px; pointer-events: none; border-radius: var(--r);
  --c: var(--holo); --b: var(--bracket);
  background:
    linear-gradient(var(--c) 0 0) top left / var(--b) 1px no-repeat,
    linear-gradient(var(--c) 0 0) top left / 1px var(--b) no-repeat,
    linear-gradient(var(--c) 0 0) top right / var(--b) 1px no-repeat,
    linear-gradient(var(--c) 0 0) top right / 1px var(--b) no-repeat,
    linear-gradient(var(--c) 0 0) bottom left / var(--b) 1px no-repeat,
    linear-gradient(var(--c) 0 0) bottom left / 1px var(--b) no-repeat,
    linear-gradient(var(--c) 0 0) bottom right / var(--b) 1px no-repeat,
    linear-gradient(var(--c) 0 0) bottom right / 1px var(--b) no-repeat;
}
.panel-head {
  display: flex; align-items: center; gap: 12px; margin: 0 0 16px;
  font: 400 11px var(--f-display); letter-spacing: 0.24em; text-transform: uppercase; color: var(--text);
}
.panel-head .rule { flex: 1; height: 1px; background: linear-gradient(90deg, var(--line-2), transparent); min-width: 12px; }
.panel-head .aux { font-size: 10px; color: var(--text-2); letter-spacing: 0.12em; }

/* ── top bar ──────────────────────────────────────────────────────────── */
.topbar { display: flex; align-items: center; gap: 22px; min-width: 0;
  padding: calc(env(safe-area-inset-top) + 14px) max(18px, env(safe-area-inset-right)) 14px max(18px, env(safe-area-inset-left)); }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--text); flex: none; }
.brand-mark {
  width: 36px; height: 36px; display: grid; place-items: center; border-radius: var(--r);
  font: 400 11px/1 'Michroma', sans-serif; letter-spacing: 0.06em; color: var(--aria-hot);
  border: 1px solid rgba(255, 46, 67, 0.6); background: rgba(255, 46, 67, 0.08);
  text-shadow: var(--bloom); box-shadow: inset 0 0 12px rgba(255, 46, 67, 0.25);
}
.brand-text { display: flex; flex-direction: column; gap: 3px; line-height: 1; }
.brand-text b { font: 400 12px var(--f-display); letter-spacing: 0.3em; }
.brand-text small { font: 400 9px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.24em; color: var(--text-3); text-transform: uppercase; }

.tabs { display: flex; gap: 4px; flex: none; }
.tabs button {
  border: 0; background: none; cursor: pointer; padding: 8px 14px; color: var(--text-2); position: relative;
  font: 400 10.5px var(--f-display); letter-spacing: 0.22em; text-transform: uppercase; transition: color .2s;
}
.tabs button:hover { color: var(--text); }
.tabs button.on { color: var(--text); }
.tabs button.on::after { content: ''; position: absolute; left: 14px; right: 14px; bottom: 0; height: 1px; background: var(--aria); box-shadow: var(--bloom); }

.readouts { display: flex; gap: 6px; flex: 1; min-width: 0; overflow: hidden; justify-content: flex-end; }
.ro {
  display: inline-flex; align-items: baseline; gap: 7px; flex: none; white-space: nowrap; padding: 6px 11px;
  background: rgba(10, 13, 19, 0.7); border: 1px solid var(--line);
  font: 400 11px var(--f-mono); font-variation-settings: 'wdth' 75;
}
.ro small { color: var(--text-3); font-size: 9px; }
.ro b { font-weight: 500; color: var(--text); }
.ro .dot { align-self: center; }
.ro.sys b { font: 500 12px var(--f-body); letter-spacing: 0.02em; }
.clock { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; line-height: 1; flex: none; }
#clockTime { font: 400 17px var(--f-display); letter-spacing: 0.1em; }
#clockTime .sec { color: var(--text-3); font-size: 11px; }
#clockDate { font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-2); letter-spacing: 0.16em; text-transform: uppercase; }
.actions { display: flex; gap: 6px; flex: none; }

.icon-btn {
  width: 34px; height: 34px; display: inline-grid; place-items: center; cursor: pointer; flex: none; border-radius: var(--r);
  background: transparent; border: 1px solid var(--line); color: var(--text-2); transition: color .2s, border-color .2s, box-shadow .2s;
}
.icon-btn:hover { color: var(--text); border-color: var(--line-2); }
.icon-btn svg { width: 16px; height: 16px; }
.bell { position: relative; }
.bell .badge { position: absolute; top: -6px; right: -6px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: var(--warn); color: #1a0b00; font: 500 10px/17px var(--f-mono); text-align: center; }
.bell .badge.crit { background: var(--danger); color: #fff; animation: blink 1.2s steps(2) infinite; }

.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--data); box-shadow: var(--glow-data); flex: none; display: inline-block; }
.dot.warn { background: var(--warn); box-shadow: 0 0 8px var(--warn); }
.dot.bad { background: var(--danger); box-shadow: 0 0 8px var(--danger); animation: blink 1.1s steps(2) infinite; }
.dot.idle { background: var(--text-3); box-shadow: none; }
@keyframes blink { 50% { opacity: 0.3; } }

/* ── ARIA: white-hot letters, red bloom, sliced signal (signature) ─────── */
.aria-mark { display: inline-flex; flex-direction: column; gap: 12px; }
.am-word { position: relative; display: inline-block; line-height: 1; font-family: 'Michroma', sans-serif; font-weight: 400; letter-spacing: 0.14em; --gap: 0px; }
.am-lg .am-word { font-size: clamp(54px, 6.6vw, 98px); --gap: 0.024em; }
.am-md .am-word { font-size: 34px; --gap: 0.03em; }
.am-sm .am-word { font-size: 15px; letter-spacing: 0.22em; --gap: 0.03em; }
.am-base { visibility: hidden; display: block; padding: 0.06em 0.02em; }
.am-band {
  position: absolute; inset: 0; display: block; padding: 0.06em 0.02em;
  clip-path: inset(calc(var(--i) * 25% + var(--gap)) 0 calc(100% - (var(--i) + 1) * 25%) 0);
  color: var(--aria-hot); text-shadow: var(--bloom);
  transition: transform .9s cubic-bezier(.2, .8, .2, 1), text-shadow .3s;
}
/* the scan: a light that passes through her name */
.am-word::after {
  content: ''; position: absolute; left: -4%; right: -4%; top: 0; height: 2px; opacity: 0; pointer-events: none;
  background: linear-gradient(90deg, transparent, #fff 20%, #fff 80%, transparent);
  box-shadow: 0 0 12px 2px rgba(255, 46, 67, 0.9);
}
.aria-mark[data-state="idle"] .am-band { animation: breathe 6s ease-in-out infinite; }
@keyframes breathe { 50% { text-shadow: 0 0 4px rgba(255, 46, 67, 0.8), 0 0 16px rgba(255, 46, 67, 0.4), 0 0 44px rgba(255, 46, 67, 0.18); } }

/* thinking: the bands glide apart while a scan line sweeps through */
.aria-mark[data-state="thinking"] .am-band { animation: glide 2.4s cubic-bezier(.45, 0, .2, 1) infinite; animation-delay: calc(var(--i) * -0.6s); }
@keyframes glide { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(calc((var(--i) - 1.5) * 0.045em)); } }
.aria-mark[data-state="thinking"] .am-word::after { animation: scan 1.6s cubic-bezier(.6, 0, .4, 1) infinite; }
@keyframes scan { 0% { top: 0; opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { top: 100%; opacity: 0; } }

/* speaking: locked, the bloom swells per word */
.aria-mark[data-state="speaking"] .am-band { transform: none; }
.aria-mark.pulse .am-band { animation: speak .22s ease-out; }
@keyframes speak { 0% { text-shadow: 0 0 8px #fff, 0 0 30px rgba(255, 46, 67, 1), 0 0 80px rgba(255, 46, 67, 0.5); } 100% { text-shadow: var(--bloom); } }

.aria-mark[data-state="offline"] .am-band { color: var(--text-3); text-shadow: none; animation: none; }

.am-meta { display: flex; align-items: center; gap: 9px; font-size: 10px; color: var(--text-2); }
.am-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--aria); box-shadow: var(--bloom); }
.aria-mark[data-state="thinking"] .am-dot { animation: blink .6s steps(2) infinite; }
.aria-mark[data-state="offline"] .am-dot { background: var(--text-3); box-shadow: none; }
.am-sub { font-size: 9.5px; color: var(--text-3); letter-spacing: 0.26em; }
.am-sm .am-meta { display: none; }

/* ── home ─────────────────────────────────────────────────────────────── */
.hero { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(28px, 4.5vw, 72px); align-items: center; padding: 34px 4px 40px; }
.hero-copy { max-width: 620px; }
.hero-copy h1 { margin: 0 0 12px; font: 400 clamp(18px, 1.7vw, 24px)/1.2 var(--f-display); letter-spacing: 0.12em; text-transform: uppercase; }
#brief { margin: 0 0 22px; color: var(--text-2); font-size: 16px; line-height: 1.6; }
#brief b { color: var(--text); font-weight: 500; }
#brief .hl { color: var(--aria-hot); text-shadow: 0 0 10px rgba(255, 46, 67, 0.6); }
#brief .bad { color: var(--danger); font-weight: 500; }
.cmdbar { position: relative; }
.cmdbar input {
  width: 100%; padding: 14px 46px 14px 16px; outline: none; color: var(--text);
  background: var(--inset); border: 1px solid var(--line-2);
  font: 400 13.5px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.04em; transition: border-color .2s, box-shadow .2s;
}
.cmdbar input::placeholder { color: var(--text-3); }
.cmdbar input:focus { border-color: rgba(255, 46, 67, 0.7); box-shadow: var(--glow-aria); }
.cmdbar kbd { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); }
kbd { font-size: 10px; color: var(--text-3); border: 1px solid var(--line); padding: 2px 6px; border-radius: 3px; }


/* ── vitals ───────────────────────────────────────────────────────────── */
.view-vitals.view-on { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 18px; align-content: start; padding-top: 4px; }
.gauges { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gauge { min-width: 0; }
.gauge-num { font: 300 46px/1 var(--f-body); font-variation-settings: 'wdth' 100; letter-spacing: -0.01em; color: var(--text); }
.gauge-num small { font-size: 0.36em; color: var(--text-2); margin-left: 3px; font-weight: 400; }
.gauge-cap { font-size: 9.5px; color: var(--text-2); margin: 6px 0 10px; }
.seg { display: grid; grid-template-columns: repeat(20, 1fr); gap: 2px; height: 4px; }
.seg i { background: rgba(94, 200, 255, 0.12); }
.seg i.on { background: var(--data); box-shadow: 0 0 6px rgba(94, 200, 255, 0.55); }
.gauge.warn .seg i.on { background: var(--warn); box-shadow: 0 0 6px var(--warn); }
.gauge.bad .seg i.on { background: var(--danger); box-shadow: 0 0 6px var(--danger); }
.gauge.warn .gauge-num { color: var(--warn); }
.gauge.bad .gauge-num { color: var(--danger); }
.cores { display: grid; grid-template-columns: repeat(auto-fit, minmax(40px, 1fr)); gap: 8px; margin-top: 20px; }
.core { font: 400 9.5px var(--f-mono); color: var(--text-3); text-align: center; }
.core-bar { height: 42px; background: rgba(94, 200, 255, 0.05); border: 1px solid var(--line); position: relative; overflow: hidden; margin-bottom: 4px; border-radius: 2px; }
.core-bar i { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(0deg, rgba(94, 200, 255, 0.25), var(--data)); transition: height .8s; }
.spark { width: 100%; height: 120px; display: block; }
.spark-legend { display: flex; justify-content: space-between; font: 400 11px var(--f-mono); font-variation-settings: 'wdth' 75; margin-top: 8px; }
.spark-legend .rx { color: var(--data); }
.spark-legend .tx { color: var(--aria-hot); text-shadow: 0 0 8px rgba(255, 46, 67, 0.7); }
.stat-rows { display: grid; gap: 14px; }
.stat-row { display: grid; grid-template-columns: 70px 1fr auto; gap: 12px; align-items: center; font: 400 11.5px var(--f-mono); font-variation-settings: 'wdth' 75; }
.stat-row .k { color: var(--text-2); font-size: 10px; }
.stat-row .v { text-align: right; white-space: nowrap; }
.bar { height: 3px; background: rgba(94, 200, 255, 0.1); position: relative; overflow: hidden; }
.bar i { position: absolute; inset: 0 auto 0 0; background: var(--data); box-shadow: var(--glow-data); transition: width .8s; }
.bar.warn i { background: var(--warn); box-shadow: 0 0 8px var(--warn); }
.bar.bad i { background: var(--danger); box-shadow: 0 0 8px var(--danger); }
.kv-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 18px; margin-top: 16px; font: 400 11.5px var(--f-mono); font-variation-settings: 'wdth' 75; }
.kv-grid div { display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); padding-bottom: 5px; }
.kv-grid span { color: var(--text-2); font-size: 10px; }

/* ── fleet ────────────────────────────────────────────────────────────── */
.view-fleet.view-on { display: flex; flex-direction: column; min-height: 100%; }
.view-fleet .panel-head { flex-wrap: wrap; }
.filter-tabs { display: inline-flex; gap: 2px; }
.filter-tabs button, .mini-btn {
  background: none; border: 1px solid transparent; color: var(--text-2); cursor: pointer; border-radius: 2px;
  font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.14em; text-transform: uppercase; padding: 4px 9px;
}
.filter-tabs button.on { border-color: var(--line-2); color: var(--text); }
.mini-btn { border-color: var(--line); }
.mini-btn:hover { color: var(--text); border-color: var(--line-2); }
.mini-btn.amber { border-color: var(--aria); color: var(--aria-hot); background: var(--aria-soft); animation: armed 1.4s ease-in-out infinite; }
@keyframes armed { 50% { box-shadow: var(--glow-aria); } }
.stack { margin-bottom: 18px; }
.stack-head { display: flex; align-items: center; gap: 9px; cursor: pointer; user-select: none; padding: 2px 0 9px; font: 400 10.5px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-2); flex-wrap: wrap; }
.stack-head:hover .stack-name { color: #fff; }
.chev { display: inline-grid; color: var(--holo); transition: transform .2s; }
.chev svg { width: 12px; height: 12px; }
.stack.collapsed .chev { transform: rotate(-90deg); }
.stack.collapsed .fleet-grid { display: none; }
.stack-name { font: 400 10.5px var(--f-display); letter-spacing: 0.2em; color: var(--text); text-transform: uppercase; transition: color .2s; }
.tag { display: inline-flex; align-items: center; gap: 4px; font: 400 9px var(--f-mono); letter-spacing: 0.12em; padding: 1px 6px; border: 1px solid var(--line); color: var(--text-2); border-radius: 2px; }
.tag svg { width: 9px; height: 9px; }
.tag.portainer { color: var(--data); border-color: rgba(94, 200, 255, 0.35); }
.tag.aio { color: var(--holo); border-color: var(--line-2); }
.tag.locked, .tag.updates { color: var(--aria-hot); border-color: rgba(255, 46, 67, 0.45); background: var(--aria-soft); }
.stack-rule { flex: 1; height: 1px; background: linear-gradient(90deg, var(--line), transparent); min-width: 10px; }
.stack-meta { white-space: nowrap; }
.stack-meta .warn { color: var(--warn); }
.stack-link { color: var(--aria-hot); text-decoration: none; font-size: 9.5px; letter-spacing: 0.14em; border: 1px solid rgba(255, 46, 67, 0.45); padding: 1px 7px; border-radius: 2px; }
.fleet-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(244px, 1fr)); gap: 8px; }
.ctr {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 3px 10px; align-items: center; padding: 9px 11px;
  border: 1px solid var(--line); background: rgba(12, 15, 22, 0.7); font: 400 10.5px var(--f-mono); font-variation-settings: 'wdth' 75;
}
.ctr.down { border-color: rgba(255, 62, 165, 0.4); background: rgba(40, 8, 26, 0.45); }
.ctr.pending { border-color: var(--aria); box-shadow: inset 0 0 20px var(--aria-soft), var(--glow-aria); }
.ctr .dot { grid-row: 1 / 3; }
.ctr-name { display: flex; align-items: center; min-width: 0; color: var(--text); font-size: 11.5px; }
.ctr-name .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.ctr-stats { grid-column: 2; display: flex; gap: 10px; color: var(--text-2); white-space: nowrap; }
.ctr-stats .hot { color: var(--warn); }
.ctr-stats .ask { color: var(--aria-hot); letter-spacing: 0.16em; text-shadow: 0 0 8px rgba(255, 46, 67, 0.7); }
.ctr-actions, .ctr-confirm { grid-row: 1 / 3; grid-column: 3; display: flex; gap: 4px; }
.ctr-confirm { flex-direction: column; }
.ctr-actions { opacity: .4; transition: opacity .2s; }
.ctr:hover .ctr-actions, .ctr:focus-within .ctr-actions { opacity: 1; }
.ctr-actions .icon-btn { width: 26px; height: 26px; }
.ctr-actions .icon-btn svg { width: 13px; height: 13px; }
.lock { width: 26px; height: 26px; display: inline-grid; place-items: center; color: var(--holo); }
.lock svg { width: 13px; height: 13px; }
.upd { flex: none; font: 400 8.5px var(--f-mono); letter-spacing: 0.12em; padding: 0 5px; margin-left: 7px; border: 1px solid; border-radius: 2px; }
.upd.update { color: var(--aria-hot); border-color: rgba(255, 46, 67, 0.55); background: var(--aria-soft); }
.upd.pulled { color: var(--data); border-color: rgba(94, 200, 255, 0.45); }

/* ── ARIA console ─────────────────────────────────────────────────────── */
.console { display: flex; flex-direction: column; min-height: 0; border-color: rgba(255, 46, 67, 0.28); }
.console::after { --c: var(--aria); }
.console::before { content: ''; position: absolute; left: 30%; right: 30%; top: -1px; height: 1px; background: linear-gradient(90deg, transparent, #fff, transparent); box-shadow: 0 0 10px 1px rgba(255, 46, 67, 0.8); z-index: 1; }
.console-head { padding: 16px 18px 12px; border-bottom: 1px solid var(--line); }
.console-id { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.console-id .aux { font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.18em; color: var(--text-2); text-transform: uppercase; }
.console-controls { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.console-controls .grow { flex: 1; }
.select {
  appearance: none; cursor: pointer; padding: 6px 26px 6px 10px; background-color: var(--inset); color: var(--text);
  border: 1px solid var(--line); border-radius: var(--r); font: 400 10.5px var(--f-mono); font-variation-settings: 'wdth' 75;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-2) 50%), linear-gradient(135deg, var(--text-2) 50%, transparent 50%);
  background-position: calc(100% - 13px) 50%, calc(100% - 9px) 50%; background-size: 4px 4px; background-repeat: no-repeat;
}
.connectors { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 11px; }
.conn { display: inline-flex; align-items: center; gap: 5px; font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-2); padding: 2px 8px; border: 1px solid var(--line); border-radius: 999px; }
.conn .dot { width: 4px; height: 4px; }

.history { display: none; max-height: 42%; overflow-y: auto; border-bottom: 1px solid var(--line); background: var(--inset); }
.history.open { display: block; }
.history-item { display: flex; align-items: center; gap: 8px; padding: 10px 18px; cursor: pointer; border-bottom: 1px solid var(--line); font-size: 14px; }
.history-item:hover, .history-item.on { background: var(--aria-soft); }
.history-item .t { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.history-item time { font: 400 10px var(--f-mono); color: var(--text-3); }
.history-item .del { opacity: 0; border: 0; background: none; color: var(--text-2); cursor: pointer; }
.history-item:hover .del, .history-item .del:focus-visible { opacity: 1; }
.history-item .del:hover { color: var(--danger); }

.messages { flex: 1; min-height: 0; overflow-y: auto; padding: 20px 18px; display: flex; flex-direction: column; gap: 18px; }
.empty { margin: auto; max-width: 340px; }
.empty .aria-mark { margin-bottom: 22px; }
.empty h3 { margin: 0 0 6px; font: 500 18px var(--f-body); }
.empty p { margin: 0 0 18px; color: var(--text-2); }
.suggests { display: flex; flex-direction: column; gap: 6px; }
.suggests button { text-align: left; cursor: pointer; padding: 10px 13px; font-size: 14px; background: var(--inset); border: 1px solid var(--line); color: var(--text); transition: border-color .2s; }
.suggests button:hover { border-color: rgba(255, 46, 67, 0.6); }

.msg-tag { font-size: 9.5px; color: var(--text-3); margin-bottom: 6px; }
.msg.user { align-self: flex-end; max-width: 86%; }
.msg.user .msg-tag { text-align: right; }
.msg.user .bubble { padding: 10px 14px; white-space: pre-wrap; word-wrap: break-word; background: var(--surface-2); border: 1px solid var(--line-2); }
.msg.ai .msg-tag { color: var(--aria); }
.msg.ai .bubble { border-left: 1px solid var(--aria); box-shadow: -6px 0 14px -10px var(--aria); padding: 1px 0 1px 15px; line-height: 1.65; }
.md > :first-child { margin-top: 0; }
.md > :last-child { margin-bottom: 0; }
.md p { margin: 0 0 .75em; }
.md h1, .md h2, .md h3 { font: 400 11px var(--f-display); letter-spacing: 0.2em; text-transform: uppercase; color: var(--text); margin: 1.2em 0 .6em; }
.md strong { color: #fff; font-weight: 600; }
.md code { font-size: 12.5px; background: var(--inset); padding: 1px 5px; border-radius: 3px; border: 1px solid var(--line); }
.md pre { background: var(--inset); border: 1px solid var(--line); padding: 10px 12px; overflow-x: auto; border-radius: var(--r); }
.md pre code { background: none; padding: 0; border: 0; }
.md table { border-collapse: collapse; font-size: 13.5px; margin: .5em 0; display: block; overflow-x: auto; }
.md th, .md td { border: 1px solid var(--line); padding: 5px 10px; text-align: left; }
.md th { color: var(--data); font-weight: 500; }
.md ul, .md ol { padding-left: 1.3em; margin: 0 0 .75em; }
.md blockquote { margin: .5em 0; padding: 4px 10px; border-left: 1px solid var(--warn); color: var(--warn); background: rgba(255, 138, 61, 0.06); }
.md a { color: var(--data); }
.cursor::after { content: '▍'; color: var(--aria); animation: blink .9s steps(2) infinite; margin-left: 1px; }

.tool { display: inline-flex; align-items: center; gap: 8px; margin: 4px 0; padding: 4px 10px; font: 400 10.5px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-2); border: 1px solid var(--line); border-radius: var(--r); }
.tool b { color: var(--text); font-weight: 500; }
.tool .spin, .att .spin { width: 10px; height: 10px; border: 1px solid var(--aria); border-right-color: transparent; border-radius: 50%; animation: spin .8s linear infinite; display: inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }
.tool .ok { color: var(--data); }
.tool .err { color: var(--danger); }

.approval { border: 1px solid rgba(255, 46, 67, 0.6); background: var(--aria-soft); padding: 13px; margin: 6px 0; box-shadow: var(--glow-aria); }
.approval h4 { margin: 0 0 7px; font: 400 10px var(--f-display); letter-spacing: 0.22em; color: var(--aria-hot); text-transform: uppercase; text-shadow: 0 0 8px rgba(255, 46, 67, 0.7); }
.approval .what { font: 400 12px var(--f-mono); margin-bottom: 6px; }
.approval pre { font-size: 11px; max-height: 160px; overflow: auto; background: var(--inset); padding: 8px; margin: 0 0 11px; white-space: pre-wrap; word-break: break-word; border-radius: var(--r); }
.approval .row { display: flex; gap: 8px; }
.approval.memory { border-color: var(--line-2); background: rgba(170, 215, 250, 0.05); box-shadow: none; }
.approval.memory h4 { color: var(--holo); text-shadow: none; }
.approval.resolved { opacity: .55; box-shadow: none; }

.btn {
  cursor: pointer; padding: 10px 18px; border-radius: var(--r);
  border: 1px solid var(--aria); background: rgba(255, 46, 67, 0.14); color: #fff;
  font: 400 10px var(--f-display); letter-spacing: 0.22em; text-transform: uppercase;
  box-shadow: inset 0 0 14px rgba(255, 46, 67, 0.25); transition: background .2s, box-shadow .2s;
}
.btn:hover { background: rgba(255, 46, 67, 0.28); box-shadow: inset 0 0 14px rgba(255, 46, 67, 0.4), var(--glow-aria); }
.btn:disabled { opacity: .5; cursor: default; }
.btn.armed { animation: armed 1.4s ease-in-out infinite; background: rgba(255, 46, 67, 0.3); }
.btn.ghost { background: none; color: var(--text-2); border-color: var(--line-2); box-shadow: none; }
.btn.ghost:hover { color: var(--text); border-color: var(--holo); box-shadow: none; }

.composer { border-top: 1px solid var(--line); padding: 12px 16px 14px; }
.composer-box { display: flex; align-items: flex-end; gap: 8px; padding: 6px; background: var(--inset); border: 1px solid var(--line-2); transition: border-color .2s, box-shadow .2s; }
.composer-box:focus-within { border-color: rgba(255, 46, 67, 0.65); box-shadow: var(--glow-aria); }
.composer textarea { flex: 1; resize: none; background: none; border: 0; outline: none; padding: 7px 4px; max-height: 160px; font-size: 15px; line-height: 1.4; }
.composer textarea::placeholder { color: var(--text-3); }
.send { border-color: var(--aria); color: #fff; background: rgba(255, 46, 67, 0.2); box-shadow: inset 0 0 10px rgba(255, 46, 67, 0.3); }
.send:hover { color: #fff; background: rgba(255, 46, 67, 0.35); box-shadow: var(--glow-aria); }
.send.stop { background: var(--danger); border-color: var(--danger); box-shadow: none; }
.composer-foot { font-size: 9px; color: var(--text-3); margin-top: 7px; }

.attach-tray { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.att { display: inline-flex; align-items: center; gap: 7px; max-width: 220px; padding: 4px 6px 4px 4px; border: 1px solid var(--line-2); background: var(--inset); font: 400 10.5px var(--f-mono); border-radius: var(--r); color: var(--text); text-decoration: none; }
.att img, .att .ic { width: 30px; height: 30px; object-fit: cover; flex: none; display: grid; place-items: center; background: rgba(170, 215, 250, 0.06); color: var(--holo); font-size: 8.5px; border-radius: 2px; }
.att span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.att small { color: var(--text-3); }
.att button { border: 0; background: none; color: var(--text-2); cursor: pointer; padding: 0 2px; }
.att button:hover { color: var(--danger); }
.att.err { border-color: var(--danger); color: var(--danger); }
.console.drop .messages { outline: 1px dashed var(--aria); outline-offset: -10px; }
.msg-files { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; margin-bottom: 6px; }
.msg-files a { text-decoration: none; }
.msg-files img { max-width: 160px; max-height: 120px; display: block; border: 1px solid var(--line-2); border-radius: var(--r); }

/* ── modals ───────────────────────────────────────────────────────────── */
.modal { position: fixed; inset: 0; z-index: 50; display: none; place-items: center; padding: 20px; background: rgba(3, 4, 7, 0.78); backdrop-filter: blur(5px); }
.modal.open { display: grid; }
.modal .panel { background: rgba(10, 12, 18, 0.96); }
.side-panel { width: min(560px, 100%); max-height: min(86vh, 820px); overflow-y: auto; }
.log-panel { width: min(1000px, 100%); height: min(80vh, 760px); display: flex; flex-direction: column; }
.log-panel pre { flex: 1; overflow: auto; margin: 0; font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-all; }
.push-box { border: 1px solid var(--line); background: var(--inset); padding: 13px; margin-bottom: 16px; }
.push-box .state { display: flex; align-items: center; gap: 8px; font: 400 10px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 8px; }
.push-box p { margin: 0 0 11px; color: var(--text-2); }
.push-box .row { display: flex; gap: 8px; flex-wrap: wrap; }
.alert-list h3 { margin: 16px 0 9px; font: 400 10px var(--f-display); letter-spacing: 0.24em; text-transform: uppercase; color: var(--text-2); }
.alert-item { display: grid; grid-template-columns: auto 1fr auto; gap: 4px 10px; align-items: start; padding: 10px 11px; margin-bottom: 6px; border: 1px solid var(--line); background: var(--surface-2); }
.alert-item.critical { border-color: rgba(255, 62, 165, 0.5); }
.alert-item.warning { border-color: rgba(255, 138, 61, 0.45); }
.alert-item .dot { margin-top: 8px; }
.alert-item b { font-weight: 500; }
.alert-item .d { grid-column: 2; color: var(--text-2); font-size: 13.5px; }
.alert-item time { font: 400 10px var(--f-mono); color: var(--text-3); white-space: nowrap; }
.alert-empty { color: var(--text-2); font: 400 11px var(--f-mono); padding: 4px 0; letter-spacing: 0.1em; }
.hint { color: var(--text-2); margin: 0 0 11px; font-size: 14px; }
.mem-text { width: 100%; min-height: 260px; resize: vertical; padding: 11px 13px; outline: none; background: var(--inset); border: 1px solid var(--line-2); border-radius: var(--r); font: 400 13px/1.6 var(--f-mono); font-variation-settings: 'wdth' 75; }
.mem-text:focus { border-color: rgba(255, 46, 67, 0.6); }
.row-end { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 11px; }
.mem-status { font: 400 10px var(--f-mono); color: var(--text-2); letter-spacing: 0.12em; }

/* ── boot ─────────────────────────────────────────────────────────────── */
.boot { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; background: var(--bg); transition: opacity .6s ease .15s, visibility .6s .15s; }
.boot.done { opacity: 0; visibility: hidden; }
.mobile-tabs { display: none; }

/* ── responsive ───────────────────────────────────────────────────────── */
@media (max-width: 1280px) {
  .stage { grid-template-columns: minmax(0, 1fr) 380px; }
  #chipUp, .readouts .ro:nth-child(4) { display: none; }
}
@media (max-width: 1080px) {
  .readouts .ro:not(.sys) { display: none; }
  .hero { grid-template-columns: 1fr; align-items: start; }
}
@media (max-width: 860px) {
  body { overflow: auto; display: block; height: auto; }
  .topbar { flex-wrap: wrap; gap: 10px; padding-bottom: 8px; }
  .tabs, .clock { display: none; }
  .readouts { order: 3; flex-basis: 100%; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
  .readouts::-webkit-scrollbar { display: none; }
  .readouts .ro:not(.sys) { display: inline-flex; }
  #chipUp { display: none; }
  .actions { margin-left: auto; }
  .stage { display: block; padding-bottom: calc(56px + 18px + env(safe-area-inset-bottom)); }
  .views { overflow: visible; }
  .hero { padding: 22px 0 28px; gap: 20px; }
  .am-lg .am-word { font-size: 52px; }
  .atmos::after { display: none; }
  .view-vitals.view-on { grid-template-columns: 1fr; }
  .gauge-num { font-size: 36px; }
  .fleet-grid { grid-template-columns: 1fr; }
  .view-fleet .panel-head .aux { display: none; }
  .console-controls { flex-wrap: nowrap; }
  .console-controls .grow { display: none; }
  .console-controls .select { flex: 1 1 0; min-width: 0; }
  .console { position: fixed; inset: 0 0 calc(56px + env(safe-area-inset-bottom)) 0; padding-top: calc(env(safe-area-inset-top) + 8px); z-index: 30; display: none; border-radius: 0; background: var(--bg); border-width: 0; }
  .console::before { display: none; }
  .console::after { display: none; }
  body.chat-open .console { display: flex; }
  body.chat-open .views { display: none; }
  .mobile-tabs {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    height: calc(56px + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom);
    background: rgba(5, 6, 10, 0.94); backdrop-filter: blur(12px); border-top: 1px solid var(--line-2);
  }
  .mobile-tabs button {
    flex: 1; border: 0; background: none; cursor: pointer; color: var(--text-2);
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    font: 400 8.5px var(--f-display); letter-spacing: 0.18em; text-transform: uppercase;
  }
  .mobile-tabs button svg { width: 18px; height: 18px; }
  .mobile-tabs button.on { color: var(--text); }
  .mobile-tabs .tab-glyph { font: 400 15px/18px 'Michroma', sans-serif; color: var(--aria-hot); text-shadow: var(--bloom); }
  .mobile-tabs .tab-aria.on { color: var(--aria-hot); }
}
@media (display-mode: standalone) { body { overscroll-behavior: none; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

/* ── calendar ─────────────────────────────────────────────────────────── */
.nextup { display: flex; gap: 10px; margin: -14px 0 28px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.nextup::-webkit-scrollbar { display: none; }
.nu-label { flex: none; align-self: center; font: 400 10px var(--f-display); letter-spacing: 0.26em; text-transform: uppercase; color: var(--text-2); margin-right: 4px; }
.nu-item { flex: none; min-width: 190px; max-width: 280px; padding: 10px 13px; border: 1px solid var(--line); background: rgba(12, 15, 22, 0.62); border-radius: var(--r); position: relative; }
.nu-item.aria { border-color: rgba(255, 46, 67, 0.35); }
.nu-item.aria::before { content: ''; position: absolute; left: -1px; top: 8px; bottom: 8px; width: 1px; background: var(--aria); box-shadow: var(--bloom); }
.nu-when { font: 400 10px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.12em; text-transform: uppercase; color: var(--data); }
.nu-item.now .nu-when { color: var(--aria-hot); text-shadow: 0 0 8px rgba(255, 46, 67, 0.7); }
.nu-title { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.nu-meta { font: 400 10px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nu-empty { color: var(--text-2); font-size: 14px; align-self: center; }
.sub-head { margin: 18px 0 9px; font: 400 10px var(--f-display); letter-spacing: 0.24em; text-transform: uppercase; color: var(--text-2); }
.sub-head:first-of-type { margin-top: 0; }
.cal-list { display: grid; gap: 4px; max-height: 260px; overflow-y: auto; }
.cal-day { font: 400 9.5px var(--f-mono); letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); margin: 8px 0 2px; }
.cal-row { display: grid; grid-template-columns: 92px 1fr auto; gap: 10px; align-items: baseline; padding: 6px 10px; border: 1px solid var(--line); background: var(--surface-2); border-radius: var(--r); font-size: 14px; }
.cal-row .t { font: 400 11px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--data); }
.cal-row .n { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-row .s { font: 400 9.5px var(--f-mono); color: var(--text-3); letter-spacing: 0.1em; text-transform: uppercase; }
.cal-row.aria .s { color: var(--aria-hot); }
.copy-row, .feed-form { display: flex; gap: 8px; }
.copy-row input, .feed-form input { flex: 1; min-width: 0; padding: 9px 11px; outline: none; background: var(--inset); border: 1px solid var(--line-2); border-radius: var(--r); font: 400 11.5px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text); }
.copy-row input:focus, .feed-form input:focus { border-color: rgba(255, 46, 67, 0.6); }
.feed-form #feedName { flex: 0 0 140px; }
.feed-list { display: grid; gap: 6px; margin-bottom: 8px; }
.feed { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); background: var(--surface-2); border-radius: var(--r); font-size: 14px; }
.feed .h { flex: 1; font: 400 10.5px var(--f-mono); color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.feed .err { color: var(--danger); font: 400 10.5px var(--f-mono); }
.approval .summary { white-space: pre-wrap; font-family: var(--f-body); font-size: 14px; line-height: 1.5; color: var(--text); background: var(--inset); }
@media (max-width: 860px) {
  .nextup { margin-top: -6px; }
  .feed-form { flex-wrap: wrap; }
  .feed-form #feedName { flex: 1 1 100%; }
}

/* ── calendar module ──────────────────────────────────────────────────── */
.cal-module { max-width: 920px; }
.cal-module .panel-head { margin-bottom: 14px; }
.cal-module #cmMonth { min-width: 150px; }
.cm-nav { width: 28px; height: 28px; }
.cm-nav svg { width: 14px; height: 14px; }
.cm-body { display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: 26px; }
.cm-week, .cm-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.cm-week span { text-align: center; font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.14em; color: var(--text-3); padding-bottom: 6px; }
.cm-day {
  position: relative; aspect-ratio: 1; min-width: 0; padding: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  background: transparent; border: 1px solid transparent; border-radius: var(--r); cursor: pointer; color: var(--text);
  font: 400 12.5px var(--f-mono); font-variation-settings: 'wdth' 75; transition: border-color .15s, background .15s;
}
.cm-day:hover { border-color: var(--line-2); background: rgba(170, 215, 250, 0.04); }
.cm-day.out { color: var(--text-3); }
.cm-day.today { color: #fff; }
.cm-day.today::after { content: ''; position: absolute; inset: 3px; border: 1px solid rgba(255, 46, 67, 0.55); border-radius: 2px; box-shadow: inset 0 0 10px rgba(255, 46, 67, 0.2); pointer-events: none; }
.cm-day.sel { background: rgba(170, 215, 250, 0.08); border-color: var(--holo); }
.cm-dots { display: flex; gap: 3px; height: 4px; align-items: center; }
.cm-dots i { width: 4px; height: 4px; border-radius: 50%; background: var(--data); box-shadow: 0 0 5px rgba(94, 200, 255, 0.6); }
.cm-dots i.aria { background: var(--aria); box-shadow: 0 0 5px rgba(255, 46, 67, 0.9); }
.cm-dots b { font: 400 8px/4px var(--f-mono); color: var(--text-2); }
.cm-day.out .cm-dots i { opacity: .45; }
.cm-legend { display: flex; gap: 14px; margin-top: 10px; font: 400 9px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-3); }
.cm-legend i { display: inline-block; width: 5px; height: 5px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; background: var(--data); }
.cm-legend i.aria { background: var(--aria); box-shadow: 0 0 5px rgba(255, 46, 67, 0.9); }
.cm-agenda { min-width: 0; border-left: 1px solid var(--line); padding-left: 24px; }
.cm-agenda h3 { margin: 0 0 12px; font: 400 11px var(--f-display); letter-spacing: 0.2em; text-transform: uppercase; }
.cm-agenda h3 small { display: block; margin-top: 5px; font: 400 9.5px var(--f-mono); font-variation-settings: 'wdth' 75; letter-spacing: 0.14em; color: var(--text-3); }
.cm-ev { display: grid; grid-template-columns: 82px 1fr; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.cm-ev:last-of-type { border-bottom: 0; }
.cm-ev .t { font: 400 11px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--data); padding-top: 2px; }
.cm-ev.aria .t { color: var(--aria-hot); text-shadow: 0 0 8px rgba(255, 46, 67, 0.6); }
.cm-ev .n { font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.cm-ev .m { font: 400 10px var(--f-mono); font-variation-settings: 'wdth' 75; color: var(--text-3); }
.cm-empty { color: var(--text-2); font-size: 14px; margin: 0 0 14px; }
.cm-add { margin-top: 14px; }
@media (max-width: 860px) {
  .cm-body { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .cm-agenda { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 16px; }
  .cal-module #cmMonth { min-width: 0; }
}

.push-err { color: var(--danger) !important; font: 400 11.5px var(--f-mono); }
.push-devices-head { margin-top: 16px; }
