/* ── Cassandra theme system ───────────────────────────────────────────────────
   4 themes, applied via: <body data-theme="dark-minimal">
   Default: dark-minimal
   All apps load this file. All color references use these CSS variables.
   ─────────────────────────────────────────────────────────────────────────── */

/* ── dark-minimal (default) ─────────────────────────────────────────────── */
:root, [data-theme="dark-minimal"] {
  /* rev_937: semantic z-layers — the 4-token scale replacing the 35-value
     free-for-all the design map surfaced. New code uses ONLY these:
       raise   → hover cards, dropdowns inside content
       sticky  → toolbars, pinned headers (topbar sits here)
       overlay → modals, drawers, slot pickers (beats legacy 9999s)
       toast   → notifications, always on top */
  --csa-z-raise: 10;
  --csa-z-sticky: 100;
  --csa-z-overlay: 10000;
  --csa-z-toast: 12000;
  color-scheme: dark; /* rev_640: native <select>/<input> dropdowns render dark, not white */
  --csa-bg:         #111111;
  --csa-bg2:        #1c1c1c;
  --csa-bg3:        #262626;
  --csa-topbar:     #141414;
  --csa-sidebar:    #161616;
  --csa-text:       #e8e8e8;
  --csa-muted:      #b7b7b7;   /* rev_1029: readability — was #a0a0a0 */
  --csa-hint:       #8f8f8f;   /* rev_1029: readability — was #707070 */
  --csa-border:     #2e2e2e;
  --csa-border2:    #3a3a3a;
  --csa-accent:     #1d9e75;
  --csa-accent-bg:  #0a2018;
  /* rev_924 audit: tokens that were referenced but never defined.
     --csa-accent-rgb = the accent as bare RGB triplet, for rgba(var(),a)
     patterns (equipment.html SVG fills were silently falling back to a
     blue that didn't match the theme). --csa-danger-bg = dark-tinted
     danger background, sibling of --csa-accent-bg (toast/panel bgs were
     riding on hardcoded hex fallbacks). */
  --csa-accent-rgb: 29,158,117;
  --csa-danger-bg:  #3a1818;
  --csa-accent-text:#1d9e75;
  --csa-danger:     #c04040;
  --csa-logo-bg:    #1d9e75;
  --csa-input-bg:   #0f0f0f;
  --csa-card:       #1c1c1c;
  --csa-overlay:    rgba(0,0,0,.6);
  --csa-shadow:     rgba(0,0,0,.4);
  --csa-toggle-off: #333333;
  --csa-sidebar-w:  400px;
  --csa-sidebar-w-sm: 340px;
  /* rev_457: complete palette — interaction overlays, semantic status,
     accent/danger variants. */
  --csa-hover:        rgba(255,255,255,.06);
  --csa-tint:         rgba(255,255,255,.04);
  --csa-hairline:     rgba(255,255,255,.10);
  --csa-hairline-strong: rgba(255,255,255,.22);
  --csa-warning-text: #d9913b;
  --csa-success:      #2eb085;
  --csa-success-soft: rgba(46,176,133,.15);
  --csa-warning:      #d4a92e;
  --csa-warning-soft: rgba(212,169,46,.15);
  --csa-info:         #4d90e0;
  --csa-info-soft:    rgba(77,144,224,.15);
  --csa-danger-text:  #e8857f;
  --csa-danger-soft:  rgba(224,104,95,.15);
  --csa-accent-hover: #2bbd8e;
  --csa-accent-soft:  rgba(29,158,117,.15);
  --csa-on-accent:    #ffffff;
}

/* ── light-minimal ───────────────────────────────────────────────────────── */
[data-theme="light-minimal"] {
  --csa-bg:         #f2f2f0;
  --csa-bg2:        #ffffff;
  --csa-bg3:        #e8e8e6;
  --csa-topbar:     #ffffff;   /* rev_1029: header follows the light theme (was #1a1a1a — dark bar with dark text) */
  --csa-sidebar:    #ffffff;
  --csa-text:       #1a1a1a;
  --csa-muted:      #666666;
  --csa-hint:       #999999;
  --csa-border:     #d4d4d2;
  --csa-border2:    #c0c0be;
  --csa-accent:     #1d9e75;
  --csa-accent-bg:  #e1f5ee;
  --csa-accent-rgb: 29,158,117;
  --csa-danger-bg:  #fbe7e5;
  --csa-accent-text:#0f6e56;
  --csa-danger:     #c04040;
  --csa-logo-bg:    #1d9e75;
  --csa-input-bg:   #f8f8f6;
  --csa-card:       #ffffff;
  --csa-overlay:    rgba(0,0,0,.35);
  --csa-shadow:     rgba(0,0,0,.12);
  --csa-toggle-off: #c8c8c8;
  --csa-hover:        rgba(0,0,0,.05);
  --csa-tint:         rgba(0,0,0,.035);
  --csa-hairline:     rgba(0,0,0,.08);
  --csa-hairline-strong: rgba(0,0,0,.20);
  --csa-warning-text: #a86a1f;
  --csa-success:      #0f7d5e;
  --csa-success-soft: rgba(15,125,94,.12);
  --csa-warning:      #9a6f08;
  --csa-warning-soft: rgba(154,111,8,.12);
  --csa-info:         #2f6fc0;
  --csa-info-soft:    rgba(47,111,192,.12);
  --csa-danger-text:  #c0392f;
  --csa-danger-soft:  rgba(192,57,47,.10);
  --csa-accent-hover: #168a68;
  --csa-accent-soft:  rgba(29,158,117,.12);
  --csa-on-accent:    #ffffff;
}


/* ── App-icon hues (theme-driven — NO hardcoded colors in launcher JS) ──────
   Each app declares a hue NAME (data-hue on .tile-icon); the theme decides how
   that hue renders. Dark themes: deep tinted box + bright glyph. Light theme:
   soft neutral-tinted box + saturated glyph. Add a hue here, never in JS. */
:root, [data-theme="dark-minimal"]{
  --hue-green-bg:#0f3028;  --hue-green-fg:#1d9e75;
  --hue-purple-bg:#1c1a2e; --hue-purple-fg:#9080d0;
  --hue-teal-bg:#101f2a;   --hue-teal-fg:#4a9aa0;
  --hue-cyan-bg:#08161c;   --hue-cyan-fg:#40b0c0;
  --hue-blue-bg:#0e1a28;   --hue-blue-fg:#4080d0;
  --hue-orange-bg:#2a1a10; --hue-orange-fg:#d07030;
  --hue-pink-bg:#251a2a;   --hue-pink-fg:#c060c0;
  --hue-gold-bg:#1a1a10;   --hue-gold-fg:#c0a020;
  --hue-indigo-bg:#1a1020; --hue-indigo-fg:#8060c0;
  --hue-magenta-bg:#1e1020;--hue-magenta-fg:#a030b0;
  --hue-red-bg:#1a0e0e;    --hue-red-fg:#e05050;
}
[data-theme="light-minimal"]{
  /* one neutral tinted box for all; the glyph keeps the app hue (saturated for light) */
  --hue-green-bg:rgba(0,0,0,.05);   --hue-green-fg:#12855f;
  --hue-purple-bg:rgba(0,0,0,.05);  --hue-purple-fg:#6a58b8;
  --hue-teal-bg:rgba(0,0,0,.05);    --hue-teal-fg:#2f7f86;
  --hue-cyan-bg:rgba(0,0,0,.05);    --hue-cyan-fg:#2593a6;
  --hue-blue-bg:rgba(0,0,0,.05);    --hue-blue-fg:#2f6fc0;
  --hue-orange-bg:rgba(0,0,0,.05);  --hue-orange-fg:#c15e1f;
  --hue-pink-bg:rgba(0,0,0,.05);    --hue-pink-fg:#a844a8;
  --hue-gold-bg:rgba(0,0,0,.05);    --hue-gold-fg:#977d10;
  --hue-indigo-bg:rgba(0,0,0,.05);  --hue-indigo-fg:#6a54b0;
  --hue-magenta-bg:rgba(0,0,0,.05); --hue-magenta-fg:#932a9e;
  --hue-red-bg:rgba(0,0,0,.05);     --hue-red-fg:#cc3b3b;
}

/* ── Shared component styles (theme-aware) ───────────────────────────────── */
/* NOTE rev_236: .csa-topbar / .csa-topbar-* classes removed — topbar.js owns
   the live topbar via .csa-tb-* classes injected as <style> at runtime.
   #csa-topbar is still the host element for that injection. */
#csa-topbar {
  flex-shrink: 0;
  min-height: 88px;
}
.csa-user-menu {
  display: none;
  position: absolute;
  top: calc(100% + 8px); right: 0;
  background: var(--csa-bg2);
  border: 0.5px solid var(--csa-border2);
  border-radius: 10px;
  min-width: 220px;
  z-index: 200;
  overflow: hidden;
  box-shadow: 0 4px 20px var(--csa-shadow);
}
.csa-user-menu.open { display: block; }
.csa-um-head {
  padding: 12px 14px;
  border-bottom: 0.5px solid var(--csa-border);
  display: flex; align-items: center; gap: 10px;
}
.csa-um-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--csa-accent-bg);
  color: var(--csa-accent-text);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 500; flex-shrink: 0;
}
.csa-um-name  { font-size: 13px; font-weight: 500; color: var(--csa-text); }
.csa-um-role  { font-size: 10px; color: var(--csa-muted); margin-top: 1px; }
.csa-um-item  {
  padding: 9px 14px;
  font-size: 12px; color: var(--csa-text);
  cursor: pointer;
  border-top: 0.5px solid var(--csa-border);
  transition: background .1s;
}
.csa-um-item:hover { background: var(--csa-bg3); }
.csa-um-danger     { color: var(--csa-danger) !important; }
.csa-um-sep        { height: 0.5px; background: var(--csa-border2); margin: 2px 0; }

/* Shared sidebar */
.csa-sidebar {
  background: var(--csa-sidebar);
  border-right: 0.5px solid var(--csa-border);
  width: var(--csa-sidebar-w);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
}
.csa-sidenav {
  display: flex;
  flex-wrap: wrap;
  border-bottom: 0.5px solid var(--csa-border);
  flex-shrink: 0;
}
.csa-sidenav-item {
  flex: 1 1 0;
  min-width: 64px;
  padding: 10px 6px;
  font-size: 11px;
  text-align: center;
  color: var(--csa-muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: color .15s, border-color .15s;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  line-height: 1.2;
}
.csa-sidenav-item.active { color: var(--csa-accent); border-bottom-color: var(--csa-accent); }
.csa-sidenav-item:hover:not(.active) { color: var(--csa-text); }
/* rev_873: section header in the admin sidenav. Breaks the row via 100%
   flex-basis so the following items wrap onto a fresh line. */
.csa-sidenav-section {
  flex: 0 0 100%;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--csa-hint);
  padding: 14px 12px 4px;
  font-weight: 600;
}
.csa-sidenav-section:first-child { padding-top: 8px; }
.csa-sidebody { flex: 1; overflow-y: auto; padding: .75rem; }

/* Shared content area */
.csa-content { flex: 1; background: var(--csa-bg); overflow: auto; }
.csa-layout { display: flex; flex: 1; min-height: 0; }

/* App shell */
.csa-shell { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
body { margin: 0; font-family: var(--csa-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif); background: var(--csa-bg); color: var(--csa-text); }

/* User settings overlay */
.csa-settings-overlay {
  display: none; position: fixed; inset: 0;
  background: var(--csa-overlay); z-index: 500;
  align-items: flex-start; justify-content: flex-end; padding: 76px 1rem 0;
}
.csa-settings-overlay.open { display: flex; }
.csa-settings-panel {
  background: var(--csa-bg2);
  border: 0.5px solid var(--csa-border2);
  border-radius: 12px;
  width: 340px;
  max-height: calc(100vh - 64px);
  overflow-y: auto;
  box-shadow: 0 8px 40px var(--csa-shadow);
}
.csa-settings-head {
  padding: 14px 16px;
  border-bottom: 0.5px solid var(--csa-border);
  display: flex; align-items: center; justify-content: space-between;
}
.csa-settings-title { font-size: 14px; font-weight: 500; color: var(--csa-text); }
.csa-settings-close { background: none; border: none; color: var(--csa-muted); font-size: 18px; cursor: pointer; line-height: 1; }
.csa-settings-body  { padding: 16px; }
.csa-settings-section { margin-bottom: 1.25rem; }
.csa-settings-label { font-size: 11px; color: var(--csa-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 10px; }
.csa-theme-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.csa-theme-swatch {
  border: 1.5px solid var(--csa-border);
  border-radius: 8px; padding: 10px 10px 8px;
  cursor: pointer; transition: border-color .15s;
}
.csa-theme-swatch.active { border-color: var(--csa-accent); }
.csa-theme-preview { height: 32px; border-radius: 5px; margin-bottom: 6px; display: flex; overflow: hidden; }
.csa-theme-name { font-size: 11px; color: var(--csa-text); }
.csa-field-row { display: flex; gap: 6px; align-items: center; margin-bottom: 8px; }
.csa-field-row label { font-size: 11px; color: var(--csa-muted); width: 70px; flex-shrink: 0; }
.csa-field-row input { flex: 1; background: var(--csa-input-bg); border: 0.5px solid var(--csa-border); border-radius: 6px; padding: 6px 8px; font-size: 12px; color: var(--csa-text); outline: none; }
.csa-field-row input:focus { border-color: var(--csa-accent); }
/* rev_242: shared input class for admin sections */
.csa-inp { flex:1; background: var(--csa-input-bg); border:0.5px solid var(--csa-border); border-radius:6px; padding:6px 9px; font-size:12px; color: var(--csa-text); outline:none; box-sizing:border-box; }
.csa-inp:focus { border-color: var(--csa-accent); }
.csa-inp:hover { border-color: var(--csa-border2); }
select.csa-inp { cursor:pointer; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23888' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M3 6l5 5 5-5'/%3e%3c/svg%3e"); background-repeat:no-repeat; background-position:right 6px center; background-size:12px; padding-right:24px; }
.csa-settings-save { width: 100%; background: var(--csa-accent); color: #fff; border: none; border-radius: 6px; padding: 9px; font-size: 13px; font-weight: 500; cursor: pointer; margin-top: .5rem; }

/* rev_793: native <select> popup lists were rendering white on dark-minimal.
   color-scheme on :root isn't reliably inherited by the form-control popup in
   Chromium, so set it on the controls directly + give <option> explicit dark
   colors. Applies app-wide to every select, not just Link Account. */
select, option { color-scheme: dark; }
select option {
  background-color: var(--csa-bg2);
  color: var(--csa-text);
}
[data-theme="light-minimal"] select,
[data-theme="light-minimal"] option { color-scheme: light; }
[data-theme="light-minimal"] select option {
  background-color: var(--csa-bg2);
  color: var(--csa-text);
}

/* ── Topbar extras ───────────────────────────────────────────────────────── */
.csa-tb-ver {
  font-size: 13px;
  font-weight: 600;
  color: var(--csa-text);
  padding: 3px 10px;
  border: 1px solid var(--csa-border2);
  border-radius: 8px;
  margin-left: 10px;
  flex-shrink: 0;
  align-self: center;
  letter-spacing: 0.02em;
  background: var(--csa-bg3);
}
.csa-tb-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: 12px;
  flex-shrink: 0;
}
.csa-tb-action:hover {
  border-color: var(--csa-accent) !important;
  color: var(--csa-text) !important;
}
.csa-user-avatar {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--csa-accent-bg);
  color: var(--csa-accent-text);
  font-size: 10px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}

/* ── Global layout primitives ─────────────────────────────────────────── */
/* No page-level scrollbars. Each scrollable zone is explicit. */
html, body          { height: 100%; overflow: hidden; }

/* App shell — wraps topbar + body */
.csa-app             { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }

/* Body row — sidebar + main content */
.csa-body            { flex: 1; display: flex; min-height: 0; overflow: hidden; }

/* Main content column */
.csa-main            { flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }

/* Sidebar scrolls internally */
.csa-sidebar         { overflow-y: auto; overflow-x: hidden; min-height: 0; }

/* ── Responsive breakpoints ───────────────────────────────────────────── */
:root {
  --csa-bk-sidebar: 370px;   /* sidebar width at full size */
  --csa-bk-scale:   1;        /* font/ui scale factor */
  /* rev_924 audit: canonical font token. inquiries.html + sales.html
     referenced var(--csa-font) which never existed — font-family
     collapsed to the browser default (serif!) on those pages. One token
     also means a future theme/brand font swap is a one-line change. */
  --csa-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --csa-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

@media (max-width: 1400px) {
  :root { --csa-bk-sidebar: 320px; }
}

@media (max-width: 1100px) {
  :root { --csa-bk-sidebar: 260px; --csa-bk-scale: 0.93; }
  .csa-sidebar { width: var(--csa-bk-sidebar) !important; min-width: var(--csa-bk-sidebar) !important; }
  .csa-app, .csa-app * { font-size: calc(1em * var(--csa-bk-scale)); }
}

@media (max-width: 800px) {
  :root { --csa-bk-sidebar: 0px; }
  .csa-sidebar { display: none; }
}

/* ── Launcher responsive grid ─────────────────────────────────────────── */
@media (max-width: 1400px) {
  .grid { grid-template-columns: repeat(15, 1fr) !important; }
  .tile.sz-large  { grid-column: span 3 !important; }
  .tile.sz-medium { grid-column: span 2 !important; }
  .tile.sz-small  { grid-column: span 1 !important; }
}
@media (max-width: 1100px) {
  .grid { grid-template-columns: repeat(12, 1fr) !important; }
  .tile.sz-large  { grid-column: span 2 !important; }
  .tile.sz-medium { grid-column: span 2 !important; }
  .tile.sz-small  { grid-column: span 1 !important; }
}
@media (max-width: 700px) {
  .grid { grid-template-columns: repeat(4, 1fr) !important; padding: 1rem !important; }
  .tile.sz-large  { grid-column: span 2 !important; }
  .tile.sz-medium { grid-column: span 2 !important; }
  .tile.sz-small  { grid-column: span 1 !important; }
}

/* ── Foldable sections — no layout shift ─────────────────────────────── */
/* Foldable content clips within its container, never causes page overflow */
.csa-sidebar .csa-sidebody,
.csa-sidebar [class*="-scroll"],
.csa-sidebar [class*="-body"] {
  overflow-y: auto;
  overflow-x: hidden;
  min-height: 0;
}

/* ── rev_245: Material-design checkbox (Bug #22) ─────────────────────── */
.csa-cbx {
  appearance: none;
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  min-width: 16px;
  border: 1.5px solid var(--csa-muted);
  border-radius: 3px;
  background: transparent;
  cursor: pointer;
  position: relative;
  transition: background-color .15s, border-color .15s;
  margin: 0;
  flex-shrink: 0;
}
.csa-cbx:hover {
  border-color: var(--csa-text);
}
.csa-cbx:checked {
  background-color: var(--csa-accent);
  border-color: var(--csa-accent);
}
.csa-cbx:checked::after {
  content: '';
  position: absolute;
  left: 4px;
  top: 0px;
  width: 5px;
  height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.csa-cbx:disabled {
  opacity: .4;
  cursor: not-allowed;
}
.csa-cbx-row {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
}
.csa-cbx-row label {
  cursor: pointer;
  font-size: 12px;
  color: var(--csa-text);
}

/* ── rev_246: Themed scrollbars for all Cassandra apps ────────────────── */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--csa-border2); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--csa-muted); }
::-webkit-scrollbar-corner { background: transparent; }
* { scrollbar-width: thin; scrollbar-color: var(--csa-border2) transparent; }

/* ══ rev_992: THE QUIET ROW — shared list-row family (Quiet List doctrine).
   One color per row · state visual not verbal · say the name once ·
   dates/roles are wayfinding. First surface: Projects Team. ══ */
.csa-qrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border-top:.5px solid var(--csa-border);font-size:12.5px;min-width:0}
.csa-qrow:first-child{border-top:none}
.csa-qrow:hover{background:var(--csa-bg3)}
.csa-qrow-key{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--csa-hint);width:132px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.csa-qrow-name{font-weight:600;color:var(--csa-text);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:200px;flex-shrink:0}
/* rev_994: phone + email are fixed COLUMNS — always emitted (empty when
   missing) so every row aligns vertically across the list */
.csa-qrow-tel{width:140px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.csa-qrow-mail{width:230px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.csa-qrow-tel .csa-qrow-act,.csa-qrow-mail .csa-qrow-act{display:inline}
@media (max-width:900px){.csa-qrow-name{width:150px}.csa-qrow-mail{width:170px}}
.csa-qrow-act{color:var(--csa-accent);text-decoration:none;font-size:11.5px;white-space:nowrap}
.csa-qrow-act:hover{text-decoration:underline}
.csa-qrow-mut{color:var(--csa-hint);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.csa-qrow-grow{flex:1;min-width:0}

/* ═══ rev_1014: general importer (csa-import.js) ═══════════════════════════ */
.ci{max-width:920px}
.ci-steps{display:flex;gap:14px;margin-bottom:18px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.ci-step{color:var(--csa-hint)}
.ci-step.on{color:var(--csa-accent)}
.ci-step.done{color:var(--csa-muted)}
.ci-lbl{display:block;font-size:11px;color:var(--csa-hint);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px}
.ci-in{background:var(--csa-input-bg);border:.5px solid var(--csa-border);border-radius:8px;color:var(--csa-text);font:inherit;font-size:13px;padding:9px 11px;min-width:200px}
.ci-file{display:block;margin:4px 0 8px;color:var(--csa-text);font-size:13px}
.ci-target-fixed{font-size:13px;color:var(--csa-muted);margin-bottom:8px}
.ci-hint{font-size:12px;color:var(--csa-hint);margin-top:8px;line-height:1.5}
.ci-sub{font-size:13px;color:var(--csa-muted);margin-bottom:14px}
.ci-err{color:var(--csa-warning-text,#e0a92e);font-size:12.5px;min-height:16px;margin:8px 0}
.ci-req{color:var(--csa-warning-text,#e0a92e)}
.ci-map{border-collapse:collapse;width:100%;font-size:12.5px}
.ci-map th{text-align:left;color:var(--csa-hint);font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding:6px 10px;border-bottom:.5px solid var(--csa-border)}
.ci-map td{padding:7px 10px;border-bottom:.5px solid var(--csa-hairline);vertical-align:middle}
.ci-map td:first-child{color:var(--csa-text);white-space:nowrap}
.ci-sample{color:var(--csa-muted);font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ci-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.ci-btn{background:var(--csa-bg3);border:.5px solid var(--csa-border);border-radius:8px;color:var(--csa-text);font:inherit;font-size:13px;padding:9px 16px;cursor:pointer}
.ci-btn.primary{background:var(--csa-accent-bg);border-color:var(--csa-accent);color:var(--csa-accent)}
.ci-btn.danger{color:var(--csa-danger-text,#e05050);border-color:var(--csa-danger-text,#e05050)}
.ci-btn:disabled{opacity:.5;cursor:default}
.ci-summary{display:flex;gap:8px;margin-bottom:12px}
.ci-chip{padding:3px 10px;border-radius:11px;font-size:11.5px;border:.5px solid var(--csa-border);color:var(--csa-muted)}
.ci-chip.create{border-color:var(--csa-accent);color:var(--csa-accent)}
.ci-chip.update{border-color:var(--csa-info,#5ba7d8);color:var(--csa-info,#5ba7d8)}
.ci-chip.error{border-color:var(--csa-danger-text,#e05050);color:var(--csa-danger-text,#e05050)}
.ci-tablewrap{max-height:52vh;overflow:auto;border:.5px solid var(--csa-hairline);border-radius:8px}
.ci-review{border-collapse:collapse;width:100%;font-size:12px}
.ci-review th{position:sticky;top:0;background:var(--csa-bg2);text-align:left;color:var(--csa-hint);font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding:6px 10px;border-bottom:.5px solid var(--csa-border)}
.ci-review td{padding:5px 10px;border-bottom:.5px solid var(--csa-hairline);color:var(--csa-text);white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.ci-review tr.skip{opacity:.5}
.ci-review tr.error{background:rgba(224,80,80,.06)}
.ci-badge{padding:1px 8px;border-radius:9px;font-size:10.5px;border:.5px solid var(--csa-border);color:var(--csa-hint)}
.ci-badge.error{border-color:var(--csa-danger-text,#e05050);color:var(--csa-danger-text,#e05050)}
.ci-reason{font-size:10px;color:var(--csa-danger-text,#e05050);margin-top:2px}
.ci-decision{min-width:90px;padding:4px 7px;font-size:12px}
.ci-done{text-align:center;padding:20px 0}
.ci-done i{font-size:40px;color:var(--csa-accent)}
.ci-done-title{font-size:17px;color:var(--csa-text);margin-top:8px}
.ci-done-sub{font-size:13px;color:var(--csa-muted);margin-top:4px}

/* rev_1014/B-imp-2: importer modal (in-app buttons) + PIN handover */
#ciModalOverlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9200;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow:auto}
.ci-modal{position:relative;background:var(--csa-bg2);border:.5px solid var(--csa-border);border-radius:12px;padding:26px 26px 22px;width:min(960px,96vw);box-shadow:0 12px 48px rgba(0,0,0,.5)}
.ci-modal-x{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--csa-hint);font-size:22px;cursor:pointer;line-height:1}
.ci-pins{margin:14px 0;border:.5px solid var(--csa-accent);border-radius:10px;padding:12px 14px;background:var(--csa-accent-bg)}
.ci-pins-title{font-size:12px;color:var(--csa-accent);margin-bottom:8px}
.ci-pins-table{border-collapse:collapse;width:100%;font-size:12.5px}
.ci-pins-table th{text-align:left;color:var(--csa-hint);font-weight:500;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding:4px 10px}
.ci-pins-table td{padding:4px 10px;border-top:.5px solid var(--csa-hairline);color:var(--csa-text)}
.ci-pin{font-family:monospace;font-size:14px;letter-spacing:.1em;color:var(--csa-accent)}
.ci-map-group td{color:var(--csa-accent);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;padding-top:12px;border-bottom:.5px solid var(--csa-border)}

/* ═══ rev_1022: uniform form fields — the single field style all apps use ═══ */
.csa-field{ margin-bottom:14px; }
.csa-field > label,.csa-field-label{ display:block; font-size:11px; color:var(--csa-hint); text-transform:uppercase; letter-spacing:.05em; margin-bottom:5px; }
.csa-field input,.csa-field select,.csa-field textarea,input.csa-input,select.csa-input,textarea.csa-input{
  width:100%; box-sizing:border-box; background:var(--csa-input-bg); border:.5px solid var(--csa-border);
  border-radius:8px; color:var(--csa-text); font:inherit; font-size:14px; padding:10px 12px; outline:none; }
.csa-field input:focus,.csa-field select:focus,.csa-field textarea:focus,input.csa-input:focus,select.csa-input:focus,textarea.csa-input:focus{ border-color:var(--csa-accent); }
.csa-field textarea,textarea.csa-input{ resize:vertical; min-height:64px; line-height:1.5; }
.csa-field .csa-hint{ font-size:11px; color:var(--csa-hint); margin-top:4px; }
/* a labelled cluster of related inputs (e.g. a structured address) */
.csa-field-group{ border:.5px solid var(--csa-border); border-radius:10px; padding:12px 14px; margin-bottom:14px; }
.csa-field-group > .csa-fg-title{ font-size:11px; color:var(--csa-hint); text-transform:uppercase; letter-spacing:.05em; margin-bottom:10px; }
.csa-fg-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.csa-fg-grid .csa-col-full{ grid-column:1 / -1; }
@media (max-width:560px){ .csa-fg-grid{ grid-template-columns:1fr; } }
/* socials list rows */
.csa-social-row{ display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.csa-social-row select{ flex:0 0 130px; }
.csa-social-row input{ flex:1; }
.csa-social-row .csa-x{ flex:0 0 auto; background:none; border:none; color:var(--csa-hint); cursor:pointer; font-size:16px; }
.csa-add-row{ background:none; border:.5px dashed var(--csa-border); border-radius:8px; color:var(--csa-muted); font-size:12px; padding:8px 12px; cursor:pointer; }
.csa-add-row:hover{ border-color:var(--csa-accent); color:var(--csa-accent); }


/* rev_1155: event_name subtitles in Backstage prod list + packet header. */
.bs-prodcard-event{
  font-size: 12px;
  color: var(--csa-muted);
  font-style: italic;
  margin-top: 1px;
  line-height: 1.35;
}
.bs-packet-event{
  font-size: 14px;
  color: var(--csa-muted);
  font-style: italic;
  margin: -6px 0 12px 0;
  line-height: 1.4;
}


/* rev_1157: Backstage story card + richer artwork details. */
.bs-sec-story .bs-story-client{ font-size:12px; color:var(--csa-muted); margin-bottom:8px; }
.bs-story-client .bs-story-key{ text-transform:uppercase; letter-spacing:.05em; font-size:10.5px; margin-right:6px; }
.bs-story-block{ margin-top:8px; }
.bs-story-block .bs-story-key{ font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--csa-muted); margin-bottom:2px; }
.bs-story-block .bs-story-body{ font-size:13.5px; line-height:1.5; color:var(--csa-text); }

.bs-artwork-tagline{ font-size:12.5px; color:var(--csa-muted); font-style:italic; margin-top:2px; line-height:1.4; }
.bs-artwork-desc{ font-size:12.5px; color:var(--csa-text); margin-top:6px; line-height:1.45; }
.bs-artwork-credit{ font-size:11.5px; color:var(--csa-muted); margin-top:4px; line-height:1.4; }
.bs-artwork-credit-role{ display:inline-block; min-width:110px; text-transform:uppercase; letter-spacing:.04em; font-size:10.5px; margin-right:4px; }
.bs-artwork-note{ font-size:12px; color:var(--csa-muted); margin-top:8px; padding:6px 8px; border-left:2px solid var(--csa-accent); background:var(--csa-accent-bg); border-radius:4px; line-height:1.4; }
