/* ════════════════════════════════════════════════════════════
   EchoLevy dashboard — page-specific CSS extracted from
   dashboard.html in 5 chunks (preserving source order so the
   2026-04-22 'design adoption override' block at the end still
   wins the cascade against the original cream theme above it).

   This file is page-local — NOT part of brand.css. It uses
   var(--navy), var(--gold), var(--teal), var(--line) etc. from
   brand.css's :root layer, but defines its own dashboard-only
   tokens (cat-overlay teal, dog-overlay green, cream theme).

   Order (do not reshuffle):
     §1  global dashboard chrome + components (700 lines)
     §2  archive-overlay modal (21 lines)
     §3  drug-card f-grid (88 lines)
     §4  patients-overlay (53 lines)
     §5  design adoption override — !important wins (212 lines)
   ════════════════════════════════════════════════════════════ */

/* ───── §1: global dashboard chrome + components ──────────── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#f5f3ef;--bg2:#fdfcfa;--bg3:#eeebe5;
  --line:#e2ddd6;--line2:#c8c1b8;
  --text:#18150f;--muted:#7a7268;--faint:#75706a;  /* Q7 (2026-05-24): --faint bumped #b5b0a8→#75706a, now ~5.5:1 on --bg2 (WCAG AA pass). Was the measurable root of Dr. Levy's "מתסכל לעין" complaint per AUDIT_2026-05-24.md §U3. */
  --accent:#2a5438;--accent-lo:#e8f0eb;
  --green:#2a5438;--green-l:#3a6e4a;--green-xs:#edf4ef;
  --border:#ccddd4;--amber:#c96a00;
  --teal:#16566a;--teal-l:#1e6a80;--teal-xl:#e2f0f5;--teal-xs:#eef7fa;--teal-br:#bcd9e4;
  --gold:#B8962E;--gold-lo:#f5f0e4;  /* matches brand.css; this :root block is the original cream theme, fully overridden by the design-system :root at the bottom of this file */
  --mono:'DM Mono',monospace;--radius:14px;
  --shadow-sm:0 1px 4px rgba(20,15,8,.07),0 1px 2px rgba(20,15,8,.04);
  --shadow-md:0 6px 24px rgba(20,15,8,.09),0 2px 6px rgba(20,15,8,.05);
  --shadow-lg:0 16px 48px rgba(20,15,8,.12),0 4px 12px rgba(20,15,8,.06);
}
body{background:var(--bg);color:var(--text);font-family:'Open Sans','Heebo','DM Sans',sans-serif;font-weight:400;line-height:1.65;min-height:100vh}

/* ── DASH ── */
#dash{display:block;min-height:100vh;display:flex;flex-direction:column}

/* Deploy-heartbeat dot — purple circle pinned to the top-right
   of the dashboard topbar. If you see it, you got the latest
   build. Added 2026-05-10 per user request as a visible "yes,
   the deploy reached you" signal. The §5 override block below
   still wins on .top-bar styling, but `.deploy-dot` is a new
   selector so it pierces through cleanly. */
.deploy-dot{
  position:fixed;
  top:14px;
  inset-inline-start:18px;     /* RTL-safe: top-right in our he-IL layout */
  width:14px;height:14px;
  border-radius:50%;
  background:#9333ea;          /* tailwind-style purple-600 */
  box-shadow:0 0 0 4px rgba(147,51,234,.18), 0 1px 4px rgba(80,15,160,.35);
  cursor:help;
  /* z-index must beat .top-bar's z-index:100 — earlier value 50 was
     causing the dot to render BEHIND the sticky top-bar so it was
     effectively invisible. Bumped to 200 (2026-05-12). */
  z-index:200;
  animation:deployDotPulse 2.4s ease-in-out infinite;
}
/* Sync-stale warning banner (2026-05-12) — full-width red strip below
   the top-bar when JSONBin sync hasn't succeeded in >12 hours OR the
   last save attempt failed (auth/network). Replaces the subtle footer
   "synced 4 days ago" indicator that the user missed. */
.sync-stale-banner{
  background:#fef2f2;
  border-block:1px solid #f87171;
  color:#b91c1c;
  padding:10px 24px;
  font-family:'DM Sans',sans-serif;
  font-size:.86rem;
  font-weight:500;
  display:flex;
  align-items:center;
  gap:14px;
  direction:rtl;
  position:sticky;
  top:72px;
  z-index:90;
}
.sync-stale-banner.severe{
  background:#7f1d1d;
  color:#fef2f2;
  border-color:#991b1b;
}
.sync-stale-icon{font-size:1.2rem;flex-shrink:0}
.sync-stale-text{flex:1;line-height:1.4}
.sync-stale-action{
  background:#dc2626;color:#fff;text-decoration:none;
  padding:6px 14px;border-radius:6px;font-weight:600;
  white-space:nowrap;transition:background .15s;
}
.sync-stale-action:hover{background:#991b1b}
.sync-stale-banner.severe .sync-stale-action{background:#fef2f2;color:#7f1d1d}
.sync-stale-banner.severe .sync-stale-action:hover{background:#fff}
.sync-stale-dismiss{
  background:transparent;border:none;color:inherit;
  font-size:1.1rem;cursor:pointer;padding:4px 8px;
  opacity:.6;transition:opacity .15s;
}
.sync-stale-dismiss:hover{opacity:1}
@keyframes deployDotPulse{
  0%,100%{box-shadow:0 0 0 4px rgba(147,51,234,.18), 0 1px 4px rgba(80,15,160,.35)}
  50%{box-shadow:0 0 0 8px rgba(147,51,234,.08), 0 1px 4px rgba(80,15,160,.35)}
}

.top-bar{
  background:rgba(253,252,250,.92);
  border-bottom:1px solid var(--line);
  padding:0 72px;
  height:72px;
  display:flex;align-items:center;justify-content:space-between;
  flex-shrink:0;
  position:sticky;top:0;z-index:100;
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}
/* .logo idle font — historical Fraunces baseline that is always
   overridden by the §5 .top-bar .logo `!important` rule (DM Sans
   bold). The `font-family:Fraunces` declaration is removed so a
   font load isn't queued for content the override paints over.
   The §5 rule remains the single source of truth for the topbar
   brand mark. Other typography props kept since they apply to
   any future non-topbar `.logo` use. */
.logo{font-size:1.65rem;font-weight:200;letter-spacing:.01em;line-height:1}
.logo em{font-style:italic;color:var(--accent)}
.logo-sub{font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--faint);font-family:var(--mono);margin-top:4px;font-weight:300}

.main-wrap{max-width:100%;margin:0;padding:52px 72px 0;flex:1}

.sl{
  font-size:.58rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--faint);margin-bottom:16px;margin-top:52px;
  font-family:var(--mono);
  display:flex;align-items:center;gap:14px;
}
.sl::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--line),transparent)}
.sl:first-child{margin-top:0}

/* ── TOOL CARDS ── */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:4px}
.card{
  background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);
  padding:32px 24px;text-decoration:none;color:inherit;
  display:flex;flex-direction:column;gap:6px;flex:1;min-width:0;
  transition:border-color .25s,box-shadow .3s,transform .22s;
  cursor:pointer;position:relative;overflow:hidden;
  box-shadow:var(--shadow-sm);
}
.card::before{
  content:'';position:absolute;right:0;top:0;bottom:0;width:3px;
  background:var(--green);border-radius:0 12px 12px 0;
  opacity:0;transition:opacity .2s;
}
.card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.card:hover::before{opacity:1}
.card.card-teal::before{background:var(--teal)}
.card-icon{font-size:1.5rem;margin-bottom:6px;display:block}
.ct{font-size:.95rem;font-weight:600;color:var(--text);letter-spacing:-.01em}
.cs{font-size:.72rem;color:var(--muted);line-height:1.6;margin-top:6px;letter-spacing:.01em}

/* ── DIVIDER ── */
.divider{border:none;border-top:1px solid var(--line);margin:52px 0}

/* ── SAVED REPORTS LIST (inline, on dashboard) ── */
.saved-list{display:flex;flex-direction:column;gap:8px}
.saved-empty{
  padding:24px 18px;text-align:center;color:var(--faint);
  font-size:.78rem;font-family:'DM Sans',sans-serif;
  background:var(--bg2);border:1px dashed var(--line);border-radius:10px;
}
.saved-empty strong{color:var(--muted);font-weight:500}
.saved-row{
  position:relative;padding:14px 16px 12px;
  background:var(--bg2);border:1px solid var(--line);border-radius:10px;
  transition:border-color .15s,box-shadow .15s;
}
.saved-row:hover{border-color:var(--accent);box-shadow:0 1px 6px rgba(0,0,0,.04)}
.saved-row-top{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-family:'DM Sans',sans-serif;font-size:.82rem;
}
.saved-who{font-weight:500;color:var(--text);flex:0 0 auto}
.saved-src{
  font-family:var(--mono);font-size:.55rem;letter-spacing:.15em;
  text-transform:uppercase;color:var(--accent);
  background:var(--accent-lo);border-radius:99px;padding:2px 8px;
}
.saved-date{
  font-family:var(--mono);font-size:.62rem;color:var(--faint);
  letter-spacing:.05em;margin-inline-start:auto;
}
.saved-preview{
  margin-top:6px;color:var(--muted);font-size:.72rem;line-height:1.5;
  font-family:'DM Sans',sans-serif;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.saved-actions{display:flex;gap:6px;margin-top:10px}
.saved-btn{
  font-family:'DM Sans',sans-serif;font-size:.7rem;cursor:pointer;
  border-radius:6px;padding:5px 12px;border:1px solid var(--line2);
  background:transparent;color:var(--muted);transition:all .15s;
}
.saved-btn-open{color:var(--accent);border-color:var(--accent)}
.saved-btn-open:hover{background:var(--accent);color:#fff}
.saved-btn-del:hover{color:#c0392b;border-color:#c0392b}

/* ── NOTES ── */
.notes-wrap{background:var(--bg2);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.notes-search-row{display:flex;align-items:center;gap:6px;padding:6px 12px;border-bottom:1px solid var(--line)}
.notes-search-inp{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:'DM Sans',sans-serif;font-size:.75rem;direction:rtl}
.notes-search-inp::placeholder{color:var(--faint)}
.notes-search-icon{color:var(--faint);font-size:.75rem;flex-shrink:0}
.notes-search-count{font-family:'DM Mono',monospace;font-size:.6rem;color:var(--faint);flex-shrink:0}
.notes-list{max-height:220px;overflow-y:auto}
.note-item{display:flex;align-items:flex-start;gap:5px;padding:6px 10px;border-bottom:1px solid var(--line);direction:rtl}
.note-item.pinned{background:var(--accent-lo);border-right:3px solid var(--accent)}
.note-item.dragging{opacity:.4}
.note-item.drop-target{border-top:2px solid var(--accent)}
.note-drag-handle{flex-shrink:0;cursor:grab;color:var(--faint);font-size:.7rem;padding:2px 2px;user-select:none;line-height:1;margin-top:2px}
.note-drag-handle:active{cursor:grabbing}
.note-drag-handle:hover{color:var(--muted)}
.note-color-dot{flex-shrink:0;width:10px;height:10px;border-radius:50%;cursor:pointer;margin-top:3px;border:1px solid var(--line2);transition:transform .1s}
.note-color-dot:hover{transform:scale(1.2)}
.note-color-dot[data-color="none"]{background:transparent}
.note-color-dot[data-color="red"]{background:#e87474;border-color:#d45c5c}
.note-color-dot[data-color="yellow"]{background:#e8b54a;border-color:#c89a30}
.note-color-dot[data-color="green"]{background:#67a074;border-color:#4d8a5c}
.note-color-dot[data-color="blue"]{background:#6a9cc5;border-color:#5285b0}
.note-color-dot[data-color="purple"]{background:#9d7bb0;border-color:#816098}
.note-color-dot[data-color="orange"]{background:#e89a4a;border-color:#c88030}
.note-pin-btn{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--faint);font-size:.7rem;padding:1px 3px;transition:color .15s;margin-top:1px}
.note-pin-btn:hover,.note-pin-btn.active{color:var(--accent)}
.note-item:last-child{border-bottom:none}
.note-item-text{flex:1;font-size:.8rem;line-height:1.5;color:var(--muted);word-break:break-word;direction:rtl;cursor:text}
.note-item-insert{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--faint);font-size:.75rem;padding:1px 4px;transition:color .15s;line-height:1;margin-top:2px}
.note-item-insert:hover{color:var(--accent)}
.note-item-del{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--faint);font-size:.65rem;padding:1px 3px;transition:color .15s;line-height:1;margin-top:2px}
.note-item-del:hover{color:#c0392b}
.notes-empty{padding:16px 12px;font-size:.7rem;color:var(--faint);text-align:center;font-style:italic}
.notes-add-row{display:flex;align-items:center;gap:6px;padding:7px 12px;border-top:1px solid var(--line);position:relative}
.notes-add-inp{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:'DM Sans',sans-serif;font-size:.8rem;direction:rtl}
.notes-add-inp::placeholder{color:var(--faint)}
.notes-add-color{flex-shrink:0;width:12px;height:12px;border-radius:50%;cursor:pointer;border:1px solid var(--line2);transition:transform .1s}
.notes-add-color:hover{transform:scale(1.15)}
.notes-add-btn{flex-shrink:0;background:none;border:1px solid var(--line2);border-radius:12px;padding:2px 10px;font-size:.6rem;color:var(--muted);cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;white-space:nowrap}
.notes-add-btn:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.notes-color-popover{position:absolute;bottom:calc(100% + 4px);right:38px;background:var(--bg);border:1px solid var(--line2);border-radius:8px;padding:6px;display:none;gap:6px;box-shadow:0 4px 16px rgba(0,0,0,.08);z-index:10}
.notes-color-popover.open{display:flex}
.notes-color-popover .swatch{width:16px;height:16px;border-radius:50%;border:1px solid var(--line2);cursor:pointer;transition:transform .1s}
.notes-color-popover .swatch:hover{transform:scale(1.2)}

/* inline chips on a note item (patient + due date indicators) */
.note-chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px;align-items:center}
.note-chip{font-family:'DM Mono',monospace;font-size:.58rem;padding:1px 6px;border-radius:10px;border:1px solid var(--line2);color:var(--muted);background:var(--bg);line-height:1.4;white-space:nowrap}
.note-chip.patient{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.note-chip.due-future{color:var(--muted)}
.note-chip.due-soon{color:#b8892a;border-color:#e8c97a;background:#fdf6e0}
.note-chip.due-today{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo);font-weight:600}
.note-chip.due-overdue{color:#b73030;border-color:#e5a5a5;background:#fbe8e8;font-weight:600}
.note-chip.tag{color:var(--muted)}

/* ── NOTE EDITOR MODAL ── */
.ne-backdrop{position:fixed;inset:0;background:rgba(20,18,16,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:9500;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}
.ne-backdrop.open{display:flex}
.ne-modal{background:var(--bg);border:1px solid var(--line2);border-radius:16px;width:min(520px,100%);box-shadow:0 30px 70px rgba(20,18,16,.3);direction:rtl;font-family:'DM Sans',sans-serif}
.ne-head{padding:16px 20px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.ne-head h3{margin:0;font-size:.95rem;font-weight:600;color:var(--text)}
.ne-close{background:none;border:none;cursor:pointer;font-size:1.1rem;color:var(--faint);padding:0 4px;line-height:1}
.ne-close:hover{color:var(--text)}
.ne-body{padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.ne-field{display:flex;flex-direction:column;gap:4px}
.ne-field label{font-size:.65rem;font-family:'DM Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ne-field textarea,.ne-field input[type="text"],.ne-field input[type="date"],.ne-field select{border:1px solid var(--line2);border-radius:8px;padding:8px 12px;font-family:'DM Sans',sans-serif;font-size:.85rem;color:var(--text);background:var(--bg2);outline:none;direction:rtl;transition:border-color .15s}
.ne-field textarea{resize:vertical;min-height:78px;line-height:1.55}
.ne-field input[type="date"]{direction:ltr;text-align:right}
.ne-field textarea:focus,.ne-field input:focus,.ne-field select:focus{border-color:var(--accent);background:var(--bg)}
.ne-colors{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ne-colors .ne-sw{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s;outline:1px solid var(--line2)}
.ne-colors .ne-sw:hover{transform:scale(1.15)}
.ne-colors .ne-sw.sel{border-color:var(--accent);transform:scale(1.1)}
.ne-row{display:flex;gap:10px;align-items:center}
.ne-row .ne-field{flex:1}
.ne-date-clear{background:none;border:none;color:var(--faint);font-size:.7rem;cursor:pointer;padding:2px 6px;margin-right:auto}
.ne-date-clear:hover{color:#c0392b}
.ne-pin{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);cursor:pointer}
.ne-pin input{cursor:pointer}
.ne-foot{padding:12px 20px 16px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center}
.ne-foot button{border-radius:8px;padding:6px 14px;font-family:'DM Sans',sans-serif;font-size:.8rem;cursor:pointer;transition:all .15s}
.ne-foot .ne-delete{background:none;border:1px solid var(--line2);color:#c0392b;margin-inline-end:auto}
.ne-foot .ne-delete:hover{background:#fbe8e8;border-color:#e5a5a5}
.ne-foot .ne-cancel{background:none;border:1px solid var(--line2);color:var(--muted)}
.ne-foot .ne-cancel:hover{color:var(--text)}
.ne-foot .ne-save{background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:500}
.ne-foot .ne-save:hover{background:#5a9070}

/* ── FINAL REPORT OVERLAY ── */
.fr-trigger-wrap{display:flex;align-items:center;gap:10px;margin-top:8px}
.fr-open-btn{flex:1;padding:28px 20px;background:var(--bg2);border:1.5px dashed var(--line2);border-radius:12px;color:var(--muted);font-size:.75rem;font-family:'DM Sans',sans-serif;cursor:pointer;direction:rtl;text-align:right;transition:all .15s;letter-spacing:.04em}
.fr-open-btn:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.fr-open-btn .fr-preview{color:var(--faint);font-size:.7rem;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl}
.fr-count-badge{font-size:.6rem;background:var(--accent-lo);color:var(--accent);border-radius:20px;padding:3px 10px;font-family:'DM Sans',sans-serif;white-space:nowrap;opacity:0;transition:opacity .3s}
.fr-count-badge.show{opacity:1}
/* overlay */
/* 2026-05-15: explicit height + min-height cascade. Grid + flex children
   refuse to shrink below content size unless every ancestor on the path
   has min-height:0. The "report cut off" symptom was the textarea
   pushing its grid cell past viewport. This locks the whole chain. */
.fr-overlay{position:fixed;inset:0;z-index:300;display:none;flex-direction:column;background:var(--bg);height:100vh;min-height:0;overflow:hidden}
.fr-overlay.open{display:flex}
.fr-overlay-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--bg2);flex-shrink:0}
.fr-overlay-title{font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text);font-family:'DM Sans',sans-serif}
.fr-overlay-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* Three-cluster topbar — workflow tools | primary destinations |
   passive controls. Each cluster is a flex group with its own
   internal gap; clusters separated by a wider gap so the eye reads
   "tools / actions / chrome" instead of one undifferentiated row.
   Replaces the previous flat 10-button row with mixed inline styles. */
.fr-actions-cluster{display:flex;gap:6px;align-items:center}
.fr-actions-cluster + .fr-actions-cluster{margin-inline-start:14px;padding-inline-start:14px;border-inline-start:1px solid var(--line)}
.fr-actions-end{margin-inline-start:auto}
/* Tool button — Cluster A (templates / panel toggles / patient fill).
   Compact, neutral background, faint border. The user has 5 of these
   in a row; they should feel like a SET of tools, not 5 CTAs.
   Active state (panel open) flips to filled accent for clear feedback. */
.fr-btn-tool{font-size:.66rem;letter-spacing:.04em;background:var(--bg);color:var(--muted);border:1px solid var(--line2);border-radius:7px;padding:6px 11px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .12s;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.fr-btn-tool:hover{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.fr-btn-tool.active{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Primary action — filled teal-deep (the styled-report preview is
   the highest-leverage destination action). Slightly larger padding
   + soft shadow so it reads as "the button". */
.fr-btn-primary{font-size:.72rem;font-weight:600;letter-spacing:.02em;background:#1a5c6e;color:#fff;border:1px solid #1a5c6e;border-radius:7px;padding:7px 14px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .12s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;box-shadow:0 1px 3px rgba(26,92,110,.2)}
.fr-btn-primary:hover{background:#246b7e;border-color:#246b7e;box-shadow:0 2px 6px rgba(26,92,110,.3)}
/* Secondary action — outlined accent (the quick PDF export, less
   prominent than the styled preview but still visible). */
.fr-btn-secondary{font-size:.66rem;letter-spacing:.04em;background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:7px;padding:6px 12px;cursor:pointer;font-family:'DM Sans',sans-serif;font-weight:600;transition:all .12s;white-space:nowrap}
.fr-btn-secondary:hover{background:var(--accent-lo);border-color:var(--accent)}
/* Ghost — passive controls (Copy / Clear / Close). Lowest visual
   weight so they don't compete with the workflow tools or primary
   destinations. Hover reveals them. */
.fr-btn-ghost{font-size:.66rem;letter-spacing:.04em;background:transparent;color:var(--faint);border:1px solid transparent;border-radius:7px;padding:6px 11px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .12s;white-space:nowrap}
.fr-btn-ghost:hover{color:var(--text);border-color:var(--line2);background:var(--bg2)}
.fr-btn-ghost.copy:hover,.fr-btn-ghost.copy.copied{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.fr-btn-ghost.clear:hover{color:#c0392b;border-color:#e8b4ae;background:#fbeceb}
.fr-btn-ghost.close{font-size:.85rem;padding:4px 10px}

/* 2026-05-18: responsive header at <1100px viewport. The FR overlay's
   right-side cluster (דוח מעוצב / יצא PDF / [badge] / העתק / נקה / ✕)
   crowded into the stage-chip strip on narrower screens. Compact
   spacing + drop the secondary "יצא PDF" label to icon-only so the
   primary action (דוח מעוצב) keeps its full label and visual weight.
   The ✕ close stays at full size — it's a high-frequency click and
   needs a comfortable target. */
@media (max-width:1100px){
  .fr-btn-primary{padding:6px 10px;font-size:.68rem}
  .fr-btn-secondary{padding:5px 9px;font-size:.62rem}
  .fr-btn-ghost{padding:5px 8px;font-size:.62rem}
  .fr-btn-ghost.close{padding:4px 9px}
  .fr-hdr-left,.fr-hdr-right{gap:5px}
}
@media (max-width:880px){
  /* At very narrow, hide the secondary PDF-export label and rely on
     the title-tooltip + the icon (we keep the SVG render in the
     primary button; this rule only affects the secondary export). */
  .fr-btn-secondary.print{font-size:0;padding:6px 9px}
  .fr-btn-secondary.print::before{content:'PDF';font-size:.62rem}
}

.fp-resize-handle{width:5px;cursor:col-resize;background:transparent;flex-shrink:0;transition:background .15s;position:relative;z-index:1}
.fp-resize-handle:hover,.fp-resize-handle.dragging{background:var(--accent)}
.fr-btn{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid var(--line2);border-radius:20px;padding:5px 15px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;white-space:nowrap}
.fr-drug-tog{width:100%;text-align:right;padding:5px 10px;border:1.5px solid var(--line2);border-radius:7px;background:var(--bg);color:var(--muted);font-size:11.5px;font-family:'DM Sans',sans-serif;cursor:pointer;transition:all .12s;direction:rtl;}
.fr-drug-tog:hover{border-color:var(--accent);color:var(--accent);}
.fr-drug-tog.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;}
.fr-btn.copy{color:var(--muted)}.fr-btn.copy:hover,.fr-btn.copy.copied{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.fr-btn.clear{color:var(--faint)}.fr-btn.clear:hover{color:#c0392b;border-color:#e8b4ae}
.fr-btn.close{color:var(--muted)}.fr-btn.close:hover{color:var(--text);border-color:var(--line2)}
.fr-badge{font-size:.55rem;background:var(--accent-lo);color:var(--accent);border-radius:20px;padding:2px 10px;letter-spacing:.08em;opacity:0;transition:opacity .4s;font-family:'DM Sans',sans-serif}
.fr-badge.show{opacity:1}

/* ════════════════════════════════════════════════════════════
   FR OVERLAY · WORKFLOW LAYOUT (2026-05-15 redesign)
   ════════════════════════════════════════════════════════════
   3-column grid: tool rail | canvas | active tool panel.
   - Left rail (56px): icon column, one button per tool.
   - Canvas (1fr): the textarea + empty state + image upload zone.
   - Side (420px): swappable slot for eq/drug/phrases panels.

   State is owned by `frActiveTool` in dashboard.js (single source
   of truth). The three panels (#fr-eq-panel, #fr-drug-panel,
   #fr-phrases-panel) live inside .fr-side as siblings; only one
   has display:flex at a time, the rest have display:none.
   See dashboard.js frSetActiveTool() for the swap logic.
   ════════════════════════════════════════════════════════════ */
.fr-body{flex:1;overflow:hidden;display:grid;grid-template-columns:500px 1fr 56px;padding:0;min-height:0;direction:ltr}
/* 2026-05-15: flipped per Claude Desktop consultation. Hebrew apps
   (WhatsApp Web, Gmail Hebrew, Outlook Hebrew) put the vertical tool
   rail on the RIGHT — where the eye lands first in RTL reading. The
   panel goes to the LEFT.

   `direction:ltr` on the grid container still forces column order
   left-to-right (so col 1 = visual LEFT, col 3 = visual RIGHT). What
   changed is which grid-column each child claims:

   Visual layout (LEFT to RIGHT):
     col 1 (500px): side panel   (active tool: eq/drug/phrases)
     col 2 (1fr  ): canvas       (textarea)
     col 3 (56px ): tool rail    (vertical icon column)

   DOM order stays (rail, side, canvas) for source-order stability;
   each child's explicit grid-column places it visually regardless. */
.fr-body > .fr-side     {grid-column:1;direction:rtl}
.fr-body > .fr-canvas   {grid-column:2;direction:rtl}
.fr-body > .fr-tool-rail{grid-column:3}

/* ─── Right tool rail (Hebrew RTL: rail on right, panel on left) ─── */
/* 2026-05-18: padding 10px 4px → 10px 6px so single-line labels
   (טמפלט / אקו / תרופות / ניסוחים / פרקים / "מילוי מהיר") have a
   tiny bit more horizontal room before the .56rem font wraps. */
.fr-tool-rail{display:flex;flex-direction:column;gap:3px;padding:10px 6px;background:var(--bg2);border-inline-start:1px solid var(--line);overflow-y:auto;align-items:stretch}
/* Spacer pushes ⚡ bulk-fill to the bottom of the rail (per Claude
   Desktop recommendation: end-of-workflow tools group separately). */
.fr-tool-spacer{flex:1;min-height:8px}
.fr-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:9px 4px;border:1px solid transparent;background:transparent;border-radius:9px;cursor:pointer;font-family:'DM Sans',sans-serif;color:var(--text);transition:background .12s, color .12s, border-color .12s;width:100%}
.fr-tool-btn:hover{background:var(--accent-lo);border-color:var(--line2)}
.fr-tool-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fr-tool-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 6px rgba(184,150,46,.18)}
.fr-tool-btn.active .fr-tool-lbl{color:#fff}
.fr-tool-ico{font-size:1.1rem;line-height:1}
/* 2026-05-18: .56rem (~9px) was forcing "מילוי מהיר" to wrap and
   rendered as cramped 2-line block. Bumped to .64rem (~10.2px),
   white-space:nowrap so multi-word labels stay on a single line —
   if a label overflows the rail width it gets clipped via overflow
   rather than wrapping, which keeps the icon column rhythm clean. */
.fr-tool-lbl{font-size:.64rem;letter-spacing:.04em;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fr-tool-divider{height:1px;background:var(--line);margin:5px 8px}

/* ─── Center canvas ─── */
.fr-canvas{display:flex;flex-direction:column;overflow:hidden;position:relative;min-width:0;min-height:0}

/* ─── Right side panel (slot) ─── */
/* 2026-05-15: explicit position:relative so any absolute descendants
   anchor here, not to viewport. Width:100% forces panel to fill its
   grid cell — previously a state leak made the panel render "tiny at
   bottom-right" when an inner panel's old width:440px persisted. The
   !important rules below also defeat any inline style:width left over
   on the panel divs. */
.fr-side{position:relative;display:flex;flex-direction:column;width:100%;height:100%;background:var(--bg2);border-inline-end:1px solid var(--line);overflow:hidden;min-height:0;min-width:0;box-sizing:border-box}
.fr-side > [data-tool]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;width:100%}
.fr-side > [data-tool][hidden]{display:none !important}

/* Panels inside .fr-side no longer need their own border/width — the
   container provides the chrome. These !important overrides defeat
   the legacy inline-width styles on #fr-eq-panel / #fr-drug-panel
   without requiring me to edit each panel's HTML attributes. */
.fr-side > #fr-eq-panel,
.fr-side > #fr-drug-panel,
.fr-side > #fr-phrases-panel{width:100% !important;max-width:none !important;min-width:0 !important;border-left:none !important;flex-shrink:1 !important;flex:1 1 0 !important}

/* Kill the phrases-panel "expanded" mode for now — it competed with
   the grid layout (forcing 55% / 760px max-width via !important). The
   panel is already at a comfortable 500px in the new layout. If user
   ever wants the wider mode back, we make it a viewport-aware grid
   override, not an inline width hack. */
.fr-phrases-panel.expanded{width:100% !important;max-width:none !important;min-width:0 !important}

/* ─── Slim header (replaces old 13-button cluster row) ─── */
.fr-hdr-left,.fr-hdr-right{display:flex;gap:8px;align-items:center}
/* 2026-05-15: stage-chip strip lives inline in the header (was a
   separate .fr-stepper row). Gets the middle space, scrolls horizontally
   if too many chips, doesn't wrap to a second row. */
.fr-hdr-center{display:flex;gap:5px;align-items:center;flex:1;justify-content:center;overflow-x:auto;overflow-y:hidden;min-width:0;padding:0 10px;scrollbar-width:none}
.fr-hdr-center::-webkit-scrollbar{display:none}
/* The stage chips (.section-chip / .stepper-chip in JS) inherit
   compact styling here — small pill, clear active state. */
.fr-hdr-center > *{flex-shrink:0}
.fr-hdr-divider{width:1px;height:18px;background:var(--line2)}
.fr-patient-pill{display:inline-flex;gap:7px;align-items:center;padding:6px 13px;background:var(--accent-lo);color:var(--accent);border:1px solid var(--accent);border-radius:999px;font-size:.78rem;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s, color .12s}
.fr-patient-pill:hover{background:var(--accent);color:#fff}
.fr-patient-pill .fr-patient-pill-icon{font-size:.9rem;line-height:1}
.fr-patient-pill.empty{background:transparent;color:var(--muted);border-style:dashed}
.fr-patient-pill.empty:hover{background:var(--accent-lo);color:var(--accent);border-style:solid}

/* 2026-05-18 (video-audit T): unfilled-placeholder pill in the FR
   header. Counts unique [label] brackets + __+ underscore spans in
   the textarea and surfaces the count as a clickable badge. Clicking
   opens the fill drawer. Hidden via [hidden] when count is 0 — once
   all placeholders are resolved, the pill disappears. Gold-soft to
   stand out without competing with the patient pill (which has its
   own accent treatment). */
.fr-placeholder-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;background:var(--accent-lo);color:var(--accent);border:1px solid #e8d39a;border-radius:999px;font-size:.74rem;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s,color .12s,transform .1s}
.fr-placeholder-pill:hover{background:var(--accent);color:#fff;transform:translateY(-1px)}
.fr-placeholder-pill[hidden]{display:none}
.fr-placeholder-pill-label{font-size:.66rem;letter-spacing:.02em;font-weight:500;opacity:.85}
#fr-placeholder-pill-count{font-family:'DM Mono',ui-monospace,monospace;font-weight:700;font-size:.78rem;letter-spacing:.02em}

/* The legacy `.fr-overlay-actions` rules still apply for the right
   cluster (PDF + Styled + Copy + Clear + Close) — they stay flex
   row aligned. We only change the LEFT cluster (which becomes the
   patient pill + type select). */
/* 2026-05-13: widened from 340/420 → 440/520 per user feedback that
   the panel felt cramped. Hebrew clinical phrases run ~100-160 chars
   typically; 340px forced wraps to 3-4 lines making the list feel
   dense. 440px holds most phrases in 1-2 lines at .82rem. */
.fr-phrases-panel{width:440px;min-width:340px;max-width:520px;border-left:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0;background:var(--bg2);direction:rtl;transition:width .25s ease,max-width .25s ease}
/* Expanded mode — bigger panel for browsing the 779-phrase library
   organized across species + disease + stage + purpose dimensions.
   Toggled via the ⤢ button. Persisted to localStorage. */
.fr-phrases-panel.expanded{width:55%;max-width:760px;min-width:480px}
/* Titlebar with the expand toggle */
.fr-phr-titlebar{display:flex;align-items:center;justify-content:space-between;padding:0 0 8px;margin-bottom:4px;border-bottom:1px solid var(--line);direction:rtl}
.fr-phr-titletext{font-family:'DM Sans',sans-serif;font-size:.86rem;font-weight:600;color:var(--text);letter-spacing:-.005em}
.fr-phr-expand{
  background:none;border:1px solid var(--line2);border-radius:6px;
  width:26px;height:24px;cursor:pointer;
  font-size:.85rem;line-height:1;color:var(--muted);
  display:inline-flex;align-items:center;justify-content:center;
  transition:all .12s;
}
.fr-phr-expand:hover{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.fr-phrases-panel.expanded .fr-phr-expand{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Purpose filter chip row — auto-detected from each phrase's text.
   Wraps if too many chips fit; counts shown after each label. */
.fr-phr-purpose-row{display:flex;flex-wrap:wrap;gap:4px;direction:rtl}
.fr-phr-purpose-chip{
  font-family:'DM Sans',sans-serif;font-size:.62rem;
  background:var(--bg);color:var(--muted);
  border:1px solid var(--line2);border-radius:100px;
  padding:3px 10px;cursor:pointer;transition:all .12s;
  white-space:nowrap;letter-spacing:.02em;
}
.fr-phr-purpose-chip:hover{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.fr-phr-purpose-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
/* Expanded mode lays the phrase list as a 2-column grid for better scan */
.fr-phrases-panel.expanded .fr-phrases-list{display:grid;grid-template-columns:1fr 1fr;gap:0;align-content:start}
.fr-phrases-panel.expanded .fr-phrase-item{border-inline-end:1px solid var(--line);border-bottom:1px solid var(--line)}
.fr-phrases-panel.expanded .fr-phrase-item:nth-child(2n){border-inline-end:none}
/* FR phrases panel header — three control groups stacked
   (species+disease, stage, search+tools), each with its own
   eyebrow label. Pattern matches the Clalit / chavatdaat
   "kicker → section" rhythm but at panel-density scale. */
.fr-phrases-hdr{padding:12px 14px 10px;border-bottom:1px solid var(--line);flex-shrink:0;background:linear-gradient(180deg,var(--bg2) 0%,var(--bg) 100%)}
/* Each control group — separated by a thin hair-line so the
   panel reads as three clean sections, not one dense lump. */
/* 2026-05-13: tightened header groups so 4 groups + titlebar fit
   without dominating the panel. Padding 4→2, group separator
   margin/padding 6/8 → 4/4. ~12px shaved off the top chrome. */
.fr-phr-group{padding:2px 0}
.fr-phr-group + .fr-phr-group{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
/* Eyebrow label — DM Mono caps, faint, tight letter-spacing.
   Same vocabulary as brand.css `.eyebrow` utility, sized down
   for panel density. */
.fr-phr-eyebrow{font-family:'DM Mono',ui-monospace,monospace;font-size:.55rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:3px;font-weight:500;direction:rtl}

/* ── Section stepper — compact chip row for jumping between report sections ── */
.fr-stepper{display:flex;gap:6px;align-items:center;padding:8px 16px;background:var(--bg2);border-bottom:1px solid var(--line);flex-wrap:wrap;flex-shrink:0;direction:rtl}
.fr-stepper-label{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-inline-end:4px;flex-shrink:0}
.fr-type-select{background:var(--bg);border:1px solid var(--line2);border-radius:100px;padding:3px 14px;font-family:'DM Sans',sans-serif;font-size:.72rem;font-weight:600;color:var(--navy);cursor:pointer;outline:none;direction:rtl;transition:border-color .12s;appearance:none;padding-inline-end:28px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 10px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}
.fr-type-select:hover{border-color:var(--accent)}
.fr-type-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(111,157,115,.15)}
.fr-stepper-divider{width:1px;height:16px;background:var(--line2);flex-shrink:0}
.fr-step-chip{background:var(--bg);border:1px solid var(--line2);border-radius:100px;padding:3px 12px;font-family:'DM Sans',sans-serif;font-size:.7rem;color:var(--muted);cursor:pointer;transition:all .12s;white-space:nowrap;flex-shrink:0}
.fr-step-chip:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.fr-step-chip.not-found{opacity:.4}
.fr-step-chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ── Echo-params side panel — mirrors the drug-panel pattern ── */
.fr-eq-stage-row{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:8px;margin-bottom:10px}
.fr-eq-stage-label{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.fr-eq-stage-chip{font-family:'DM Sans',sans-serif;font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:100px;border:1.5px solid;flex:1;text-align:center;direction:rtl}
.fr-eq-st-empty{background:var(--bg2);color:var(--faint);border-color:var(--line2)}
.fr-eq-st-b1{background:#e9f4ec;color:#2d6a4f;border-color:#bfdbc4}
.fr-eq-st-bord{background:#fbf3dd;color:#8a6400;border-color:#e8d097}
.fr-eq-st-b2{background:#fde7dc;color:#a04510;border-color:#f2c39e}
.fr-eq-st-b2a{background:#fae0dc;color:#a02d1e;border-color:#ecb5ad}
.fr-eq-grp{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.fr-eq-grp label{font-size:.7rem;color:var(--muted);display:flex;justify-content:space-between;align-items:baseline}
.fr-eq-grp label .fr-eq-u{font-family:'DM Mono',monospace;font-size:.6rem;color:var(--faint);font-weight:500}
.fr-eq-grp input{background:var(--bg);border:1.5px solid var(--line2);border-radius:6px;padding:6px 8px;font-family:'DM Mono',monospace;font-size:.78rem;color:var(--text);outline:none;direction:ltr;text-align:right;transition:border-color .12s}
.fr-eq-grp input:focus{border-color:var(--accent)}
.fr-eq-grp input::-webkit-outer-spin-button,.fr-eq-grp input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.fr-eq-grp input[type=number]{-moz-appearance:textfield}
.fr-eq-grp-hdr{font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:10px 0 6px;padding-bottom:4px;border-bottom:1px dashed var(--line)}
.fr-eq-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fr-eq-results{margin-top:12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.fr-eq-out-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:6px 10px;border-bottom:1px solid var(--line);align-items:center;font-size:.72rem}
.fr-eq-out-row:last-child{border-bottom:0}
.fr-eq-out-row .k{color:var(--muted);font-weight:500}
.fr-eq-out-row .v{font-family:'DM Mono',monospace;font-weight:600;color:var(--text);min-width:48px;text-align:right}
.fr-eq-out-row .flag{font-family:'DM Mono',monospace;font-size:.6rem;padding:1px 7px;border-radius:4px;border:1px solid var(--line2);color:var(--muted);white-space:nowrap}
.fr-eq-out-row .flag.flag-norm{background:#e6f1e8;color:#2d6a4f;border-color:#bfdbc4}
.fr-eq-out-row .flag.flag-mild{background:#fbf3dd;color:#8a6400;border-color:#e8d097}
.fr-eq-out-row .flag.flag-sig{background:#fae0dc;color:#a02d1e;border-color:#ecb5ad}
.fr-eq-insert-btn{width:100%;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:8px;padding:8px 14px;font-family:'DM Sans',sans-serif;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .12s}
.fr-eq-insert-btn:hover{background:#5a9070;border-color:#5a9070}

/* ── Template picker modal (M1) ────────────────────────────────────
   Lives inside the FR overlay's viewport. Opens via the 📋 טמפלט
   toolbar button. Self-contained so the legacy sidebar-templates
   flow keeps working unchanged — this is additive. */
/* Template picker — inline drawer (was modal-on-modal at z:9600).
   Lives between the FR overlay header and the section stepper, slides
   open vertically. No backdrop scrim, no focus-trap detour. The .open
   class drives the max-height transition so it animates in/out. The
   keep-`.fr-tp-backdrop`-id-but-rename-class pattern preserves all
   existing JS that references #fr-tp-backdrop. */
/* 2026-05-15: template picker is now a CENTERED MODAL overlay, was a
   slide-down drawer. The drawer pushed the body grid (rail + canvas +
   side) down which made the textarea unreadable while picking. Now the
   picker floats above everything; the workspace stays visible. */
.fr-tp-drawer{position:fixed;inset:0;background:rgba(15,30,41,.4);backdrop-filter:blur(2px);z-index:600;display:none;align-items:center;justify-content:center;padding:32px}
.fr-tp-drawer.open{display:flex}

/* 2026-05-15: Sections "drawer" reborn as a popover. Was a push-down
   drawer that ate up to 50vh, squashing the canvas behind it. Now an
   absolute-positioned popover floating next to the rail icon. Width
   320px, max-height 60vh. Positioned by JS on open (frToggleSectionsPanel
   sets top/left from the rail button's getBoundingClientRect). Does NOT
   displace the body grid. */
.fr-sections-drawer{position:absolute;width:320px;max-height:60vh;background:var(--bg);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 32px rgba(15,30,41,.14);display:none;flex-direction:column;overflow:hidden;z-index:120}
.fr-sections-drawer.open{display:flex}
.fr-sections-modal{display:flex;flex-direction:column;flex:1;direction:rtl;font-family:'DM Sans',sans-serif;overflow:hidden;min-height:0}
.fr-sections-head{padding:12px 18px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;flex-shrink:0;background:var(--bg)}
.fr-sections-head h3{margin:0;font-size:.95rem;font-weight:600;color:var(--text);white-space:nowrap}
.fr-sections-hint{font-size:.7rem;color:var(--muted);font-family:'DM Mono',ui-monospace,monospace;letter-spacing:.04em;flex:1;min-width:0}
.fr-sections-close{background:none;border:none;cursor:pointer;color:var(--faint);font-size:1.05rem;padding:4px 10px;line-height:1}
.fr-sections-close:hover{color:var(--text)}
.fr-sections-body{padding:8px 14px;overflow-y:auto;flex:1;background:var(--bg)}
.fr-sections-empty{padding:32px 16px;text-align:center;color:var(--faint);font-size:.78rem;font-style:italic;line-height:1.6}
.fr-sections-row{display:flex;align-items:stretch;gap:6px;border-bottom:1px solid var(--line-2);transition:background .12s}
.fr-sections-row:hover{background:var(--bg2)}
.fr-sections-row:last-child{border-bottom:none}
.fr-sections-jump{flex:1;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 12px;background:none;border:none;cursor:pointer;font-family:inherit;text-align:right;direction:rtl;color:var(--text);font-size:.85rem;font-weight:500;letter-spacing:-.005em;transition:color .12s}
.fr-sections-jump:hover{color:var(--accent)}
.fr-sections-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fr-sections-meta{font-family:'DM Mono',ui-monospace,monospace;font-size:.62rem;color:var(--faint);font-weight:400;letter-spacing:.04em;flex-shrink:0}
.fr-sections-del{flex-shrink:0;width:30px;background:none;border:none;cursor:pointer;color:var(--faint);font-size:.95rem;line-height:1;border-radius:6px;margin:4px 4px 4px 0;transition:all .12s}
.fr-sections-del:hover{color:#c0392b;background:rgba(192,57,43,.08)}

/* Bulk-fill drawer — same inline pattern as templates + sections.
   Renders one labeled input per detected [bracket] / __+ underscore
   placeholder. Click "החל" → all replacements happen in one update. */
.fr-fill-drawer{display:flex;flex-direction:column;background:var(--bg2);border-bottom:1px solid var(--line);max-height:0;overflow:hidden;transition:max-height .25s ease,border-bottom-color .15s;flex-shrink:0}
.fr-fill-drawer.open{max-height:min(60vh,420px);border-bottom-color:var(--line)}
.fr-fill-modal{display:flex;flex-direction:column;height:min(60vh,420px);direction:rtl;font-family:'DM Sans',sans-serif;overflow:hidden}
.fr-fill-head{padding:12px 18px 10px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;flex-shrink:0;background:var(--bg)}
.fr-fill-head h3{margin:0;font-size:.95rem;font-weight:600;color:var(--text);white-space:nowrap}
.fr-fill-hint{font-size:.7rem;color:var(--muted);font-family:'DM Mono',ui-monospace,monospace;letter-spacing:.04em;flex:1;min-width:0}
.fr-fill-close{background:none;border:none;cursor:pointer;color:var(--faint);font-size:1.05rem;padding:4px 10px;line-height:1}
.fr-fill-close:hover{color:var(--text)}
.fr-fill-body{padding:12px 18px;overflow-y:auto;flex:1;background:var(--bg);display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 14px;align-content:start}
.fr-fill-empty{grid-column:1/-1;padding:32px 16px;text-align:center;color:var(--faint);font-size:.78rem;font-style:italic;line-height:1.6}
.fr-fill-row{display:flex;flex-direction:column;gap:4px;direction:rtl}
.fr-fill-label{font-size:.72rem;color:var(--text);font-weight:600;letter-spacing:-.005em;display:flex;align-items:center;gap:6px}
.fr-fill-label-generic{color:var(--faint);font-weight:500;font-family:'DM Mono',ui-monospace,monospace;font-size:.66rem;letter-spacing:.04em;text-transform:uppercase}
.fr-fill-occ{font-family:'DM Mono',ui-monospace,monospace;font-size:.58rem;color:var(--faint);background:var(--bg2);border:1px solid var(--line2);border-radius:8px;padding:0 6px;font-weight:400;letter-spacing:.04em}
.fr-fill-input{background:#fff;border:1px solid var(--line2);border-radius:6px;padding:7px 10px;font-family:inherit;font-size:.84rem;color:var(--text);outline:none;direction:rtl;transition:border-color .12s,box-shadow .12s}
.fr-fill-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(184,150,46,.12)}
.fr-fill-foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--bg2);display:flex;align-items:center;gap:10px;flex-shrink:0}
.fr-fill-count{font-family:'DM Mono',ui-monospace,monospace;font-size:.66rem;color:var(--faint);letter-spacing:.04em;flex:1}
.fr-fill-apply{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:7px;padding:7px 18px;font-family:inherit;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .12s;letter-spacing:.02em}
.fr-fill-apply:hover{background:#9A7E25;border-color:#9A7E25}
.fr-fill-apply:disabled{opacity:.4;cursor:not-allowed;background:var(--bg2);color:var(--faint);border-color:var(--line2)}
/* 2026-05-15: centered modal card (was full-width inside the drawer).
   Sized to comfortably hold the 4-level filter strip + a 3-column
   card grid. Caps at 880×80vh so it never feels claustrophobic on
   wide screens or overflows on tall ones. */
.fr-tp-modal{background:var(--bg);border:1px solid var(--line);border-radius:14px;width:100%;max-width:880px;max-height:min(80vh,720px);box-shadow:0 12px 48px rgba(15,30,41,.18);direction:rtl;font-family:'DM Sans',sans-serif;overflow:hidden;display:flex;flex-direction:column}
/* Filter strip — one row per dimension (species/category/disease/stage).
   Each row: label on right, chips on left. Chips show counts. */
.fr-tp-filters{padding:8px 18px;background:var(--bg2);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:6px;flex-shrink:0}
/* Phase 5.7 (2026-05-24) — premium pass on the full-picker modal
   filter rows. Label was 0.58rem (~9px) and chips were 0.7rem (~11px)
   — Dr. Levy's eyes were tracking across faint micro-type to scan
   filters. Bumped to 0.78/0.86rem with breathing padding. */
.fr-tp-filter-row{display:flex;align-items:center;gap:10px;min-height:34px}
.fr-tp-filter-label{font-family:'DM Sans',sans-serif;font-size:.78rem;letter-spacing:.04em;color:var(--muted);min-width:74px;flex-shrink:0;font-weight:600}
.fr-tp-filter-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.fr-tp-filter-chip{background:var(--bg);border:1px solid var(--line2);border-radius:100px;padding:5px 14px;font-family:inherit;font-size:.86rem;color:var(--text);cursor:pointer;transition:all .12s;white-space:nowrap;letter-spacing:0;font-weight:500}
.fr-tp-filter-chip:hover{color:var(--gold);border-color:var(--gold)}
.fr-tp-filter-chip.active{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:600}
.fr-tp-filter-chip-n{font-family:'DM Mono',monospace;font-size:.72rem;margin-inline-start:6px;opacity:.7}
.fr-tp-filter-chip.active .fr-tp-filter-chip-n{color:rgba(255,255,255,.85);opacity:1}
.fr-tp-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-shrink:0}
.fr-tp-head h3{margin:0;font-size:.95rem;font-weight:600;color:var(--text);white-space:nowrap}
.fr-tp-head .fr-tp-search{flex:1;background:var(--bg2);border:1px solid var(--line2);border-radius:8px;padding:7px 12px;font-family:inherit;font-size:.8rem;color:var(--text);outline:none;direction:rtl}
.fr-tp-head .fr-tp-search:focus{border-color:var(--accent)}
.fr-tp-close{background:none;border:none;cursor:pointer;color:var(--faint);font-size:1.1rem;padding:4px 10px;line-height:1}
.fr-tp-close:hover{color:var(--text)}
.fr-tp-cats{display:flex;gap:6px;flex-wrap:wrap;padding:10px 18px;background:var(--bg2);border-bottom:1px solid var(--line);flex-shrink:0}
.fr-tp-cat{background:var(--bg);border:1px solid var(--line2);border-radius:100px;padding:4px 12px;font-family:inherit;font-size:.72rem;color:var(--muted);cursor:pointer;transition:all .12s;white-space:nowrap}
.fr-tp-cat:hover{color:var(--accent);border-color:#a8c4b4}
.fr-tp-cat.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.fr-tp-cat .fr-tp-cat-n{font-family:'DM Mono',monospace;font-size:.6rem;margin-inline-start:6px;opacity:.7}
.fr-tp-body{padding:14px 18px 18px;overflow-y:auto;flex:1;background:var(--bg)}
.fr-tp-group{margin-bottom:18px}
.fr-tp-group:last-child{margin-bottom:0}
.fr-tp-group-hdr{font-family:'DM Mono',monospace;font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;padding-bottom:4px;border-bottom:1px dashed var(--line)}
.fr-tp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.fr-tp-card{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer;transition:all .12s;display:flex;flex-direction:column;gap:4px;min-height:70px}
.fr-tp-card:hover{border-color:var(--accent);background:var(--accent-lo);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.05)}
.fr-tp-card-name{font-size:.82rem;font-weight:600;color:var(--text);line-height:1.25}
.fr-tp-card-cat{font-family:'DM Mono',monospace;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:500}
/* 2026-05-17: bumped line-clamp 2→4 so card previews stop hard-cutting
   after two lines — most template texts have a 3-line opening that the
   user wants visible at a glance. Card still expands the grid row only
   as much as content needs; remaining text is implied. */
.fr-tp-card-preview{font-size:.7rem;color:var(--muted);line-height:1.45;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}
/* 2026-05-18: empty-template placeholder treatment — a card whose
   text body is empty gets a dashed-outline preview row with muted
   italic text, so the user can immediately see "no content yet"
   vs accidentally clicking a broken-looking card. */
.fr-tp-card-preview-empty{font-style:italic;color:var(--faint);font-family:'DM Mono',ui-monospace,monospace;font-size:.62rem;letter-spacing:.04em}
.fr-tp-card.fr-tp-card-empty{border-style:dashed;border-color:var(--line2)}
.fr-tp-card.fr-tp-card-empty:hover{border-color:var(--accent);background:var(--accent-lo)}
/* 2026-05-18: out-of-scope filter chip — category whose mapped report
   type differs from the current _frReportType. Implicit filter (added
   2026-05-17 in _frTplCollect) excludes their templates by default,
   so the chip is visually de-emphasised: lower opacity + small ↗
   marker. Click still works (it overrides the implicit filter); this
   is just a "you're stepping outside the active report scope" cue. */
.fr-tp-filter-chip.fr-tp-chip-oos{opacity:.55}
.fr-tp-filter-chip.fr-tp-chip-oos::after{content:'↗';margin-inline-start:4px;font-size:.62rem;color:var(--faint);font-family:'DM Mono',ui-monospace,monospace}
.fr-tp-filter-chip.fr-tp-chip-oos:hover{opacity:1}
.fr-tp-empty{padding:40px 20px;text-align:center;color:var(--faint);font-style:italic;font-size:.8rem}
.fr-tp-foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--bg2);display:flex;align-items:center;gap:10px;flex-shrink:0}
.fr-tp-foot .fr-tp-count{font-family:'DM Mono',monospace;font-size:.65rem;color:var(--faint);letter-spacing:.04em}
.fr-tp-foot .fr-tp-blank{margin-inline-start:auto;background:none;border:1px solid var(--line2);border-radius:8px;padding:6px 14px;font-family:inherit;font-size:.75rem;color:var(--muted);cursor:pointer;transition:all .12s}
.fr-tp-foot .fr-tp-blank:hover{color:var(--text);border-color:var(--accent)}
.fr-phrases-toolbar{display:flex;gap:6px;margin-top:8px;align-items:center}
.fr-phrases-search{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 9px;font-family:'DM Sans',sans-serif;font-size:.72rem;color:var(--text);outline:none;direction:rtl}
.fr-phrases-search:focus{border-color:var(--accent)}
.fr-phrases-search::placeholder{color:var(--faint)}
/* Phase 5.11 (2026-05-24) — masthead chip buttons bumped from .65rem
   to .8rem for readability. The user repeatedly flagged that all
   buttons looked tiny; these are the panel-toolbar actions and they
   were among the smallest. */
.fr-phrases-allscope{flex-shrink:0;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 11px;font-family:'DM Sans',sans-serif;font-size:.8rem;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap;transition:all .12s}
.fr-phrases-allscope:hover{color:var(--gold);border-color:var(--gold)}
.fr-phrases-allscope.active{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:600}
.fr-phrases-sort{flex-shrink:0;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 11px;font-family:'DM Sans',sans-serif;font-size:.8rem;color:var(--muted);cursor:pointer;white-space:nowrap;transition:all .12s}
.fr-phrases-sort:hover{color:var(--accent);border-color:#a8c4b4}
.fr-phrases-sort.active{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Quick-insert essentials button — primary action chip in the
   toolbar. Tinted to differentiate from the neutral sort toggle:
   gold-soft idle, gold accent on hover/flash. The .flash class
   pulses briefly to confirm an insert occurred. */
.fr-phrases-quick{flex-shrink:0;background:var(--accent-lo);border:1px solid #e8d39a;border-radius:6px;padding:5px 11px;font-family:'DM Sans',sans-serif;font-size:.8rem;font-weight:600;color:var(--accent);cursor:pointer;white-space:nowrap;transition:all .12s}
.fr-phrases-quick:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.fr-phrases-quick.flash{background:#2d6a4f;color:#fff;border-color:#2d6a4f}
/* Insert button — primary action per row. Always visible (unlike
   Copy/Edit/✕ which fade in on hover). Filled gold-deep with a
   slightly darker tone than the toolbar accent so it reads as
   "the button to click", not "decorative chrome".  */
.fr-phrase-insert{background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:5px;padding:4px 10px;font-family:'DM Sans',sans-serif;font-size:.7rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .12s;min-height:26px;letter-spacing:.01em;box-shadow:0 1px 2px rgba(184,150,46,.15)}
.fr-phrase-insert:hover{background:#9A7E25;border-color:#9A7E25;box-shadow:0 2px 6px rgba(184,150,46,.25)}
.fr-phrase-count{font-family:'DM Mono',monospace;font-size:.56rem;color:var(--faint);white-space:nowrap;margin-inline-end:4px;font-weight:500}
.fr-phrases-species{display:flex;gap:4px;margin-bottom:8px}
.fr-sp-btn{flex:1;padding:5px 0;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid var(--line2);border-radius:16px;cursor:pointer;font-family:'DM Sans',sans-serif;color:var(--muted);transition:all .15s}
.fr-sp-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Disease chip row — disease selector inside the FR phrases panel.
   Horizontal flex row, scrolls horizontally if too many diseases.
   Each chip is a small DM Mono pill showing disease + phrase count.
   Active chip uses the accent color (gold). */
.fr-disease-row{display:flex;gap:4px;margin-bottom:8px;overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.fr-disease-row::-webkit-scrollbar{height:4px}
.fr-disease-row::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px}
.fr-disease-chip{flex-shrink:0;padding:3px 10px;font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.04em;background:var(--bg);border:1px solid var(--line2);border-radius:100px;cursor:pointer;color:var(--muted);transition:all .12s;white-space:nowrap;direction:rtl}
.fr-disease-chip:hover{color:var(--accent);border-color:#e0c490}
.fr-disease-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.fr-stage-select{width:100%;padding:5px 8px;background:var(--bg3);border:1px solid var(--line2);border-radius:8px;font-size:.72rem;color:var(--text);font-family:'DM Sans',sans-serif;direction:rtl;cursor:pointer;outline:none}
.fr-phrases-list{flex:1;overflow-y:auto;padding:6px 0}
.fr-recent-header{padding:6px 10px 3px;font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-family:'DM Sans',sans-serif;border-bottom:1px solid var(--line);background:var(--accent-lo)}
.fr-recent-item{background:var(--accent-lo)!important;border-left:2px solid var(--accent)}
.fr-recent-item .fr-phrase-src::before{content:'⟳ '}
/* Phrase item layout — primary action ("→ הכנס") always visible
   on the right; governance actions (Copy / Edit / ✕) fade in on
   hover/focus-within to reduce visual mass when the user is just
   scanning. Insert is the 95% action; the rest are passive. */
/* 2026-05-13: tighter vertical padding (9px→6px) — combined with the
   source-inline change below saves ~12-14px per row. Visible 8 rows
   per scroll-page → ~16 rows now without scroll. */
.fr-phrase-item{display:flex;align-items:flex-start;gap:6px;padding:6px 12px;border-bottom:1px solid var(--line);transition:background .1s}
.fr-phrase-item:hover{background:var(--bg3)}
.fr-phrase-item .fr-phrase-copy,
.fr-phrase-item .fr-phrase-edit,
.fr-phrase-item .fr-phrase-del{opacity:0;transition:opacity .12s}
.fr-phrase-item:hover .fr-phrase-copy,
.fr-phrase-item:focus-within .fr-phrase-copy,
.fr-phrase-item:hover .fr-phrase-edit,
.fr-phrase-item:focus-within .fr-phrase-edit,
.fr-phrase-item:hover .fr-phrase-del,
.fr-phrase-item:focus-within .fr-phrase-del{opacity:1}
/* "Already in the report" state — added 2026-05-10. The render
   loop checks each phrase against the textarea contents and tags
   matched items with .fr-phrase-inserted. Visual: muted text +
   green checkmark badge, so the user sees at a glance which
   phrases they've already used and avoids duplication. */
.fr-phrase-item.fr-phrase-inserted{background:#f0f7f2}
.fr-phrase-item.fr-phrase-inserted:hover{background:#e6f1e8}
.fr-phrase-item.fr-phrase-inserted .fr-phrase-text{color:var(--muted)}
.fr-phrase-inserted-badge{display:inline-block;font-family:'DM Mono',monospace;font-size:.55rem;color:#2d6a4f;background:#dcefe1;border:1px solid #b9d8c1;border-radius:8px;padding:0 6px;margin-inline-start:6px;letter-spacing:.04em;font-weight:600}
/* Cross-stage chip — surfaces in search results when a matching
   phrase is from a stage other than the current selector. Lets
   the user know WHY a phrase appeared without breaking the visual
   flow of the list. Teal-tinted to match the brand. */
.fr-phrase-stage-chip{display:inline-block;font-family:'DM Mono',monospace;font-size:.55rem;color:var(--accent);background:var(--accent-lo);border:1px solid #d8c79a;border-radius:8px;padding:0 6px;margin-inline-start:6px;letter-spacing:.04em;font-weight:600;direction:rtl}
/* Cross-disease chip — surfaces when a search match comes from a
   different disease bucket than the current scope. Navy-tinted so it
   reads distinctly from the gold stage chip. Helps the clinician see
   that a relevant diet phrase tagged in MMVD also fits the current
   HCM context, without losing track of the origin. */
.fr-phrase-disease-chip{display:inline-block;font-family:'DM Mono',monospace;font-size:.55rem;color:#143a52;background:#e8eff6;border:1px solid #c4d5e2;border-radius:8px;padding:0 6px;margin-inline-start:4px;letter-spacing:.04em;font-weight:600;direction:rtl}
/* Phrase typography — bumped from .72rem (≈11.5px) to .82rem
   (≈13.1px) on 2026-05-10. Hebrew clinical text below 12px is
   fatiguing in a panel the user reads dozens of times per day.
   Action-button sizes raised from .58rem (≈9.3px) to .66rem
   (≈10.5px) with min-height:24px so they meet WCAG-friendly
   target floors without crowding the row. */
/* 2026-05-13: line-height tightened 1.6→1.45 for less vertical
   stretch on multi-line phrases. .82rem text stays readable.
   `display:inline` (instead of flex:1) lets the inline-end source
   chip share the same line — see .fr-phrase-src below. */
/* 2026-05-15: phrase text bumped .82→.95rem + line-height 1.45→1.55
   per user feedback "phrases box is small and not read well". The
   panel itself widened from 420 to 500px in .fr-body grid columns,
   so phrases get ~80px more horizontal room AND 13% larger type. */
.fr-phrase-text{display:inline;font-size:.95rem;line-height:1.55;color:var(--text);direction:rtl;cursor:default}
.fr-phrase-item{padding:9px 14px !important}
/* 2026-05-13: source label now an inline-end chip on the same row
   as the phrase text instead of a full block below it. Saves the
   ~14px of vertical real-estate per row. The badges (cross-stage
   chip, inserted, count) still cluster around the source label,
   so the source-wrap is `display:inline` not `block`. */
.fr-phrase-src{font-size:.62rem;color:var(--faint);margin:0 0 0 8px;display:inline;white-space:nowrap}
.fr-phrase-copy{flex-shrink:0;font-size:.66rem;min-height:24px;background:none;border:1px solid var(--line2);border-radius:12px;padding:3px 10px;cursor:pointer;color:var(--muted);font-family:'DM Sans',sans-serif;white-space:nowrap;transition:all .15s;margin-top:1px}
.fr-phrase-copy:hover,.fr-phrase-copy.copied{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.fr-phrase-del{flex-shrink:0;font-size:.66rem;min-height:24px;background:none;border:none;cursor:pointer;color:var(--faint);padding:3px 6px;transition:color .15s;margin-top:1px}
.fr-phrase-del:hover{color:#c0392b}
.fr-phrase-edit{flex-shrink:0;font-size:.66rem;min-height:24px;background:none;border:1px solid var(--line2);border-radius:12px;padding:3px 9px;cursor:pointer;color:var(--muted);font-family:'DM Sans',sans-serif;white-space:nowrap;transition:all .15s;margin-top:1px}
.fr-phrase-edit:hover{color:var(--accent);border-color:#e0c490}
.fr-phrase-edit.editing{color:#fff;background:var(--accent);border-color:var(--accent)}
.fr-phrase-editing-wrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.fr-phrase-edit-ta{width:100%;background:var(--bg3);border:1px solid var(--accent);border-radius:6px;font-size:.71rem;padding:4px 7px;color:var(--text);font-family:'DM Sans',sans-serif;direction:rtl;resize:none;outline:none;line-height:1.5;box-sizing:border-box}
.fr-phrase-save-edit{align-self:flex-end;font-size:.58rem;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:2px 10px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:opacity .15s}
.fr-phrase-save-edit:hover{opacity:.85}
.fr-phrases-add{padding:8px 10px;border-top:1px solid var(--line);flex-shrink:0}
.fr-add-ta{width:100%;background:var(--bg3);border:1px solid var(--line2);border-radius:8px;font-size:.71rem;padding:6px 8px;color:var(--text);font-family:'DM Sans',sans-serif;direction:rtl;resize:none;outline:none;line-height:1.6;box-sizing:border-box}
.fr-add-row{display:flex;gap:5px;margin-top:5px;align-items:center}
.fr-add-src{flex:1;padding:4px 7px;background:var(--bg3);border:1px solid var(--line2);border-radius:8px;font-size:.65rem;color:var(--muted);font-family:'DM Sans',sans-serif;direction:rtl;outline:none}
.fr-add-save{padding:4px 12px;background:var(--accent);color:#fff;border:none;border-radius:12px;font-size:.62rem;cursor:pointer;font-family:'DM Sans',sans-serif;white-space:nowrap;transition:opacity .15s}
.fr-add-save:hover{opacity:.85}

/* ════════════════════════════════════════════════════════════════
   PHRASES PANEL v3 (2026-05-13)
   ════════════════════════════════════════════════════════════════
   Professional redesign per user feedback: "מצומצם ולא נוח לקריאה
   ולא מסודר ולא מעוצב יפה". Five concrete UX wins:

   1. SEARCH AT TOP — was buried at bottom of header chrome (5 stacked
      groups before reaching it). Now the first thing the user sees
      after opening the panel.
   2. BREADCRUMB NAVIGATION — was 3 stacked dropdowns (species buttons
      / disease chips / stage <select>). Now one compact horizontal
      breadcrumb: "כלב › MMVD › B1" with each segment a clickable
      reveal-popover.
   3. PURPOSE STICKY — chips bar sticks below the search bar when
      scrolling, so 10 category filters are always one click away.
   4. COLOR-CODED PURPOSE STRIPE — left ribbon on each phrase row
      tinted per category. Instant scan-and-find: red=emergency,
      blue=treatment, teal=monitoring, green=diet, etc. No need to
      read the icon when scrolling fast.
   5. SECTIONED CONTENT — Pinned / Recent / All as three labeled
      zones with breathing room between them. The user can pin
      favorites at the top for one-click access.

   Backwards-compatible: existing `.fr-phrase-item` class kept; new
   styling adds `.v3` markers and modernizes the row. The old
   `frRenderPhrases()` is updated in dashboard.js to emit these.
*/

/* === Compact masthead — title + expand toggle, no eyebrow noise ===
   Old: 30px+ of padding around the title. Now ~28px total. */
.fr-phr-masthead{display:flex;align-items:center;justify-content:space-between;
  padding:8px 14px 6px;border-bottom:1px solid var(--line);
  background:var(--bg2);flex-shrink:0}
.fr-phr-mast-title{font-family:'DM Sans',sans-serif;font-size:.86rem;
  font-weight:600;color:var(--text);letter-spacing:-.005em}
.fr-phr-mast-actions{display:flex;gap:4px;align-items:center}

/* === Search bar at TOP (instead of buried at bottom) ===
   Sticky to the panel top so filtering is always one click away,
   regardless of scroll position. Bigger font + more padding than
   the old toolbar search. Includes a clear-X button. */
.fr-phr-searchbar{position:sticky;top:0;z-index:5;
  padding:8px 12px;background:var(--bg2);
  border-bottom:1px solid var(--line);flex-shrink:0}
.fr-phr-search-wrap{position:relative;display:flex;align-items:center}
.fr-phr-search-icon{position:absolute;inset-inline-start:10px;
  font-size:.85rem;color:var(--faint);pointer-events:none}
/* Phase 5.8 — search input bumped 0.78 → 0.88rem so the placeholder
   ("חפש ניסוח…") doesn't read as micro-type next to its giant
   neighbour textarea. */
.fr-phr-search-input{width:100%;padding:9px 34px 9px 34px;
  background:var(--bg);border:1.5px solid var(--line2);border-radius:8px;
  font-family:'DM Sans',sans-serif;font-size:.88rem;color:var(--text);
  outline:none;direction:rtl;transition:border-color .12s,box-shadow .12s}
.fr-phr-search-input:focus{border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(111,157,115,.12)}
/* 2026-05-13 v3 round 8: keyboard-shortcut hint kbd on the right
   side of the search. Tells the user that Cmd+K focuses search. */
.fr-phr-search-kbd{position:absolute;inset-inline-end:36px;
  font-family:'DM Mono',monospace;font-size:.58rem;color:var(--faint);
  background:var(--bg2);border:1px solid var(--line2);border-radius:4px;
  padding:1px 5px;pointer-events:none;line-height:1.4}
.fr-phr-search-input:focus ~ .fr-phr-search-kbd,
.fr-phr-search-input:not(:placeholder-shown) ~ .fr-phr-search-kbd{display:none}
.fr-phr-search-input::placeholder{color:var(--faint)}
.fr-phr-search-clear{position:absolute;inset-inline-end:8px;
  background:none;border:none;color:var(--faint);font-size:.9rem;
  cursor:pointer;padding:2px 6px;border-radius:4px;display:none;
  line-height:1}
.fr-phr-search-clear.show{display:inline-block}
.fr-phr-search-clear:hover{color:var(--text);background:var(--bg3)}

/* === Breadcrumb scope bar — compact horizontal navigation ===
   Replaces the 3 stacked groups (species / disease / stage). One
   clean row showing the current scope, each segment clickable to
   change. Optional ▾ caret hints that a dropdown is available. */
/* Phase 5.8 — breadcrumb (כלב · AF · new-onset) bumped 0.72 →
   0.85rem with more padding so each segment is comfortably
   tappable AND readable. */
.fr-phr-breadcrumb{display:flex;align-items:center;gap:5px;
  padding:8px 12px;background:var(--bg);border-bottom:1px solid var(--line);
  flex-shrink:0;direction:rtl;font-family:'DM Sans',sans-serif;
  font-size:.85rem;flex-wrap:wrap}
.fr-phr-bc-seg{background:var(--bg2);border:1px solid var(--line2);
  border-radius:100px;padding:4px 13px;color:var(--text);
  cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;gap:4px;font-weight:500}
.fr-phr-bc-seg:hover{color:var(--accent);border-color:#a8c4b4;
  background:var(--accent-lo)}
.fr-phr-bc-seg.active{background:var(--accent);color:#fff;
  border-color:var(--accent);font-weight:600}
.fr-phr-bc-caret{font-size:.55rem;opacity:.7;line-height:1}
.fr-phr-bc-sep{color:var(--faint);font-size:.7rem;margin:0 2px}

/* === Purpose chips bar — sticky below the search ===
   M2 (2026-05-24, AUDIT_2026-05-24.md §U3): was top:0 alongside the
   search bar, so on scroll search + purpose stacked correctly but
   the SECTION HEADERS (also top:0) slid UNDER the purpose bar
   (z:2 < z:4). Now sticky bands stack via explicit top offsets:
     searchbar (~46px tall) → top:0  (line 890)
     purpose bar             → top:46px
     section headers         → top:88px (line 957)
   This gives a clean cascade: search always on top, purpose chip
   row always visible for re-filtering, section headers always
   visible to anchor the user inside the list. */
.fr-phr-purpose-bar{position:sticky;top:46px;z-index:4;
  padding:8px 12px;background:var(--bg2);border-bottom:1px solid var(--line);
  display:flex;gap:5px;flex-wrap:wrap;flex-shrink:0;direction:rtl}

/* === Section dividers in the list ===
   "⭐ סימניות", "🕐 בשימוש אחרון", "📚 כל הניסוחים" — three labeled
   zones with breathing room. Sticky so they hint context while
   scrolling. */
/* Phase 5.8 — section headers bumped from 0.66 → 0.82rem (12.8px),
   count badge 0.6 → 0.72rem, padding generous. Sections were
   reading as faint micro-type; the user couldn't tell where
   "מומלץ מ-GOLANI" ended and the regular list began.
   M2 (2026-05-24): top:0 → top:88px so headers stack BELOW the
   searchbar (top:0) and purpose bar (top:46px) instead of sliding
   under them on scroll. Solid bg replaces the fade-to-transparent
   gradient — needs to fully occlude the row underneath when stuck. */
.fr-phr-section-hdr{position:sticky;top:88px;z-index:2;
  padding:10px 14px 8px;background:var(--bg2);
  font-family:'DM Sans',sans-serif;font-size:.82rem;font-weight:700;
  letter-spacing:.04em;color:var(--muted);
  border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:7px;direction:rtl}
.fr-phr-section-hdr .fr-phr-section-count{font-family:'DM Mono',monospace;
  font-size:.72rem;color:var(--muted);font-weight:500;letter-spacing:0}
.fr-phr-section-hdr.is-pinned{color:#a07a1e}
.fr-phr-section-hdr.is-recent{color:var(--accent)}
/* Phase 3A.7 (2026-05-22) — Golani recommends section gets the
   strongest visual treatment: solid gold background, white text,
   white count. This is the most-important section in the panel. */
.fr-phr-section-hdr.is-golani{background:linear-gradient(180deg,var(--gold) 0%,var(--gold) 85%,rgba(184,150,46,.55) 100%);color:#fff;border-bottom-color:var(--gold)}
.fr-phr-section-hdr.is-golani .fr-phr-section-count{color:rgba(255,255,255,.85)}
/* Phase 3A.8 — co-occurrence "Golani also uses" section.
   Indigo accent to distinguish from gold Golani-recommended. */
.fr-phr-section-hdr.is-cooccur{background:linear-gradient(180deg,#4338ca 0%,#4338ca 85%,rgba(67,56,202,.55) 100%);color:#fff;border-bottom-color:#4338ca}
.fr-phr-section-hdr.is-cooccur .fr-phr-section-count{color:rgba(255,255,255,.85)}
/* M1 (2026-05-24, AUDIT_2026-05-24.md §W1) — purpose-grouped sections
   in the phrase list. Each section header carries the purpose's
   category colour as a left ribbon (matches the per-row ribbon at
   line 990-1011), so the eye links section header → row colour →
   purpose at a glance. Subtle 4px ribbon, not a full fill — the
   gold Golani / indigo Co-occur sections stay distinct as
   personal-signal sections; these are CONTENT sections.  */
.fr-phr-section-hdr.is-purpose-emergency   {border-inline-start:4px solid #d62828;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-treatment   {border-inline-start:4px solid #2a6fb5;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-monitoring  {border-inline-start:4px solid #1d8b8b;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-diet        {border-inline-start:4px solid #2d8a4a;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-activity    {border-inline-start:4px solid #9b6b30;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-anaesthesia {border-inline-start:4px solid #7b4fa8;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-prognosis   {border-inline-start:4px solid #5a5a5a;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-auscultation{border-inline-start:4px solid #b85c8e;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-echoFinding {border-inline-start:4px solid #0f5a8a;padding-inline-start:11px}
.fr-phr-section-hdr.is-purpose-explanation {border-inline-start:4px solid #cbd5e1;padding-inline-start:11px}

/* === Phrase row v3 — color-coded left stripe + roomier ===
   Each row gets a 3px colored ribbon on the inline-start matching
   its purpose category. Lets the user scan the list by intent
   without reading the icon. Treatment=blue, monitoring=teal,
   diet=green, emergency=red, etc.
   Background interaction: hover, pinned, inserted have distinct
   tints layered on top of the ribbon. */
.fr-phrase-item-v3{position:relative;padding:10px 14px 10px 17px;
  border-bottom:1px solid var(--line);transition:background .12s;
  display:flex;flex-direction:column;gap:5px;direction:rtl}
.fr-phrase-item-v3:hover{background:var(--bg3)}
.fr-phrase-item-v3:focus{outline:none;background:var(--bg3);
  box-shadow:inset 0 0 0 2px var(--accent)}
.fr-phrase-item-v3:focus-visible{outline:none;background:var(--bg3);
  box-shadow:inset 0 0 0 2px var(--accent)}
.fr-phrase-item-v3.is-pinned{background:#fffbeb}
.fr-phrase-item-v3.is-pinned:hover{background:#fef7d3}
.fr-phrase-item-v3.is-inserted{background:#f0f7f2}
.fr-phrase-item-v3.is-inserted:hover{background:#e6f1e8}
.fr-phrase-item-v3.is-inserted .fr-phr-v3-text{color:var(--muted)}

/* Color-coded ribbon — purpose category visualized as a stripe on
   the inline-start edge of the row. Allows scan-by-color while
   moving down the list quickly. Phase 5.8 (2026-05-24): bumped from
   3px → 4px so the colour is unmistakable at a glance. */
.fr-phrase-item-v3::before{content:'';position:absolute;
  inset-inline-start:0;top:0;bottom:0;width:4px;background:transparent}
.fr-phrase-item-v3[data-purpose=emergency]::before{background:#d62828}
.fr-phrase-item-v3[data-purpose=treatment]::before{background:#2a6fb5}
.fr-phrase-item-v3[data-purpose=monitoring]::before{background:#1d8b8b}
.fr-phrase-item-v3[data-purpose=diet]::before{background:#2d8a4a}
.fr-phrase-item-v3[data-purpose=activity]::before{background:#9b6b30}
.fr-phrase-item-v3[data-purpose=anaesthesia]::before{background:#7b4fa8}
.fr-phrase-item-v3[data-purpose=prognosis]::before{background:#5a5a5a}
.fr-phrase-item-v3[data-purpose=auscultation]::before{background:#b85c8e}
.fr-phrase-item-v3[data-purpose=echoFinding]::before{background:#0f5a8a}
.fr-phrase-item-v3[data-purpose=explanation]::before{background:#cbd5e1}

/* Phrase text — larger, more readable. Phase 5.8 (2026-05-24): bumped
   from 0.92rem → 0.98rem (~15.7px) per user readability complaint. */
.fr-phr-v3-text{font-size:.98rem;line-height:1.6;color:var(--text);
  direction:rtl;cursor:default;font-family:'DM Sans',sans-serif}

/* Metadata row — purpose icon + source + count + cross-disease badge.
   Phase 5.8 — meta and tags bumped (0.65→0.78rem, 0.6→0.75rem) so
   scanning the source / count info doesn't strain the eye. */
.fr-phr-v3-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:.78rem;color:var(--muted);font-family:'DM Sans',sans-serif}
.fr-phr-v3-purpose-tag{display:inline-flex;align-items:center;gap:4px;
  font-family:'DM Sans',sans-serif;font-size:.75rem;font-weight:600;
  letter-spacing:.02em;color:var(--muted);background:var(--bg);
  border:1px solid var(--line2);border-radius:100px;padding:2px 10px;
  line-height:1.5}
.fr-phr-v3-src{color:var(--muted);font-style:italic;font-size:.78rem}
.fr-phr-v3-count{color:var(--accent);font-family:'DM Mono',monospace;
  font-weight:600;font-size:.78rem}

/* Action row — pin star + insert + copy. Pin is always visible
   (state needs to be toggleable), insert is always visible (95%
   action), copy + edit + delete fade in on hover. */
.fr-phr-v3-actions{display:flex;align-items:center;gap:6px;
  margin-inline-start:auto;flex-shrink:0}
.fr-phr-v3-pin{background:none;border:none;cursor:pointer;
  font-size:1.1rem;color:var(--line2);padding:3px 6px;
  border-radius:4px;transition:color .12s,background .12s;line-height:1}
.fr-phr-v3-pin:hover{color:#d4a82e;background:var(--bg3)}
.fr-phr-v3-pin.active{color:#d4a82e}
/* Phase 5.8 — phrase row action buttons bumped from 0.7/0.65rem to
   0.85/0.78rem with roomier padding so they're tappable + readable. */
.fr-phr-v3-insert{background:var(--accent);color:#fff;border:none;
  border-radius:6px;padding:6px 14px;font-family:'DM Sans',sans-serif;
  font-size:.85rem;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:background .12s}
.fr-phr-v3-insert:hover{background:#5a9070}
.fr-phr-v3-copy{background:var(--bg);border:1px solid var(--line2);
  border-radius:6px;padding:4px 11px;font-family:'DM Sans',sans-serif;
  font-size:.78rem;color:var(--muted);cursor:pointer;
  transition:all .12s;opacity:0}
.fr-phrase-item-v3:hover .fr-phr-v3-copy,
.fr-phrase-item-v3:focus-within .fr-phr-v3-copy{opacity:1}
.fr-phr-v3-copy:hover{color:var(--accent);border-color:#a8c4b4;
  background:var(--accent-lo)}
.fr-phr-v3-copy.copied{color:var(--accent);background:var(--accent-lo)}

/* Add-new section, collapsible — saves ~50px when not in use.
   Phase 5.8 — bumped 0.7 → 0.85rem; was reading as micro-footer text. */
.fr-phr-add-toggle{padding:9px 14px;background:var(--bg2);
  border-top:1px solid var(--line);flex-shrink:0;display:flex;
  align-items:center;justify-content:space-between;cursor:pointer;
  font-family:'DM Sans',sans-serif;font-size:.85rem;font-weight:500;
  color:var(--muted);transition:background .12s}
.fr-phr-add-toggle:hover{background:var(--bg3);color:var(--text)}
.fr-phr-add-toggle-caret{font-size:.6rem;opacity:.7;transition:transform .15s}
.fr-phr-add-toggle.open .fr-phr-add-toggle-caret{transform:rotate(180deg)}

/* Empty-state hint for purpose filter — when filtering yields nothing */
.fr-phr-empty-hint{padding:24px 18px;text-align:center;
  color:var(--faint);font-family:'DM Sans',sans-serif;font-size:.75rem;
  line-height:1.7;direction:rtl}
.fr-phr-empty-hint-emoji{font-size:1.6rem;display:block;margin-bottom:8px}
.fr-phr-empty-hint-action{display:inline-block;margin-top:10px;
  background:var(--accent-lo);color:var(--accent);border:1px solid #e0c490;
  border-radius:100px;padding:4px 12px;font-size:.72rem;font-weight:600;
  cursor:pointer;text-decoration:none}
.fr-phr-empty-hint-action:hover{background:var(--accent);color:#fff}
.fr-main{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}
/* 2026-05-15: height:100% forces the textarea to fill its flex parent
   regardless of parent display mode. Combined with flex:1 + min-height:0,
   the textarea now ALWAYS gets at least its grid cell's remaining height,
   never pushes it taller. */
.fr-textarea{flex:1;width:100%;height:100%;background:transparent;border:none;outline:none;color:var(--text);font-family:'DM Sans',sans-serif;font-size:.9rem;line-height:2.1;padding:24px 32px;resize:none;direction:rtl;box-sizing:border-box;min-height:0;overflow-y:auto}
.fr-textarea::placeholder{color:var(--faint)}

/* Empty-state launcher — Clalit-style "how do I start" card that
   sits over the textarea when the report is empty. Three clear
   action cards: template / patient / blank. Each is a tile with
   icon + title + sub. Fades out via .hidden when the textarea
   gets content (frUpdateEmptyState in dashboard.js). */
.fr-empty-state{position:absolute;inset:0;background:linear-gradient(180deg,#f7f9fb 0%,#fbfcfd 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 28px;z-index:2;pointer-events:auto;transition:opacity .25s ease,visibility .25s}
.fr-empty-state.hidden{opacity:0;visibility:hidden;pointer-events:none}
.fr-empty-eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:'DM Mono',ui-monospace,monospace;font-size:.62rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.fr-empty-eyebrow::before{content:'';width:24px;height:1px;background:var(--gold,#B8962E);display:inline-block}
.fr-empty-title{font-family:'Heebo','DM Sans',sans-serif;font-size:1.55rem;font-weight:500;color:var(--text);letter-spacing:-.015em;line-height:1.2;margin:0 0 8px}
.fr-empty-sub{font-size:.82rem;color:var(--muted);line-height:1.65;max-width:420px;text-align:center;margin:0 0 28px}
/* Action grid — three side-by-side cards on wide panels, stacks
   on narrow. Primary (template) is filled-accent so the eye lands
   there first; the rest are outlined / ghost. */
.fr-empty-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;max-width:680px}
.fr-empty-cta{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line2);border-radius:12px;padding:14px 18px;cursor:pointer;font-family:inherit;text-align:right;direction:rtl;transition:all .15s;box-shadow:var(--shadow-card,0 1px 9px 0 rgba(15,30,41,.06));min-width:200px}
.fr-empty-cta:hover{border-color:var(--accent);background:var(--accent-lo,#f4ecd6);transform:translateY(-1px);box-shadow:0 4px 18px 0 rgba(15,30,41,.10)}
.fr-empty-cta.primary{background:var(--accent);border-color:var(--accent)}
.fr-empty-cta.primary .fr-empty-cta-title,
.fr-empty-cta.primary .fr-empty-cta-sub,
.fr-empty-cta.primary .fr-empty-cta-ico{color:#fff}
.fr-empty-cta.primary:hover{background:#9A7E25;border-color:#9A7E25;transform:translateY(-1px);box-shadow:0 6px 18px rgba(184,150,46,.32)}
.fr-empty-cta.ghost{background:transparent;border-style:dashed;box-shadow:none}
.fr-empty-cta.ghost:hover{background:var(--bg2);border-style:solid;box-shadow:var(--shadow-card,0 1px 9px 0 rgba(15,30,41,.06))}
.fr-empty-cta-ico{font-size:1.5rem;line-height:1;flex-shrink:0;color:var(--accent)}
.fr-empty-cta-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.fr-empty-cta-title{font-size:.92rem;font-weight:600;color:var(--text);letter-spacing:-.005em}
.fr-empty-cta-sub{font-size:.68rem;color:var(--muted);font-family:'DM Mono',ui-monospace,monospace;letter-spacing:.04em}
.fr-footer{padding:10px 24px;border-top:1px solid var(--line);background:var(--bg2);font-size:.6rem;color:var(--faint);font-family:var(--mono);letter-spacing:.08em;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
/* Primary "העבר לדוח" button on each card — filled accent, the only
   button on the card that reads as a CTA. Its arrow nudges on hover. */
.send-t{
  font-size:.7rem;letter-spacing:.01em;
  color:#fff;background:var(--accent);
  border:1px solid var(--accent);
  border-radius:8px;
  padding:6px 13px;cursor:pointer;
  white-space:nowrap;font-family:'DM Sans',sans-serif;
  font-weight:600;
  transition:background .15s,border-color .15s,box-shadow .2s,transform .1s;
  display:inline-flex;align-items:center;gap:6px;
}
.send-t::after{
  content:'←';font-size:.95em;opacity:.85;
  transition:transform .2s;
}
.send-t:hover{
  background:#1f3f29;border-color:#1f3f29;
  box-shadow:0 4px 12px -3px rgba(42,84,56,.32);
}
.send-t:hover::after{transform:translateX(-3px)}

/* ── DASH FOOTER ── */

[data-theme="dark"] {
  --bg:#141210;--bg2:#1c1916;--bg3:#242118;
  --line:#38352f;--line2:#4a4640;
  --text:#e8e4df;--muted:#9a9288;--faint:#8b857d;  /* Q7 (2026-05-24): dark-theme --faint bumped #5a5550→#8b857d, now ~5.0:1 against --bg2:#1c1916. */
  --accent:#4a9065;--accent-lo:#1a3028;
  --teal:#3a9aaa;--teal-xs:#0e2a30;
  --shadow-sm:0 1px 4px rgba(0,0,0,.4);--shadow-md:0 4px 16px rgba(0,0,0,.5);
}
[data-theme="dark"] .drug-fcard,[data-theme="dark"] .notes-wrap,
[data-theme="dark"] #dog-fp-grid .drug-fcard,[data-theme="dark"] #cat-fp-grid .drug-fcard{background:var(--bg3)}
[data-theme="dark"] .tmpl-card,[data-theme="dark"] .fr-overlay,[data-theme="dark"] .ov-wrap{background:var(--bg)}
[data-theme="dark"] .opt-btn,[data-theme="dark"] .dog-rate-btn,[data-theme="dark"] .cat-rate-btn{background:var(--bg3);color:var(--muted)}
.dark-toggle{position:fixed;bottom:20px;left:20px;z-index:500;background:var(--bg2);border:1.5px solid var(--line2);border-radius:24px;height:40px;padding:0 14px;display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.75rem;font-family:"DM Sans",sans-serif;font-weight:500;color:var(--muted);box-shadow:var(--shadow-md);transition:all .2s;white-space:nowrap}
.dark-toggle:hover{border-color:var(--accent);color:var(--accent)}
.dash-footer{
  text-align:center;padding:36px 0 44px;
  font-size:.62rem;letter-spacing:.12em;color:var(--faint);
  font-family:var(--mono);text-transform:uppercase;
  border-top:1px solid var(--line);margin-top:52px;
}

/* ── SHARED OVERLAY CHROME ── */
.ov-wrap{position:fixed;inset:0;z-index:200;display:none;flex-direction:column;background:var(--bg)}
.ov-wrap.open{display:flex}
.ov-topbar{padding:18px 32px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.ov-logo{font-size:18px;font-weight:700;color:#fff}.ov-logo em{font-style:italic}
.ov-sub{font-size:12px;font-family:var(--mono);margin-top:2px}
.ov-close{background:rgba(255,255,255,.15);border:none;border-radius:8px;color:#fff;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;padding:7px 16px;cursor:pointer;font-family:'DM Sans',sans-serif}
.ov-close:hover{background:rgba(255,255,255,.25)}
/* Reset / clear button shared across the dog / cat / echo-Q
   calculator overlay topbars. Was 3× duplicated inline-styled
   button + onmouseover/onmouseout pairs (2026-05-08 audit
   leftover); unified into one class on 2026-05-10. The hover
   uses CSS, removing 6 inline JS handlers — a step on the path
   to dropping CSP 'unsafe-inline' from script-src. */
.ov-reset-btn{background:rgba(255,255,255,.15);color:#fff;border:1.5px solid rgba(255,255,255,.35);border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}
.ov-reset-btn:hover{background:rgba(255,255,255,.28)}
.ov-body{flex:1;overflow-y:auto;padding:0 0 64px}
.ov-inner{max-width:1200px;margin:0 auto;padding:32px 48px 0}

/* ── CALC SHARED ── */
.cc{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:20px}
.cc-head{background:var(--green-xs);border-bottom:1px solid var(--border);padding:12px 20px;font-size:11px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--green)}
.cc-body{padding:20px}
.weight-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.weight-label{font-size:14px;font-weight:500;min-width:80px}
.weight-wrap{display:flex;align-items:center;gap:8px;border:2px solid var(--border);border-radius:8px;padding:8px 14px;background:white;transition:border-color .15s}
.weight-wrap:focus-within{border-color:var(--green)}
.weight-input{width:100px;border:none;outline:none;font-family:var(--mono);font-size:22px;font-weight:500;color:var(--green);text-align:center;background:transparent}
.weight-unit{font-size:14px;color:var(--muted);font-weight:500}
.weight-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.badge{padding:5px 12px;border-radius:20px;font-size:12px;font-weight:500;cursor:pointer;border:1.5px solid var(--border);background:var(--bg2);color:var(--muted);transition:all .15s;font-family:'DM Sans',sans-serif}
.badge:hover{border-color:var(--green);color:var(--green)}
.drug-grid{display:grid;grid-template-columns:1fr 210px;gap:10px;align-items:start}
.drug-card{border:1.5px solid var(--border);border-radius:8px;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.drug-card.active{border-color:var(--green);box-shadow:0 2px 8px rgba(45,90,61,.12)}
.drug-top{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;background:var(--bg2);user-select:none;transition:background .1s}
.drug-top:hover,.drug-card.active .drug-top{background:var(--green-xs)}
.drug-check{width:22px;height:22px;border-radius:6px;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
.drug-card.active .drug-check{background:var(--green);border-color:var(--green)}
.drug-check svg{display:none}.drug-card.active .drug-check svg{display:block}
.drug-name-he{font-size:15px;font-weight:600}.drug-name-en{font-size:11px;color:var(--muted);font-family:var(--mono);margin-top:1px}
.dose-col{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.drug-dose-tag{font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--green-xs);padding:3px 8px;border-radius:4px;white-space:nowrap}
.drug-card.active .drug-dose-tag{background:var(--green);color:white}
.actual-mg{font-family:var(--mono);font-size:11px;color:var(--green);font-weight:500;min-height:14px;direction:ltr;text-align:right}
.drug-options{display:none;padding:10px 16px 14px;background:var(--green-xs);border-top:1px solid var(--border);gap:10px;flex-wrap:wrap;align-items:center}
.drug-card.active .drug-options{display:flex}
.option-label{font-size:12px;font-weight:500;color:var(--green);margin-left:4px}
.option-group{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.drug-fcard{background:var(--bg3);border:1px solid var(--line2);border-radius:8px;padding:8px 10px;margin-bottom:0;direction:rtl;font-family:'DM Sans',sans-serif;overflow-y:auto;font-size:.72rem}
.drug-fcard-name{font-size:.72rem;font-weight:600;margin-bottom:1px}
.drug-fcard-cls{font-size:.58rem;color:var(--muted);margin-bottom:3px;letter-spacing:.04em}
.drug-fcard-dose{font-size:.69rem;line-height:1.45;white-space:pre-line}
.drug-fcard-note{font-size:.62rem;color:var(--muted);margin-top:3px;border-top:1px solid var(--line);padding-top:3px;line-height:1.4}
.drug-fcard-wrap{display:flex;flex-direction:column;gap:0}
.cat-rate-btn{font-size:.6rem;padding:2px 8px;border:1px solid var(--line2);border-radius:20px;background:none;cursor:pointer;font-family:'DM Sans',sans-serif;color:var(--muted);transition:all .15s}
.cat-rate-btn:hover{color:var(--teal);border-color:var(--teal)}
.cat-rate-btn.sel{background:var(--teal);color:#fff;border-color:var(--teal)}
.cat-rate-row{display:flex;align-items:center;gap:5px;padding:4px 0 2px;flex-wrap:wrap}
.cat-rate-lbl{font-size:.58rem;letter-spacing:.08em;color:var(--muted);white-space:nowrap;flex-shrink:0}
.dog-rate-row{display:flex;align-items:center;gap:5px;padding:4px 0 2px;flex-wrap:wrap}
.dog-rate-lbl{font-size:.58rem;letter-spacing:.08em;color:var(--muted);white-space:nowrap;flex-shrink:0}
.dog-rate-btn{font-size:.6rem;padding:2px 8px;border:1px solid var(--line2);border-radius:20px;background:none;cursor:pointer;font-family:'DM Sans',sans-serif;color:var(--muted);transition:all .15s}
.dog-rate-btn:hover{color:var(--accent);border-color:#a8c4b4}
.dog-rate-btn.sel{background:var(--accent);color:#fff;border-color:var(--accent)}
.opt-btn{padding:4px 10px;border-radius:6px;border:1.5px solid var(--border);background:white;font-size:12px;font-family:'DM Sans',sans-serif;font-weight:500;color:var(--muted);cursor:pointer;transition:all .12s}
.opt-btn.sel{background:var(--green);border-color:var(--green);color:white}
.drug-result{display:none;padding:8px 16px 12px;background:var(--bg2);border-top:1px solid var(--border);font-family:var(--mono);font-size:13px;color:var(--green)}
.drug-card.active .drug-result{display:block}
.result-line{line-height:1.6}
.drug-result-wrap{display:flex;align-items:flex-start;gap:6px;direction:rtl}
.drug-result-wrap .result-content{flex:1;min-width:0}
.drug-copy-btn{flex-shrink:0;background:none;border:1px solid var(--line2);border-radius:12px;padding:2px 8px;font-size:.58rem;cursor:pointer;color:var(--faint);font-family:'DM Sans',sans-serif;transition:all .15s;margin-top:2px;white-space:nowrap}
.drug-copy-btn:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
.drug-copy-btn.copied{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}.result-warn{font-size:11px;color:var(--amber);margin-top:4px}
.output-area{padding:20px;font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--text);min-height:80px;white-space:pre-wrap;direction:rtl}
.output-empty{color:var(--muted);font-style:italic}
.copy-btn{position:absolute;top:12px;left:12px;background:var(--green);color:white;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-family:'DM Sans',sans-serif;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .15s}
.copy-btn:hover{background:var(--green-l)}.copy-btn.copied{background:#1a7a4a}
.calc-footer{text-align:center;font-size:11px;color:var(--muted);font-family:var(--mono);margin-top:8px;padding-bottom:32px}

/* ── CAT CALC SPECIFIC ── */
#catOverlay .ov-topbar{background:var(--teal)}
#catOverlay .ov-logo em{color:#9dd4e0}
#catOverlay .ov-sub{color:#9dd4e0}
#catOverlay .cc-head{background:var(--teal-xs);color:var(--teal)}
#catOverlay .drug-card.active{border-color:var(--teal);box-shadow:0 2px 8px rgba(26,92,110,.13)}
#catOverlay .drug-top:hover,#catOverlay .drug-card.active .drug-top{background:var(--teal-xs)}
#catOverlay .drug-card.active .drug-check{background:var(--teal);border-color:var(--teal)}
#catOverlay .drug-card.active .drug-dose-tag{background:var(--teal);color:white}
#catOverlay .drug-options{background:var(--teal-xs);border-color:var(--teal-br)}
#catOverlay .option-label{color:var(--teal)}
#catOverlay .opt-btn.sel{background:var(--teal);border-color:var(--teal);color:white}
#catOverlay .drug-result{color:var(--teal)}
#catOverlay .drug-card.active .drug-result{display:block}
#catOverlay .weight-wrap:focus-within{border-color:var(--teal)}
#catOverlay .weight-input{color:var(--teal)}
#catOverlay .copy-btn{background:var(--teal)}
#catOverlay .copy-btn:hover{background:var(--teal-l)}
#catOverlay .actual-mg{color:var(--teal)}
#catOverlay .drug-card.disabled{opacity:.45;pointer-events:none}
#catOverlay .drug-card.warn-drug{border-color:var(--amber)}
.stage-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.stage-lbl{font-size:13px;font-weight:600;min-width:50px}
.stage-btn{padding:7px 16px;border-radius:7px;border:1.5px solid var(--teal-br);background:white;font-size:13px;font-family:'DM Sans',sans-serif;font-weight:500;color:var(--teal);cursor:pointer;transition:all .15s}
.stage-btn:hover{border-color:var(--teal)}
.stage-btn.sel{background:var(--teal);border-color:var(--teal);color:white;font-weight:600}
.stage-info{margin-top:14px;padding:10px 14px;border-radius:7px;font-size:13px;line-height:1.55;display:none}
.stage-info.show{display:block}
.stage-info.info-b1{background:#edf7f0;border:1px solid #a7d7b4;color:#1a5c30}
.stage-info.info-b1d{background:#fef9ec;border:1px solid #f0c040;color:#7a4f00}
.stage-info.info-b2{background:#fff3e6;border:1px solid #f5a623;color:#7a3e00}
.stage-info.info-c{background:#fdecea;border:1px solid #e57373;color:#7b1f1f}
.stage-info.info-d{background:#f5eeff;border:1px solid #b39ddb;color:#4a1a7a}
.flags-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.flag-btn{padding:5px 14px;border-radius:6px;border:1.5px solid var(--teal-br);background:white;font-size:12px;font-family:'DM Sans',sans-serif;font-weight:500;color:var(--teal);cursor:pointer;transition:all .15s}
.flag-btn:hover{border-color:var(--teal)}
.flag-btn.on{background:#fff3e6;border-color:var(--amber);color:#92400e;font-weight:600}
.drug-section-label{font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);padding:6px 2px 4px;margin-top:4px}
.result-stop{color:#c0392b;font-size:11px;margin-top:4px;font-weight:600}
.result-note{color:var(--muted);font-size:11px;margin-top:4px;font-style:italic}
.rr-banner{display:none;margin-top:14px;padding:10px 14px;border-radius:7px;font-size:12.5px;line-height:1.6;border:1px solid}
.rr-banner.show{display:block}
.rr-sub{background:#edf7f0;border-color:#a7d7b4;color:#1a5c30}
.rr-chf{background:#fdecea;border-color:#e57373;color:#7b1f1f}
#catOverlay .cc-head.teal{background:var(--teal-xs);color:var(--teal)}

/* ── TEMPLATES ── */





/* ── TEMPLATE HERO (top-of-page primary action) ──
   Clalit-inspired soft-blue band on white surface — creates clear
   visual separation between the templates section and the
   calculators / notes / saved reports below. */
/* 2026-05-15: slimmed hero. Was 40px+44px padding + 1.65rem title +
   subtitle paragraph + 64px bottom margin, ~324px of chrome before
   any content. Now ~80px. Title stays informative but compact;
   subtitle hidden (the title + tabs below tell the story); tools
   move to a horizontal row so they do not stack 5-tall on the side. */
.tmpl-hero{
  position:relative;
  background:#eaf2f5;
  border:1px solid #d8e6ec;
  border-radius:10px;
  padding:12px 18px 10px;
  margin-bottom:16px;
  box-shadow:0 1px 6px 0 rgba(15,30,41,.04);
}
.tmpl-hero-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;margin-bottom:10px;padding-bottom:10px;
  border-bottom:1px solid var(--line-2,#eceff2);
}
.tmpl-hero-kicker{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'DM Mono',ui-monospace,monospace;
  font-size:.55rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--accent);
  margin-bottom:2px;
}
.tmpl-hero-kicker::before{
  content:'';width:18px;height:1px;background:var(--gold,#b8962e);
}
.tmpl-hero-title{
  font-family:'Heebo','DM Sans',sans-serif;
  font-size:1.15rem;font-weight:500;
  color:var(--text);letter-spacing:-.012em;line-height:1.2;
}
.tmpl-hero-title em{font-style:normal;color:var(--gold,#b8962e);font-weight:500;margin:0 4px}
/* Subtitle hidden, the section title + tabs below are self-explanatory.
   The element stays in DOM so any code that reads its textContent still works. */
.tmpl-hero-sub{display:none}
.tmpl-hero-kbd{
  font-family:'DM Mono',ui-monospace,monospace;
  font-size:.5rem;letter-spacing:.18em;
  color:var(--faint);text-transform:uppercase;flex-shrink:0;
  align-self:center;white-space:nowrap;
}
/* Tools row, horizontal compact pills. Tools are secondary surface;
   they should not dominate vertical space the way they used to. */
.tmpl-hero-tools{display:flex;flex-direction:row;align-items:center;gap:6px;flex-shrink:0;align-self:center;flex-wrap:wrap;justify-content:flex-end;max-width:62%}
.tmpl-hero-btn{
  font-size:.66rem;font-weight:600;
  background:var(--bg);color:var(--accent);
  border:1px solid #e0c490;
  border-radius:7px;padding:5px 10px;
  cursor:pointer;font-family:'DM Sans',sans-serif;
  white-space:nowrap;transition:all .15s;
}
.tmpl-hero-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Find/replace preview, live count of matches as user types */
.tfr-preview{
  margin-top:4px;padding:10px 14px;
  background:var(--bg2);border:1px solid var(--line2);border-radius:8px;
  font-size:.78rem;color:var(--text);line-height:1.5;direction:rtl;
  font-family:'DM Sans',sans-serif;
}
.tfr-preview strong{color:var(--accent);font-weight:700}
.tmpl-nav{display:flex;border-bottom:1px solid var(--line);margin-bottom:20px;gap:4px}
/* Templates sub-pivot (echo / abdomen) — only shown when active view
   is "templates". Phase 3 of DESIGN_REVAMP.md (2026-05-11). Uses .stab
   styling for visual consistency with other secondary tabs but with a
   slightly tighter footprint since it's strictly a 2-button switch. */
.tmpl-subnav{display:none;gap:6px;margin:-12px 0 18px;padding:4px 0 0;border-bottom:1px dashed var(--line2,var(--line))}
/* Phase 5.7 — top-level template-type pivot (אקו / בטן / שחרור).
   This is the most senior nav on the /templates view: which world am
   I in? Bigger than disease pills, navy active state (distinguishes
   from gold disease-pill active), generous padding. */
.tmpl-subnav{display:flex;gap:6px;padding:12px 18px;background:var(--bg2);border-bottom:1px solid var(--line);align-items:center}
.tmpl-subnav .stab{padding:10px 22px;font-size:1.02rem;font-weight:600;border-radius:10px}
.tmpl-subnav .stab.active{background:var(--navy);border-color:var(--navy);color:#fff}
.tmpl-subnav .stab:hover:not(.active){background:var(--bg);border-color:var(--line2)}
/* Phase 5.7 — species row (כלב / חתול): segmented navy, matches the
   /consult .cw-species-toggle visual exactly so the same control
   shape carries through both surfaces. */
#echo-species-wrap.stab-wrap,
#section-echo-cat > .stab-wrap:not(.stab-wrap-scroll){border-bottom:0;padding-block-end:0;gap:0;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:2px;display:inline-flex;width:auto}
#echo-species-wrap.stab-wrap > .stab,
#section-echo-cat > .stab-wrap:not(.stab-wrap-scroll) > .stab{font-size:.92rem;padding:6px 18px;border-radius:6px;border-color:transparent}
#echo-species-wrap.stab-wrap > .stab.active,
#section-echo-cat > .stab-wrap:not(.stab-wrap-scroll) > .stab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
/* Phase 5.7 — stage row (B1, B1 גבולי, B2 …) on /templates: smaller
   teal pill, matches /consult .cw-disease-stage-chip. The disease
   row keeps the gold .stab.active default — gold for disease, teal
   for stage, navy for type/species. Clear hierarchy by colour. */
.stab-wrap[id$="-stage-wrap"] > .stab{font-size:.78rem;padding:5px 11px;border-radius:14px}
.stab-wrap[id$="-stage-wrap"] > .stab.active{background:var(--teal,#0d9488);border-color:var(--teal,#0d9488);color:#fff}
.stab-wrap[id$="-stage-wrap"] > .stab.active .stab-cnt{background:rgba(255,255,255,.25);color:#fff}

/* ═══ CONSULT VIEW SCAFFOLD (Phase 4 of DESIGN_REVAMP.md, 2026-05-11)
   Three-column layout: 240px left rail + 1fr center + 240px right rail.
   Stacks on <1100px viewports.
   Hidden by default; registry.js sets display:grid when consult view
   is active. ═══ */
.consult-scaffold{display:none;grid-template-columns:240px 1fr 240px;gap:16px;margin:0 0 24px;align-items:stretch}
.consult-rail{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px 16px;font-family:'DM Sans',sans-serif}
.consult-rail-head{font-family:'DM Sans',sans-serif;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.consult-tool-btn{display:block;width:100%;text-align:right;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin:0 0 6px;font-family:'DM Sans',sans-serif;font-size:.76rem;color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,transform .1s}
.consult-tool-btn:hover{background:var(--bg2);border-color:var(--accent);transform:translateY(-1px)}
.consult-center{display:flex;flex-direction:column;gap:14px}
.consult-hero-card{background:linear-gradient(155deg,var(--bg2) 0%,var(--bg) 100%);border:1px solid var(--line);border-radius:14px;padding:24px 26px;position:relative;overflow:hidden}
.consult-hero-card::before{content:'';position:absolute;top:-30px;inset-inline-end:-30px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,var(--gold,#B8962E) 0%,transparent 70%);opacity:.08;pointer-events:none}
.consult-hero-eyebrow{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.18em;color:var(--accent);margin-bottom:8px}
.consult-hero-title{font-family:'Heebo',sans-serif;font-size:1.6rem;font-weight:600;color:var(--text);margin:0 0 6px;letter-spacing:-.01em}
.consult-hero-sub{font-family:'DM Sans',sans-serif;font-size:.82rem;color:var(--muted);margin:0 0 18px;line-height:1.55}
.consult-hero-cta{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:12px 26px;font-family:'DM Sans',sans-serif;font-size:.82rem;font-weight:500;letter-spacing:.03em;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s}
.consult-hero-cta:hover{background:var(--accent-hi,var(--accent));transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,166,156,.18)}
.consult-hero-kbd{margin-top:18px;font-family:'DM Mono',monospace;font-size:.6rem;color:var(--faint);letter-spacing:.04em;line-height:1.5}
.consult-tips-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.consult-tip{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-family:'DM Sans',sans-serif;font-size:.7rem;color:var(--muted);line-height:1.5}
.consult-tip strong{color:var(--accent);font-weight:600}
@media (max-width:1100px){
  .consult-scaffold{grid-template-columns:1fr}
  .consult-tips-row{grid-template-columns:1fr}
}
/* Phase 5.10 (2026-05-24, from 5555.mp4 audit) — workspace nav
   typography bump. Was 0.7rem uppercase muted-grey with a 2px
   underline-only active state — the user repeatedly reported "the
   buttons don't work / I can't see what's active". They DO work
   (the navigation fires) but were visually indistinguishable from
   labels. Now: 0.95rem regular-case, navy on rest, gold-filled pill
   on active — unmistakable as a primary navigation control. */
.mtab{
  font-size:.95rem;letter-spacing:.02em;text-transform:none;
  color:var(--muted);padding:10px 18px;
  cursor:pointer;border:none;border-radius:8px;margin-bottom:0;
  background:none;transition:background .15s,color .15s;
  font-family:'DM Sans',sans-serif;font-weight:500;
}
.mtab.active{color:#fff;background:var(--gold);font-weight:600}
.mtab:hover:not(.active){color:var(--text);background:var(--bg2)}

/* Phase 5.7 — wrap gets breathing room + a faint label slot beside
   it (added in HTML on a per-row basis if needed). The gap between
   pill chips is generous; no underline because chips own the active
   state via background. */
.stab-wrap{display:flex;border-bottom:1px solid var(--line);margin-bottom:18px;gap:6px;padding-block-end:10px;flex-wrap:wrap}
/* 2026-05-18: variant for disease-tab rows that previously wrapped to
   2 rows of 14+ chips (very visually noisy per video audit issue S).
   Now scrolls horizontally on one line; webkit scrollbar hidden, FF
   gets the thin native bar. Each .stab inside stays at its natural
   width via flex-shrink:0 so labels never compress to ellipsis. The
   container is given a subtle inset fade on the inline-start edge so
   the user sees there's more content to scroll to. */
/* Phase 5.10 (2026-05-24, from 5555.mp4 audit) — REVERSE the
   horizontal-scroll decision from 2026-05-18. The 15+ disease pills
   cramped into a single scrollable row was a usability nightmare:
   the user couldn't see all options at a glance, had to scroll
   sideways, and the active-pill highlight was often off-screen.
   Now: wrap to 2-3 lines. The video audit (5555.mp4 f01-f04, f25)
   directly showed this row scrolling and the user struggling to
   scan it. Vertical space cost is ~30-40px more than scroll mode;
   the readability gain is enormous. */
.stab-wrap-scroll{flex-wrap:wrap;overflow-x:visible;overflow-y:visible;gap:6px}
.stab-wrap-scroll::-webkit-scrollbar{height:4px}
.stab-wrap-scroll::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px}
.stab-wrap-scroll > .stab{flex-shrink:0}
/* In RTL the "more content" direction is from right (start) to left
   (end), so flip the mask gradient accordingly when dir=rtl is set
   on an ancestor. */
[dir="rtl"] .stab-wrap-scroll{
  -webkit-mask-image:linear-gradient(to right, rgba(0,0,0,1) calc(100% - 24px), rgba(0,0,0,0));
          mask-image:linear-gradient(to right, rgba(0,0,0,1) calc(100% - 24px), rgba(0,0,0,0));
}
/* Phase 5.7 (2026-05-24) — premium typography pass on /templates view.
   User feedback: "הכול צריך להיות באותיות יותר גדולות ויותר קריא ונוח
   וזורם, חווית המשתמש פה מתסכלת ולא נוחה". The old .stab was 0.65rem
   (≈10px) uppercase faint text with a thin underline — designed for
   density when /templates housed every possible tab. Now that the
   consult workspace owns the daily-driver UI, /templates can breathe:
   bigger letters, pill-shaped active state matching .cw-disease-pill,
   readable counts. The visual language aligns with /consult's
   left-rail so flipping between the two surfaces stops feeling like
   crossing into a different app. */
.stab{
  font-size:.88rem;letter-spacing:0;text-transform:none;
  color:var(--muted);padding:8px 14px;
  cursor:pointer;border:1px solid transparent;border-radius:8px;
  background:none;transition:background .15s,color .15s,border-color .15s;
  font-family:'DM Sans',sans-serif;font-weight:500;
  margin-bottom:0;
}
.stab.active{
  color:#fff;background:var(--gold);border-color:var(--gold);
  font-weight:600;border-bottom-color:var(--gold);
}
.stab:hover:not(.active){color:var(--text);background:var(--bg2);border-color:var(--line)}

/* Template cards — design language matched to home.html: clean white
   surface, soft borders, subtle hover lift, single primary CTA. */
.tmpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.tmpl-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  overflow:hidden;
  box-shadow:0 1px 9px 0 rgba(15,30,41,.06);   /* Clalit-style resting halo */
  transition:border-color .2s,box-shadow .25s,transform .15s;
  display:flex;flex-direction:column;
}
.tmpl-card:hover{
  border-color:#cfd5db;
  box-shadow:0 4px 18px 0 rgba(15,30,41,.10);
}
/* Template card header — prominent name on the right (RTL start),
   action buttons on the left. The name is the FIRST thing the user
   sees; if it's small or invisible the picker becomes guess-the-card.
   Bigger, bolder, with a gold dot accent before it so it reads as
   "this is the title of this template" — not just an editable input. */
.tmpl-hdr{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:14px 18px 12px;
  border-bottom:1px solid var(--line-2,#eceff2);
  background:linear-gradient(180deg,#fbfbfa 0%,#fff 100%);
}
.tmpl-name-wrap{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.tmpl-name-wrap::before{
  content:'';
  flex-shrink:0;
  width:7px;height:7px;
  border-radius:50%;
  background:var(--gold,#B8962E);
  box-shadow:0 0 0 3px rgba(184,150,46,.15);
}
.tmpl-name{
  background:transparent;border:none;outline:none;
  color:var(--text);
  font-size:1.05rem;font-weight:700;letter-spacing:-.01em;line-height:1.2;
  width:100%;direction:rtl;
  font-family:'Heebo','DM Sans',sans-serif;
  padding:4px 6px;margin-inline-end:-6px;
  border-radius:5px;
  transition:background .15s,box-shadow .15s;
}
.tmpl-name::placeholder{color:var(--faint);font-weight:500;font-style:italic}
.tmpl-name:hover{background:rgba(15,30,41,.03)}
.tmpl-name:focus{background:#fff;box-shadow:0 0 0 2px var(--accent)}

/* Action buttons — primary "העבר" filled, others ghost.
   Visual hierarchy makes the primary action obvious. */
.del-t{
  font-size:.95rem;line-height:1;
  color:var(--faint);background:transparent;
  border:1px solid transparent;
  border-radius:7px;
  width:28px;height:28px;padding:0;
  cursor:pointer;font-family:inherit;
  display:inline-flex;align-items:center;justify-content:center;
  margin:0;transition:all .15s;
}
.del-t:hover{color:#c0392b;background:rgba(192,57,43,.08);border-color:rgba(192,57,43,.2)}

.copy-t{
  font-size:.65rem;letter-spacing:.05em;
  color:var(--muted);background:transparent;
  border:1px solid var(--line2);
  border-radius:7px;padding:5px 11px;
  cursor:pointer;white-space:nowrap;
  font-family:'DM Sans',sans-serif;font-weight:500;
  transition:all .15s;
}
.copy-t:hover,.copy-t.copied{
  color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo);
}

.save-t{
  font-size:.65rem;letter-spacing:.05em;
  color:var(--muted);background:transparent;
  border:1px solid var(--line2);
  border-radius:7px;padding:5px 11px;
  cursor:pointer;white-space:nowrap;
  font-family:'DM Sans',sans-serif;font-weight:500;
  transition:all .15s;
  opacity:0;pointer-events:none;
}
.save-t.dirty{opacity:1;pointer-events:auto;color:#5a7a3a;border-color:#b0cc90;background:#f3f8e8}
.save-t.saved{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
/* "Move to..." per-card category selector — added 2026-05-10 with
   the 3-section restructure. Lets the user re-categorize a template
   between any echo or abdomen destination without re-creating it.
   Compact, ghost-style so it doesn't compete with the primary "send
   to FR" action. */
.move-t{
  font-size:.62rem;letter-spacing:.04em;
  color:var(--muted);background:var(--bg);
  border:1px solid var(--line2);
  border-radius:7px;padding:5px 22px 5px 10px;
  cursor:pointer;font-family:'DM Sans',sans-serif;
  outline:none;transition:all .12s;
  /* 2026-05-17: bumped max-width 130 → 180 and added inline padding-end
     so the native dropdown caret stops eating the last two characters
     of "↔ העבר ל…". Was visually truncating to "↔ העבר ל" on most
     widths. */
  max-width:180px;direction:rtl;
  appearance:none;-webkit-appearance:none;
}
.move-t:hover{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.move-t:focus{border-color:var(--accent)}

/* Version history restore button — only rendered when a snapshot
   exists. Compact ghost style; muted color so it doesn't compete
   with the primary "send to FR" action. */
.hist-t{
  font-size:.7rem;line-height:1;
  color:var(--muted);background:transparent;
  border:1px solid var(--line2);border-radius:7px;
  width:28px;height:28px;padding:0;
  cursor:pointer;font-family:inherit;
  display:inline-flex;align-items:center;justify-content:center;
  margin:0;transition:all .15s;
}
.hist-t:hover{color:var(--accent);background:var(--accent-lo);border-color:#e0c490}

/* Ghost-row button — full-width ghost style used by the "📋 ארכיון
   דוחות" trigger in the right sidebar. Replaces inline-styled
   .style.borderColor + .style.color on hover. */
.dash-ghost-row-btn{
  width:100%;margin-top:6px;
  background:none;border:1px solid var(--line2);border-radius:7px;
  padding:7px 12px;font-size:12px;color:var(--muted);
  cursor:pointer;font-family:'DM Sans',sans-serif;text-align:right;
  transition:all .15s;
}
.dash-ghost-row-btn:hover{border-color:var(--accent);color:var(--accent)}

/* Dashboard footer chip-style button — Export Data / Import Data
   in the dash-footer cluster. Sits on a dark surface so the colors
   are white-tinted. */
.dash-footer-btn{
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.2);
  border-radius:6px;color:rgba(255,255,255,.7);
  font-size:10px;padding:3px 10px;cursor:pointer;
  font-family:'DM Sans',sans-serif;transition:all .15s;
}
.dash-footer-btn:hover{
  background:rgba(201,168,76,.25);color:#C9A84C;
}

/* Green primary action button on overlay topbars — Send-to-FR */
.ov-send-btn{
  width:100%;
  background:var(--green);color:#fff;
  border:none;padding:9px 14px;
  font-size:12px;font-weight:600;
  cursor:pointer;font-family:'DM Sans',sans-serif;
  direction:rtl;transition:background .15s;
}
.ov-send-btn:hover{background:#1a6b3a}

/* Drag-to-reorder visual states */
.tmpl-card{cursor:default}
.tmpl-card.dragging{opacity:.4;cursor:grabbing}
.tmpl-card.drag-over{box-shadow:0 0 0 2px var(--accent), 0 4px 18px rgba(184,150,46,.25)}
.tmpl-card:active{cursor:grabbing}
/* The card-header drag handle area gets the grab cursor on hover */
.tmpl-hdr{cursor:grab}
.tmpl-hdr:active{cursor:grabbing}

/* Templates Echo compact-mode visual differentiation.
   When body[data-dash-section="tmpl-echo"] is active, templates render
   in a denser, edit-focused style: tighter padding, smaller textareas
   visible by default, name field more prominent. */
body[data-dash-section="tmpl-echo"] .tmpl-grid{
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:10px;
}
body[data-dash-section="tmpl-echo"] .tmpl-card{
  border-color:#dde3ef;
  background:#fcfcfc;
}
body[data-dash-section="tmpl-echo"] .tmpl-hdr{
  padding:10px 14px 8px;
}
body[data-dash-section="tmpl-echo"] .tmpl-name{
  font-size:.95rem;
}
body[data-dash-section="tmpl-echo"] .tmpl-body{
  font-size:.74rem;
  padding:10px 14px 12px;
}
/* Library banner — small accent strip on the inline-start edge */
body[data-dash-section="tmpl-echo"] .tmpl-card{
  border-inline-start:3px solid var(--accent);
}

/* Report-type tabs (echo / disc / focus) inside Cardiology Consult.
   Sit ABOVE the species tabs so the user picks "what kind of report
   are we writing" first. Compact pill style — distinct from the
   navy-bar nav-ghost and the smaller .stab tabs below. */
.rt-wrap{display:flex;gap:6px;padding:14px 0 8px;border-bottom:1px solid var(--line);margin-bottom:14px;flex-wrap:wrap}
.rt-tab{
  font-size:.75rem;letter-spacing:.04em;
  background:var(--bg);color:var(--muted);
  border:1px solid var(--line2);
  border-radius:100px;padding:7px 18px;
  cursor:pointer;font-family:'DM Sans',sans-serif;font-weight:500;
  white-space:nowrap;transition:all .15s;
}
.rt-tab:hover{color:var(--accent);border-color:#e0c490;background:var(--accent-lo)}
.rt-tab.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.rt-hint{font-size:.55rem;color:var(--faint);margin-inline-start:4px;font-family:'DM Mono',ui-monospace,monospace;letter-spacing:.04em}

/* Visibility rules driven by body data attributes (set in
   switchDashSection / switchReportType):
   - Echo-only sub-tabs hide in disc/focus modes
   - Tmpl-only tabs (mine/other) hide in Cardiology Consult & Abdomen */
body[data-dash-report-type="disc"] [data-echo-only="1"],
body[data-dash-report-type="focus"] [data-echo-only="1"]{display:none !important}
body[data-dash-section="consult"] [data-tmpl-only="1"],
body[data-dash-section="tmpl-abdomen"] [data-tmpl-only="1"]{display:none !important}

.tmpl-body{
  width:100%;background:transparent;border:none;outline:none;
  color:#5e574f;
  font-family:'Heebo','DM Sans',sans-serif;
  font-size:.78rem;line-height:1.85;
  padding:14px 16px 16px;
  resize:vertical;
  min-height:130px;max-height:260px;
  direction:rtl;
}
.add-btn{margin-top:10px;background:none;border:1.5px dashed var(--line2);border-radius:12px;color:var(--faint);font-size:.7rem;letter-spacing:.1em;padding:11px;width:100%;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s}
.add-btn:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}

@media (max-width: 768px) {
  .sidebar{width:220px!important}
  .ov-inner{padding:20px 24px 0!important}
  .eq-outer{grid-template-columns:1fr!important}
  .drug-grid{grid-template-columns:1fr 160px!important}
}

@media (max-width: 680px) {
  .sidebar{width:100%!important;min-width:unset;border-left:none;border-bottom:1px solid var(--line)}
  .main-wrap{flex-direction:column!important}
  .fr-overlay .fr-body{flex-direction:column!important}
  .fr-phrases-panel{width:100%!important;max-width:unset!important;border-left:none!important;border-bottom:1px solid var(--line)}
  .fr-main{min-height:200px}
  .drug-row-wrap{flex-direction:column!important}
  .drug-grid{grid-template-columns:1fr!important}
  .drug-fcard{width:100%!important}
  #dogFormPanel,#catFormPanel{width:100%!important;max-width:unset!important;border-left:none!important;border-bottom:1px solid var(--line)}
  .ov-body[style*="flex-direction:row"]{flex-direction:column!important}
  .fp-resize-handle{display:none}
  .dark-toggle{bottom:70px}
  .tmpl-grid{grid-template-columns:1fr!important}
  .card-grid{grid-template-columns:1fr!important}
}

.fr-btn.print{color:var(--muted)}.fr-btn.print:hover{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
@media print {
  body > *:not(#fr-print-frame){ display:none!important }
  #fr-print-frame{ display:block!important; position:static!important; }
}

/* ───── §2: archive-overlay modal ─────────────────────────── */
.arc-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:900;display:none;align-items:center;justify-content:center;}
.arc-overlay.open{display:flex;}
.arc-box{background:var(--bg2);border-radius:12px;width:min(720px,95vw);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3);}
.arc-hdr{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.arc-title{font-size:15px;font-weight:600;color:var(--text);}
.arc-hdr-actions{display:flex;gap:8px;align-items:center;}
.arc-clear{font-size:11px;color:var(--muted);background:none;border:1px solid var(--line2);border-radius:5px;padding:4px 10px;cursor:pointer;}
.arc-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted);padding:0 4px;}
.arc-body{overflow-y:auto;flex:1;padding:12px 16px;display:flex;flex-direction:column;gap:8px;}
.arc-row{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;}
.arc-meta{display:flex;gap:10px;align-items:center;}
.arc-date{font-size:11px;font-family:monospace;color:var(--muted);}
.arc-src{font-size:10px;background:var(--accent);color:#fff;border-radius:4px;padding:1px 6px;}
.arc-patient{font-size:13px;font-weight:500;color:var(--text);direction:rtl;}
.arc-preview{font-size:11px;color:var(--muted);direction:rtl;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.arc-actions{display:flex;gap:6px;margin-top:4px;}
.arc-btn{font-size:11px;border:none;border-radius:5px;padding:4px 12px;cursor:pointer;font-family:'DM Sans',sans-serif;}
.arc-btn-open{background:var(--accent);color:#fff;}
.arc-btn-del{background:none;border:1px solid var(--line2);color:var(--muted);}
.arc-btn-del:hover{border-color:#f87171;color:#f87171;}

/* ───── §3: drug-card f-grid (echo-params + drug calc) ───── */
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.fcard{background:var(--bg2);border:1px solid var(--line);border-radius:10px;overflow:hidden;transition:border-color .15s}
.fcard:hover{border-color:var(--line2)}
.fcard-top{padding:12px 16px 8px;border-bottom:1px solid var(--line);background:var(--bg3)}
.fcard-name{font-size:.92rem;font-weight:600;color:var(--text)}
.fcard-cls{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;margin-top:2px;font-family:var(--mono)}
.fcard-row{display:grid;grid-template-columns:52px 1fr;gap:8px;padding:7px 16px;border-bottom:1px solid var(--line)}
.fcard-row:last-child{border-bottom:none}
.fcard-lbl{font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-family:var(--mono);padding-top:2px;text-align:right}
.fcard-val{font-size:.79rem;color:var(--text);line-height:1.55;direction:rtl}
.fcard-dose{font-family:var(--mono);font-size:.78rem;color:var(--text);font-weight:500}
.fcard-notes{color:var(--muted);font-size:.75rem}

/* ── ECHO QUICK — scoped ── */
#echoQOverlay .eq-outer{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 16px;max-width:900px;width:100%;margin:0 auto;align-items:start}
#echoQOverlay .eq-left,#echoQOverlay .eq-right{display:flex;flex-direction:column;gap:8px}
#echoQOverlay .eq-panel{background:#fff;border:1px solid var(--border);border-radius:9px;overflow:hidden}
#echoQOverlay .eq-ph{padding:7px 14px;font-size:9px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;display:flex;align-items:center;gap:7px}
#echoQOverlay .eq-ph-g{background:var(--green-xs);border-bottom:1px solid var(--border);color:var(--green)}
#echoQOverlay .eq-ph-t{background:var(--teal-xs);border-bottom:1px solid var(--teal-br);color:var(--teal)}
#echoQOverlay .eq-ph-m{background:#eeece8;border-bottom:1px solid var(--line2);color:var(--muted)}
#echoQOverlay .eq-mb{font-size:8.5px;letter-spacing:.8px;padding:1px 6px;border-radius:10px;font-weight:600}
#echoQOverlay .eq-ph-g .eq-mb{background:rgba(45,90,61,.12);color:var(--green)}
#echoQOverlay .eq-ph-t .eq-mb{background:rgba(26,92,110,.1);color:var(--teal)}
#echoQOverlay .eq-ph-m .eq-mb{background:var(--line2);color:var(--muted)}
#echoQOverlay .eq-pb{padding:10px 14px}
#echoQOverlay .eq-wt-row{display:flex;align-items:center;gap:10px}
#echoQOverlay .eq-wt-box{display:flex;align-items:center;border:2px solid var(--border);border-radius:7px;padding:4px 10px;background:#fff;transition:border-color .15s}
#echoQOverlay .eq-wt-box:focus-within{border-color:var(--green)}
#echoQOverlay .eq-wt-in{width:70px;border:none;outline:none;font-family:var(--mono);font-size:18px;font-weight:500;color:var(--green);text-align:center;background:transparent}
#echoQOverlay .eq-wt-u{font-size:11px;color:var(--muted)}
#echoQOverlay .eq-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
#echoQOverlay .eq-badge{padding:3px 9px;border-radius:20px;font-size:11px;font-weight:500;cursor:pointer;border:1.5px solid var(--border);background:#fff;color:var(--muted);transition:all .12s;font-family:'DM Sans',sans-serif}
#echoQOverlay .eq-badge:hover{border-color:var(--green);color:var(--green)}
#echoQOverlay .eq-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#echoQOverlay .eq-fl{font-size:10.5px;font-weight:500;color:var(--muted);margin-bottom:4px;display:flex;align-items:center;gap:5px}
#echoQOverlay .eq-tag{font-family:var(--mono);font-size:8.5px;padding:1px 6px;border-radius:3px;font-weight:600}
#echoQOverlay .eq-t-b2{background:#fff3e6;color:#92400e}
#echoQOverlay .eq-t-t{background:var(--teal-xs);color:var(--teal)}
#echoQOverlay .eq-t-m{background:#eeece8;color:var(--muted)}
#echoQOverlay .eq-iw{display:flex;align-items:center;border:2px solid var(--border);border-radius:7px;background:#fff;transition:border-color .15s;overflow:hidden}
#echoQOverlay .eq-iw:focus-within{border-color:var(--green)}
#echoQOverlay .eq-iw.iw-t:focus-within{border-color:var(--teal)}
#echoQOverlay .eq-iw.st-warn{border-color:var(--amber)!important}
#echoQOverlay .eq-iw.st-alert{border-color:#c0392b!important}
#echoQOverlay .eq-ni{flex:1;border:none;outline:none;font-family:var(--mono);font-size:15px;font-weight:500;color:var(--green);text-align:center;padding:6px 8px;background:transparent}
#echoQOverlay .eq-ni.tc{color:var(--teal)}
#echoQOverlay .eq-ni::placeholder{color:var(--faint);font-size:12px;font-weight:300}
#echoQOverlay .eq-u{font-size:10px;color:var(--muted);padding:0 8px 0 0;font-family:var(--mono)}
#echoQOverlay .eq-res-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
#echoQOverlay .eq-rc{border-radius:8px;padding:10px 8px;text-align:center;border:2px solid transparent;transition:all .2s}
#echoQOverlay .eq-rc.st-empty{background:#eeece8;border-color:var(--line)}
#echoQOverlay .eq-rc.st-ok{background:#f0f7f2;border-color:#a7d7b4}
#echoQOverlay .eq-rc.st-border{background:#fef9ec;border-color:#f0c040}
#echoQOverlay .eq-rc.st-b2{background:#fff3e6;border-color:#f5a623}
#echoQOverlay .eq-rc.st-crit{background:#fdecea;border-color:#e57373}
#echoQOverlay .eq-rc-name{font-size:8.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);font-family:var(--mono);margin-bottom:3px}
#echoQOverlay .eq-rc-val{font-size:20px;font-weight:600;font-family:var(--mono);line-height:1;margin-bottom:2px}
#echoQOverlay .eq-rc.st-empty .eq-rc-val{color:var(--faint);font-size:13px;font-weight:300}
#echoQOverlay .eq-rc.st-ok    .eq-rc-val{color:var(--green)}
#echoQOverlay .eq-rc.st-border .eq-rc-val{color:#92400e}
#echoQOverlay .eq-rc.st-b2    .eq-rc-val{color:#c05a00}
#echoQOverlay .eq-rc.st-crit  .eq-rc-val{color:#c0392b}
#echoQOverlay .eq-rc-ref{font-size:8.5px;color:var(--muted);font-family:var(--mono);margin-bottom:3px}
#echoQOverlay .eq-rc-flag{font-size:9px;font-weight:600;padding:1px 7px;border-radius:10px;display:inline-block}
#echoQOverlay .eq-rc.st-empty  .eq-rc-flag{display:none}
#echoQOverlay .eq-rc.st-ok     .eq-rc-flag{background:#d1fae5;color:#065f46}
#echoQOverlay .eq-rc.st-border .eq-rc-flag{background:#fef3c7;color:#92400e}
#echoQOverlay .eq-rc.st-b2     .eq-rc-flag{background:#ffedd5;color:#9a3412}
#echoQOverlay .eq-rc.st-crit   .eq-rc-flag{background:#fee2e2;color:#991b1b}
#echoQOverlay .eq-impression{border-radius:8px;padding:10px 12px;display:none;gap:9px;align-items:flex-start}
#echoQOverlay .eq-impression.show{display:flex}
#echoQOverlay .imp-b1  {background:#f0f7f2;border:1.5px solid #a7d7b4;color:#1a5c30}
#echoQOverlay .imp-bord{background:#fef9ec;border:1.5px solid #f0c040;color:#7a4f00}
#echoQOverlay .imp-1of2{background:#fff3e6;border:1.5px solid #f5a623;color:#7a3e00}
#echoQOverlay .imp-b2  {background:#fff3e6;border:1.5px solid #e8822a;color:#6b2f00}
#echoQOverlay .eq-imp-icon{font-size:17px;flex-shrink:0;line-height:1.4}
#echoQOverlay .eq-imp-title{font-size:12px;font-weight:700;margin-bottom:2px}
#echoQOverlay .eq-imp-sub{font-size:10.5px;line-height:1.5;font-weight:300}
#echoQOverlay .eq-copy-row{display:flex;justify-content:flex-end}
#echoQOverlay .eq-copy-btn{background:var(--green);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:11px;font-family:'DM Sans',sans-serif;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:5px;transition:background .15s}
#echoQOverlay .eq-copy-btn:hover{background:var(--green-l)}
#echoQOverlay .eq-copy-btn.copied{background:#1a7a4a}
#echoQOverlay .eq-footer{text-align:center;font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-family:var(--mono);padding:6px 0 16px;grid-column:1/-1}
@media(max-width:640px){#echoQOverlay .eq-outer{grid-template-columns:1fr}}



/* ───── §4: patients-overlay ───────────────────────────────── */
/* ── PATIENTS ── */
#patientsOverlay .pt-tabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:20px}
#patientsOverlay .pt-tab{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;padding:9px 20px 8px;cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;transition:color .15s,border-color .15s;font-family:'DM Sans',sans-serif;color:var(--muted);display:flex;align-items:center;gap:6px}
#patientsOverlay .pt-tab.active{color:var(--green);border-bottom-color:var(--green);font-weight:500}
#patientsOverlay .pt-tab:hover:not(.active){color:var(--text)}
/* Phase 5.7 — count badges scale with the larger .stab text. */
.stab-cnt{display:inline-block;font-size:11px;font-family:var(--mono);font-weight:700;padding:1px 7px;border-radius:10px;background:var(--line);color:var(--muted);min-width:18px;text-align:center;vertical-align:middle;margin-inline-start:6px}
.stab.active .stab-cnt{background:rgba(255,255,255,.25);color:#fff}
#patientsOverlay .pt-count{font-size:9px;font-family:var(--mono);font-weight:700;padding:1px 6px;border-radius:10px;background:var(--bg3);color:var(--muted);transition:all .15s}
#patientsOverlay .pt-tab.active .pt-count{background:var(--green);color:#fff}
#patientsOverlay .pt-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:20px;padding:14px 16px;background:var(--bg2);border:1px solid var(--line);border-radius:12px}
#patientsOverlay .pt-input{flex:1;min-width:110px;border:1.5px solid var(--line);border-radius:8px;padding:8px 12px;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--text);background:#fff;outline:none;direction:rtl;transition:border-color .15s}
#patientsOverlay .pt-input:focus{border-color:var(--green)}
#patientsOverlay .pt-input::placeholder{color:var(--faint)}
#patientsOverlay .pt-add-btn{background:var(--green);color:#fff;border:none;border-radius:8px;padding:8px 18px;font-size:13px;font-family:'DM Sans',sans-serif;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s;flex-shrink:0}
#patientsOverlay .pt-add-btn:hover{background:var(--green-l)}
#patientsOverlay .pt-list{display:flex;flex-direction:column;gap:3px}
#patientsOverlay .pt-row{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:8px 14px;display:flex;align-items:center;gap:10px;transition:border-color .15s}
/* Triage dot — click to cycle through 5 statuses. Colours match the smart-notes
   palette so the visual language is consistent across tools. */
#patientsOverlay .pt-status-dot{flex-shrink:0;width:11px;height:11px;border-radius:50%;cursor:pointer;border:1.5px solid var(--line2);background:transparent;transition:transform .1s;padding:0}
#patientsOverlay .pt-status-dot:hover{transform:scale(1.25)}
#patientsOverlay .pt-status-dot[data-status="none"]{background:transparent;border-color:var(--line2)}
#patientsOverlay .pt-status-dot[data-status="stable"]{background:#67a074;border-color:#4d8a5c}
#patientsOverlay .pt-status-dot[data-status="waiting"]{background:#6a9cc5;border-color:#5285b0}
#patientsOverlay .pt-status-dot[data-status="follow"]{background:#e89a4a;border-color:#c88030}
#patientsOverlay .pt-status-dot[data-status="urgent"]{background:#e87474;border-color:#d45c5c}
/* Legacy data: existing records with status="stable" from the prior release mean
   "no-dot" stable. They'll map to the new none variant on next click-cycle. */

/* Legend strip — compact row showing what each colour means */
#patientsOverlay .pt-legend{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:6px 14px;margin:6px 0 10px;background:var(--bg2);border:1px solid var(--line);border-radius:8px;font-size:.7rem;color:var(--muted)}
#patientsOverlay .pt-legend-label{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-inline-end:4px}
#patientsOverlay .pt-legend-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
#patientsOverlay .pt-legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--line2);flex-shrink:0}
#patientsOverlay .pt-legend-dot.stable {background:#67a074;border-color:#4d8a5c}
#patientsOverlay .pt-legend-dot.waiting{background:#6a9cc5;border-color:#5285b0}
#patientsOverlay .pt-legend-dot.follow {background:#e89a4a;border-color:#c88030}
#patientsOverlay .pt-legend-dot.urgent {background:#e87474;border-color:#d45c5c}
#patientsOverlay .pt-row:hover{border-color:var(--line2)}
#patientsOverlay .pt-row-main{flex:1;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
#patientsOverlay .pt-name{font-size:.9rem;font-weight:500;color:var(--text)}
#patientsOverlay .pt-sep{color:var(--faint);font-size:.8rem}
#patientsOverlay .pt-pet{font-size:.8rem;color:var(--muted);font-family:var(--mono)}
#patientsOverlay .pt-meta{font-size:.62rem;color:var(--faint);font-family:var(--mono);margin-right:auto;white-space:nowrap}
#patientsOverlay .pt-due{font-size:.7rem;color:var(--amber);font-family:var(--mono);font-weight:600;margin-right:4px}
#patientsOverlay .pt-copy-btn{background:none;border:1px solid var(--line);border-radius:6px;color:var(--muted);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;white-space:nowrap}
#patientsOverlay .pt-copy-btn:hover,.pt-copy-btn.copied{color:var(--accent);border-color:#a8c4b4;background:var(--accent-lo)}
#patientsOverlay .pt-del{background:none;border:none;color:var(--faint);font-size:15px;cursor:pointer;padding:0 2px;line-height:1;transition:color .15s;flex-shrink:0}
#patientsOverlay .pt-del:hover{color:#c0392b}
#patientsOverlay .pt-empty{text-align:center;padding:40px 20px;color:var(--faint);font-size:.82rem;font-family:var(--mono)}
#patientsOverlay .pt-due-wrap{display:flex;flex-direction:column;gap:2px}
#patientsOverlay .pt-due-label{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-family:var(--mono)}
#patientsOverlay .pt-section-label{font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);font-family:var(--mono);padding:0 2px 8px}

/* ───── §5: design adoption override (!important wins) ───── */
  :root{
    --bg:#fbfbfa;
    --bg2:#ffffff;
    --bg3:#f4f4f1;
    --line:#e3e6ea;
    --line2:#d8dce1;
    --text:#0F1E29;           /* matches home.html --navy */
    --muted:#425566;          /* matches home.html --ink-2 */
    --faint:#5e6b78;          /* Q7 (2026-05-24): design-system --faint bumped from #97a5b2 (2.7:1) to #5e6b78, now ~6.0:1 on --bg2:#fff. WCAG AA pass. */
    --navy:#0F1E29;           /* shared with brand.css for top-bar */
    --accent:#B8962E;         /* gold — brand CTA (canonical case) */
    --accent-lo:#f4ecd6;
    --green:#2e7d5b;          /* kept as "ok" status only */
    --green-l:#34926a;
    --green-xs:#f0f7f2;
    --border:#e3e6ea;
    --teal:#1a5c6e;           /* DASHBOARD-LOCAL: cat-overlay theme.
                                 Intentionally does NOT match
                                 brand.css --teal (#00A69C) which is
                                 the public-site accent. */
    --teal-l:#246b7e;
    --teal-xl:#e8f1f3;
    --teal-xs:#eef7fa;
    --teal-br:#d7e4e7;
    --gold:#B8962E;           /* matches home.html --gold (canonical case) */
    --gold-lo:#f4ecd6;
  }
  body{
    font-family:'Open Sans','Heebo','DM Sans',system-ui,sans-serif !important;
    font-weight:400 !important;
    background:var(--bg) !important;
    color:var(--text) !important;
  }

  /* ── Navy topbar ── matches brand.css --navy (#0F1E29) */
  .top-bar{
    background:var(--navy) !important;
    border-bottom:1px solid #091420 !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
    color:#fff !important;
    padding:8px 32px !important;
    height:auto !important;
    min-height:78px !important;
  }
  .top-bar > div:first-child{color:#fff}
  .top-bar .logo{
    font-family:'DM Sans','Heebo',sans-serif !important;
    font-weight:700 !important;
    font-style:normal !important;
    font-size:1.35rem !important;
    letter-spacing:-.02em !important;
    color:#fff !important;
  }
  .top-bar .logo em{
    font-style:normal !important;
    color:#B8962E !important;       /* canonical case */
    font-weight:700 !important;
  }
  /* Brand tagline below the logo
     ("Veterinary Ultrasound & Echocardiography" — canonical per
     DESIGN_DECISIONS §1.2). Comment was stale ("Veterinary
     Cardiology"); the actual rendered text is on dashboard.html. */
  .top-bar .logo-tag{
    color:#a8c0d4 !important;
    font-family:'DM Mono',ui-monospace,monospace !important;
    font-size:.6rem !important;
    letter-spacing:.32em !important;
    text-transform:uppercase !important;
    font-weight:300 !important;
    margin-top:3px !important;
  }
  .top-bar .logo-sub{
    color:#8ca4b7 !important;
    font-family:'DM Mono',ui-monospace,monospace !important;
    font-size:.55rem !important;
    letter-spacing:.18em !important;
    font-weight:400 !important;
    margin-top:2px !important;
  }

  /* Override inline-styled back link + logout inside topbar */
  .top-bar a[href],
  .top-bar button{
    color:#c3d2de !important;
    border-color:rgba(255,255,255,.15) !important;
    background:transparent !important;
    font-family:'DM Sans','Heebo',sans-serif !important;
    transition:color .15s, background .15s, border-color .15s !important;
  }
  .top-bar a[href]:hover{
    color:#fff !important;
    background:#233647 !important;
    border-color:#b8962e !important;
  }
  .top-bar button:hover{
    color:#fff !important;
    background:#233647 !important;
    border-color:#a64242 !important;
  }
  .top-bar #autosave-badge{
    background:rgba(184,150,46,.18) !important;
    color:#e3c97a !important;
    border:1px solid rgba(184,150,46,.3) !important;
  }

  /* ── Main wrap spacing aligned to new landing ── */
  .main-wrap{
    padding:48px 32px 0 !important;
    max-width:1440px !important;
    margin:0 auto !important;
  }

  /* ── Section labels — Clalit-style eyebrow with gold dash ── */
  .sl{
    display:inline-flex !important;
    align-items:center !important;
    gap:10px !important;
    font-family:'DM Mono',ui-monospace,monospace !important;
    color:var(--accent) !important;
    font-size:.65rem !important;
    font-weight:500 !important;
    letter-spacing:.32em !important;
    text-transform:uppercase !important;
    margin:36px 0 18px !important;
  }
  .sl::before{
    content:'' !important;
    width:24px !important;
    height:1px !important;
    background:var(--gold) !important;
    display:inline-block !important;
  }

  /* ── Tool cards — Clalit-style resting halo, no harsh edge ── */
  .card{
    background:#ffffff !important;
    border:1px solid var(--line) !important;
    border-radius:12px !important;
    padding:22px 20px !important;
    box-shadow:0 1px 9px 0 rgba(15,30,41,.06) !important;
    transition:border-color .2s, box-shadow .2s, transform .15s !important;
  }
  .card:hover{
    border-color:#cfd5db !important;
    box-shadow:0 4px 18px 0 rgba(15,30,41,.10) !important;
    transform:translateY(-1px) !important;
  }
  .card::before{
    background:var(--gold) !important;
  }
  .card.card-teal::before{
    background:var(--teal) !important;
  }
  .card-icon{
    font-size:1.5rem !important;
    margin-bottom:10px !important;
  }
  .ct{
    color:var(--text) !important;
    font-weight:600 !important;
    letter-spacing:-.01em !important;
  }
  .cs{
    color:var(--muted) !important;
    font-size:.76rem !important;
    line-height:1.65 !important;
  }

  /* ── Dark mode toggle pill ── */
  .dark-toggle{
    background:#fff !important;
    border-color:var(--line2) !important;
    color:var(--muted) !important;
  }
  .dark-toggle:hover{
    border-color:var(--gold) !important;
    color:var(--gold) !important;
  }

  /* ── Footer — Clalit-style dark navy band ──
     Styles the existing single-line dash-footer as a wrap-friendly
     dark band with proper contrast. The first text node ("EchoLevy ·
     ד"ר גלעד לוי GPCert Cardiology, MRCVS") becomes the brand line;
     subsequent <span> badges (build tag, sync status, offline) sit
     beside it, and the Export/Import buttons keep their pill style.
     No markup change — this is the safest restyle. */
  .dash-footer{
    background:var(--navy) !important;
    color:#bccad6 !important;
    border-top:none !important;
    font-family:'Open Sans','Heebo',sans-serif !important;
    text-align:right !important;
    text-transform:none !important;
    letter-spacing:0 !important;
    font-size:13.5px !important;
    font-weight:500 !important;
    padding:32px clamp(20px,4vw,48px) 28px !important;
    margin:96px calc(-1*clamp(20px,4vw,48px)) 0 !important;
    display:flex !important;
    flex-wrap:wrap !important;
    align-items:center !important;
    gap:14px 22px !important;
    direction:rtl !important;
  }
  .dash-footer #jb-status,
  .dash-footer #jb-last-sync,
  .dash-footer #last-export{
    color:#8ca4b7 !important;
    font-size:11.5px !important;
  }

  /* ── Keep ok/success badges readable with new palette ── */
  .badge:hover{border-color:var(--green) !important;color:var(--green) !important}

/* ═══ BULK TEMPLATE SELECT (Phase 5 of DESIGN_REVAMP.md, 2026-05-11)
   Checkbox appears at the top-inline-end corner of each template card
   when body has .tmpl-bulk-mode class. Selected cards get an accent
   border + faint background tint. A fixed-position floating action bar
   at the bottom of the viewport holds the count + bulk actions. ═══ */
.tmpl-bulk-chk{position:absolute;top:8px;inset-inline-end:8px;width:18px;height:18px;cursor:pointer;z-index:5;accent-color:var(--accent);display:none}
.tmpl-card{position:relative}
body.tmpl-bulk-mode .tmpl-bulk-chk{display:block}
body.tmpl-bulk-mode .tmpl-card{transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s}
body.tmpl-bulk-mode .tmpl-card:not(.tmpl-selected){opacity:.88}
.tmpl-card.tmpl-selected{border-color:var(--accent) !important;background:var(--accent-lo) !important;box-shadow:0 0 0 1px var(--accent) inset, 0 2px 8px rgba(0,166,156,.12);opacity:1}
.tmpl-bulk-bar{position:fixed;bottom:18px;inset-inline-start:50%;transform:translateX(-50%);background:var(--bg2);border:1px solid var(--accent);border-radius:14px;box-shadow:0 8px 28px rgba(0,0,0,.18), 0 0 0 4px rgba(0,166,156,.08);padding:10px 16px;display:none;align-items:center;gap:12px;direction:rtl;font-family:'DM Sans',sans-serif;z-index:9000;max-width:calc(100vw - 32px);flex-wrap:wrap}
body.tmpl-bulk-mode .tmpl-bulk-bar{display:flex}
.tmpl-bulk-count{font-family:'DM Sans',sans-serif;font-size:.78rem;font-weight:600;color:var(--accent);padding-inline-end:8px;border-inline-end:1px solid var(--line)}
.tmpl-bulk-dest{font-family:'DM Sans',sans-serif;font-size:.74rem;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:7px 10px;color:var(--text);min-width:200px}
.tmpl-bulk-btn{font-family:'DM Sans',sans-serif;font-size:.74rem;font-weight:500;border:1px solid var(--line);border-radius:8px;padding:8px 14px;background:var(--bg);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}
.tmpl-bulk-btn:hover:not(:disabled){background:var(--bg2);border-color:var(--accent);transform:translateY(-1px)}
.tmpl-bulk-btn:disabled{opacity:.4;cursor:not-allowed}
.tmpl-bulk-mv-btn:not(:disabled){border-color:var(--accent);color:var(--accent)}
.tmpl-bulk-del-btn:not(:disabled){border-color:#c0392b;color:#c0392b}
.tmpl-bulk-del-btn:not(:disabled):hover{background:#c0392b;color:#fff}
.tmpl-bulk-cancel-btn{color:var(--muted)}

/* ═══ REPORTS INLINE VIEW (Phase 6 of DESIGN_REVAMP.md, 2026-05-11)
   First-class inline view for the saved-reports archive. Hidden by
   default; shown when the workspace nav is on "דוחות". The hero
   pattern is reusable — patients (Phase 7) and tools (Phase 8) use
   the same .reports-hero shell for visual consistency. ═══ */
.reports-hero{background:linear-gradient(135deg,var(--bg2) 0%,var(--bg) 100%);border:1px solid var(--line);border-radius:14px;padding:22px 26px;margin:0 0 18px}
.reports-hero-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}
.reports-hero-eyebrow{font-family:'DM Mono',monospace;font-size:.55rem;letter-spacing:.18em;color:var(--accent);margin-bottom:6px}
.reports-hero-title{font-family:'Heebo',sans-serif;font-size:1.55rem;font-weight:600;color:var(--text);margin:0 0 4px;letter-spacing:-.01em}
.reports-hero-sub{font-family:'DM Sans',sans-serif;font-size:.78rem;color:var(--muted);margin:0;line-height:1.55;max-width:620px}
.reports-hero-tools{display:flex;align-items:center;gap:8px}
.reports-search{font-family:'DM Sans',sans-serif;font-size:.78rem;padding:9px 14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);min-width:240px;direction:rtl}
.reports-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-lo)}
.reports-hero-btn{font-family:'DM Sans',sans-serif;font-size:.74rem;padding:9px 14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,transform .1s}
.reports-hero-btn:hover{background:var(--bg2);border-color:var(--accent);transform:translateY(-1px)}
.reports-inline-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.reports-inline-empty{padding:48px 24px;text-align:center;color:var(--faint);font-family:'DM Sans',sans-serif;font-size:.82rem;background:var(--bg2);border:1px dashed var(--line);border-radius:12px;direction:rtl;grid-column:1/-1}
.reports-card{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:8px;transition:border-color .15s,box-shadow .15s,transform .1s}
.reports-card:hover{border-color:var(--accent);box-shadow:0 4px 12px rgba(0,0,0,.06);transform:translateY(-1px)}
.reports-card-meta{display:flex;justify-content:space-between;font-family:'DM Mono',monospace;font-size:.62rem;color:var(--faint);letter-spacing:.06em}
.reports-card-src{color:var(--accent)}
.reports-card-patient{font-family:'Heebo',sans-serif;font-size:.95rem;font-weight:600;color:var(--text);direction:rtl}
.reports-card-preview{font-family:'DM Sans',sans-serif;font-size:.76rem;color:var(--muted);line-height:1.5;direction:rtl;border-inline-start:2px solid var(--line);padding-inline-start:10px;margin-top:2px}
.reports-card-actions{display:flex;gap:6px;margin-top:6px}
.reports-card-btn{font-family:'DM Sans',sans-serif;font-size:.72rem;padding:7px 12px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,color .15s;flex:1}
.reports-card-btn-open:hover{background:var(--accent-lo);border-color:var(--accent);color:var(--accent)}
.reports-card-btn-del:hover{background:#fef2f2;border-color:#c0392b;color:#c0392b}

/* ═══ PATIENTS INLINE VIEW (Phase 7 of DESIGN_REVAMP.md, 2026-05-11)
   Summary surface — 5 category tiles + recent-activity feed.
   Full CRUD remains in the openPatients() overlay; tiles + rows
   open it scoped to their section. ═══ */
.patients-inline-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}
.patients-tile{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px 18px;cursor:pointer;text-align:right;direction:rtl;transition:border-color .15s,box-shadow .15s,transform .1s;font-family:'DM Sans',sans-serif;display:flex;flex-direction:column;gap:4px}
.patients-tile:hover{border-color:var(--accent);box-shadow:0 4px 12px rgba(0,0,0,.06);transform:translateY(-1px)}
.patients-tile-label{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:2px}
.patients-tile-count{font-family:'Heebo',sans-serif;font-size:1.8rem;font-weight:600;color:var(--accent);line-height:1;margin:4px 0 2px}
.patients-tile-newest{font-size:.68rem;color:var(--faint);font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patients-inline-recent-wrap{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.patients-inline-recent-head{font-family:'DM Sans',sans-serif;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.patients-inline-recent{display:flex;flex-direction:column;gap:4px}
.patients-recent-empty{padding:16px;text-align:center;color:var(--faint);font-family:'DM Sans',sans-serif;font-size:.78rem;direction:rtl}
.patients-recent-row{display:grid;grid-template-columns:120px 1fr auto;gap:12px;align-items:center;padding:9px 12px;background:transparent;border:1px solid transparent;border-radius:8px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:.78rem;color:var(--text);direction:rtl;text-align:right;transition:background .12s,border-color .12s}
.patients-recent-row:hover{background:var(--bg);border-color:var(--line)}
.patients-recent-cat{font-family:'DM Mono',monospace;font-size:.62rem;color:var(--accent);letter-spacing:.06em;text-transform:uppercase}
.patients-recent-name{font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patients-recent-ts{font-family:'DM Mono',monospace;font-size:.62rem;color:var(--faint)}

/* ═══ TOOLS INLINE HUB (Phase 8 of DESIGN_REVAMP.md, 2026-05-11)
   4-card grid of calculator launchers. Clicking opens the existing
   overlay calc (Phase 8b will inline the engines themselves). ═══ */
.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.tools-card{display:flex;flex-direction:column;gap:8px;text-align:right;direction:rtl;background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:22px 22px 18px;cursor:pointer;font-family:'DM Sans',sans-serif;transition:border-color .15s,box-shadow .15s,transform .1s;position:relative;overflow:hidden}
.tools-card:hover{border-color:var(--accent);box-shadow:0 6px 18px rgba(0,0,0,.08);transform:translateY(-2px)}
.tools-card::before{content:'';position:absolute;top:-20px;inset-inline-end:-20px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,var(--accent) 0%,transparent 70%);opacity:.08;pointer-events:none}
.tools-card-icon{font-size:2rem;line-height:1;margin-bottom:4px}
.tools-card-title{font-family:'Heebo',sans-serif;font-size:1.1rem;font-weight:600;color:var(--text);letter-spacing:-.01em}
.tools-card-sub{font-size:.76rem;color:var(--muted);line-height:1.55;flex:1}
.tools-card-cta{margin-top:8px;font-family:'DM Mono',monospace;font-size:.65rem;color:var(--accent);letter-spacing:.06em;font-weight:500}

/* ═══ DESIGN TOKENS (Phase 9 of DESIGN_REVAMP.md, 2026-05-11)
   Foundational scale variables. New components reach for these instead
   of hard-coded values; existing components stay untouched (we don't
   touch their visual state without explicit user direction).

   Spacing scale follows a 4px base × 1 / 2 / 3 / 4 / 6 / 8 / 12 / 16
   ladder — fewer steps than Tailwind's, calibrated to the existing
   dashboard's rhythm (10/14/16/22 are the common values in current code).
   Motion: 150ms is the existing standard; we name it so future devs
   don't have to count handwritten transitions to learn it. ═══ */
:root{
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-6:24px;
  --space-8:32px;
  --space-12:48px;
  --space-16:64px;
  --motion-fast:.1s ease-out;
  --motion-base:.15s ease-out;
  --motion-slow:.25s ease-out;
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:14px;
  --radius-xl:18px;
}

/* ═══ EMPTY-STATE PATTERN (Phase 9) ═══
   Consistent empty-state visual across all inline views. Pairs an
   illustrative emoji (placeholder until we have proper SVGs) with a
   bold title + dimmer sub. Used by reportsInlineRender,
   patientsInlineRender, and template grids when filtering returns 0
   results (existing empty strings can be migrated over time). */
.empty-state{
  padding:var(--space-8) var(--space-6);
  text-align:center;
  background:var(--bg2);
  border:1px dashed var(--line);
  border-radius:var(--radius-lg);
  font-family:'DM Sans',sans-serif;
  direction:rtl;
}
.empty-state-icon{
  font-size:2.4rem;
  line-height:1;
  margin-bottom:var(--space-3);
  opacity:.7;
}
.empty-state-title{
  font-family:'Heebo',sans-serif;
  font-size:.95rem;
  font-weight:600;
  color:var(--text);
  margin:0 0 var(--space-2);
}
.empty-state-sub{
  font-size:.78rem;
  color:var(--muted);
  line-height:1.6;
  max-width:420px;
  margin:0 auto;
}
.empty-state-cta{
  display:inline-block;
  margin-top:var(--space-4);
  padding:var(--space-2) var(--space-4);
  background:var(--accent);
  color:#fff;
  border:none;
  border-radius:var(--radius-sm);
  font-family:'DM Sans',sans-serif;
  font-size:.78rem;
  font-weight:500;
  cursor:pointer;
  transition:background var(--motion-base),transform var(--motion-fast);
}
.empty-state-cta:hover{background:var(--accent-hi,var(--accent));transform:translateY(-1px)}

/* ═══ FOCUS-VISIBLE RINGS (Phase 9) ═══
   New interactive components get a clear keyboard-focus indicator.
   Existing components keep their current focus styles untouched. */
.consult-tool-btn:focus-visible,
.consult-hero-cta:focus-visible,
.reports-hero-btn:focus-visible,
.reports-card-btn:focus-visible,
.patients-tile:focus-visible,
.patients-recent-row:focus-visible,
.tools-card:focus-visible,
.tmpl-bulk-btn:focus-visible{
  outline:none;
  box-shadow:0 0 0 3px var(--accent-lo), 0 0 0 1px var(--accent);
}

/* ═══ TEMPLATE DETAIL EDIT VIEW (Phase 5b of DESIGN_REVAMP.md, 2026-05-11)
   Focused single-template editor. Hidden by default; the registry's
   syncWorkspaceNav shows #section-tmpl-edit when the route matches
   templates/edit/:cat/:idx. Reuses the .reports-hero family for the
   header so visual cadence matches reports/patients/tools. The body
   textarea is intentionally tall (min 320px) so multi-section templates
   have room to breathe — the inline card editor in the grid is for
   quick edits; this is for the longer, more deliberate work. ═══ */
.tmpl-edit-card{background:var(--bg2);border:1px solid var(--line);border-radius:14px;padding:24px 26px;box-shadow:0 2px 12px rgba(15,30,41,.04);direction:rtl}
.tmpl-edit-label{display:block;font-family:'DM Mono',monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0 0 6px}
.tmpl-edit-name{width:100%;box-sizing:border-box;font-family:'Heebo',sans-serif;font-size:1.1rem;font-weight:600;padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);direction:rtl}
.tmpl-edit-name:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-lo)}
.tmpl-edit-body{width:100%;box-sizing:border-box;font-family:'DM Mono','Heebo',monospace;font-size:.92rem;line-height:1.55;padding:14px 16px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);resize:vertical;min-height:320px;direction:rtl}
.tmpl-edit-body:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-lo)}
.tmpl-edit-hint{margin-top:10px;font-size:.72rem;color:var(--muted);line-height:1.6;font-family:'DM Sans',sans-serif;direction:rtl}
.tmpl-edit-hint code,.tmpl-edit-hint kbd{background:var(--accent-lo);color:var(--accent);padding:1px 6px;border-radius:4px;font-family:'DM Mono',monospace;font-size:.85em;border:1px solid var(--line2)}
.tmpl-edit-placeholders{margin-top:12px;display:none;flex-wrap:wrap;gap:6px;align-items:center;direction:rtl}
.tmpl-edit-placeholders-label{font-size:.7rem;color:var(--faint);margin-inline-end:4px;font-family:'DM Sans',sans-serif}
.tmpl-edit-placeholder-chip{background:var(--accent-lo);color:var(--accent);padding:2px 9px;border-radius:12px;font-family:'DM Mono',monospace;font-size:.7rem;border:1px solid var(--line2)}
.tmpl-edit-actions{margin-top:22px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;direction:rtl}
.tmpl-edit-btn{font-family:'DM Sans',sans-serif;font-size:.78rem;padding:9px 18px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}
.tmpl-edit-btn:hover{background:var(--bg2);border-color:var(--accent);transform:translateY(-1px)}
.tmpl-edit-btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.tmpl-edit-btn-primary:hover{background:var(--accent);color:#fff;filter:brightness(.92)}
.tmpl-edit-btn-danger{color:#c0392b;border-color:#f0c8c2}
.tmpl-edit-btn-danger:hover{background:#fef2f2;border-color:#c0392b;color:#c0392b}
.tmpl-edit-move{font-family:'DM Sans',sans-serif;font-size:.74rem;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);cursor:pointer;margin-inline-start:auto;direction:rtl;max-width:260px}
.tmpl-edit-move:hover{border-color:var(--accent);color:var(--accent)}
.tmpl-edit-move:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-lo)}
.tmpl-edit-btn:focus-visible,.tmpl-edit-move:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-lo), 0 0 0 1px var(--accent)}
/* "✎ עריכה ממוקדת" launcher on each grid card. Small icon-only button
   so it doesn't fight the existing row of save/copy/send actions. */
.edit-t{font-size:.85rem;line-height:1;color:var(--muted);background:transparent;border:1px solid var(--line2);border-radius:7px;width:28px;height:28px;padding:0;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;margin:0;transition:all .15s}
.edit-t:hover{color:var(--accent);background:var(--accent-lo);border-color:#a8c4b4}
.edit-t:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-lo), 0 0 0 1px var(--accent)}
/* Consult scaffold close button (Phase 4 revision 2026-05-11) —
   positioned at the top-inline-end of the hero card so the user
   can dismiss the scaffold in one click. */
.consult-scaffold-close{position:absolute;top:10px;inset-inline-end:10px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm,6px);width:28px;height:28px;cursor:pointer;font-size:1rem;color:var(--faint);transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out),border-color var(--motion-base,.15s ease-out);line-height:1;display:flex;align-items:center;justify-content:center;z-index:2}
.consult-scaffold-close:hover{background:var(--bg);color:var(--text);border-color:var(--line)}

/* 2026-05-11 fix per PROBLEMS_2026-05-11.md P3 — outer .tmpl-hero-head
   text (kicker + title + sub set by switchDashSection) is meant for the
   consult/templates layout. reports/patients/tools/tmpl-edit each have
   their OWN .reports-hero header inside their section. Showing both
   was confusing. Hide the outer text on those views; workspace nav +
   sub-pivot stay visible because they live outside .tmpl-hero-head. */
body[data-dash-view="reports"] .tmpl-hero-head,
body[data-dash-view="patients"] .tmpl-hero-head,
body[data-dash-view="tools"] .tmpl-hero-head,
body[data-dash-view="tmpl-edit"] .tmpl-hero-head{display:none}

/* ───── §6: consult-workspace layout (Phase 2D.2, 2026-05-18) ─────
   Persistent workspace that replaces the FR overlay. Scaffolded
   markup lives at <section id="consult-workspace"> in dashboard.html
   (added in 2D.1). The section is `hidden` by default; the 2D.3
   mount code removes the attribute when the feature flag is on
   (?workspace=1 or localStorage.el_use_workspace==='1').

   All selectors are `cw-*` namespaced — zero collision risk with
   §1–§5. Logical properties throughout (inset-inline-*, padding-
   inline-*, margin-inline-*) so RTL is automatic. Layout:

     ┌──────────────────────────────────┐
     │ TOPBAR    (sticky top, ~56px)    │
     ├──────────────────────────────────┤
     │ STEPPER   (sticky, ~36px)        │
     ├────┬────────────────────────┬────┤
     │ L  │      CANVAS            │ R  │
     │ R  │      (1fr)             │ R  │
     │ AI │      (textarea slot)   │ AI │
     │ L  │                        │ L  │
     ├────┴────────────────────────┴────┤
     │ STATUS BAR (sticky bottom, ~28px)│
     └──────────────────────────────────┘

   This block defines the grid + each region's chrome. Rail panel
   contents (echo / drug / phrases etc.) keep their existing CSS
   from §1; only their containing accordion body needs styling. */

/* Root workspace container — CSS grid with sticky top + sticky bottom. */
.cw-workspace{display:grid;grid-template-rows:auto auto 1fr auto;min-height:calc(100vh - 80px);background:var(--bg);color:var(--text);font-family:inherit;border:1px solid var(--line);border-radius:var(--radius,12px);overflow:hidden;box-shadow:0 1px 2px rgba(15,30,41,.04)}
.cw-workspace[hidden]{display:none !important}

/* TOPBAR */
/* Phase 5.10 (2026-05-24) — topbar min-height 56→64px to accommodate
   the bigger .mtab nav tabs. The previous tight 56px made the
   nav feel cramped against the brand + patient pill. */
.cw-topbar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:10px 16px;background:var(--bg2);border-block-end:1px solid var(--line);min-height:64px}
.cw-topbar-brand{display:flex;align-items:center}
.cw-brand-link{display:inline-flex;flex-direction:column;text-decoration:none;color:var(--navy)}
.cw-brand-name{font-weight:700;font-size:1rem;letter-spacing:.2px}
.cw-brand-tag{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.cw-topbar-modes{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}
.cw-topbar-modes:empty{display:none}
/* Phase 5.13 (2026-05-24) — CRITICAL BUG: .cw-mode-tab had ZERO CSS
   for the entire workspace lifetime. The mirrorModeTabs() function
   (dashboard.js:10271) creates these buttons from the legacy .mtab
   nav, but only sets className='cw-mode-tab' — not '.mtab cw-mode-tab'.
   Phase 5.10 styled .mtab; the user never saw any of those bumps
   because the actual visible top nav was un-styled. Buttons looked
   like raw <button> elements → "ייעוץ doesn't work" complaint.
   Same gold-active-pill language as Phase 5.10. */
.cw-mode-tab{
  font-size:.95rem;letter-spacing:.02em;text-transform:none;
  color:var(--muted);padding:10px 18px;
  cursor:pointer;border:none;border-radius:8px;margin-bottom:0;
  background:none;transition:background .15s,color .15s;
  font-family:'DM Sans',sans-serif;font-weight:500;
}
.cw-mode-tab.active{color:#fff;background:var(--gold);font-weight:600}
.cw-mode-tab:hover:not(.active){color:var(--text);background:var(--bg)}
.cw-mode-tab:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.cw-topbar-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.cw-patient-pill{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.85rem;color:var(--text);cursor:pointer;font-family:inherit;transition:border-color var(--motion-base,.15s ease-out),background var(--motion-base,.15s ease-out)}
.cw-patient-pill:hover{border-color:var(--gold);background:var(--bg2)}
.cw-patient-pill-icon{font-size:1rem;line-height:1}
.cw-patient-pill-text{max-width:24ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cw-report-type{display:inline-flex;align-items:center;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:.85rem}
.cw-report-type-icon{font-size:.95rem}
.cw-report-type-select{background:transparent;border:0;color:var(--text);font:inherit;cursor:pointer;padding:2px 4px;outline:none}
/* Phase 5.2 (2026-05-24) — three-group cluster: primary save (text+icon),
   export icons (grouped), danger clear (separated with divider). */
.cw-actions{display:inline-flex;align-items:center;gap:2px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:3px}
.cw-actions-divider{display:inline-block;width:1px;height:18px;background:var(--line);margin:0 4px}
.cw-action-btn{background:transparent;border:0;color:var(--text);padding:7px 12px;border-radius:7px;cursor:pointer;font:inherit;font-size:.85rem;line-height:1;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out);min-width:36px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.cw-action-btn:hover{background:var(--bg2);color:var(--navy)}
.cw-action-btn:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
/* Primary save button: text + icon, more presence */
.cw-action-primary{background:var(--bg2);color:var(--navy);font-weight:600}
.cw-action-primary:hover{background:var(--gold);color:#fff}
.cw-action-primary .cw-action-icon{font-size:.95rem}
.cw-action-primary .cw-action-label{font-size:.8rem;letter-spacing:.2px}
/* Danger clear button: muted by default, red on hover */
.cw-action-danger{color:var(--muted);min-width:30px;padding:7px 8px}
.cw-action-danger:hover{background:#fef2f2;color:#dc2626}
/* Phase 5C — Archive button states (2026-05-21). The button is the
   toast: brief gold-tinted success on save, amber warn on empty/error.
   Animates back to default after 1.8s (matches the JS timeout). */
.cw-action-archive-btn{position:relative;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out),transform var(--motion-base,.15s ease-out)}
.cw-action-archive-btn.cw-action-success{background:var(--gold);color:#fff;transform:scale(1.08)}
.cw-action-archive-btn.cw-action-warn{background:#fef3c7;color:#92400e}

/* STEPPER STRIP */
/* Phase 5.5 (2026-05-24) — shrink the stepper. Keep its position
   below the topbar (jump-nav still works) but reduce vertical weight:
   smaller chips (.72rem), tighter padding (4px 8px), shorter min-height
   (28px vs 36px). The stepper recedes; the canvas dominates. */
/* Phase 5.10 — sticky stepper position bumped 56→64 to match new
   topbar height. Min-height + padding bumped so the bigger chips
   don't get clipped. */
.cw-stepper{position:sticky;top:64px;z-index:4;display:flex;align-items:center;gap:8px;padding:6px 16px;background:var(--bg2);border-block-end:1px solid var(--line);min-height:36px;overflow-x:auto}
.cw-stepper-fill-pill{display:inline-flex;align-items:center;gap:4px;background:var(--gold);color:#fff;border:0;border-radius:999px;padding:2px 10px;font-size:.72rem;cursor:pointer;font:inherit;font-weight:600;white-space:nowrap}
.cw-stepper-fill-pill[hidden]{display:none}
.cw-stepper-fill-pill:hover{filter:brightness(1.05)}
.cw-fill-pill-count{font-variant-numeric:tabular-nums}
.cw-stepper-chips{display:inline-flex;gap:4px;flex-wrap:nowrap}
.cw-stepper-chips:empty::before{content:"בחר טמפלט כדי להתחיל";color:var(--muted);font-size:.8rem;padding:2px 6px}
/* Phase 5.10 (2026-05-24) — section-anchor stepper chips
   (היסטוריה/בדיקה/בטן/סיכום/טיפול/מעקב) bumped 0.72 → 0.88rem with
   bigger padding so the in-document section nav is comfortably
   tappable + readable. The chips at the top of /consult were
   reading as a row of tiny pills. */
.cw-stepper-chip{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:4px 12px;font-size:.88rem;color:var(--text);cursor:pointer;font:inherit;font-weight:500;white-space:nowrap;transition:border-color var(--motion-base,.15s ease-out),background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out);position:relative}
.cw-stepper-chip:hover{border-color:var(--gold)}

/* Phase 5A (2026-05-21) — stepper chips as workflow progress.
   data-section-state set by consultUpdateActiveStepperChip:
     "empty"       — no header match in textarea → ghost gray
     "header-only" — header present, body <50 chars → light navy outline
     "filled"      — header + meaningful body → solid navy bg + check dot
   aria-selected="true" — caret is in this section — gold ring overlays
   any of the above. */
.cw-stepper-chip[data-section-state="empty"]{color:var(--muted);border-color:var(--line);background:var(--bg)}
.cw-stepper-chip[data-section-state="header-only"]{color:var(--navy);border-color:var(--navy);background:var(--bg2)}
.cw-stepper-chip[data-section-state="filled"]{color:#fff;border-color:var(--navy);background:var(--navy)}
.cw-stepper-chip[data-section-state="filled"]::after{content:"✓";font-size:.65rem;margin-inline-start:4px;opacity:.85}
.cw-stepper-chip[aria-selected="true"]{box-shadow:0 0 0 2px var(--gold);outline:none}
/* When chip is BOTH filled AND active, keep filled bg + add gold ring */
.cw-stepper-chip[data-section-state="filled"][aria-selected="true"]{background:var(--navy);color:#fff}
.cw-stepper-chip[data-section-state="empty"][aria-selected="true"]{background:var(--bg2);color:var(--text)}
/* Phase 2F.9 (2026-05-19) — disabled state when textarea is empty. */
.cw-stepper-chip:disabled{opacity:.45;cursor:not-allowed;color:var(--muted)}
.cw-stepper-chip:disabled:hover{border-color:var(--line)}
/* Fix H (2026-05-21) — in empty-textarea state, chips become
   "insert section header" actions rather than scroll-to anchors.
   Style them dashed-border to signal "add" not "navigate". */
.cw-stepper-chip[data-empty-action="insert"]{border-style:dashed;border-color:var(--gold);color:var(--gold);background:var(--bg2)}
.cw-stepper-chip[data-empty-action="insert"]:hover{background:var(--gold);color:#fff;border-style:solid}

/* BODY — 3-column grid */
/* Phase 5.13 (2026-05-24) — left rail trimmed 280→220px now that the
   12-pill disease stack is a compact dropdown. Canvas gains 60px;
   right rail stays 400px. On a 1440px viewport canvas is now ≈820px,
   well above the max-width:80ch (~720px) cap from Phase 5.1B. */
.cw-body{display:grid;grid-template-columns:220px 1fr 400px;gap:0;min-height:0}

/* LEFT RAIL */
.cw-rail{background:var(--bg2);overflow-y:auto;min-height:0;display:flex;flex-direction:column}
.cw-rail-left{border-inline-end:1px solid var(--line)}
.cw-rail-right{border-inline-start:1px solid var(--line)}
.cw-rail-section{padding:12px 14px;border-block-end:1px solid var(--line)}
.cw-rail-section:last-child{border-block-end:0}
.cw-rail-head{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin-block-end:8px}
.cw-disease-nav-slot:empty::after,
.cw-recent-slot:empty::after{content:"—";color:var(--faint);font-size:.85rem;display:block;padding:6px 0}
/* Species toggle (Phase 2F.8) — segmented control inside the left rail. */
.cw-species-toggle{display:flex;gap:0;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:2px;margin-block-end:10px;overflow:hidden}
/* Phase 5.10 — species toggle bumped 0.82 → 0.95rem; padding bumped */
.cw-species-btn{flex:1;background:transparent;border:0;padding:8px 12px;font:inherit;font-size:.95rem;font-weight:500;color:var(--muted);cursor:pointer;border-radius:6px;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out)}
.cw-species-btn:hover{color:var(--text)}
.cw-species-btn.active{background:var(--navy);color:#fff;font-weight:600}
/* Disease pills — wrap inside the rail's narrow column.
   Phase 2F.9 (2026-05-19) — cap height so the list scrolls inside
   itself instead of pushing "דוחות אחרונים" below the fold. */
/* Phase 5.13 (2026-05-24) — disease selector is now a dropdown, not a
   pill stack. The .cw-disease-pills class is kept for legacy diseases
   (pre-rendering) but no longer the primary surface. */
.cw-disease-dropdown-wrap{display:flex;flex-direction:column;gap:6px;margin-block-end:10px}
.cw-disease-dropdown-label{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.cw-disease-dropdown{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg2);color:var(--text);font:inherit;font-size:.95rem;font-weight:500;font-family:'DM Sans',sans-serif;cursor:pointer;transition:border-color var(--motion-base,.15s ease-out),background var(--motion-base,.15s ease-out)}
.cw-disease-dropdown:hover{border-color:var(--gold)}
.cw-disease-dropdown:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,150,46,.15)}
.cw-disease-stages--standalone{display:flex;flex-wrap:wrap;gap:4px;padding:0}
.cw-disease-pills{display:flex;flex-direction:column;gap:3px;max-height:340px;overflow-y:auto}
.cw-disease-block{display:flex;flex-direction:column;gap:4px}
.cw-disease-block.active{background:var(--bg);border-radius:8px;padding:3px 3px 6px}
/* Phase 5.10 (2026-05-24) — disease pills bumped 0.82 → 0.95rem;
   padding 5/8 → 7/10. The previous size made the rail feel like a
   sidebar of micro-labels rather than a primary navigation. */
.cw-disease-pill{background:transparent;border:1px solid transparent;border-radius:6px;padding:7px 10px;font:inherit;font-size:.95rem;font-weight:500;color:var(--text);cursor:pointer;text-align:start;transition:background var(--motion-base,.15s ease-out),border-color var(--motion-base,.15s ease-out);width:100%}
.cw-disease-pill:hover{background:var(--bg);border-color:var(--line)}
.cw-disease-pill.active{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:600}
/* Phase 5.4 — inline stage chips, only rendered for the active disease */
.cw-disease-stages{display:flex;flex-wrap:wrap;gap:3px;padding-inline-start:8px;padding-inline-end:4px}
/* Phase 5.10 — stage chips bumped 0.7 → 0.85rem; padding +50% */
.cw-disease-stage-chip{background:transparent;border:1px solid var(--line);border-radius:12px;padding:4px 11px;font:inherit;font-size:.85rem;font-weight:500;color:var(--muted);cursor:pointer;line-height:1.4;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out),border-color var(--motion-base,.15s ease-out)}
.cw-disease-stage-chip:hover{background:var(--bg2);color:var(--text);border-color:var(--line2)}
.cw-disease-stage-chip.active{background:var(--teal);color:#fff;border-color:var(--teal);font-weight:600}
/* Recent reports rows */
.cw-recent-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:6px 8px;background:transparent;border:0;border-radius:6px;font:inherit;font-size:.82rem;color:var(--text);cursor:pointer;text-align:start;transition:background var(--motion-base,.15s ease-out)}
.cw-recent-row:hover{background:var(--bg)}
.cw-recent-name{color:var(--navy);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}
.cw-recent-when{color:var(--muted);font-size:.72rem;font-variant-numeric:tabular-nums;flex:0 0 auto}
.cw-recent-empty{font-size:.78rem;color:var(--faint);padding:6px 0;font-style:italic}

/* CENTER CANVAS */
.cw-canvas{padding:16px;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:12px;background:var(--bg)}
.cw-empty-state{display:flex;gap:10px;flex-wrap:wrap}
.cw-empty-state[hidden]{display:none}
.cw-textarea-slot{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.cw-textarea-slot:empty::before{content:"גוף הדוח יוצג כאן";color:var(--faint);display:flex;align-items:center;justify-content:center;flex:1;font-size:.95rem;background:var(--bg2);border:1px dashed var(--line);border-radius:var(--radius,12px);padding:40px;min-height:240px}

/* RIGHT RAIL — accordions */
.cw-accordion{border-block-end:1px solid var(--line);background:var(--bg2)}
.cw-accordion:last-child{border-block-end:0}
/* Phase 5.3 (2026-05-24) — soft visual divider between the 4 active
   per-report tools and the 3 on-demand tools. Background steps down a
   touch + small uppercase label so the eye registers the grouping
   without any hard rule. Keyboard shortcuts (Ctrl+1..7) untouched. */
.cw-rail-group-divider{display:flex;align-items:center;gap:8px;padding:10px 14px 6px;background:var(--bg);border-block:1px solid var(--line);color:var(--muted);font-size:.62rem;font-weight:700;letter-spacing:.9px;text-transform:uppercase}
.cw-rail-group-divider::before{content:"";flex:1;border-block-start:1px dashed var(--line2);opacity:.5}
.cw-rail-group-label{flex:0 0 auto;font-family:'DM Sans',sans-serif}
.cw-accordion--ondemand{background:var(--bg)}
.cw-accordion--ondemand > .cw-accordion-head{font-weight:500;color:var(--muted)}
.cw-accordion--ondemand > .cw-accordion-head:hover{color:var(--text)}
.cw-accordion--ondemand[open] > .cw-accordion-head{font-weight:600;color:var(--navy)}
.cw-accordion-head{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;font-size:.9rem;font-weight:600;color:var(--text);user-select:none;min-height:36px;transition:background var(--motion-base,.15s ease-out)}
.cw-accordion-head::-webkit-details-marker{display:none}
.cw-accordion-head::marker{content:""}
.cw-accordion-head:hover{background:var(--bg)}
.cw-accordion[open] > .cw-accordion-head{background:var(--bg);border-block-end:1px solid var(--line);color:var(--navy)}
.cw-accordion-head::after{content:"▾";margin-inline-start:auto;color:var(--muted);font-size:.75rem;transition:transform var(--motion-base,.15s ease-out)}
.cw-accordion:not([open]) > .cw-accordion-head::after{transform:rotate(-90deg)}
/* Phase 4C.1 — discoverable keyboard shortcut badge. paintKeyboardHints()
   inserts a <kbd class="cw-acc-kbd">⌃N</kbd> into each accordion summary
   so Dr. Levy can SEE the Ctrl+N shortcut without reading code. The
   chevron ▾ sits at the very end (via ::after margin-inline-start:auto)
   so we place the kbd just before it — margin-inline-end:6px gives the
   chevron breathing room. */
.cw-acc-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;padding:1px 5px;font-family:'DM Mono',ui-monospace,Menlo,Consolas,monospace;font-size:.7rem;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:4px;margin-inline-start:auto;margin-inline-end:6px;font-weight:500;letter-spacing:.5px}
.cw-accordion[open] > .cw-accordion-head .cw-acc-kbd{color:var(--navy);border-color:var(--navy);background:var(--bg2)}
/* When kbd is present, the chevron ::after no longer needs auto margin
   (kbd has it). Override to keep chevron tight to kbd. */
.cw-accordion-head:has(.cw-acc-kbd)::after{margin-inline-start:0}
.cw-acc-icon{font-size:1rem;line-height:1;width:1.2em;text-align:center}
.cw-acc-label{flex:0 0 auto}
.cw-accordion-body{padding:10px 14px 12px;font-size:.88rem;color:var(--text)}
.cw-accordion-body:empty::before{content:"(טוען...)";color:var(--faint);font-style:italic;display:block;padding:8px 0}

/* STATUS BAR */
.cw-statusbar{position:sticky;bottom:0;z-index:5;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:4px 16px;background:var(--bg2);border-block-start:1px solid var(--line);min-height:28px;font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}
.cw-status-charcount{font-family:'DM Mono',ui-monospace,Menlo,Consolas,monospace}
.cw-status-sync{text-align:center;color:var(--muted)}
.cw-status-right{display:inline-flex;align-items:center;gap:10px;justify-self:end}
.cw-status-build{font-family:'DM Mono',ui-monospace,Menlo,Consolas,monospace;color:var(--faint)}
.cw-dark-toggle{background:transparent;border:0;color:inherit;cursor:pointer;font:inherit;padding:2px 4px;border-radius:4px;line-height:1}
.cw-dark-toggle:hover{background:var(--bg)}

/* Narrow viewport — rails collapse (wireframe §6).
   Phase 2 ships desktop-only; below 1280 we degrade gracefully
   so the workspace doesn't break, but mobile polish is later. */
@media (max-width:1279px){
  .cw-body{grid-template-columns:240px 1fr 340px}
}
@media (max-width:1023px){
  .cw-body{grid-template-columns:1fr}
  .cw-rail-left,.cw-rail-right{border:0;border-block-end:1px solid var(--line);max-height:50vh}
  .cw-stepper{top:auto;position:relative}
}
/* Dark mode parity — workspace inherits brand dark tokens via [data-theme]. */
[data-theme="dark"] .cw-workspace{border-color:var(--line)}
[data-theme="dark"] .cw-topbar,
[data-theme="dark"] .cw-stepper,
[data-theme="dark"] .cw-rail,
[data-theme="dark"] .cw-statusbar,
[data-theme="dark"] .cw-accordion{background:var(--bg2)}

/* Phase 5.1A — Reclaim canvas width on /consult (2026-05-24).
   The legacy .main-wrap has `margin: 0 220.667px` from the
   pre-workspace era when the dashboard was content-narrow. The
   workspace lives inside .main-wrap and inherits the constraint:
   882px workspace inside 983px wrap inside 1440px viewport = 240px
   canvas. Phone-width typography on a desktop.

   On /consult route only, drop the side margins to 12px each side
   and set max-width to none so the workspace can use the full
   viewport width. Templates/reports/patients views unchanged
   (different active-route). */
body[data-cw-active-route="consult"] .main-wrap{
  margin-inline:12px !important;
  padding-inline:16px !important;
  max-width:none !important;
}
/* The .tmpl-hero parent of the workspace also has margin+padding.
   Tighten it on consult to give the workspace breathing room. */
body[data-cw-active-route="consult"] .tmpl-hero{
  padding:8px 4px 0 !important;
  margin:0 !important;
}

/* Phase 4A.0 — Rail-panel input design tokens (2026-05-21).
   Measured on the LIVE site via Claude in Chrome: rail panels had 3
   different input border-radii (6/6/7), 3 paddings (6 10 / 6 8 / 5 7),
   and 3 font-sizes (13.6 / 12.48 / 13). User mandate: "all the tools
   should ... be consistent with the other tools." Normalize every
   text/number/search input inside a rail accordion body to the same
   baseline (templates accordion's existing values).

   NOT touched: buttons. The drug panel's pill-shaped rate-selectors
   (20px radius, 9px font, 2 4 padding) are intentional for the dense
   rate-grid layout — normalizing them would break that grid. Phase
   4A.1 will revisit buttons surgically per-panel.

   Specificity wins via the body[data-cw-enabled] prefix (0,2,2,0
   beats .fr-eq-grp input at 0,0,1,1). No !important needed. */
body[data-cw-enabled="1"] .cw-accordion-body input[type="text"],
body[data-cw-enabled="1"] .cw-accordion-body input[type="number"],
body[data-cw-enabled="1"] .cw-accordion-body input[type="search"]{
  border-radius:6px;
  padding:6px 10px;
  font-size:.85rem;
  font-family:inherit;
  box-sizing:border-box;
}

/* Templates accordion (Phase 2E.1, 2026-05-18) — quick-search input,
   last-5 recent picks list, and a "open full picker" footer button.
   Recent picks are tracked in el_fr_tpl_recent localStorage and
   pushed by frPickTemplate. The full picker (#fr-tp-backdrop) is
   reused unchanged for the deep-search case. */
.cw-tpl-search{display:block;width:100%;padding:6px 10px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:.85rem;background:var(--bg);color:var(--text);box-sizing:border-box;margin-block-end:8px}
.cw-tpl-search:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 2px rgba(184,150,46,.15)}
.cw-tpl-list{display:flex;flex-direction:column;gap:4px;margin-block-end:10px;min-height:32px}
.cw-tpl-list:empty::before{content:"בחר טמפלט מהבורר המלא — הבחירות יישמרו כאן";color:var(--faint);font-size:.8rem;display:block;text-align:center;padding:14px 8px;border:1px dashed var(--line);border-radius:6px;line-height:1.4}
.cw-tpl-card{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);cursor:pointer;font:inherit;font-size:.85rem;color:var(--text);text-align:start;transition:border-color var(--motion-base,.15s ease-out),background var(--motion-base,.15s ease-out)}
.cw-tpl-card:hover{border-color:var(--gold);background:var(--bg2)}
.cw-tpl-card-name{font-weight:600;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}
.cw-tpl-card-meta{font-size:.72rem;color:var(--muted);flex:0 0 auto;font-variant-numeric:tabular-nums}
/* Phase 5.4-followup (2026-05-24) — empty-state row inside the
   templates accordion. Painted when the recent-list filter (by
   _frReportType) yields zero matches. Italic + faint so it reads
   as a hint, not as a clickable row. */
.cw-tpl-empty-row{padding:8px 10px;font-size:.78rem;color:var(--faint);font-style:italic;text-align:start;line-height:1.4}
.cw-tpl-footer-btn{display:block;width:100%;padding:8px 10px;background:var(--gold);color:#fff;border:0;border-radius:6px;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;text-align:center;transition:filter var(--motion-base,.15s ease-out)}
.cw-tpl-footer-btn:hover{filter:brightness(1.05)}
.cw-tpl-footer-btn:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
/* Phase 5.11 — secondary variant for the "go to /templates page"
   CTA. Outlined navy, sits below the gold primary so the visual
   hierarchy reads: gold = open picker in place, navy outline =
   navigate to the dedicated browse page. */
.cw-tpl-footer-btn--secondary{margin-block-start:6px;background:transparent;color:var(--navy);border:1px solid var(--navy)}
.cw-tpl-footer-btn--secondary:hover{background:var(--navy);color:#fff;filter:none}

/* Panel-relocator (Phase 2E.2+, 2026-05-18) — once the workspace
   mount relocates an FR-overlay panel into a rail accordion, the
   panel's inline width/height/flex props no longer make sense.
   This block normalizes any relocated panel to fit the accordion
   body width and lose the inner padding the overlay had layered on. */
.cw-accordion-body [data-cw-relocated="1"]{display:block;width:100%;min-height:0;max-height:none;background:transparent;border:0}
.cw-accordion-body [data-cw-relocated="1"] > *{max-width:100%;box-sizing:border-box}
/* Echo panel inside the rail — kill the overlay-specific header
   strip (it duplicates the accordion summary) and tighten the
   parameters grid for the narrower accordion width. */
.cw-eq-panel-mounted{padding:0}
.cw-eq-panel-mounted > div:first-child{display:none}
/* Drug panel inside the rail — same overlay-header suppression
   pattern as the echo panel. The dog/cat sub-section toggles and
   the rate-buttons CSS in §1/§3 still drives the inner layout. */
.cw-drug-panel-mounted{padding:0}
.cw-drug-panel-mounted > div:first-child{display:none}
/* Phrase library inside the rail — fr-phrases-panel ships its own
   breadcrumb + filter chip row which we keep (no overlay-only
   header to strip). The min-height stops the panel from
   collapsing when its disease/stage produces zero matches. */
.cw-phrases-panel-mounted{padding:0;min-height:180px}

/* Phase 3A.3 (2026-05-22) — discoverable "+ add phrase" pin button.
   Sits in the phrases-panel search row, small + gold, jumps the user
   straight to the existing add-phrase form at the bottom of the
   panel + opens + focuses it. Hover state matches workspace gold. */
.cw-phr-add-pin{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;background:var(--gold);color:#fff;border:0;border-radius:6px;font-size:1.05rem;font-weight:700;cursor:pointer;margin-inline-start:6px;font-family:inherit;transition:filter var(--motion-base,.15s ease-out),transform var(--motion-base,.15s ease-out);box-shadow:0 1px 2px rgba(184,150,46,.3)}
.cw-phr-add-pin:hover{filter:brightness(1.08);transform:translateY(-1px)}
.cw-phr-add-pin:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

/* Phase 3A.4 (2026-05-22) — Audience badge on phrase rows.
   owner = soft purple bg (counseling/empathic tone)
   colleague = soft teal bg (technical/clinical tone)
   mixed phrases get no badge to avoid visual noise. */
.fr-phr-v3-aud{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:10px;font-size:.68rem;font-weight:500;line-height:1.4}
.fr-phr-v3-aud-owner{background:#f3e8ff;color:#6b21a8;border:1px solid #d8b4fe}
.fr-phr-v3-aud-colleague{background:#e0f2f1;color:#0f766e;border:1px solid #5eead4}

/* Phase 3A.5 (2026-05-22) — Golani-recommended phrase highlight.
   Rows that Golani uses MOST often for this disease+stage get a
   gold left-edge stripe + the 🌟 star prepended to the text. The
   star is muted to not overpower the text but visible enough to
   draw the eye to the top-3. */
.fr-phr-v3-text .fr-phr-v3-star{display:inline-block;margin-inline-end:6px;font-size:.95em;line-height:1;vertical-align:middle;filter:drop-shadow(0 0 1px rgba(184,150,46,.5))}
.fr-phrase-item-v3.is-golani-recommended{box-shadow:inset 3px 0 0 var(--gold)}
.fr-phrase-item-v3.is-golani-recommended[data-golani-rank="1"]{background:rgba(184,150,46,.04)}

/* Phase 3A.6 (2026-05-22) — Audience filter chips. Same row layout
   as purpose chips. Active state matches audience badge color
   (purple for owner, teal for colleague). Empty bar hides itself
   gracefully (no rendering when no signal). */
.fr-phr-audience-bar{display:flex;flex-wrap:wrap;gap:4px;padding:4px 10px 6px;border-block-end:1px solid var(--line)}
.fr-phr-audience-bar:empty{display:none}
.fr-phr-aud-chip{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:2px 9px;font-size:.72rem;color:var(--muted);cursor:pointer;font:inherit;font-weight:500;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out),border-color var(--motion-base,.15s ease-out)}
.fr-phr-aud-chip:hover{border-color:var(--text);color:var(--text)}
.fr-phr-aud-chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.fr-phr-aud-chip-owner.active{background:#9333ea;border-color:#9333ea}
.fr-phr-aud-chip-colleague.active{background:#0d9488;border-color:#0d9488}
/* Phase 5.6 (2026-05-24) — Filter popover. Wraps the purpose + audience
   chip bars in a <details>, so the default state is a single thin
   summary row instead of 2 chip rows eating ~70px of vertical space.
   When closed: just one row with "מסננים ▾". When open: the summary
   shrinks, chips appear below. has-active-filter adds a coloured dot
   so it's obvious a filter is on without opening. */
.fr-phr-filter{border-block-end:1px solid var(--line);background:var(--bg2)}
.fr-phr-filter-summary{list-style:none;display:flex;align-items:center;gap:6px;padding:5px 12px;cursor:pointer;font-size:.72rem;color:var(--muted);user-select:none;transition:background var(--motion-base,.15s ease-out),color var(--motion-base,.15s ease-out)}
.fr-phr-filter-summary::-webkit-details-marker{display:none}
.fr-phr-filter-summary::marker{content:""}
.fr-phr-filter-summary:hover{background:var(--bg);color:var(--text)}
.fr-phr-filter-icon{font-size:.85em;line-height:1}
.fr-phr-filter-text{flex:1 1 auto;font-weight:500;letter-spacing:.2px}
.fr-phr-filter-caret{color:var(--muted);font-size:.65rem;transition:transform var(--motion-base,.15s ease-out)}
.fr-phr-filter[open] .fr-phr-filter-caret{transform:rotate(180deg)}
.fr-phr-filter.has-active-filter .fr-phr-filter-text{color:var(--accent);font-weight:600}
.fr-phr-filter.has-active-filter .fr-phr-filter-summary::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:0 0 auto}
.fr-phr-filter[open]{background:var(--bg)}
/* When the filter popover is open, drop the per-bar border-end so
   the two chip rows + summary read as one visual block. */
.fr-phr-filter[open] .fr-phr-purpose-bar{border-block-end:0;padding-block-end:2px}
.fr-phr-filter[open] .fr-phr-audience-bar{border-block-end:0;padding-block-end:6px}
/* Sections + fill drawers, mounted inline (Phase 2E.5).
   Hide the ✕ close buttons inside the relocated modals — the
   accordion's collapse is the canonical close action. The modal
   head title becomes redundant too (accordion summary is the
   header) so kill it as well. */
.cw-sections-mounted .fr-sections-close,
.cw-fill-mounted .fr-fill-close{display:none}
.cw-sections-mounted .fr-sections-head h3,
.cw-fill-mounted .fr-fill-head h3{display:none}
.cw-sections-mounted,
.cw-fill-mounted{padding:0;background:transparent;box-shadow:none;border:0;width:100%;max-width:100%;height:auto;max-height:none;position:static}
/* Images zone, mounted inline (Phase 2E.6). Override the inline
   padding + border-top that made sense when the zone was anchored
   under the textarea — inside the accordion, those add chrome the
   user doesn't need. The drop zone + thumb grid keep their inner
   styling untouched. */
.cw-images-mounted{padding:0 !important;border-top:0 !important}

/* Workspace takeover (Phase 2E.7, 2026-05-18) — when the feature
   flag is ON, hide the legacy consult-view chrome that was rendering
   above and below the workspace, producing the stacked-navigation
   visual pollution the recording caught (2026-05-18 22:19). Each
   selector here is targeted, not a blanket .tmpl-hero *{} hide,
   because the other workspace modes (reports / patients / tools /
   tmpl-edit) still rely on this content tree's children. */
/* Phase 2F.11 — route-scoped so navigating off /consult restores
   the legacy chrome (templates grids, mode tabs, etc.) the other
   views depend on. */
body[data-cw-active-route="consult"] .tmpl-hero-head,
body[data-cw-active-route="consult"] #dash-workspace-nav,
body[data-cw-active-route="consult"] #dash-tmpl-subnav,
body[data-cw-active-route="consult"] #consult-scaffold,
body[data-cw-active-route="consult"] .tmpl-section,
body[data-cw-active-route="consult"] #echo-dog-wrap,
body[data-cw-active-route="consult"] #echo-cat-wrap,
/* Phase 2F.5 (2026-05-18, triggered by 23:03 recording) — the
   legacy tools-index siblings of .tmpl-hero were still rendering
   below the workspace (visible while scrolling): "כלים — *" section
   labels (.sl), the grids of tool cards (.grid only when used at
   the dashboard top level), the "פתח דוח אקו סופי" legacy launcher
   (.fr-trigger-wrap), the archive ghost button (.dash-ghost-row-btn),
   and the divider rules between them (.divider). Hide each when
   the workspace is on. None of these classes are used inside the
   workspace itself, so the targeted hides are safe. */
body[data-cw-active-route="consult"] .sl,
body[data-cw-active-route="consult"] .grid,
body[data-cw-active-route="consult"] .divider,
/* Phase 2F.13 (2026-05-20, triggered by 77777.mp4 recording) — the
   .fr-trigger-wrap ("פתח דוח אקו סופי" card) and .dash-ghost-row-btn
   ("ארכיון דוחות" button) were rendering below the templates browser
   on /templates because my prior hide rules were consult-scoped. Both
   are duplicates of workspace functionality: the FR is now the
   workspace canvas (one tab away via "ייעוץ"), and the archive lives
   at /reports. Move them to workspace-global hide. Verified clutter
   gone on /templates via Claude in Chrome inspection. */
body[data-cw-enabled="1"] .fr-trigger-wrap,
body[data-cw-enabled="1"] .dash-ghost-row-btn,
/* Phase 2F.9 (2026-05-19, triggered by 0000.mp4 recording) — when
   the user scrolled past the workspace, the legacy #section-echo
   shell was still rendering: stage chips ([D 1][C 1][B2 1][B1 1])
   and per-disease template-preview cards (with "העבר לדוח הסופי"
   buttons). My 2E.7 hides only #echo-dog-wrap (the disease-tabs
   row) — the stage chips + preview cards live in #section-echo
   FURTHER DOWN inside #section-echo-dog / #section-echo-cat. Hide
   the whole shell so nothing leaks below the workspace. */
body[data-cw-active-route="consult"] #section-echo,
body[data-cw-active-route="consult"] #section-echo-dog,
body[data-cw-active-route="consult"] #section-echo-cat,
/* Phase 2F.10 (2026-05-19) — fullPage audit revealed three more
   below-fold leaks the viewport-only screenshots missed:
   1. .sidebar-inner — legacy notes widget + saved-list. Both are
      duplicated by the workspace's right rail (phrases + recent
      reports accordions / "דוחות אחרונים" section).
   2. .dash-footer — page-level footer with build tag + sync
      indicators + Import/Export buttons. Build tag + sync status
      are already in the workspace's #cw-statusbar. The
      Import/Export buttons are admin tools rarely used; available
      via ?legacy=1 escape hatch until Phase 3 integrates them.
   3. .fr-overlay residuals — even though display:none, kill any
      potential reveal by overriding to important. */
/* Phase 2F.11 (2026-05-19) — these hides MUST be route-scoped, not
   workspace-global, otherwise navigating to "מטופלים" / "דוחות" /
   "כלים" / "טמפלטים" while the workspace flag is on leaves the
   user without their patient list / saved reports / tools because
   the CSS hides them everywhere. Gate on data-cw-active-route which
   the workspace mount keeps in sync with location.hash. */
body[data-cw-active-route="consult"] .notes-wrap,
body[data-cw-active-route="consult"] .saved-list,
body[data-cw-active-route="consult"] .dash-footer{display:none !important}
body[data-cw-enabled="1"] .fr-overlay:not(.open){display:none !important}

/* Canvas label (Phase 2F.12) — explicit "דוח סופי" header so the
   user can never confuse the canvas for empty space. Sits above the
   empty-state tiles AND the textarea. */
.cw-canvas-label{display:flex;align-items:center;gap:8px;padding:6px 4px;margin-block-end:4px;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;font-weight:600}
.cw-canvas-label-icon{font-size:1rem;color:var(--gold)}
.cw-canvas-label-text{color:var(--navy);font-size:.85rem;font-weight:700;letter-spacing:.4px}
.cw-canvas-label-hint{font-size:.72rem;font-weight:500;color:var(--faint);text-transform:none;letter-spacing:0;margin-inline-start:auto;font-family:'DM Mono',ui-monospace,Menlo,Consolas,monospace}
/* Q3 (2026-05-24) — ephemeral toast inside consult workspace. Stacks
   bottom-center; auto-dismisses. Fired from frInsertPhrase + future
   moment-of-action confirmations. Pointer-events:none so toasts never
   block clicks on the canvas underneath. */
.cw-toast-host{position:fixed;bottom:28px;inset-inline-start:50%;transform:translateX(-50%);z-index:9000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.cw-toast{background:var(--navy);color:#fff;padding:10px 18px;border-radius:8px;font-family:'DM Sans',sans-serif;font-size:.92rem;font-weight:500;box-shadow:0 6px 24px rgba(15,30,41,.25);max-width:520px;direction:rtl;opacity:0;transform:translateY(8px);transition:opacity .2s ease-out,transform .2s ease-out;text-align:start}
.cw-toast.cw-toast-show{opacity:1;transform:translateY(0)}
.cw-toast-success{background:#2a7d4a;color:#fff}
.cw-toast-warn{background:var(--gold);color:#fff}
.cw-toast-error{background:#b91c1c;color:#fff}

/* Relocated textarea fills the canvas. The slot is flex-column
   inside .cw-canvas (which is itself flex-column 100% high), so
   making the slot stretch + the textarea fill 100% gives the
   user a full-canvas writing surface, mirroring the wireframe. */
.cw-textarea-slot[data-has-textarea="1"]::before{display:none}
.cw-textarea-slot{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
/* Phase 5.1B (2026-05-24) — premium reading experience for the canvas.
   Typography hierarchy: 17px text + 1.8 line-height gives clinical
   Hebrew real breathing room. max-width 80ch caps line length at
   ~720px (sweet spot for readability per Bringhurst). Auto margins
   center the column when canvas exceeds 80ch (now common after 5.1A).
   Padding tripled from 14px to 32px for a paper-like generous feel. */
.cw-textarea-slot > .fr-textarea{
  flex:1 1 auto;min-height:480px;width:100%;max-width:80ch;
  box-sizing:border-box;
  margin:0 auto;
  border:1px solid var(--line);border-radius:var(--radius,12px);
  padding:28px 32px;
  background:var(--bg2);
  font:inherit;font-size:1.05rem;line-height:1.8;
  color:var(--text);
  resize:none;direction:rtl;text-align:start;outline:none;
  transition:border-color var(--motion-base,.15s ease-out),box-shadow var(--motion-base,.15s ease-out)
}
.cw-textarea-slot > .fr-textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,150,46,.12)}
/* Placeholder lighter than typed text so the user sees there's
   something but doesn't think the report is filled. */
.cw-textarea-slot > .fr-textarea::placeholder{color:var(--faint);font-size:.95rem;line-height:1.7}

/* Empty-state tiles (Phase 2F.2, 2026-05-18) — 3 inline coaching
   cards at the top of the canvas when the textarea is empty AND no
   patient is set. Less aggressive than the previous full-canvas
   "איך מתחילים?" treatment. As soon as the user types or sets a
   patient, JS sets [hidden] on #cw-empty-state and the tiles vanish. */
.cw-empty-state{display:flex;gap:10px;flex-wrap:wrap;margin-block-end:4px}
.cw-empty-state[hidden]{display:none}
/* Phase 2F.12 (2026-05-19) — REVERTED 2F.7's placeholder-hide rule.
   Caught by Dr. Levy: with the placeholder transparent AND no
   visible label above the textarea, the empty canvas looked like
   "the final report editor is gone". The textarea was there but
   indistinguishable from a blank div. Restore the placeholder so
   the textarea ALWAYS shows "בחר טמפלט ולחץ ׳העבר לדוח הסופי׳ —
   הטקסט יופיע כאן לעריכה חופשית..." — a clear visible affordance
   that this IS the report writing area. Duplication with the tile
   labels is acceptable; invisibility is not. */
.cw-empty-tile{flex:1 1 180px;display:flex;flex-direction:column;align-items:start;gap:6px;padding:14px 16px;background:var(--bg2);border:1px dashed var(--line);border-radius:var(--radius,10px);cursor:pointer;font:inherit;color:var(--text);text-align:start;transition:border-color var(--motion-base,.15s ease-out),background var(--motion-base,.15s ease-out),transform var(--motion-base,.15s ease-out)}
.cw-empty-tile:hover{border-color:var(--gold);background:var(--bg);transform:translateY(-1px)}
.cw-empty-tile-icon{font-size:1.6rem;line-height:1}
.cw-empty-tile-label{font-weight:700;color:var(--navy);font-size:.95rem}
.cw-empty-tile-desc{font-size:.78rem;color:var(--muted);line-height:1.4}
