@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Sora:wght@500;600;700&display=swap');

:root {
  --font-family: 'DM Sans', sans-serif;
  --font-display: 'Sora', sans-serif;
  /* Document numbers and fiscal identifiers only. Installed faces first, so the digits
     are the ones the operating system already renders well; the generic keyword is the
     floor, not the intent. */
  --font-mono: ui-monospace, 'Cascadia Mono', 'Segoe UI Mono', 'SFMono-Regular',
    'Roboto Mono', Menlo, Consolas, monospace;
  --bg-primary: #f8fafc;
  --bg-secondary: #ffffff;
  --text-primary: #0f172a;
  --text-secondary: #475569;
  --border-color: #e2e8f0;
  
  --primary: #4f46e5;
  --primary-hover: #4338ca;
  --primary-light: #e0e7ff;
  
  --success: #047857;
  --success-light: #d1fae5;
  --warning: #b45309;
  --warning-light: #fef3c7;
  --danger: #b91c1c;
  --danger-light: #fee2e2;
  
  /* Status pill tones. Low-saturation ground, dark text of the same family — a table
     where every row shouts is a table where nothing does, and these are read all day.
     Kept separate from --success / --danger, which stay saturated for the places that
     genuinely need to interrupt: destructive actions, error banners, overrun figures. */
  --tone-neutral-bg: #eceefb;
  --tone-neutral-fg: #3b3d80;
  --tone-positive-bg: #e6f2ec;
  --tone-positive-fg: #1c6444;
  --tone-attention-bg: #fbf1de;
  --tone-attention-fg: #85560f;
  --tone-critical-bg: #f9e9e9;
  --tone-critical-fg: #8d312e;
  --tone-muted-bg: #edf0f4;
  --tone-muted-fg: #4b5563;

  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
}

.dark-mode {
  --bg-primary: #0b0f19;
  --bg-secondary: #161f30;
  --text-primary: #f8fafc;
  --text-secondary: #94a3b8;
  --border-color: #1e293b;
  --primary-light: #1e1b4b;
  --success-light: #064e3b;
  --warning-light: #78350f;
  --danger-light: #7f1d1d;
  --primary: #67e8f9;
  --primary-hover: #22d3ee;
  --primary-light: rgba(34, 211, 238, 0.13);
  --success: #34d399;
  --warning: #fbbf24;
  --danger: #fb7185;

  /* The relationship is inverted, not the intent: a low-contrast ground with text of the
     same family sitting quietly on it. */
  --tone-neutral-bg: #232449;
  --tone-neutral-fg: #b6b9ef;
  --tone-positive-bg: #123326;
  --tone-positive-fg: #85d4aa;
  --tone-attention-bg: #3a2c11;
  --tone-attention-fg: #e6bf7e;
  --tone-critical-bg: #391f1f;
  --tone-critical-fg: #eba4a1;
  --tone-muted-bg: #1e2635;
  --tone-muted-fg: #a3b0c2;
}

/* EasyWave OS command-deck layer. The existing primitives stay available to the older
   module surfaces; these tokens and classes give the cockpit a distinct visual grammar
   without forcing every legacy page to be rewritten in the same batch. */
:root {
  --os-panel: #ffffff;
  --os-panel-muted: #f1f5f9;
  --os-line: rgba(15, 23, 42, 0.1);
  --os-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
  --os-cyan: #0e7490;
  --os-blue: #4338ca;
  --os-amber: #d97706;
  --os-red: #dc2626;
  --os-green: #059669;
}

.dark-mode {
  --os-panel: #101b2b;
  --os-panel-muted: #0d1726;
  --os-line: rgba(148, 163, 184, 0.15);
  --os-shadow: 0 24px 70px rgba(0, 0, 0, 0.24);
  --os-cyan: #67e8f9;
  --os-blue: #a5b4fc;
  --os-amber: #fbbf24;
  --os-red: #fb7185;
  --os-green: #6ee7b7;
}

body,
button,
input,
select,
textarea {
  font-family: var(--font-family);
}

h1,
h2,
h3,
h4,
.logo-container,
.os-kicker {
  font-family: var(--font-display);
}

.dark-mode .sidebar,
.dark-mode .header {
  background: linear-gradient(180deg, #0f1a2a 0%, #0d1726 100%);
}

.dark-mode .sidebar {
  border-right-color: var(--os-line);
}

.dark-mode .header {
  border-bottom-color: var(--os-line);
}

.dark-mode .content-area {
  background:
    radial-gradient(circle at 80% -10%, rgba(34, 211, 238, 0.08), transparent 34%),
    radial-gradient(circle at 8% 100%, rgba(99, 102, 241, 0.06), transparent 28%),
    #0b1320;
}

.dark-mode .nav-item:hover,
.dark-mode .nav-item.active {
  background: linear-gradient(90deg, rgba(34, 211, 238, 0.14), rgba(34, 211, 238, 0.03));
  color: var(--os-cyan);
  box-shadow: inset 2px 0 0 var(--os-cyan);
}

.dark-mode .card,
.dark-mode .table-container {
  background-color: var(--os-panel);
  border-color: var(--os-line);
}

.dark-mode .btn-secondary {
  background: rgba(148, 163, 184, 0.12);
  color: var(--text-primary);
}

.dark-mode .btn-primary {
  background: var(--os-cyan);
  color: #06232b;
}

.dark-mode .btn-primary:hover {
  background: #a5f3fc;
}

.os-dashboard {
  max-width: 1560px;
  margin: 0 auto;
  padding-bottom: 40px;
  animation: os-fade-in 0.45s ease both;
}

.os-hero {
  position: relative;
  display: flex;
  justify-content: space-between;
  gap: 28px;
  align-items: flex-end;
  padding: 34px 38px;
  border: 1px solid var(--os-line);
  border-radius: 22px;
  overflow: hidden;
  background:
    linear-gradient(110deg, rgba(34, 211, 238, 0.16), transparent 45%),
    linear-gradient(145deg, var(--os-panel) 0%, var(--os-panel-muted) 100%);
  box-shadow: var(--os-shadow);
}

.os-hero::after {
  content: '';
  position: absolute;
  width: 360px;
  height: 360px;
  right: -110px;
  top: -150px;
  border: 1px solid rgba(103, 232, 249, 0.22);
  border-radius: 50%;
  box-shadow: 0 0 0 24px rgba(103, 232, 249, 0.035), 0 0 0 48px rgba(103, 232, 249, 0.02);
  pointer-events: none;
}

.os-hero-copy,
.os-hero-actions {
  position: relative;
  z-index: 1;
}

.os-hero-copy h2 {
  margin: 8px 0 8px;
  font-size: clamp(26px, 3vw, 38px);
  letter-spacing: -0.04em;
}

.os-hero-copy p {
  max-width: 650px;
  color: var(--text-secondary);
  font-size: 15px;
  line-height: 1.6;
}

.os-kicker {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--os-cyan);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.os-hero-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.btn-ghost {
  border: 1px solid var(--os-line);
  background: transparent;
  color: var(--text-primary);
  box-shadow: none;
}

.btn-ghost:hover {
  background: rgba(103, 232, 249, 0.08);
  border-color: rgba(103, 232, 249, 0.35);
}

.os-refresh-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--os-line);
  border-radius: 11px;
  background: transparent;
  color: var(--text-secondary);
  cursor: pointer;
}

.os-refresh-button:hover {
  color: var(--os-cyan);
  border-color: var(--os-cyan);
}

.os-refresh-button:disabled {
  opacity: 0.6;
  cursor: wait;
}

.os-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 18px 0;
}

.os-kpi-card {
  position: relative;
  min-height: 152px;
  padding: 22px;
  border: 1px solid var(--os-line);
  border-radius: 18px;
  overflow: hidden;
  background: var(--os-panel);
  box-shadow: 0 8px 28px rgba(15, 23, 42, 0.06);
}

.os-kpi-card::after {
  content: '';
  position: absolute;
  right: -24px;
  bottom: -40px;
  width: 110px;
  height: 110px;
  border: 1px solid currentColor;
  border-radius: 50%;
  opacity: 0.13;
}

.os-kpi-card > span,
.os-kpi-card > small {
  display: block;
  color: var(--text-secondary);
}

.os-kpi-card > span {
  padding-right: 40px;
  font-size: 13px;
  font-weight: 600;
}

.os-kpi-card > strong {
  display: block;
  margin: 10px 0 4px;
  font-family: var(--font-display);
  font-size: 34px;
  letter-spacing: -0.06em;
}

.os-kpi-card > small {
  font-size: 11px;
}

.os-kpi-icon {
  display: inline-flex;
  float: right;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: currentColor;
  color: inherit;
}

.os-kpi-cyan { color: var(--os-cyan); }
.os-kpi-green { color: var(--os-green); }
.os-kpi-amber { color: var(--os-amber); }
.os-kpi-red { color: var(--os-red); }

.os-workstream-grid,
.os-detail-grid,
.os-bottom-grid {
  display: grid;
  gap: 14px;
  margin-bottom: 14px;
}

.os-workstream-grid { grid-template-columns: minmax(0, 1.25fr) minmax(340px, 0.75fr); }
.os-detail-grid,
.os-bottom-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.os-panel {
  min-width: 0;
  padding: 22px;
  border: 1px solid var(--os-line);
  border-radius: 18px;
  background: var(--os-panel);
  box-shadow: 0 8px 28px rgba(15, 23, 42, 0.05);
}

.os-panel-heading {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
  margin-bottom: 18px;
}

.os-panel-heading h3 {
  margin-top: 6px;
  font-size: 18px;
  letter-spacing: -0.025em;
}

.os-count-pill {
  min-width: 30px;
  padding: 5px 9px;
  border-radius: 999px;
  background: rgba(251, 113, 133, 0.13);
  color: var(--os-red);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}

.os-action-list,
.os-workstream-list,
.os-mini-list,
.os-activity-list {
  display: grid;
}

.os-action-row,
.os-workstream-row,
.os-mini-row,
.os-activity-row {
  display: flex;
  align-items: center;
  width: 100%;
  border: 0;
  border-top: 1px solid var(--os-line);
  background: transparent;
  color: var(--text-primary);
  cursor: pointer;
  text-align: left;
}

.os-action-row {
  gap: 12px;
  padding: 13px 0;
}

.os-action-row:hover,
.os-workstream-row:hover,
.os-mini-row:hover,
.os-activity-row:hover {
  color: var(--os-cyan);
}

.os-action-marker {
  width: 7px;
  height: 34px;
  border-radius: 8px;
  background: var(--os-cyan);
  flex: 0 0 auto;
}

.os-action-critical .os-action-marker { background: var(--os-red); }
.os-action-attention .os-action-marker { background: var(--os-amber); }

.os-action-copy,
.os-workstream-row > span:nth-child(2),
.os-mini-row > span,
.os-activity-row > span:nth-child(2) {
  display: grid;
  min-width: 0;
  flex: 1;
  gap: 2px;
}

.os-action-copy small,
.os-action-copy em,
.os-workstream-row small,
.os-mini-row em,
.os-activity-row em {
  overflow: hidden;
  color: var(--text-secondary);
  font-size: 11px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.os-action-copy small { color: var(--os-red); font-weight: 700; }
.os-action-attention .os-action-copy small { color: var(--os-amber); }
.os-action-copy strong,
.os-workstream-row strong,
.os-mini-row strong,
.os-activity-row strong {
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.os-action-date {
  color: var(--text-secondary);
  font-size: 11px;
  white-space: nowrap;
}

.os-panel-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 15px;
  border: 0;
  background: transparent;
  color: var(--os-cyan);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.os-panel-link-inline { margin-top: 0; }

.os-empty-state {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 28px 8px 20px;
  color: var(--os-green);
}

.os-empty-state strong { display: block; color: var(--text-primary); font-size: 14px; }
.os-empty-state p,
.os-muted-copy { margin-top: 5px; color: var(--text-secondary); font-size: 13px; line-height: 1.5; }

.os-workstream-row {
  gap: 11px;
  padding: 12px 0;
}

.os-workstream-row b {
  min-width: 24px;
  font-family: var(--font-display);
  font-size: 18px;
  text-align: right;
}

.os-workstream-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  flex: 0 0 auto;
}

.os-icon-red { background: rgba(251, 113, 133, 0.12); color: var(--os-red); }
.os-icon-blue { background: rgba(165, 180, 252, 0.12); color: var(--os-blue); }
.os-icon-amber { background: rgba(251, 191, 36, 0.13); color: var(--os-amber); }
.os-icon-green { background: rgba(110, 231, 183, 0.12); color: var(--os-green); }

.os-pulse-footer {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-top: 15px;
  padding-top: 15px;
  border-top: 1px solid var(--os-line);
  color: var(--text-secondary);
  font-size: 11px;
}

.os-pulse-footer span:first-child { display: inline-flex; gap: 5px; align-items: center; }
.os-pulse-footer strong { color: var(--os-green); font-family: var(--font-display); font-size: 16px; }
.os-pulse-footer span:last-child { margin-left: auto; }

.os-mini-row,
.os-activity-row {
  gap: 10px;
  padding: 11px 0;
}

.os-mini-row .badge { flex: 0 0 auto; }

.os-revenue-panel { min-height: 190px; }
.os-revenue-list { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.os-revenue-item { min-width: 150px; padding: 12px 14px; border: 1px solid var(--os-line); border-radius: 12px; background: var(--os-panel-muted); }
.os-revenue-item span { display: block; color: var(--text-secondary); font-size: 11px; font-weight: 700; letter-spacing: 0.08em; }
.os-revenue-item strong { display: block; margin-top: 6px; font-size: 16px; }
.chart-summary { margin: 8px 0 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }

.os-activity-dot { width: 7px; height: 7px; margin-left: 3px; border-radius: 50%; background: var(--os-cyan); box-shadow: 0 0 0 4px rgba(103, 232, 249, 0.1); flex: 0 0 auto; }
.os-activity-row > svg { color: var(--text-secondary); flex: 0 0 auto; }
.os-loading-lines { display: grid; gap: 12px; padding: 10px 0; }
.os-loading-lines span { display: block; height: 42px; border-radius: 9px; background: linear-gradient(90deg, var(--os-panel-muted), rgba(103, 232, 249, 0.12), var(--os-panel-muted)); background-size: 200% 100%; animation: os-shimmer 1.2s ease-in-out infinite; }
.os-spin { animation: os-spin 0.9s linear infinite; }

.login-card { background: rgba(16, 27, 43, 0.96) !important; border-color: rgba(103, 232, 249, 0.2) !important; color: #f8fafc; }
.login-card h2 { color: #67e8f9 !important; font-family: var(--font-display); }
.login-card p { color: #94a3b8 !important; }
.settings-security-layout { width: 100%; }

@keyframes os-fade-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: translateY(0); } }
@keyframes os-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
@keyframes os-spin { to { transform: rotate(360deg); } }

/* Operators who request reduced motion should still get the same information density and
   focus states without a moving command deck. Keep the rule global because the shell can
   transition between legacy source pages and the newer OS workspaces in one session. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (max-width: 1120px) {
  .os-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .os-workstream-grid { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .app-container { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 300;
    width: min(300px, 86vw);
    padding: 20px;
    transform: translateX(-105%);
    transition: transform .22s ease;
    box-shadow: 18px 0 50px rgba(0,0,0,.28);
  }
  .app-container.sidebar-open .sidebar { transform: translateX(0); }
  .sidebar-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 250;
    border: 0;
    background: rgba(2, 8, 23, .58);
    cursor: pointer;
  }
  .mobile-menu-toggle {
    display: inline-grid;
    flex: 0 0 auto;
    place-items: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    background: var(--bg-primary);
    color: var(--text-primary);
    cursor: pointer;
  }
  .header { gap: 10px; padding: 0 16px; }
  .header h1 { min-width: 0; overflow: hidden; font-size: 17px !important; text-overflow: ellipsis; white-space: nowrap; }
  .header-right { min-width: 0; flex: 1; gap: 8px !important; }
  .global-search { min-width: 0; flex: 1; width: auto !important; }
  .profile-badge span { display: none; }
  .settings-security-layout { grid-template-columns: 1fr !important; }
  .login-card { width: min(400px, calc(100vw - 32px)) !important; padding: 28px !important; }
  .os-hero { align-items: flex-start; flex-direction: column; padding: 24px; }
  .os-hero-actions { width: 100%; flex-wrap: wrap; }
  .os-detail-grid,
  .os-bottom-grid { grid-template-columns: 1fr; }
  .os-kpi-grid { grid-template-columns: 1fr 1fr; gap: 9px; }
  .os-kpi-card { min-height: 132px; padding: 15px; }
  .os-kpi-card > strong { font-size: 27px; }
}

/* Connected agenda — a read composition over existing deadlines, not a second calendar
   table. The visual metaphor is a luminous control-room timeline: a date rail anchors the
   eye while each source remains a deep-link back to its authoritative workspace. */
.agenda-workspace { display: flex; flex-direction: column; gap: 18px; animation: page-rise 420ms ease both; }
.agenda-hero { display: flex; justify-content: space-between; gap: 24px; padding: 29px 31px; border: 1px solid rgba(145, 184, 255, .25); border-radius: 22px; background: radial-gradient(circle at 86% 10%, rgba(117, 151, 255, .2), transparent 28%), radial-gradient(circle at 16% 120%, rgba(91, 216, 202, .13), transparent 33%), linear-gradient(132deg, rgba(23, 31, 65, .98), rgba(9, 17, 32, .99)); box-shadow: 0 20px 60px rgba(0, 0, 0, .2); }
.agenda-hero-copy h2 { margin: 9px 0 8px; color: #f0f4ff; font-family: 'Outfit', sans-serif; font-size: clamp(28px, 4vw, 43px); letter-spacing: -.05em; line-height: 1; }
.agenda-hero-copy p { max-width: 700px; margin: 0; color: rgba(222, 231, 255, .72); font-size: 14px; line-height: 1.55; }
.agenda-hero-side { display: flex; align-items: flex-start; gap: 10px; }
.agenda-range-badge { display: inline-flex; align-items: center; gap: 7px; padding: 10px 13px; border: 1px solid rgba(152, 186, 255, .27); border-radius: 999px; color: #c8d8ff; background: rgba(119, 147, 255, .09); font-size: 11px; font-weight: 700; white-space: nowrap; }
.agenda-summary { display: grid; grid-template-columns: 1.25fr repeat(3, 1fr); gap: 10px; }
.agenda-summary > div { min-height: 104px; padding: 16px 17px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(145deg, rgba(255,255,255,.035), rgba(255,255,255,.012)); }
.agenda-summary span { display: block; color: var(--text-secondary); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.agenda-summary strong { display: block; margin-top: 12px; color: var(--text-primary); font-family: var(--font-display); font-size: 30px; letter-spacing: -.05em; line-height: 1; }
.agenda-summary small { display: block; margin-top: 8px; color: var(--text-secondary); font-size: 10px; }
.agenda-summary-main { border-color: rgba(119, 147, 255, .34) !important; background: linear-gradient(145deg, rgba(119,147,255,.13), rgba(255,255,255,.012)) !important; }
.agenda-summary-main strong { color: var(--os-blue); }
.agenda-summary-danger { border-color: rgba(250, 118, 110, .25) !important; }
.agenda-summary-danger strong { color: #fa9189; }
.agenda-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px; border: 1px solid var(--border-color); border-radius: 16px; background: rgba(255,255,255,.018); }
.agenda-range-tabs, .agenda-toolbar-actions { display: flex; align-items: center; gap: 6px; }
.agenda-range-tabs button { padding: 9px 12px; border: 1px solid transparent; border-radius: 9px; color: var(--text-secondary); background: transparent; font: inherit; font-size: 11px; cursor: pointer; transition: .18s ease; }
.agenda-range-tabs button:hover, .agenda-range-tabs button.is-active { border-color: rgba(119,147,255,.34); color: var(--os-blue); background: rgba(119,147,255,.12); }
.agenda-arrow { display: inline-grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--border-color); border-radius: 9px; color: var(--text-secondary); background: var(--surface-color); cursor: pointer; }
.agenda-arrow:hover { border-color: rgba(91,216,202,.38); color: var(--primary); }
.agenda-kind-filter { display: inline-flex; align-items: center; gap: 8px; margin-left: 4px; color: var(--text-secondary); font-size: 10px; }
.agenda-kind-filter select { min-height: 34px; padding: 0 28px 0 9px; border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-primary); background: var(--surface-color); font: inherit; font-size: 11px; }
.agenda-error { display: flex; align-items: center; gap: 8px; padding: 11px 14px; border: 1px solid rgba(250,118,110,.35); border-radius: 10px; color: #fa9189; background: rgba(250,118,110,.08); font-size: 12px; }
.agenda-timeline { display: flex; flex-direction: column; gap: 11px; }
.agenda-day { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 18px; min-width: 0; padding: 12px 0; }
.agenda-day-rail { position: relative; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; padding: 7px 21px 0 0; text-align: right; }
.agenda-day-rail::after { position: absolute; top: 0; right: 0; bottom: -24px; width: 1px; background: linear-gradient(180deg, rgba(119,147,255,.55), rgba(119,147,255,.05)); content: ''; }
.agenda-day:last-child .agenda-day-rail::after { bottom: 20px; }
.agenda-day-rail span { display: grid; place-items: center; width: 43px; height: 43px; border: 1px solid rgba(119,147,255,.35); border-radius: 13px; color: var(--os-blue); background: rgba(119,147,255,.13); font-family: var(--font-display); font-size: 20px; font-weight: 800; }
.agenda-day-rail strong { max-width: 160px; color: var(--text-primary); font-size: 12px; text-transform: capitalize; }
.agenda-events { display: flex; min-width: 0; flex-direction: column; gap: 7px; }
.agenda-event { position: relative; display: grid; grid-template-columns: 32px minmax(0,1fr) auto 15px; align-items: center; gap: 12px; width: 100%; padding: 12px 14px; border: 1px solid var(--border-color); border-radius: 13px; color: var(--text-primary); background: linear-gradient(100deg, rgba(255,255,255,.04), rgba(255,255,255,.014)); text-align: left; font: inherit; cursor: pointer; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.agenda-event:hover { transform: translateX(3px); border-color: rgba(91,216,202,.4); background: linear-gradient(100deg, rgba(91,216,202,.1), rgba(255,255,255,.018)); }
.agenda-event.is-overdue { border-left: 2px solid #fa766e; }
.agenda-event-icon { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; color: #9eb6ff; background: rgba(119,147,255,.12); }
.agenda-event-renewal .agenda-event-icon { color: #cfabff; background: rgba(184,133,255,.12); }
.agenda-event-support .agenda-event-icon { color: #fa9189; background: rgba(250,118,110,.1); }
.agenda-event-remote .agenda-event-icon { color: #71e1cc; background: rgba(91,216,202,.1); }
.agenda-event-invoice .agenda-event-icon { color: #f4bf5e; background: rgba(244,191,94,.1); }
.agenda-event-project .agenda-event-icon { color: #76b9ff; background: rgba(118,185,255,.1); }
.agenda-event-body { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.agenda-event-topline { display: flex; align-items: center; gap: 8px; }
.agenda-event-topline small { color: var(--primary); font-size: 9px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.agenda-event-topline em { color: var(--text-secondary); font-size: 10px; font-style: normal; }
.agenda-event-body > strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.agenda-event-body > span:last-child { overflow: hidden; color: var(--text-secondary); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.agenda-event-side { display: flex; min-width: 105px; flex-direction: column; align-items: flex-end; gap: 4px; color: var(--text-primary); font-size: 11px; text-align: right; }
.agenda-event-side small { color: var(--text-secondary); font-size: 9px; }
.agenda-event.is-overdue .agenda-event-side small { color: #fa9189; font-weight: 700; }
.agenda-empty { display: flex; min-height: 220px; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 28px; border: 1px dashed var(--border-color); border-radius: 16px; color: var(--text-secondary); text-align: center; }
.agenda-empty strong { color: var(--text-primary); font-size: 13px; }
.agenda-empty p { margin: 0; font-size: 11px; }
.agenda-footer { display: flex; justify-content: space-between; gap: 12px; padding: 4px 3px 0; color: var(--text-secondary); font-size: 10px; }
.agenda-footer span { display: inline-flex; align-items: center; gap: 6px; }
@media (max-width: 820px) { .agenda-hero { flex-direction: column; padding: 23px; }.agenda-hero-side { justify-content: space-between; }.agenda-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }.agenda-toolbar { align-items: stretch; flex-direction: column; }.agenda-toolbar-actions { justify-content: space-between; }.agenda-kind-filter { flex: 1; justify-content: space-between; }.agenda-kind-filter select { flex: 1; max-width: 230px; } }
@media (max-width: 560px) { .agenda-hero-copy { width: 100%; min-width: 0; }.agenda-hero-copy h2 { overflow-wrap: anywhere; }.agenda-hero-side { width: 100%; }.agenda-day { grid-template-columns: 1fr; gap: 9px; }.agenda-day-rail { align-items: flex-start; flex-direction: row; padding: 0 0 0 3px; text-align: left; }.agenda-day-rail::after { top: 53px; right: auto; bottom: -11px; left: 25px; width: calc(100% - 25px); height: 1px; background: linear-gradient(90deg, rgba(119,147,255,.5), transparent); }.agenda-day:last-child .agenda-day-rail::after { bottom: -5px; }.agenda-day-rail span { width: 34px; height: 34px; border-radius: 10px; font-size: 16px; }.agenda-day-rail strong { align-self: center; max-width: none; }.agenda-event { grid-template-columns: 32px minmax(0,1fr) 15px; padding: 11px; }.agenda-event-side { grid-column: 2; align-items: flex-start; min-width: 0; flex-direction: row; gap: 8px; text-align: left; }.agenda-event-side:empty { display: none; }.agenda-footer { align-items: flex-start; flex-direction: column; }.agenda-range-tabs { width: 100%; }.agenda-range-tabs button { flex: 1; padding: 9px 6px; } }

/* --------------------------------------------------------------------------
   EasyWave OS memory desk

   A knowledge rail and reading desk, not a CRUD table. The bright lime seam is the
   physical metaphor for a sealed envelope: metadata lives outside it, decrypted content
   appears inside it only after an intentional selection.
   -------------------------------------------------------------------------- */
.memory-workspace {
  --memory-accent: #b8f34a;
  --memory-cyan: #59d9e8;
  --memory-muted: var(--text-secondary);
  display: flex;
  flex-direction: column;
  gap: 18px;
  animation: memory-arrive 420ms cubic-bezier(.2,.8,.2,1) both;
}

.dark-mode .memory-workspace { --memory-muted: #c1ccd6; }

.draft-reference {
  color: var(--text-secondary);
  font-family: 'DM Sans', sans-serif;
  font-size: .82em;
  font-style: italic;
  font-weight: 650;
}

@keyframes memory-arrive {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

.memory-hero {
  position: relative;
  overflow: hidden;
  min-height: 190px;
  padding: 34px 38px;
  border: 1px solid color-mix(in srgb, var(--memory-accent) 24%, var(--border-color));
  border-radius: 22px;
  background:
    radial-gradient(circle at 83% 22%, rgba(184, 243, 74, .16), transparent 25%),
    linear-gradient(125deg, #091624 0%, #102438 63%, #0b1a28 100%);
  color: #f4f8f1;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
}

.memory-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: .13;
  pointer-events: none;
  background-image: linear-gradient(rgba(255,255,255,.16) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.16) 1px, transparent 1px);
  background-size: 28px 28px;
  mask-image: linear-gradient(90deg, transparent 42%, black);
}

.memory-hero__copy { position: relative; max-width: 720px; z-index: 1; }
.memory-hero h1 { margin: 8px 0 10px; font-family: 'Sora', sans-serif; font-size: clamp(30px, 4vw, 52px); line-height: 1.02; letter-spacing: -.045em; }
.memory-hero p { margin: 0; max-width: 680px; color: #aebdca; font-size: 15px; line-height: 1.65; }
.memory-eyebrow { display: inline-flex; align-items: center; gap: 7px; color: var(--memory-accent); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }

.memory-vault-seal {
  position: relative;
  z-index: 1;
  width: 250px;
  padding: 18px;
  border: 1px solid rgba(184, 243, 74, .3);
  border-radius: 16px;
  background: rgba(4, 12, 20, .58);
  backdrop-filter: blur(12px);
  display: flex;
  gap: 12px;
  align-items: center;
  color: var(--memory-accent);
}
.memory-vault-seal div { display: grid; gap: 3px; }
.memory-vault-seal strong { color: #f5f9f2; font-size: 13px; }
.memory-vault-seal span { color: #8fa0ad; font-size: 11px; }

.memory-compact-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; }
.memory-compact-heading h3 { margin: 5px 0 0; font-family: 'Sora', sans-serif; font-size: 22px; }

.memory-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.memory-metrics article { min-width: 0; padding: 16px 18px; border: 1px solid var(--border-color); border-radius: 14px; background: var(--bg-secondary); display: grid; grid-template-columns: 1fr auto; gap: 3px 10px; }
.memory-metrics article.needs-attention { border-color: color-mix(in srgb, #f4a949 55%, var(--border-color)); box-shadow: inset 3px 0 #f4a949; }
.memory-metrics span { align-self: end; color: var(--memory-muted); font-size: 11px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; }
.memory-metrics strong { grid-row: span 2; font-family: 'Sora', sans-serif; font-size: 30px; line-height: 1; }
.memory-metrics small { color: var(--memory-muted); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.memory-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.memory-search { min-width: 260px; flex: 1; height: 40px; padding: 0 13px; border: 1px solid var(--border-color); border-radius: 11px; background: var(--bg-secondary); display: flex; align-items: center; gap: 9px; color: var(--memory-muted); }
.memory-search:focus-within { border-color: var(--memory-cyan); box-shadow: 0 0 0 3px rgba(89,217,232,.1); }
.memory-search input { width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 13px; }
.memory-kind-filter { padding: 3px; border: 1px solid var(--border-color); border-radius: 11px; background: var(--bg-secondary); display: flex; gap: 2px; overflow-x: auto; }
.memory-kind-filter button { padding: 7px 10px; border: 0; border-radius: 8px; background: transparent; color: var(--memory-muted); cursor: pointer; font-size: 11px; font-weight: 700; white-space: nowrap; }
.memory-kind-filter button.active { background: var(--text-primary); color: var(--bg-primary); }

.memory-error { padding: 11px 14px; border: 1px solid rgba(239,68,68,.45); border-radius: 10px; background: rgba(239,68,68,.09); color: #ef6464; display: flex; align-items: center; justify-content: space-between; font-size: 13px; }
.memory-error button { border: 0; background: none; color: inherit; cursor: pointer; }

.memory-deck { min-height: 545px; display: grid; grid-template-columns: minmax(300px, .78fr) minmax(0, 1.55fr); border: 1px solid var(--border-color); border-radius: 18px; overflow: hidden; background: var(--bg-secondary); }
.memory-rail { padding: 10px; border-right: 1px solid var(--border-color); background: color-mix(in srgb, var(--bg-primary) 72%, var(--bg-secondary)); overflow-y: auto; max-height: 690px; }
.memory-record { position: relative; width: 100%; min-height: 88px; padding: 13px 11px; border: 1px solid transparent; border-radius: 12px; background: transparent; color: var(--text-primary); display: grid; grid-template-columns: 36px minmax(0,1fr); gap: 11px; text-align: left; cursor: pointer; transition: background .18s ease, border-color .18s ease, transform .18s ease; }
.memory-record:hover { background: var(--bg-secondary); transform: translateX(2px); }
.memory-record.active { border-color: color-mix(in srgb, var(--memory-cyan) 38%, var(--border-color)); background: var(--bg-secondary); box-shadow: inset 3px 0 var(--memory-cyan); }
.memory-record__icon, .memory-detail-mark { display: grid; place-items: center; border-radius: 10px; background: rgba(89,217,232,.1); color: var(--memory-cyan); }
.memory-record__icon { width: 36px; height: 36px; }
.kind-credential { background: rgba(184,243,74,.11) !important; color: var(--memory-accent) !important; }
.kind-procedure { background: rgba(244,169,73,.11) !important; color: #f4a949 !important; }
.kind-note { background: rgba(159,141,255,.11) !important; color: #aa9aff !important; }
.memory-record__body { min-width: 0; display: grid; align-content: start; gap: 4px; }
.memory-record__title { display: flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 750; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.memory-record__context { color: var(--memory-muted); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.memory-record__tags { display: flex; gap: 4px; overflow: hidden; }
.memory-record__tags i { padding: 2px 5px; border-radius: 5px; background: var(--bg-primary); color: var(--memory-muted); font-size: 9px; font-style: normal; }
.memory-expiry { position: absolute; right: 10px; bottom: 8px; font-size: 9px; font-weight: 750; }
.tone-danger { color: #ef6464 !important; }
.tone-warning { color: #f4a949 !important; }
.tone-quiet { color: var(--memory-muted) !important; }

.memory-reading-desk { position: relative; min-width: 0; padding: clamp(22px, 4vw, 38px); background: radial-gradient(circle at 100% 0, rgba(89,217,232,.055), transparent 32%), var(--bg-secondary); }
.memory-reading-desk::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--memory-cyan), transparent 68%); opacity: .75; }
.memory-desk-empty, .memory-empty { color: var(--memory-muted); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.memory-desk-empty { min-height: 440px; max-width: 470px; margin: auto; }
.memory-desk-empty svg { margin-bottom: 18px; color: var(--memory-cyan); opacity: .7; }
.memory-desk-empty span { font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.memory-desk-empty h3 { margin: 8px 0; font-family: 'Sora', sans-serif; font-size: 24px; color: var(--text-primary); }
.memory-desk-empty p { margin: 0; font-size: 13px; line-height: 1.65; }
.memory-empty { min-height: 260px; gap: 8px; padding: 25px; font-size: 12px; }
.memory-empty strong { color: var(--text-primary); font-size: 14px; }

.memory-detail-head { display: grid; grid-template-columns: 48px minmax(0,1fr); align-items: start; gap: 10px 14px; }
.memory-detail-mark { width: 48px; height: 48px; }
.memory-detail-title > span { color: var(--memory-cyan); font-size: 10px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.memory-detail-title h2 { margin: 4px 0 5px; font-family: 'Sora', sans-serif; font-size: clamp(22px, 3vw, 32px); letter-spacing: -.035em; }
.memory-detail-title > div { color: var(--memory-muted); font-size: 12px; }
.memory-detail-actions { grid-column: 2; display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-start; }
.danger-action { color: var(--danger) !important; }
.memory-facts { margin: 26px 0 18px; padding: 16px 0; border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.memory-facts div { min-width: 0; display: grid; gap: 5px; }
.memory-facts span { color: var(--memory-muted); font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.memory-facts strong { font-size: 12px; overflow: hidden; text-overflow: ellipsis; }
.memory-url { margin-bottom: 17px; padding: 9px 11px; border: 1px solid var(--border-color); border-radius: 9px; color: var(--memory-cyan); display: flex; align-items: center; gap: 7px; font-size: 12px; text-decoration: none; overflow-wrap: anywhere; }
.memory-content { min-height: 210px; padding: 25px; border: 1px solid var(--border-color); border-radius: 15px; background: color-mix(in srgb, var(--bg-primary) 48%, transparent); }
.memory-content > span, .vault-panel__head span { color: var(--memory-muted); font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.memory-content p { margin: 14px 0 0; white-space: pre-wrap; font-size: 14px; line-height: 1.75; }
.memory-tags { margin-top: 14px; display: flex; gap: 6px; flex-wrap: wrap; }
.memory-tags span { padding: 4px 7px; border-radius: 7px; background: rgba(89,217,232,.08); color: var(--memory-cyan); font-size: 10px; }

.vault-panel { overflow: hidden; border: 1px solid rgba(184,243,74,.28); border-radius: 16px; background: linear-gradient(145deg, rgba(184,243,74,.045), rgba(8,20,30,.08)); }
.vault-panel__head { padding: 17px 20px; border-bottom: 1px solid rgba(184,243,74,.18); display: flex; align-items: center; justify-content: space-between; color: var(--memory-accent); }
.vault-panel__head h3 { margin: 3px 0 0; color: var(--text-primary); font-size: 16px; }
.vault-masked, .vault-revealed { padding: 22px; }
.vault-masked > div, .vault-revealed > div:not(.vault-revealed__timer) { min-height: 44px; padding: 10px 12px; border: 1px solid var(--border-color); border-radius: 9px; display: grid; grid-template-columns: 110px minmax(0,1fr) auto; align-items: center; gap: 10px; margin-bottom: 8px; }
.vault-masked span, .vault-revealed span { color: var(--memory-muted); font-size: 10px; font-weight: 750; text-transform: uppercase; }
.vault-masked strong { letter-spacing: .18em; }
.vault-masked p, .vault-revealed p { color: var(--memory-muted); font-size: 11px; line-height: 1.55; }
.vault-denied { display: inline-flex; align-items: center; gap: 7px; color: var(--memory-muted); font-size: 11px; }
.vault-revealed__timer { margin-bottom: 12px; color: var(--memory-accent); display: flex; gap: 7px; align-items: center; font-size: 10px; font-weight: 750; }
.vault-revealed strong { overflow-wrap: anywhere; font-family: 'DM Mono', ui-monospace, monospace; }
.vault-revealed div button { border: 0; background: none; color: var(--memory-cyan); cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-size: 10px; }

.memory-modal-backdrop { position: fixed; inset: 0; z-index: 1000; padding: 24px; background: rgba(2,7,12,.76); backdrop-filter: blur(8px); display: grid; place-items: center; overflow-y: auto; }
.memory-modal { width: min(560px, 100%); padding: 28px; border: 1px solid color-mix(in srgb, var(--memory-cyan) 30%, var(--border-color)); border-radius: 18px; background: var(--bg-secondary); box-shadow: 0 28px 90px rgba(0,0,0,.5); animation: memory-modal-in 220ms cubic-bezier(.2,.8,.2,1) both; }
@keyframes memory-modal-in { from { opacity: 0; transform: translateY(12px) scale(.985); } }
.memory-modal__icon { width: 48px; height: 48px; margin-bottom: 14px; border-radius: 13px; background: rgba(184,243,74,.1); color: var(--memory-accent); display: grid; place-items: center; }
.memory-modal h2 { margin: 6px 0 8px; font-family: 'Sora', sans-serif; letter-spacing: -.03em; }
.memory-modal > p { color: var(--memory-muted); font-size: 12px; line-height: 1.55; }
.memory-modal label { display: grid; gap: 6px; color: var(--memory-muted); font-size: 11px; font-weight: 700; }
.memory-modal textarea { min-height: 100px; resize: vertical; }
.memory-modal__actions { margin-top: 20px; display: flex; justify-content: flex-end; gap: 9px; }
.memory-editor { width: min(790px, 100%); }
.memory-editor__head { margin-bottom: 20px; display: flex; justify-content: space-between; gap: 20px; }
.memory-editor__head button { align-self: start; border: 0; background: none; color: var(--memory-muted); cursor: pointer; }
.memory-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.memory-form-grid .span-2 { grid-column: span 2; }
.memory-checkbox { align-self: end; min-height: 40px; display: flex !important; grid-auto-flow: column; grid-template-columns: auto auto 1fr; align-items: center; justify-content: start; }

.memory-workspace--compact .memory-metrics { grid-template-columns: repeat(4, 1fr); }
.memory-workspace--compact .memory-deck { min-height: 480px; }

@media (max-width: 1100px) {
  .memory-metrics { grid-template-columns: repeat(2, 1fr); }
  .memory-deck { grid-template-columns: minmax(260px, .7fr) minmax(0, 1.3fr); }
  .memory-facts { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 760px) {
  .memory-hero { padding: 26px 22px; align-items: flex-start; flex-direction: column; }
  .memory-vault-seal { width: 100%; }
  .memory-metrics, .memory-workspace--compact .memory-metrics { grid-template-columns: 1fr 1fr; }
  .memory-deck { display: block; }
  .memory-rail { max-height: 310px; border-right: 0; border-bottom: 1px solid var(--border-color); }
  .memory-reading-desk { padding: 22px 17px; }
  .memory-kind-filter { width: 100%; }
  .memory-kind-filter button { flex: 1; }
  .memory-facts { grid-template-columns: 1fr 1fr; }
  .memory-form-grid { grid-template-columns: 1fr; }
  .memory-form-grid .span-2 { grid-column: span 1; }
  .memory-modal-backdrop { padding: 10px; place-items: start center; }
  .memory-modal { margin-top: 10px; padding: 21px; }
  .vault-masked > div, .vault-revealed > div:not(.vault-revealed__timer) { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  .os-kpi-grid { grid-template-columns: 1fr; }
  .os-hero-actions .btn { flex: 1; }
  .os-pulse-footer { flex-wrap: wrap; }
  .os-pulse-footer span:last-child { margin-left: 0; width: 100%; }
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--font-family);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  overflow-x: hidden;
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* App Layout Grid */
.app-container {
  display: grid;
  grid-template-columns: 260px 1fr;
  height: 100vh;
  overflow: hidden;
}

/* Sidebar Styling */
.sidebar {
  background-color: var(--bg-secondary);
  border-right: 1px solid var(--border-color);
  display: flex;
  flex-direction: column;
  padding: 24px;
}

.logo-container {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 32px;
  font-weight: 700;
  font-size: 20px;
  color: var(--primary);
}

.nav-links {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
  flex: 1;
}

.nav-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 16px;
  color: var(--text-secondary);
  background: transparent;
  border: 0;
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  text-align: left;
  transition: all 0.2s ease;
  cursor: pointer;
}

.nav-item:hover, .nav-item.active {
  background-color: var(--primary-light);
  color: var(--primary);
}

button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
a:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--primary) 70%, white);
  outline-offset: 2px;
}

.mobile-menu-toggle,
.sidebar-backdrop { display: none; }

/* Main Area */
.main-area {
  display: flex;
  flex-direction: column;
  height: 100vh;
  overflow: hidden;
}

/* Header Styling */
.header {
  background-color: var(--bg-secondary);
  border-bottom: 1px solid var(--border-color);
  height: 70px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 32px;
}

.header-right {
  display: flex;
  align-items: center;
  gap: 20px;
}

.profile-badge {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 600;
}

/* Content Area */
.content-area {
  padding: 32px;
  overflow-y: auto;
  flex: 1;
}

.settings-tab-bar {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  border-bottom: 1px solid var(--border-color);
  padding-bottom: 8px;
}

.settings-tab-bar .btn {
  min-width: 0;
  min-height: 44px;
  white-space: normal;
}

@media (max-width: 660px) {
  .settings-tab-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .settings-tab-bar .btn {
    width: 100%;
    padding: 10px 8px;
    font-size: 12px;
  }
}

/* Base Primitive Elements */
.card {
  background-color: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease;
}

.card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 24px;
  border-radius: var(--radius-md);
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  font-family: var(--font-family);
  font-size: 14px;
  box-shadow: var(--shadow-sm);
}

.btn:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.btn:active {
  transform: translateY(1px);
}

.btn-primary {
  background-color: var(--primary);
  color: #ffffff;
}

.btn-primary:hover {
  background-color: var(--primary-hover);
}

.btn-secondary {
  background-color: var(--border-color);
  color: var(--text-primary);
}

.input-field {
  width: 100%;
  padding: 11px 16px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-color);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  font-family: var(--font-family);
  font-size: 14px;
  outline: none;
  transition: all 0.2s ease;
  box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.02);
}

.input-field:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}

/* Data Table Custom Styling */
.table-container {
  width: 100%;
  overflow-x: auto;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background-color: var(--bg-secondary);
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
}

.data-table th, .data-table td {
  padding: 16px 20px;
  border-bottom: 1px solid var(--border-color);
}

.data-table th {
  background-color: var(--bg-primary);
  font-weight: 600;
  color: var(--text-secondary);
  font-size: 13px;
  text-transform: uppercase;
}

.data-table tbody tr:hover {
  background-color: var(--bg-primary);
  cursor: pointer;
}

/* Tables remain excellent dense desktop instruments, but a six-column table is not a
   usable mobile surface when its right side is merely clipped. At phone widths each row
   becomes a labelled record card. The data-label attribute is supplied by Table.tsx so
   this stays generic for every staff-facing module, including nested detail tables. */
@media (max-width: 600px) {
  .table-container {
    overflow: visible;
    border: 0;
    background: transparent;
  }

  .data-table,
  .data-table tbody,
  .data-table tr,
  .data-table td {
    display: block;
    width: 100%;
  }

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

  .data-table tbody {
    display: grid;
    gap: 10px;
  }

  .data-table tbody tr {
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background: var(--bg-secondary);
  }

  .data-table tbody tr:hover {
    background: var(--bg-secondary);
  }

  .data-table td {
    display: grid;
    grid-template-columns: minmax(92px, 34%) minmax(0, 1fr);
    align-items: start;
    gap: 10px;
    min-width: 0;
    padding: 11px 12px;
    border-bottom: 1px solid var(--border-color);
    overflow-wrap: anywhere;
  }

  .data-table td::before {
    color: var(--text-secondary);
    content: attr(data-label);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .06em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  .data-table td:last-child {
    border-bottom: 0;
  }

  .data-table td > * {
    min-width: 0;
    max-width: 100%;
  }

  .data-table td button,
  .data-table td a {
    overflow-wrap: anywhere;
  }

  .crm-list-toolbar {
    align-items: flex-start !important;
  }

  .crm-list-toolbar > h2 {
    width: 100%;
  }

  .crm-list-toolbar-actions {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .crm-list-toolbar-actions > .input-field {
    grid-column: 1 / -1;
    width: 100% !important;
  }

  .crm-list-toolbar-actions > .btn {
    width: 100%;
    min-width: 0;
  }

  .module-list-toolbar {
    align-items: flex-start !important;
  }

  .module-list-toolbar > :first-child {
    flex: 1 1 100%;
    min-width: 0;
  }

  .module-list-toolbar-actions {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
    flex: 1 1 100%;
  }

  .module-list-toolbar-actions > * {
    min-width: 0;
    width: 100% !important;
  }

  .module-list-toolbar-actions--search > .toolbar-search-field,
  .module-list-toolbar-actions--search > .btn,
  .module-list-toolbar-actions--three > :last-child {
    grid-column: 1 / -1;
  }

  .module-list-toolbar-actions .btn {
    justify-content: center;
    white-space: normal;
  }
}

/* Status Badges
   Rendered only through <StatusBadge>, which resolves the tone from the single mapping in
   i18n/fr.ts. No page sets these classes by hand and no page sets a colour.
   The pill is no longer uppercase: the labels are French words now, not enum codes, and
   uppercasing "Partiellement payée" makes it harder to read, not more official. */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
}

.badge-neutral   { background-color: var(--tone-neutral-bg);   color: var(--tone-neutral-fg); }
.badge-positive  { background-color: var(--tone-positive-bg);  color: var(--tone-positive-fg); }
.badge-attention { background-color: var(--tone-attention-bg); color: var(--tone-attention-fg); }
.badge-critical  { background-color: var(--tone-critical-bg);  color: var(--tone-critical-fg); }
.badge-muted     { background-color: var(--tone-muted-bg);     color: var(--tone-muted-fg); }

/* Legacy tone names, kept as aliases of the new tokens rather than removed. A handful of
   pills are not schema statuses at all — a plan's active flag, a boolean — and they should
   still look like every other pill instead of keeping the old saturated palette alive. */
.badge-success { background-color: var(--tone-positive-bg);  color: var(--tone-positive-fg); }
.badge-warning { background-color: var(--tone-attention-bg); color: var(--tone-attention-fg); }
.badge-danger  { background-color: var(--tone-critical-bg);  color: var(--tone-critical-fg); }
.badge-info    { background-color: var(--tone-neutral-bg);   color: var(--tone-neutral-fg); }

/* Denser pill for cramped contexts — kanban cards, inline row chips. Same tones. */
.badge-small {
  font-size: 10px;
  padding: 2px 7px;
  width: fit-content;
}

/* Document numbers and fiscal identifiers.
   Tabular figures so a column of them aligns and a wrong digit breaks the rhythm; slashed
   zero so 0 and O are not a judgement call on a number being read down the phone. */
.doc-number {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums slashed-zero;
  font-size: 0.95em;
  letter-spacing: 0.01em;
}

/* Amounts. Tabular figures only — the family stays Outfit, because a money column is read
   as a quantity to compare, not as a string to transcribe. */
.money {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* An amount whose record carries no currency. Deliberately unassertive: it is incomplete
   data, not an error, and it must not read as a confident figure. */
.money-no-currency {
  color: var(--text-secondary);
  border-bottom: 1px dotted var(--text-secondary);
  cursor: help;
}

/* Fiscal identity: ICE / IF / RC */
.fiscal-identity {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  font-size: 12px;
  color: var(--text-secondary);
}

.fiscal-identity-block {
  flex-direction: column;
  gap: 2px;
}

.fiscal-identity-item {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}

.fiscal-identity-key {
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  border-bottom: 1px dotted var(--border-color);
  cursor: help;
}

.fiscal-identity-missing {
  font-style: italic;
  opacity: 0.7;
}

/* Theme Toggle Button */
.theme-toggle-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--text-secondary);
}

/* Fiscal identifiers in a record header sit under the title, not inline with contacts. */
.fiscal-identity-header {
  margin-top: 6px;
}

/* Connected recurring-billing workspace: a schedule is an operating object, not a row. */
@keyframes recurring-rise-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.recurring-workspace {
  display: flex;
  flex-direction: column;
  gap: 18px;
  animation: recurring-rise-in 280ms ease-out both;
}

.recurring-back { align-self: flex-start; }

.recurring-hero {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  overflow: hidden;
  padding: 24px;
  border-color: color-mix(in srgb, var(--primary) 28%, var(--border-color));
  background: linear-gradient(112deg, color-mix(in srgb, var(--primary) 9%, var(--os-panel)), var(--os-panel) 56%);
}

.recurring-hero::after {
  content: '';
  position: absolute;
  width: 220px;
  height: 220px;
  right: -90px;
  top: -120px;
  border: 1px solid color-mix(in srgb, var(--primary) 22%, transparent);
  border-radius: 50%;
  box-shadow: 0 0 0 34px color-mix(in srgb, var(--primary) 4%, transparent);
  pointer-events: none;
}

.recurring-identity,
.recurring-actions,
.recurring-section-heading {
  display: flex;
  align-items: center;
  gap: 14px;
}

.recurring-identity { min-width: 0; }
.recurring-identity h1 { margin: 3px 0 5px; font-family: var(--font-display); font-size: clamp(1.35rem, 2vw, 1.8rem); }
.recurring-identity p { margin: 0; color: var(--text-secondary); }

.recurring-icon {
  display: grid;
  place-items: center;
  flex: 0 0 52px;
  width: 52px;
  height: 52px;
  border-radius: 16px;
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 13%, var(--os-panel));
  border: 1px solid color-mix(in srgb, var(--primary) 24%, var(--border-color));
}

.recurring-actions { position: relative; z-index: 1; flex-wrap: wrap; justify-content: flex-end; }

.recurring-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.recurring-metrics .card { padding: 17px; }
.recurring-metrics span { display: block; color: var(--text-secondary); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.recurring-metrics strong { display: block; margin-top: 8px; font-family: var(--font-display); font-size: 1.05rem; }

.recurring-section { padding: 20px; }
.recurring-section-heading { justify-content: space-between; margin-bottom: 14px; }
.recurring-section-heading h3 { margin: 3px 0 0; font-size: 1.05rem; }
.recurring-total { font-family: var(--font-display); font-size: 1.15rem; color: var(--primary); }

.record-link {
  appearance: none;
  border: 0;
  padding: 0;
  color: var(--primary);
  background: transparent;
  font: inherit;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--primary) 40%, transparent);
  text-underline-offset: 3px;
}

.record-link:hover { text-decoration-color: currentColor; }

@media (max-width: 920px) {
  .recurring-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .recurring-hero { align-items: flex-start; flex-direction: column; padding: 19px; }
  .recurring-actions { justify-content: flex-start; }
  .recurring-metrics { grid-template-columns: 1fr; }
  .recurring-section-heading { align-items: flex-start; flex-direction: column; }
}

/* Renewal Desk — a signal room for customer lifecycle work. The rail is intentionally
   editorial and sparse: one decision surface over many source modules, not another CRUD
   table with duplicated state. */
.renewal-workspace { display: flex; flex-direction: column; gap: 18px; animation: page-rise 420ms ease both; }
.renewal-hero { min-height: 188px; border: 1px solid rgba(104, 205, 219, .22); border-radius: 22px; padding: 30px 32px; display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; overflow: hidden; position: relative; background: radial-gradient(circle at 86% 16%, rgba(52, 211, 153, .15), transparent 25%), radial-gradient(circle at 68% 100%, rgba(56, 189, 248, .12), transparent 28%), linear-gradient(125deg, rgba(12, 28, 40, .98), rgba(10, 19, 31, .98)); box-shadow: 0 18px 50px rgba(0,0,0,.18); }
.renewal-hero::after { content: ''; position: absolute; inset: auto -5% -54px 42%; height: 130px; border-top: 1px solid rgba(124, 230, 214, .32); transform: rotate(-7deg); pointer-events: none; }
.renewal-hero-copy { position: relative; z-index: 1; }
.renewal-hero h1 { margin: 11px 0 9px; font-family: 'Outfit', sans-serif; font-size: clamp(28px, 4vw, 44px); letter-spacing: -.045em; color: #eefcff; line-height: 1.03; }
.renewal-hero p { color: rgba(214, 237, 242, .7); max-width: 610px; line-height: 1.55; font-size: 14px; }
.renewal-asof { display: inline-flex; align-items: center; gap: 7px; margin-top: 18px; color: rgba(185, 226, 232, .72); font-size: 12px; letter-spacing: .02em; }
.renewal-refresh { position: relative; z-index: 1; background: rgba(255,255,255,.07); border-color: rgba(158, 226, 234, .26); color: #dffcff; }
.renewal-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(180px, 1.15fr); gap: 10px; }
.renewal-metric, .renewal-value-strip { min-height: 104px; padding: 16px 17px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(145deg, rgba(255,255,255,.035), rgba(255,255,255,.012)); display: flex; flex-direction: column; justify-content: space-between; }
.renewal-metric span { display: flex; align-items: center; gap: 6px; color: var(--text-secondary); font-size: 11px; text-transform: uppercase; letter-spacing: .055em; }
.renewal-metric strong { color: var(--text-primary); font-size: 28px; letter-spacing: -.04em; line-height: 1; }
.renewal-metric small { color: var(--text-secondary); font-size: 10px; }
.renewal-metric-main { border-color: rgba(71, 211, 192, .3); background: linear-gradient(145deg, rgba(48, 197, 179, .11), rgba(255,255,255,.015)); }
.renewal-metric-main > span { color: var(--primary); }
.renewal-metric-main strong { color: #b7fff1; }
.metric-critical { color: #ff9b93 !important; }
.renewal-value-strip { flex-direction: row; align-items: flex-start; gap: 11px; color: var(--primary); }
.renewal-value-strip > div { display: flex; flex-direction: column; gap: 5px; color: var(--text-primary); font-weight: 700; font-size: 15px; }
.renewal-value-strip > div span { color: var(--text-secondary); font-size: 12px; font-weight: 400; }
.renewal-filters { display: flex; align-items: flex-end; gap: 10px; padding: 13px; border: 1px solid var(--border-color); border-radius: 16px; background: rgba(255,255,255,.018); }
.renewal-search { height: 38px; flex: 1 1 260px; min-width: 190px; display: flex; align-items: center; gap: 9px; padding: 0 12px; border: 1px solid var(--border-color); border-radius: 10px; color: var(--text-secondary); background: var(--surface-color); }
.renewal-search input { width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 12px; }
.renewal-filters label { display: flex; flex-direction: column; gap: 5px; min-width: 145px; }
.renewal-filters label span { color: var(--text-secondary); font-size: 10px; text-transform: uppercase; letter-spacing: .05em; }
.renewal-filters select { height: 38px; padding: 0 10px; color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 10px; background: var(--surface-color); font: inherit; font-size: 12px; }
.renewal-filter-icon { margin: 0 7px 10px 3px; color: var(--primary); opacity: .7; }
.renewal-layout { display: grid; grid-template-columns: 218px minmax(0, 1fr); gap: 16px; align-items: start; }
.renewal-rail { min-height: 430px; padding: 16px 11px; border: 1px solid var(--border-color); border-radius: 17px; background: linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,.012)); }
.renewal-rail-heading { display: flex; justify-content: space-between; align-items: center; padding: 3px 8px 13px; color: var(--text-secondary); font-size: 10px; letter-spacing: .13em; }
.renewal-rail-heading svg { color: var(--primary); }
.renewal-bucket { width: 100%; display: grid; grid-template-columns: 10px 1fr auto; align-items: center; gap: 9px; padding: 11px 8px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text-secondary); text-align: left; font: inherit; font-size: 12px; cursor: pointer; transition: background .18s ease, color .18s ease, border-color .18s ease; }
.renewal-bucket:hover { color: var(--text-primary); background: rgba(255,255,255,.045); }
.renewal-bucket.active { color: var(--text-primary); border-color: rgba(91, 216, 202, .24); background: rgba(67, 210, 191, .09); }
.renewal-bucket strong { color: var(--text-primary); font-size: 12px; }
.bucket-marker { width: 7px; height: 7px; border-radius: 50%; background: #6d8790; box-shadow: 0 0 0 3px rgba(109,135,144,.1); }
.bucket-overdue { background: #fa766e; box-shadow: 0 0 0 3px rgba(250,118,110,.12); }.bucket-today { background: #f4bf5e; box-shadow: 0 0 0 3px rgba(244,191,94,.12); }.bucket-next_7_days { background: #5bd8ca; box-shadow: 0 0 0 3px rgba(91,216,202,.12); }.bucket-next_30_days { background: #76b9ff; box-shadow: 0 0 0 3px rgba(118,185,255,.12); }
.renewal-rail-note { display: flex; gap: 10px; margin: 28px 8px 0; padding-top: 16px; border-top: 1px solid var(--border-color); }
.rail-note-line { width: 2px; flex: 0 0 2px; border-radius: 5px; background: var(--primary); opacity: .7; }.renewal-rail-note p { color: var(--text-secondary); font-size: 10px; line-height: 1.55; margin: 0; }
.renewal-desk { display: flex; flex-direction: column; gap: 9px; min-width: 0; }
.renewal-desk-head { display: flex; align-items: flex-end; justify-content: space-between; padding: 2px 3px 8px; }.renewal-desk-head h2 { margin-top: 5px; color: var(--text-primary); font-size: 20px; letter-spacing: -.025em; }.renewal-count { color: var(--text-secondary); font-size: 11px; }
.renewal-card { display: grid; grid-template-columns: 82px minmax(190px, 1.16fr) minmax(170px, .9fr) 20px; gap: 14px; align-items: center; padding: 17px 17px 17px 14px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(112deg, rgba(255,255,255,.034), rgba(255,255,255,.012)); position: relative; overflow: hidden; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.renewal-card:hover { transform: translateY(-2px); border-color: rgba(102, 220, 210, .35); background: linear-gradient(112deg, rgba(72, 213, 194, .07), rgba(255,255,255,.018)); }
.renewal-card.is-overdue { border-left: 2px solid #fa766e; }.renewal-card-signal { align-self: stretch; display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 12px; padding-top: 2px; }.renewal-risk { width: 9px; height: 9px; border-radius: 50%; }.renewal-risk-critical { background: #fa766e; box-shadow: 0 0 0 5px rgba(250,118,110,.10); }.renewal-risk-high { background: #f4bf5e; box-shadow: 0 0 0 5px rgba(244,191,94,.10); }.renewal-risk-medium { background: #76b9ff; box-shadow: 0 0 0 5px rgba(118,185,255,.10); }.renewal-risk-low { background: #5bd8ca; box-shadow: 0 0 0 5px rgba(91,216,202,.10); }.renewal-source-label { color: var(--text-secondary); font-size: 9px; line-height: 1.35; text-transform: uppercase; letter-spacing: .08em; }
.renewal-card-title { display: flex; align-items: center; gap: 9px; margin-bottom: 6px; }.renewal-reference { font-family: 'IBM Plex Mono', 'SFMono-Regular', monospace; font-size: 12px; }.renewal-card-title .badge { font-size: 9px; padding: 2px 6px; }.renewal-card-main h3 { color: var(--text-primary); font-size: 14px; margin: 0 0 3px; }.renewal-context { color: var(--text-secondary); font-size: 11px; margin: 0; }.renewal-card-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 12px; color: var(--text-secondary); font-size: 10px; }.renewal-card-meta .cross-module-link { font-size: 10px; }.renewal-late { color: #fa9189; font-weight: 700; }.renewal-card-action { display: flex; flex-direction: column; gap: 4px; min-width: 0; }.renewal-card-action > span { color: var(--text-secondary); font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }.renewal-card-action > strong { color: var(--text-primary); font-size: 11px; line-height: 1.35; font-weight: 600; }.renewal-card-bottom { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 11px; }.renewal-card-bottom .money { font-size: 12px; font-weight: 700; }.renewal-card-bottom small { color: var(--text-secondary); font-size: 10px; }.renewal-owner { display: inline-flex; align-items: center; gap: 4px; color: var(--text-secondary); font-size: 10px; white-space: nowrap; }.renewal-card-arrow { color: var(--text-secondary); opacity: .55; justify-self: end; }.renewal-empty { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--text-secondary); border: 1px dashed var(--border-color); border-radius: 15px; font-size: 12px; }.renewal-error { color: #fa9189; }.renewal-access-card { max-width: 520px; display: flex; align-items: center; gap: 12px; color: var(--text-secondary); }.renewal-access-card h2 { color: var(--text-primary); }.renewal-access-card p { margin: 0; font-size: 12px; }
@media (max-width: 1120px) { .renewal-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }.renewal-value-strip { min-height: 85px; } .renewal-filters { flex-wrap: wrap; } .renewal-search { flex-basis: 100%; } }
@media (max-width: 780px) { .renewal-hero { flex-direction: column; padding: 24px; }.renewal-refresh { align-self: flex-start; }.renewal-layout { grid-template-columns: 1fr; }.renewal-rail { min-height: auto; }.renewal-rail-note { display: none; }.renewal-bucket { display: inline-grid; width: auto; min-width: 145px; margin: 0 4px 4px 0; }.renewal-rail-heading { padding-bottom: 8px; }.renewal-card { grid-template-columns: 44px minmax(0, 1fr) 18px; }.renewal-card-action { grid-column: 2 / 4; padding-top: 12px; border-top: 1px solid var(--border-color); }.renewal-filters label { flex: 1 1 145px; }.renewal-filter-icon { display: none; } }
@media (max-width: 480px) { .renewal-metrics { grid-template-columns: 1fr 1fr; }.renewal-metric strong { font-size: 23px; }.renewal-value-strip { grid-column: 1 / -1; min-height: 72px; }.renewal-hero h1 { font-size: 31px; }.renewal-card { padding: 14px 12px; gap: 10px; }.renewal-card-meta { display: block; }.renewal-card-meta > * { margin-right: 5px; }.renewal-card-bottom { flex-direction: column; align-items: flex-start; } }

/* Action Desk — commitments are triaged as a queue, never rendered as another generic
   CRUD table. The source link remains visible so each decision has a home in the domain. */
.action-workspace { display: flex; flex-direction: column; gap: 18px; animation: page-rise 420ms ease both; }
.action-hero { min-height: 166px; padding: 28px 31px; border: 1px solid rgba(104,205,219,.22); border-radius: 22px; display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; background: radial-gradient(circle at 82% 15%, rgba(244,191,94,.15), transparent 25%), radial-gradient(circle at 65% 100%, rgba(91,216,202,.12), transparent 30%), linear-gradient(125deg, rgba(17,27,42,.98), rgba(11,19,31,.98)); box-shadow: 0 18px 50px rgba(0,0,0,.17); }
.action-hero h1 { margin: 10px 0 8px; color: #eefcff; font-family: 'Outfit', sans-serif; font-size: clamp(28px,4vw,42px); letter-spacing: -.045em; line-height: 1.03; }.action-hero p { max-width: 620px; color: rgba(214,237,242,.7); font-size: 14px; line-height: 1.5; }.action-refresh { background: rgba(255,255,255,.07); border-color: rgba(158,226,234,.26); color: #dffcff; }
.action-metrics { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 10px; }.action-metric { min-height: 96px; padding: 15px 16px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012)); color: var(--text-primary); text-align: left; font: inherit; cursor: pointer; transition: transform .18s ease,border-color .18s ease,background .18s ease; }.action-metric:hover { transform: translateY(-2px); border-color: rgba(102,220,210,.35); background: rgba(67,210,191,.07); }.action-metric span { min-height: 23px; display: flex; align-items: center; gap: 6px; color: var(--text-secondary); font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }.action-metric strong { display: block; margin-top: 11px; font-family: var(--font-display); font-size: 27px; line-height: 1; }.action-metric small { display: block; margin-top: 8px; color: var(--text-secondary); font-size: 10px; }.action-metric-main { border-color: rgba(71,211,192,.3); background: linear-gradient(145deg,rgba(48,197,179,.11),rgba(255,255,255,.015)); }.action-metric-main strong { color: #b7fff1; }.action-metric-warning strong { color: #f4bf5e; }
.action-filters { display: flex; align-items: flex-end; gap: 10px; padding: 13px; border: 1px solid var(--border-color); border-radius: 16px; background: rgba(255,255,255,.018); }.action-search { height: 38px; flex: 1 1 300px; min-width: 210px; display: flex; align-items: center; gap: 9px; padding: 0 12px; border: 1px solid var(--border-color); border-radius: 10px; color: var(--text-secondary); background: var(--surface-color); }.action-search input { width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 12px; }.action-filters label { display: flex; flex-direction: column; gap: 5px; min-width: 160px; }.action-filters label span { color: var(--text-secondary); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; }.action-filters select { height: 38px; padding: 0 10px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--surface-color); color: var(--text-primary); font: inherit; font-size: 12px; }
.action-notice { padding: 10px 13px; border: 1px solid rgba(91,216,202,.3); border-radius: 10px; background: rgba(91,216,202,.08); color: var(--primary); font-size: 12px; }.action-list { display: flex; flex-direction: column; gap: 9px; }.action-list-head { display: flex; align-items: flex-end; justify-content: space-between; padding: 2px 3px 8px; }.action-list-head h2 { margin-top: 5px; color: var(--text-primary); font-size: 20px; letter-spacing: -.025em; }.action-count { color: var(--text-secondary); font-size: 11px; }
.action-card { display: grid; grid-template-columns: 88px minmax(210px,1fr) minmax(145px,.7fr) 20px; gap: 15px; align-items: center; padding: 16px 17px 16px 14px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(112deg,rgba(255,255,255,.034),rgba(255,255,255,.012)); position: relative; overflow: hidden; transition: transform .18s ease,border-color .18s ease,background .18s ease; }.action-card:hover { transform: translateY(-2px); border-color: rgba(102,220,210,.35); background: linear-gradient(112deg,rgba(72,213,194,.07),rgba(255,255,255,.018)); }.action-card.is-overdue { border-left: 2px solid #fa766e; }.action-card-signal { align-self: stretch; display: flex; flex-direction: column; justify-content: flex-start; gap: 11px; color: var(--text-secondary); font-size: 9px; line-height: 1.3; text-transform: uppercase; letter-spacing: .07em; }.action-priority-dot { width: 9px; height: 9px; border-radius: 50%; background: #76b9ff; box-shadow: 0 0 0 5px rgba(118,185,255,.1); }.action-priority-low .action-priority-dot { background: #5bd8ca; box-shadow: 0 0 0 5px rgba(91,216,202,.1); }.action-priority-high .action-priority-dot { background: #f4bf5e; box-shadow: 0 0 0 5px rgba(244,191,94,.1); }.action-priority-critical .action-priority-dot { background: #fa766e; box-shadow: 0 0 0 5px rgba(250,118,110,.1); }.action-card-title { display: flex; align-items: center; gap: 9px; margin-bottom: 6px; }.action-card-title h3 { margin: 0; color: var(--text-primary); font-size: 14px; line-height: 1.25; }.action-card-title .badge { font-size: 9px; padding: 2px 6px; white-space: nowrap; }.action-card-main > p { min-height: 16px; margin: 0; color: var(--text-secondary); font-size: 11px; line-height: 1.4; }.action-card-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 11px; color: var(--text-secondary); font-size: 10px; }.action-card-meta .cross-module-link { font-size: 10px; }.action-card-side { display: flex; flex-direction: column; gap: 4px; min-width: 0; }.action-label { margin-top: 3px; color: var(--text-secondary); font-size: 9px; letter-spacing: .08em; text-transform: uppercase; }.action-card-side strong { color: var(--text-primary); font-size: 12px; }.action-late { color: #fa9189 !important; }.action-owner { display: inline-flex; align-items: center; gap: 4px; color: var(--text-secondary); font-size: 10px; }.action-card-controls { grid-column: 2 / 4; display: flex; justify-content: flex-end; gap: 7px; padding-top: 11px; border-top: 1px solid var(--border-color); }.action-control { padding: 7px 10px; font-size: 11px; }.action-card-arrow { color: var(--text-secondary); opacity: .55; justify-self: end; }.action-inline-form { grid-column: 2 / 4; display: flex; align-items: flex-end; gap: 8px; padding-top: 12px; border-top: 1px solid var(--border-color); }.action-inline-form label { flex: 1; display: flex; flex-direction: column; gap: 5px; color: var(--text-secondary); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; }.action-inline-form input,.action-inline-form textarea { width: 100%; padding: 8px 9px; border: 1px solid var(--border-color); border-radius: 8px; background: var(--surface-color); color: var(--text-primary); font: inherit; font-size: 11px; }.action-complete-form { align-items: flex-start; }.action-complete-form textarea { min-height: 54px; resize: vertical; }.action-text-button { padding: 8px 5px; border: 0; background: transparent; color: var(--text-secondary); font: inherit; font-size: 11px; cursor: pointer; }.action-text-button:hover { color: var(--text-primary); }.action-empty { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--text-secondary); border: 1px dashed var(--border-color); border-radius: 15px; font-size: 12px; }.action-error { color: #fa9189; }.action-access-card { max-width: 520px; display: flex; align-items: center; gap: 12px; color: var(--text-secondary); }.action-access-card h2 { color: var(--text-primary); }.action-access-card p { margin: 0; font-size: 12px; }
.action-card.is-linked { border-color: rgba(91,216,202,.78); background: linear-gradient(112deg,rgba(91,216,202,.14),rgba(255,255,255,.025)); box-shadow: 0 0 0 2px rgba(91,216,202,.12), 0 15px 38px rgba(0,0,0,.18); }
.renewal-inline-error { padding: 9px 12px; border: 1px solid rgba(250,118,110,.35); border-radius: 9px; background: rgba(250,118,110,.08); color: #fa9189; font-size: 11px; }.renewal-action-button { margin-top: 7px; padding: 6px 8px; font-size: 10px; align-self: flex-start; }.renewal-action-state { margin-top: 7px; color: var(--primary) !important; font-size: 10px !important; letter-spacing: .02em !important; text-transform: none !important; }
@media (max-width: 1020px) { .action-metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }.action-filters { flex-wrap: wrap; }.action-search { flex-basis: 100%; } }
@media (max-width: 760px) { .action-hero { flex-direction: column; padding: 23px; }.action-refresh { align-self: flex-start; }.action-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }.action-filters label { flex: 1 1 160px; }.action-card { grid-template-columns: 42px minmax(0,1fr) 18px; }.action-card-side { grid-column: 2 / 3; padding-top: 11px; border-top: 1px solid var(--border-color); }.action-card-controls,.action-inline-form { grid-column: 2 / 4; }.action-card-arrow { grid-column: 3; grid-row: 1; }.action-inline-form { flex-wrap: wrap; }.action-inline-form label { flex-basis: 100%; } }
@media (max-width: 480px) { .action-metrics { grid-template-columns: 1fr 1fr; }.action-hero h1 { font-size: 31px; }.action-card { padding: 14px 12px; gap: 10px; }.action-card-meta { display: block; }.action-card-meta > * { margin-right: 5px; }.action-card-controls { flex-wrap: wrap; justify-content: flex-start; }.action-card-controls .btn { flex: 1 1 auto; } }

/* Support Queue — an operational radar layered into the existing Support module. The
   lanes make the queue legible at a glance while the table/detail view remains the source
   workspace for conversation, SLA, time, and remote-session work. */
.support-queue { padding: 20px; border: 1px solid rgba(104,205,219,.2); border-radius: 20px; background: radial-gradient(circle at 12% 0%, rgba(91,216,202,.11), transparent 32%), linear-gradient(135deg, rgba(18,31,44,.96), rgba(11,20,31,.98)); box-shadow: 0 16px 42px rgba(0,0,0,.14); }
.support-queue-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 16px; }.support-queue-heading h2 { max-width: 690px; margin: 8px 0 0; color: #eafcff; font-family: 'Outfit', sans-serif; font-size: clamp(19px,2.5vw,27px); letter-spacing: -.035em; line-height: 1.08; }.support-queue-heading .eyebrow { display: inline-flex; align-items: center; gap: 6px; color: #6ee7d2; }.support-queue-count { color: rgba(214,237,242,.7); font-size: 11px; white-space: nowrap; }
.support-queue-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; }.support-queue-lane { min-height: 96px; padding: 13px 14px; border: 1px solid rgba(159,201,211,.17); border-radius: 13px; background: rgba(255,255,255,.035); color: #e8f8fa; text-align: left; font: inherit; cursor: pointer; transition: transform .18s ease, border-color .18s ease, background .18s ease; }.support-queue-lane:hover,.support-queue-lane.is-selected { transform: translateY(-2px); border-color: rgba(102,220,210,.48); background: rgba(67,210,191,.11); }.support-queue-lane span { display: flex; align-items: center; gap: 6px; color: rgba(214,237,242,.72); font-size: 10px; font-weight: 700; letter-spacing: .055em; text-transform: uppercase; }.support-queue-lane span svg { color: #6ee7d2; }.support-queue-lane strong { display: block; margin-top: 11px; color: #f1ffff; font-family: var(--font-display); font-size: 28px; line-height: 1; }.support-queue-lane small { display: block; margin-top: 7px; color: rgba(214,237,242,.55); font-size: 10px; }.support-queue-lane-risk { border-color: rgba(244,191,94,.23); }.support-queue-lane-risk span svg { color: #f4bf5e; }.support-queue-lane-danger { border-color: rgba(250,118,110,.26); }.support-queue-lane-danger span svg,.support-queue-lane-danger strong { color: #fa9189; }.support-queue-lane-all { background: rgba(255,255,255,.02); }
.support-follow-up { display: inline-flex; align-items: center; min-height: 25px; padding: 4px 8px; border-radius: 7px; color: #73e1d0; background: rgba(91,216,202,.1); font-size: 10px; font-weight: 700; white-space: nowrap; }.support-follow-up-completed { color: #a9b9c0; background: rgba(170,184,192,.1); }.support-follow-up-muted { color: var(--text-secondary); background: transparent; }.support-follow-up-button { padding: 6px 8px; font-size: 10px; white-space: nowrap; }.support-follow-up-banner { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 15px 17px; border: 1px solid rgba(91,216,202,.25); border-radius: 13px; background: linear-gradient(105deg, rgba(91,216,202,.1), rgba(255,255,255,.02)); }.support-follow-up-banner > div { display: flex; flex-direction: column; gap: 5px; }.support-follow-up-banner .eyebrow { display: inline-flex; align-items: center; gap: 6px; color: #6ee7d2; font-size: 9px; }.support-follow-up-banner strong { color: var(--text-primary); font-size: 14px; }.support-follow-up-banner small { color: var(--text-secondary); font-size: 11px; }.support-queue-notice,.support-queue-error { display: flex; align-items: center; gap: 8px; padding: 10px 13px; border-radius: 10px; font-size: 12px; }.support-queue-notice { border: 1px solid rgba(91,216,202,.3); background: rgba(91,216,202,.08); color: var(--primary); }.support-queue-error { border: 1px solid rgba(250,118,110,.35); background: rgba(250,118,110,.08); color: #fa9189; }
@media (max-width: 980px) { .support-queue-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 680px) { .support-queue { padding: 16px; }.support-queue-heading { align-items: flex-start; flex-direction: column; }.support-queue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.support-follow-up-banner { align-items: flex-start; flex-direction: column; } }
@media (max-width: 430px) { .support-queue-grid { grid-template-columns: 1fr 1fr; gap: 7px; }.support-queue-lane { min-height: 86px; padding: 10px; }.support-queue-lane strong { font-size: 24px; } }

/* Delivery Desk — one operational surface over documents, outbound mail, human review,
   and installed product versions. It is intentionally a signal room, not a document CRUD
   table: every row routes back to the owning module or the Action Desk. */
.ingestion-review-action-strip { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-color: rgba(91,216,202,.25); background: linear-gradient(110deg, rgba(91,216,202,.07), rgba(255,255,255,.018)); }
.ingestion-review-action-strip h3 { margin-top: 6px; color: var(--text-primary); font-size: 16px; }
.ingestion-review-action-strip p { margin-top: 5px; color: var(--text-secondary); font-size: 12px; line-height: 1.45; }
.ingestion-review-action-state { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: flex-end; }
.ingestion-review-action-locked { max-width: 210px; color: var(--text-secondary); font-size: 11px; text-align: right; }
.delivery-workspace { display: flex; flex-direction: column; gap: 18px; animation: page-rise 420ms ease both; }
.delivery-hero { min-height: 164px; padding: 28px 31px; border: 1px solid rgba(111,185,255,.24); border-radius: 22px; display: flex; justify-content: space-between; align-items: flex-start; gap: 22px; background: radial-gradient(circle at 85% 4%, rgba(118,185,255,.18), transparent 28%), radial-gradient(circle at 59% 105%, rgba(91,216,202,.13), transparent 34%), linear-gradient(125deg, rgba(16,28,46,.99), rgba(10,18,31,.99)); box-shadow: 0 18px 50px rgba(0,0,0,.18); }
.delivery-hero-copy h1 { margin: 10px 0 8px; color: #eefaff; font-family: 'Outfit', sans-serif; font-size: clamp(28px,4vw,42px); letter-spacing: -.045em; line-height: 1.03; }.delivery-hero-copy p { max-width: 660px; margin: 0; color: rgba(214,237,242,.72); font-size: 14px; line-height: 1.5; }.delivery-hero-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }.delivery-hero-actions .btn { background: rgba(255,255,255,.07); border-color: rgba(158,226,234,.25); color: #e0faff; white-space: nowrap; }.delivery-health { display: inline-flex; align-items: center; gap: 7px; margin-top: 15px; color: rgba(214,237,242,.75); font-size: 10px; }.delivery-health > span { width: 7px; height: 7px; border-radius: 50%; background: #f4bf5e; box-shadow: 0 0 0 4px rgba(244,191,94,.1); }.delivery-health.is-ready > span { background: #5bd8ca; box-shadow: 0 0 0 4px rgba(91,216,202,.1); }
.delivery-metrics { display: grid; grid-template-columns: 1.15fr repeat(3, 1fr); gap: 10px; }.delivery-metric { min-height: 103px; padding: 15px 16px; border: 1px solid var(--border-color); border-radius: 15px; background: linear-gradient(145deg, rgba(255,255,255,.035), rgba(255,255,255,.012)); color: var(--text-primary); text-align: left; font: inherit; cursor: pointer; transition: transform .18s ease, border-color .18s ease, background .18s ease; }.delivery-metric:hover,.delivery-metric.is-selected { transform: translateY(-2px); border-color: rgba(102,220,210,.42); background: rgba(67,210,191,.08); }.delivery-metric span { display: flex; align-items: center; gap: 6px; min-height: 23px; color: var(--text-secondary); font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }.delivery-metric span svg { color: var(--primary); }.delivery-metric strong { display: block; margin-top: 11px; color: var(--text-primary); font-family: var(--font-display); font-size: 28px; line-height: 1; }.delivery-metric small { display: block; margin-top: 8px; color: var(--text-secondary); font-size: 10px; }.delivery-metric-main { border-color: rgba(111,185,255,.32); background: linear-gradient(145deg, rgba(118,185,255,.1), rgba(255,255,255,.012)); }.delivery-metric-main strong { color: #bfe5ff; }.delivery-metric-warning strong { color: #f4bf5e; }
.delivery-filters { display: flex; align-items: center; justify-content: space-between; gap: 13px; padding: 12px; border: 1px solid var(--border-color); border-radius: 16px; background: rgba(255,255,255,.018); }.delivery-search { height: 39px; flex: 1 1 340px; display: flex; align-items: center; gap: 9px; padding: 0 12px; border: 1px solid var(--border-color); border-radius: 10px; color: var(--text-secondary); background: var(--surface-color); }.delivery-search input { width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 12px; }.delivery-tab-strip { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }.delivery-tab-strip button { padding: 8px 10px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--text-secondary); font: inherit; font-size: 11px; cursor: pointer; }.delivery-tab-strip button:hover,.delivery-tab-strip button.is-active { border-color: rgba(91,216,202,.28); background: rgba(91,216,202,.1); color: var(--primary); }
.delivery-notice,.delivery-error { padding: 10px 13px; border-radius: 10px; font-size: 12px; }.delivery-notice { border: 1px solid rgba(91,216,202,.3); background: rgba(91,216,202,.08); color: var(--primary); }.delivery-error { border: 1px solid rgba(250,118,110,.35); background: rgba(250,118,110,.08); color: #fa9189; }.delivery-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: 16px; align-items: start; }.delivery-panel { min-width: 0; padding: 17px; border: 1px solid var(--border-color); border-radius: 17px; background: linear-gradient(160deg, rgba(255,255,255,.035), rgba(255,255,255,.012)); }.delivery-panel-mail { grid-column: 1 / -1; }.delivery-panel-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 13px; }.delivery-panel-head h2 { margin-top: 6px; color: var(--text-primary); font-size: 20px; letter-spacing: -.025em; }.delivery-count { color: var(--text-secondary); font-size: 11px; }.delivery-panel-empty,.delivery-empty { min-height: 120px; display: flex; align-items: center; justify-content: center; gap: 9px; color: var(--text-secondary); border: 1px dashed var(--border-color); border-radius: 12px; font-size: 12px; }.delivery-empty { min-height: 220px; flex-direction: column; }.delivery-mail-row,.delivery-document-row,.delivery-update-row { display: grid; grid-template-columns: 10px minmax(0,1fr) 150px; gap: 13px; align-items: center; padding: 13px 4px; border-top: 1px solid rgba(148,180,192,.12); }.delivery-mail-row:first-of-type,.delivery-document-row:first-of-type,.delivery-update-row:first-of-type { border-top: 0; }.delivery-status-dot { width: 7px; height: 7px; border-radius: 50%; background: #f4bf5e; box-shadow: 0 0 0 4px rgba(244,191,94,.1); }.delivery-status-sent .delivery-status-dot { background: #5bd8ca; box-shadow: 0 0 0 4px rgba(91,216,202,.1); }.delivery-status-failed .delivery-status-dot { background: #fa766e; box-shadow: 0 0 0 4px rgba(250,118,110,.1); }.delivery-row-main { min-width: 0; }.delivery-row-title { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }.delivery-row-title strong { overflow: hidden; color: var(--text-primary); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.delivery-row-title .badge { padding: 2px 6px; font-size: 9px; }.delivery-row-main p { margin: 4px 0 0; color: var(--text-secondary); font-size: 10px; }.delivery-row-main small { display: block; margin-top: 7px; color: var(--text-secondary); font-size: 10px; line-height: 1.45; }.delivery-last-error { color: #fa9189 !important; }.delivery-row-side { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; min-width: 0; color: var(--text-secondary); font-size: 10px; text-align: right; }.delivery-row-side strong { color: var(--text-primary); font-size: 11px; }.delivery-row-side .cross-module-link { font-size: 10px; }.delivery-file-icon,.delivery-update-signal { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 9px; color: #76b9ff; background: rgba(118,185,255,.1); }.delivery-document-row { grid-template-columns: 30px minmax(0,1fr) 130px; }.delivery-document-row .delivery-row-main .cross-module-link { margin-top: 6px; font-size: 10px; }.delivery-open-link { display: inline-flex; align-items: center; gap: 3px; color: var(--primary); font-size: 10px; font-weight: 700; text-decoration: none; }.delivery-open-link:hover { text-decoration: underline; }.delivery-update-row { grid-template-columns: 30px minmax(0,1fr) 160px; }.delivery-update-signal { color: #5bd8ca; background: rgba(91,216,202,.1); }.delivery-update-row.is-mandatory { border-left: 2px solid #fa766e; padding-left: 9px; }.delivery-update-row.is-mandatory .delivery-update-signal { color: #fa9189; background: rgba(250,118,110,.1); }.delivery-version-shift { display: inline-flex; align-items: center; gap: 3px; padding: 3px 6px; border-radius: 6px; color: #f4bf5e; background: rgba(244,191,94,.1); font-family: 'IBM Plex Mono', monospace; font-size: 10px; }.delivery-update-row .delivery-row-main .cross-module-link { font-size: 10px; }.delivery-action-button { padding: 6px 8px; font-size: 10px; white-space: nowrap; }.delivery-action-state { display: inline-flex; align-items: center; gap: 4px; color: var(--primary); font-size: 10px; font-weight: 700; }.delivery-review-row { width: 100%; display: flex; align-items: center; gap: 10px; padding: 11px 4px; border: 0; border-top: 1px solid rgba(148,180,192,.12); background: transparent; color: var(--text-primary); text-align: left; font: inherit; cursor: pointer; }.delivery-review-row:first-of-type { border-top: 0; }.delivery-review-row:hover { color: var(--primary); }.delivery-review-row > span:nth-child(2) { display: flex; flex: 1; flex-direction: column; gap: 4px; }.delivery-review-row strong { font-size: 11px; }.delivery-review-row small { color: var(--text-secondary); font-size: 10px; }.delivery-review-marker { width: 8px; height: 8px; border-radius: 50%; background: #f4bf5e; }.delivery-review-extracted { background: #76b9ff; }.delivery-review-failed { background: #fa766e; }.delivery-access-card { max-width: 540px; display: flex; align-items: center; gap: 12px; color: var(--text-secondary); }.delivery-access-card h2 { color: var(--text-primary); }.delivery-access-card p { margin: 0; font-size: 12px; }
.delivery-deployment-form { grid-column: 2 / -1; display: flex; flex-direction: column; gap: 10px; padding: 13px; border: 1px solid rgba(91,216,202,.28); border-radius: 12px; background: rgba(91,216,202,.055); }.delivery-deployment-form strong { color: var(--text-primary); font-size: 12px; }.delivery-deployment-form p { margin: 4px 0 0; color: var(--text-secondary); font-size: 10px; line-height: 1.45; }.delivery-deployment-form textarea { min-height: 74px; resize: vertical; }.delivery-deployment-actions { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 930px) { .delivery-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }.delivery-filters { align-items: stretch; flex-direction: column; }.delivery-tab-strip { justify-content: flex-start; }.delivery-search { flex-basis: auto; }.delivery-grid { grid-template-columns: 1fr; } }
@media (max-width: 660px) { .delivery-hero { flex-direction: column; padding: 23px; }.delivery-hero-actions { justify-content: flex-start; }.delivery-mail-row,.delivery-document-row,.delivery-update-row { grid-template-columns: 10px minmax(0,1fr); }.delivery-document-row,.delivery-update-row { grid-template-columns: 30px minmax(0,1fr); }.delivery-row-side { grid-column: 2; align-items: flex-start; padding-top: 9px; border-top: 1px solid rgba(148,180,192,.12); text-align: left; }.delivery-metric strong { font-size: 24px; } }
@media (max-width: 420px) { .delivery-metrics { grid-template-columns: 1fr 1fr; gap: 7px; }.delivery-metric { min-height: 88px; padding: 11px; }.delivery-metric strong { margin-top: 8px; font-size: 22px; }.delivery-metric small { margin-top: 5px; }.delivery-hero-copy h1 { font-size: 31px; } }
/* Role workspaces — a connected command surface, not a second record table. */
.role-workspaces { display: flex; flex-direction: column; gap: 18px; animation: page-rise 420ms ease both; }
.role-workspace-hero { display: flex; justify-content: space-between; gap: 24px; padding: 28px; border: 1px solid rgba(100, 221, 255, .18); border-radius: 20px; background: radial-gradient(circle at 86% 12%, rgba(78, 207, 255, .14), transparent 34%), linear-gradient(135deg, rgba(19, 42, 69, .94), rgba(8, 18, 32, .96)); box-shadow: 0 20px 55px rgba(0, 0, 0, .18); }
.role-workspace-hero h2 { margin: 7px 0 8px; font-size: clamp(26px, 3vw, 38px); letter-spacing: -.04em; }
.role-workspace-hero p { max-width: 670px; margin: 0; color: var(--text-secondary); line-height: 1.55; }
.role-workspace-hero-side { display: flex; align-items: flex-start; gap: 12px; }
.role-workspace-context { display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px; border: 1px solid rgba(100, 221, 255, .24); border-radius: 999px; color: #a9edff; background: rgba(100, 221, 255, .05); font-size: 12px; font-weight: 700; white-space: nowrap; }
.role-workspace-tabs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding: 7px; border: 1px solid var(--border-color); border-radius: 16px; background: rgba(255, 255, 255, .025); }
.role-workspace-tab { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-height: 68px; padding: 11px 13px; border: 1px solid transparent; border-radius: 11px; color: var(--text-secondary); background: transparent; text-align: left; cursor: pointer; transition: .2s ease; }
.role-workspace-tab:hover { color: var(--text-primary); background: rgba(255, 255, 255, .045); transform: translateY(-1px); }
.role-workspace-tab.active { color: var(--text-primary); border-color: rgba(100, 221, 255, .3); background: linear-gradient(135deg, rgba(45, 142, 192, .2), rgba(100, 221, 255, .055)); box-shadow: inset 0 0 0 1px rgba(100, 221, 255, .05); }
.role-workspace-tab strong { font-size: 13px; }
.role-workspace-tab small { font-size: 10px; line-height: 1.35; color: var(--text-secondary); }
.role-workspace-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; align-items: center; gap: 12px; padding: 14px 18px; border: 1px solid var(--border-color); border-radius: 15px; background: var(--surface-card); }
.role-workspace-summary div { display: flex; flex-direction: column; gap: 3px; padding-right: 15px; border-right: 1px solid var(--border-color); }
.role-workspace-summary span { color: var(--text-secondary); font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
.role-workspace-summary strong { font-size: 25px; letter-spacing: -.04em; }
.role-workspace-summary small { color: var(--text-secondary); font-size: 11px; text-align: right; }
.role-workspace-summary .summary-critical strong { color: #ff8f9d; }
.role-workspace-summary .summary-attention strong { color: #ffd27a; }
.role-workspace-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.role-workspace-lane { min-width: 0; overflow: hidden; border: 1px solid var(--border-color); border-radius: 17px; background: linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, .012)); }
.role-workspace-lane-head { display: flex; justify-content: space-between; gap: 14px; padding: 18px 18px 14px; border-bottom: 1px solid var(--border-color); }
.role-workspace-lane-head h3 { margin: 5px 0 4px; font-size: 17px; }
.role-workspace-lane-head p { margin: 0; color: var(--text-secondary); font-size: 11px; line-height: 1.4; }
.role-workspace-lane-permission { color: #8edff4; font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: .08em; text-transform: uppercase; }
.role-workspace-count { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; border-radius: 9px; color: #a9edff; background: rgba(100, 221, 255, .1); font-size: 12px; font-weight: 800; }
.role-workspace-signals { display: flex; flex-direction: column; }
.role-workspace-signal { display: grid; grid-template-columns: 8px minmax(0, 1fr) auto 15px; align-items: center; gap: 10px; width: 100%; padding: 12px 16px; border: 0; border-bottom: 1px solid rgba(148, 176, 205, .1); color: var(--text-primary); background: transparent; text-align: left; cursor: pointer; transition: background .18s ease, padding .18s ease; }
.role-workspace-signal:last-child { border-bottom: 0; }
.role-workspace-signal:hover { padding-left: 19px; background: rgba(100, 221, 255, .055); }
.role-workspace-signal-mark { width: 7px; height: 7px; border-radius: 50%; background: #85dff7; box-shadow: 0 0 0 3px rgba(133, 223, 247, .1); }
.signal-critical .role-workspace-signal-mark { background: #ff7182; box-shadow: 0 0 0 3px rgba(255, 113, 130, .12); }
.signal-attention .role-workspace-signal-mark { background: #ffc56d; box-shadow: 0 0 0 3px rgba(255, 197, 109, .12); }
.signal-positive .role-workspace-signal-mark { background: #73e0ae; box-shadow: 0 0 0 3px rgba(115, 224, 174, .12); }
.role-workspace-signal-copy { display: flex; min-width: 0; flex-direction: column; gap: 2px; }
.role-workspace-signal-copy strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.role-workspace-signal-copy small { overflow: hidden; color: var(--text-secondary); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.role-workspace-signal-copy em { color: var(--text-secondary); font-size: 9px; font-style: normal; }
.role-workspace-signal-date { color: var(--text-secondary); font-size: 10px; white-space: nowrap; }
.role-workspace-empty, .role-workspace-restricted { display: flex; min-height: 125px; flex-direction: column; align-items: center; justify-content: center; gap: 5px; padding: 20px; color: var(--text-secondary); text-align: center; }
.role-workspace-empty strong, .role-workspace-restricted strong { color: var(--text-primary); font-size: 12px; }
.role-workspace-empty p, .role-workspace-restricted p { max-width: 240px; margin: 0; font-size: 10px; line-height: 1.45; }
.role-workspace-restricted svg { color: #ffc56d; }
.role-workspace-lane.is-restricted { opacity: .75; }
.role-workspace-error { display: flex; align-items: center; gap: 8px; padding: 12px 15px; border: 1px solid rgba(255, 113, 130, .32); border-radius: 12px; color: #ffacb5; background: rgba(255, 113, 130, .08); font-size: 12px; }
@media (max-width: 900px) { .role-workspace-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); } .role-workspace-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); } .role-workspace-summary small { grid-column: 1 / -1; text-align: left; } }
@media (max-width: 660px) { .role-workspace-hero { flex-direction: column; padding: 21px; } .role-workspace-hero-side { justify-content: space-between; } .role-workspace-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); } .role-workspace-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .role-workspace-summary div:nth-child(2) { border-right: 0; } .role-workspace-grid { grid-template-columns: 1fr; } .role-workspace-signal { grid-template-columns: 8px minmax(0, 1fr) 15px; } .role-workspace-signal-date { display: none; } }

/* Shell responsive override lives after the legacy base rules so the mobile drawer wins
   the cascade. The desktop layout remains the spacious command-deck grid. */
@media (max-width: 760px) {
  .app-container { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 300;
    width: min(300px, 86vw);
    padding: 20px;
    transform: translateX(-105%);
    transition: transform .22s ease;
    box-shadow: 18px 0 50px rgba(0,0,0,.28);
  }
  .app-container.sidebar-open .sidebar { transform: translateX(0); }
  .sidebar-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 250;
    border: 0;
    background: rgba(2, 8, 23, .58);
    cursor: pointer;
  }
  .mobile-menu-toggle {
    display: inline-grid;
    flex: 0 0 auto;
    place-items: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    background: var(--bg-primary);
    color: var(--text-primary);
    cursor: pointer;
  }
  .header { gap: 10px; padding: 0 16px; }
  .header h1 { min-width: 0; overflow: hidden; font-size: 17px !important; text-overflow: ellipsis; white-space: nowrap; }
  .header-right { min-width: 0; flex: 1; gap: 8px !important; }
  .global-search { min-width: 0; flex: 1; width: auto !important; }
  .profile-badge span { display: none; }
  .settings-security-layout { grid-template-columns: 1fr !important; }
  .login-card { width: min(400px, calc(100vw - 32px)) !important; padding: 28px !important; }
}

/* Notification rail — a compact action surface in the shell, not another CRUD page. */
.notification-bell-wrap { position: relative; flex: 0 0 auto; }
.notification-bell { position: relative; display: inline-grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; transition: color .18s ease, border-color .18s ease, background .18s ease; }
.notification-bell:hover,.notification-bell[aria-expanded="true"] { border-color: rgba(91,216,202,.45); background: rgba(91,216,202,.08); color: var(--primary); }
.notification-count { position: absolute; top: -5px; right: -5px; display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 4px; border: 2px solid var(--bg-primary); border-radius: 999px; background: #fa766e; color: #fff; font-size: 9px; font-weight: 800; line-height: 1; }
.notification-panel { position: absolute; top: calc(100% + 10px); right: 0; z-index: 500; width: min(390px, calc(100vw - 32px)); overflow: hidden; border: 1px solid rgba(104,205,219,.28); border-radius: 16px; background: var(--surface-card); box-shadow: 0 22px 60px rgba(0,0,0,.28); }
.notification-panel-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 14px 15px 12px; border-bottom: 1px solid var(--border-color); background: linear-gradient(135deg, rgba(91,216,202,.08), transparent); }
.notification-panel-header > div { display: flex; flex-direction: column; gap: 4px; }.notification-panel-header strong { color: var(--text-primary); font-size: 13px; }.notification-panel-header small { color: var(--text-secondary); font-size: 10px; }
.notification-mark-all { display: inline-flex; align-items: center; gap: 5px; padding: 5px 7px; border: 0; border-radius: 7px; background: transparent; color: var(--primary); font: inherit; font-size: 10px; cursor: pointer; }.notification-mark-all:hover { background: rgba(91,216,202,.1); }.notification-mark-all:disabled { cursor: not-allowed; opacity: .45; }
.notification-list { max-height: min(430px, 60vh); overflow: auto; }.notification-item { display: grid; grid-template-columns: 8px minmax(0,1fr); gap: 10px; width: 100%; padding: 13px 15px; border: 0; border-bottom: 1px solid rgba(148,180,192,.1); background: transparent; color: var(--text-primary); text-align: left; font: inherit; cursor: pointer; }.notification-item:last-child { border-bottom: 0; }.notification-item:hover { background: rgba(91,216,202,.07); }.notification-item.is-unread { background: rgba(91,216,202,.035); }.notification-item-dot { width: 7px; height: 7px; margin-top: 4px; border-radius: 50%; background: transparent; }.notification-item.is-unread .notification-item-dot { background: #5bd8ca; box-shadow: 0 0 0 4px rgba(91,216,202,.12); }.notification-item-content { display: flex; min-width: 0; flex-direction: column; gap: 4px; }.notification-item-content strong { overflow: hidden; color: var(--text-primary); font-size: 11px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }.notification-item-content span { color: var(--text-secondary); font-size: 10px; line-height: 1.4; }.notification-item-content small { color: var(--text-secondary); font-size: 9px; }.notification-empty { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 105px; padding: 20px; color: var(--text-secondary); font-size: 11px; text-align: center; }

/* Operator feedback replaces blocking browser dialogs with a calm, reversible shell surface. */
.feedback-rail { position: fixed; top: 76px; right: 22px; z-index: 1350; display: flex; width: min(420px, calc(100vw - 32px)); flex-direction: column; gap: 9px; pointer-events: none; }
.feedback-toast { display: grid; grid-template-columns: 20px minmax(0, 1fr) 24px; align-items: start; gap: 10px; padding: 12px 12px 12px 14px; border: 1px solid rgba(120, 205, 218, .25); border-radius: 13px; background: var(--surface-card); box-shadow: 0 18px 50px rgba(0, 0, 0, .3); color: var(--text-primary); pointer-events: auto; animation: feedback-toast-in 220ms cubic-bezier(.2,.8,.2,1) both; }
.feedback-toast > svg { margin-top: 1px; color: #73e0ae; }
.feedback-toast p { min-width: 0; margin: 0; color: var(--text-primary); font-size: 11px; line-height: 1.45; white-space: pre-line; }
.feedback-toast--error { border-color: rgba(255, 113, 130, .38); background: linear-gradient(135deg, rgba(74, 23, 35, .65), var(--surface-card)); }
.feedback-toast--error > svg { color: #ff8f9d; }
.feedback-toast--attention { border-color: rgba(255, 197, 109, .38); background: linear-gradient(135deg, rgba(73, 52, 20, .55), var(--surface-card)); }
.feedback-toast--attention > svg { color: #ffc56d; }
.feedback-toast--info { border-color: rgba(118, 185, 255, .35); }
.feedback-toast--info > svg { color: #76b9ff; }
.feedback-toast-close { display: inline-grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 7px; background: transparent; color: var(--text-secondary); cursor: pointer; }
.feedback-toast-close:hover { background: rgba(255, 255, 255, .08); color: var(--text-primary); }
@keyframes feedback-toast-in { from { opacity: 0; transform: translateY(-8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
@media (max-width: 760px) { .feedback-rail { top: 72px; right: 16px; width: calc(100vw - 32px); } }
@media (prefers-reduced-motion: reduce) { .feedback-toast { animation: none; } }

/* Destructive actions remain guarded without freezing the browser's event loop. */
.confirm-dialog-backdrop { position: fixed; inset: 0; z-index: 1450; display: grid; place-items: center; padding: 20px; background: rgba(3, 8, 14, .72); backdrop-filter: blur(8px); }
.confirm-dialog { display: grid; grid-template-columns: 38px minmax(0, 1fr); gap: 13px; width: min(480px, 100%); padding: 20px; border: 1px solid rgba(255, 197, 109, .34); border-radius: 17px; background: var(--surface-card); box-shadow: 0 30px 100px rgba(0, 0, 0, .42); animation: confirm-dialog-in 180ms cubic-bezier(.2,.8,.2,1) both; }
.confirm-dialog-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; color: #ffc56d; background: rgba(255, 197, 109, .1); }
.confirm-dialog-copy { min-width: 0; }.confirm-dialog-copy h2 { margin: 2px 0 7px; color: var(--text-primary); font-size: 17px; letter-spacing: -.02em; }.confirm-dialog-copy p { margin: 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; white-space: pre-line; }
.confirm-dialog-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 8px; margin-top: 5px; }.confirm-dialog-actions .btn { min-width: 94px; }
@keyframes confirm-dialog-in { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }
@media (prefers-reduced-motion: reduce) { .confirm-dialog { animation: none; } }
@media (max-width: 420px) { .confirm-dialog { grid-template-columns: 32px minmax(0, 1fr); padding: 16px; }.confirm-dialog-icon { width: 32px; height: 32px; }.confirm-dialog-actions { flex-direction: column-reverse; }.confirm-dialog-actions .btn { width: 100%; } }

.share-link-dialog-backdrop { position: fixed; inset: 0; z-index: 1460; display: grid; place-items: center; padding: 20px; background: rgba(3, 8, 14, .72); backdrop-filter: blur(8px); }
.share-link-dialog { width: min(620px, 100%); padding: 20px; border: 1px solid rgba(104, 205, 219, .34); border-radius: 17px; background: var(--surface-card); box-shadow: 0 30px 100px rgba(0, 0, 0, .42); animation: confirm-dialog-in 180ms cubic-bezier(.2,.8,.2,1) both; }
.share-link-dialog-header { display: grid; grid-template-columns: 38px minmax(0, 1fr) 30px; align-items: start; gap: 13px; }
.share-link-dialog-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; color: var(--primary); background: rgba(91, 216, 202, .1); }
.share-link-dialog-copy h2 { margin: 2px 0 7px; color: var(--text-primary); font-size: 17px; letter-spacing: -.02em; }.share-link-dialog-copy p { margin: 0; color: var(--text-secondary); font-size: 12px; line-height: 1.5; }
.share-link-dialog-close { display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 8px; color: var(--text-secondary); background: transparent; cursor: pointer; }.share-link-dialog-close:hover { color: var(--text-primary); background: rgba(255,255,255,.08); }
.share-link-dialog-field { display: grid; gap: 7px; margin-top: 19px; color: var(--text-secondary); font-size: 10px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }.share-link-dialog-field input { width: 100%; min-height: 42px; padding: 10px 11px; border: 1px solid var(--border-color); border-radius: 9px; background: var(--surface-color); color: var(--text-primary); font: 12px 'IBM Plex Mono', monospace; outline: none; }.share-link-dialog-field input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(91, 216, 202, .14); }
.share-link-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }.share-link-dialog-actions .btn { display: inline-flex; align-items: center; gap: 7px; }
@media (prefers-reduced-motion: reduce) { .share-link-dialog { animation: none; } }
@media (max-width: 520px) { .share-link-dialog { padding: 16px; }.share-link-dialog-actions { flex-direction: column-reverse; }.share-link-dialog-actions .btn { width: 100%; justify-content: center; } }
@media (max-width: 760px) { .notification-panel { position: fixed; top: 62px; right: 16px; } }

/* Global entity search stays useful on narrow screens without competing with the
   command palette, notifications, theme, and profile controls. It becomes a compact
   trigger and expands into a fixed, keyboard-ready search field below the shell. */
.global-search-mobile-trigger { display: none; place-items: center; width: 38px; height: 38px; padding: 0; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; }
.global-search-mobile-trigger:hover,
.global-search-mobile-trigger[aria-expanded="true"] { border-color: rgba(91,216,202,.45); background: rgba(91,216,202,.08); color: var(--primary); }

/* Keyboard-first navigation: a compact command deck for people who live in the OS. */
.command-palette-trigger { display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 9px; border: 1px solid var(--border-color); border-radius: var(--radius-sm); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; font: inherit; font-size: 11px; transition: border-color .18s ease, color .18s ease, background .18s ease; }
.command-palette-trigger:hover,.command-palette-trigger[aria-expanded="true"] { border-color: rgba(91,216,202,.45); background: rgba(91,216,202,.08); color: var(--primary); }
.command-palette-trigger kbd,.command-palette-hint kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; min-height: 18px; padding: 1px 5px; border: 1px solid var(--border-color); border-radius: 5px; background: var(--bg-secondary); color: var(--text-secondary); font: 600 9px/1 'IBM Plex Mono', monospace; }
.command-palette-backdrop { position: fixed; inset: 0; z-index: 1100; display: flex; align-items: flex-start; justify-content: center; padding: 11vh 20px 30px; background: rgba(3,8,14,.72); backdrop-filter: blur(10px); }
.command-palette { width: min(650px, 100%); overflow: hidden; border: 1px solid rgba(104,205,219,.3); border-radius: 18px; background: var(--surface-card); box-shadow: 0 30px 100px rgba(0,0,0,.45); animation: command-palette-in 180ms cubic-bezier(.2,.8,.2,1) both; }
@keyframes command-palette-in { from { opacity: 0; transform: translateY(-10px) scale(.985); } }
.command-palette-search-row { display: flex; align-items: center; gap: 10px; padding: 16px 17px 13px; color: var(--primary); border-bottom: 1px solid var(--border-color); }
.command-palette-search-row input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: 500 16px/1.35 'Sora', sans-serif; }
.command-palette-search-row input::placeholder { color: var(--text-secondary); opacity: .65; }
.command-palette-close { display: inline-grid; place-items: center; width: 30px; height: 30px; border: 0; border-radius: 8px; background: transparent; color: var(--text-secondary); cursor: pointer; }
.command-palette-close:hover { background: rgba(91,216,202,.1); color: var(--text-primary); }
.command-palette-hint { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 17px; color: var(--text-secondary); font-size: 10px; }
.command-palette-hint > span:last-child { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.command-palette-results { max-height: min(500px, 55vh); overflow-y: auto; padding: 7px; }
.command-palette-item { display: flex; align-items: center; gap: 11px; width: 100%; padding: 10px 11px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text-primary); text-align: left; cursor: pointer; font: inherit; }
.command-palette-item:hover,.command-palette-item.is-active { border-color: rgba(91,216,202,.2); background: rgba(91,216,202,.09); }
.command-palette-item-icon { display: inline-grid; place-items: center; width: 30px; height: 30px; flex: 0 0 auto; border-radius: 8px; background: rgba(91,216,202,.09); color: var(--primary); }
.command-palette-item-copy { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 3px; }
.command-palette-item-copy strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.command-palette-item-copy small { color: var(--text-secondary); font-size: 10px; }
.command-palette-item-enter { color: var(--primary); font: 600 14px/1 'IBM Plex Mono', monospace; }
.command-palette-empty { min-height: 150px; display: grid; place-items: center; padding: 28px; color: var(--text-secondary); font-size: 12px; text-align: center; }
@media (max-width: 760px) { .command-palette-trigger span,.command-palette-trigger kbd { display: none; } .command-palette-trigger { width: 38px; justify-content: center; padding: 0; } .command-palette-backdrop { padding: 76px 10px 20px; } .command-palette-hint { align-items: flex-start; flex-direction: column; } .command-palette-hint > span:last-child { white-space: normal; } }

@media (max-width: 760px) {
  .global-search { flex: 0 0 38px; width: 38px !important; }
  .global-search-mobile-trigger { display: inline-grid; }
  .global-search-input-shell { display: none !important; }
  .global-search.is-mobile-open { flex-basis: 38px; }
  .global-search.is-mobile-open .global-search-input-shell {
    position: fixed;
    top: 62px;
    left: 16px;
    right: 16px;
    z-index: 1200;
    display: flex !important;
    padding: 10px 12px !important;
    background: var(--surface-card) !important;
    box-shadow: 0 18px 48px rgba(0,0,0,.28);
  }
  .global-search.is-mobile-open .global-search-input-shell input { min-width: 0; flex: 1; }
  .global-search-results {
    position: fixed !important;
    top: 112px !important;
    left: 16px !important;
    right: 16px !important;
    width: auto !important;
    margin-top: 0 !important;
    z-index: 1201 !important;
  }
}
