/* ============================================================================
   shell-v2.css  -  Suite-wide modernization of the BOS app shell.

   ADDITIVE override layer: loaded AFTER bos.css/pos.css and scoped under
   `body.bos`, so it wins the cascade without editing the base stylesheets. It
   brings the dashboard-v2 editorial language (Fraunces display + Hanken Grotesk,
   warm canvas, soft depth, crisp radii) to every page, and lets the active
   site's archetype accent (--acc*) tint the whole suite.

   Safety: the warm canvas + card recolor are gated against KDS and POS
   fullscreen; table PADDING/density is never touched (only colour/border/hover);
   validation states (.is-invalid/.is-valid) are left to pos.css; a print reset
   forces white/black for PDF stationery.
   ============================================================================ */

body.bos {
  --sv-display: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sv-sans: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;

  --sv-paper: #f4f1ec;
  --sv-card: #fffdfa;
  --sv-ink: #1b1a17;
  --sv-ink-2: #4a4640;
  --sv-muted: #8b857b;
  --sv-line: #e4ddd2;
  --sv-line-strong: #d6cdbe;
  --sv-shadow-sm: 0 1px 2px rgba(27,26,23,.05), 0 2px 6px rgba(27,26,23,.04);
  --sv-shadow-md: 0 2px 4px rgba(27,26,23,.05), 0 14px 34px -12px rgba(27,26,23,.20);
  --sv-radius: 16px;

  /* Default accent (overridden per archetype below) */
  --acc: #41507a; --acc-strong: #2c3858; --acc-soft: rgba(65,80,122,.13); --acc-on: #fff;
}

/* ---- Per-archetype accent (mirrors dashboard-v2.css) ---------------------- */
body.bos.dash-arch-restaurant        { --acc:#cf5a2c; --acc-strong:#a9401a; --acc-soft:rgba(207,90,44,.13); --acc-on:#fff; }
body.bos.dash-arch-hotel             { --acc:#1f3a5f; --acc-strong:#142840; --acc-soft:rgba(31,58,95,.13); --acc-on:#fff; }
body.bos.dash-arch-retail            { --acc:#0f8a5f; --acc-strong:#0a6645; --acc-soft:rgba(15,138,95,.13); --acc-on:#fff; }
body.bos.dash-arch-pharmacy          { --acc:#0e7c86; --acc-strong:#0a5b62; --acc-soft:rgba(14,124,134,.13); --acc-on:#fff; }
body.bos.dash-arch-service_firm      { --acc:#3a4db0; --acc-strong:#2a3a8a; --acc-soft:rgba(58,77,176,.13); --acc-on:#fff; }
body.bos.dash-arch-accounting_firm   { --acc:#41507a; --acc-strong:#2c3858; --acc-soft:rgba(65,80,122,.13); --acc-on:#fff; }
body.bos.dash-arch-real_estate_agency{ --acc:#9a6b3f; --acc-strong:#744e2b; --acc-soft:rgba(154,107,63,.14); --acc-on:#fff; }
body.bos.dash-arch-workshop_repair   { --acc:#b5611a; --acc-strong:#8a4811; --acc-soft:rgba(181,97,26,.13); --acc-on:#fff; }
body.bos.dash-arch-school_training   { --acc:#6d34c4; --acc-strong:#52229b; --acc-soft:rgba(109,52,196,.13); --acc-on:#fff; }
body.bos.dash-arch-other             { --acc:#4a5568; --acc-strong:#2f3848; --acc-soft:rgba(74,85,104,.12); --acc-on:#fff; }

/* ---- Typography ----------------------------------------------------------- */
body.bos { font-family: var(--sv-sans); }
body.bos .bos-page-title,
body.bos h1, body.bos h2, body.bos h3 {
  font-family: var(--sv-display);
  font-optical-sizing: auto;
  letter-spacing: -0.012em;
}
body.bos .bos-page-title { font-weight: 600; }

/* ---- Warm canvas (gated: not KDS, not POS fullscreen) --------------------- */
body.bos:not(.kds-mode):not(.pos-fullscreen):not(.shell-mode-fullscreen) .bos-content {
  background:
    radial-gradient(1100px 420px at 90% -8%, var(--acc-soft), transparent 60%),
    var(--sv-paper);
}

/* ---- Chrome: sidebar + topbar accents ------------------------------------ */
body.bos .bos-brand .bos-brand-title { font-family: var(--sv-display); font-weight: 600; letter-spacing: .1px; }
/* Active nav state picks up the archetype accent spine */
body.bos .bos-nav .active,
body.bos .bos-nav [aria-current="page"],
body.bos .bos-nav-workspace-card.active {
  position: relative;
  background: var(--acc-soft);
}
body.bos .bos-nav .active::before,
body.bos .bos-nav [aria-current="page"]::before {
  content: ""; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px; border-radius: 3px;
  background: var(--acc);
}
body.bos .bos-topbar-site-badge { background: var(--acc); color: var(--acc-on); }

/* ---- Cards / panels (gated) ---------------------------------------------- */
body.bos:not(.kds-mode):not(.pos-fullscreen) .app-card,
body.bos:not(.kds-mode):not(.pos-fullscreen) .panel {
  background: var(--sv-card);
  border: 1px solid var(--sv-line);
  border-radius: var(--sv-radius);
  box-shadow: var(--sv-shadow-sm);
}
body.bos .bos-page-header { border: 0; }

/* ---- Buttons -------------------------------------------------------------- */
body.bos .btn {
  font-family: var(--sv-sans); font-weight: 600; letter-spacing: .01em;
  border-radius: 10px;
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
body.bos .btn:hover { transform: translateY(-1px); }
body.bos .btn-primary {
  background: var(--acc); border-color: var(--acc); color: var(--acc-on);
  box-shadow: 0 8px 18px -9px var(--acc);
}
body.bos .btn-primary:hover { background: var(--acc-strong); border-color: var(--acc-strong); }
body.bos .btn-secondary:hover { border-color: var(--acc); color: var(--acc-strong); }

/* ---- Badges --------------------------------------------------------------- */
body.bos .badge {
  border-radius: 6px; font-weight: 700; letter-spacing: .03em;
}

/* ---- Tables: colour / hover only (never padding or density) -------------- */
body.bos:not(.kds-mode) .table th,
body.bos:not(.kds-mode) .bos-table th {
  text-transform: uppercase; letter-spacing: .06em; font-size: 11px;
  color: var(--sv-muted);
}
body.bos:not(.kds-mode) .table tbody tr:hover > td,
body.bos:not(.kds-mode) .bos-table tbody tr:hover > td {
  background: var(--acc-soft);
}

/* ---- Forms: focus ring (leave .is-invalid/.is-valid to pos.css) ---------- */
body.bos .form-control:not(.is-invalid):not(.is-valid):focus,
body.bos .bos-lang-select:focus {
  outline: none;
  border-color: var(--acc);
  box-shadow: 0 0 0 3px var(--acc-soft);
}

/* ---- KDS reset: keep the dark high-contrast board untouched --------------- */
body.bos.kds-mode .app-card,
body.bos.kds-mode .panel {
  background: var(--panel); border-color: var(--panel-border); box-shadow: none; border-radius: 8px;
}

/* ---- Print / PDF stationery safety: white paper, black ink --------------- */
@media print {
  body.bos { background: #fff !important; }
  body.bos .app-card, body.bos .panel, body.bos .table th {
    background: #fff !important; color: #000 !important; box-shadow: none !important;
  }
}
