/* ================================================================
   HRS Executive Dashboard — Feedback widget (HRS-1170)
   Launcher + screenshot annotation overlay + sanitized past-feedback
   panel. Reuses the dashboard design tokens (style.css :root /
   [data-theme="light"]) so it themes for free. The launcher and every
   surface in this file carry data-html2canvas-ignore so they never
   appear in a captured screenshot.
   ================================================================ */

/* ---- Launcher ------------------------------------------------- */
#fb-launchers{
  position:fixed;
  right:max(20px, env(safe-area-inset-right));
  bottom:max(20px, env(safe-area-inset-bottom));
  z-index:9000;display:flex;flex-direction:column;align-items:center;gap:10px;
}
.fb-launcher{
  width:56px;height:56px;border-radius:50%;
  border:1px solid rgba(255,255,255,.18);
  background:radial-gradient(circle at 38% 32%, var(--hrs-blue-light) 0%, var(--hrs-blue) 46%, var(--hrs-blue-dark) 100%);
  box-shadow:0 6px 20px -4px rgba(10,14,20,.55), 0 0 0 0 var(--glow-blue);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  padding:0;
  transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-med) var(--ease), filter var(--dur-fast);
  -webkit-tap-highlight-color:transparent;
}
/* Companion "past feedback" mini button, stacked above the hawk */
.fb-mini{
  width:40px;height:40px;border-radius:50%;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg2);border:1px solid var(--border);color:var(--text2);
  box-shadow:var(--shadow-md);
  transition:transform var(--dur-fast) var(--ease-out), color var(--dur-fast), border-color var(--dur-fast);
  -webkit-tap-highlight-color:transparent;
}
.fb-mini svg{width:17px;height:17px;display:block}
.fb-mini:hover{transform:translateY(-2px);color:var(--hrs-blue);border-color:var(--hrs-blue)}
.fb-mini:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:3px}
body.fb-active #fb-launchers{opacity:0;pointer-events:none;visibility:hidden}
body.fb-lock{overflow:hidden}
.fb-launcher img{
  width:34px;height:auto;display:block;pointer-events:none;
  filter:drop-shadow(0 1px 1px rgba(10,14,20,.4));
  transform:translateY(1px);
}
.fb-launcher:hover{transform:translateY(-2px);box-shadow:0 10px 26px -4px rgba(10,14,20,.6), var(--shadow-glow)}
.fb-launcher:active{transform:translateY(0) scale(.97)}
.fb-launcher:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:3px}
[data-theme="light"] .fb-launcher{
  border-color:rgba(255,255,255,.7);
  box-shadow:0 6px 18px -4px color-mix(in srgb, var(--brand-dark) 30%, transparent);
}
[data-theme="light"] .fb-launcher:hover{box-shadow:0 10px 24px -4px color-mix(in srgb, var(--brand-dark) 34%, transparent)}

/* Visually-hidden helper (a11y) */
.fb-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}

/* ---- Shared surfaces (overlay + panel) ------------------------ */
.fb-root{position:fixed;inset:0;display:none}
.fb-root.fb-open{display:block}

.fb-scrim{position:absolute;inset:0;background:rgba(6,9,13,.78);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
[data-theme="light"] .fb-scrim{background:rgba(40,54,78,.55)}

/* ================================================================
   ANNOTATION OVERLAY
   ================================================================ */
#fb-overlay{z-index:9600}
.fb-stage{
  position:absolute;inset:0;display:flex;flex-direction:column;
}
/* Token-driven surface: the toolbar (and its title) must follow the ACTIVE
   theme mechanism, which differs per host (data-theme on the legacy dashboard,
   html.dark in foundation spokes). Hardcoded dark gradients left the title
   dark-on-dark in light mode wherever the [data-theme] override never matched,
   so the surface now comes from the same bridged tokens as the text on it. */
.fb-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 14px;
  background:var(--bg2, #111820);
  border-bottom:1px solid var(--border);
  position:relative;z-index:2;
}
.fb-bar-title{
  font-family:Montserrat,sans-serif;font-weight:600;font-size:13px;letter-spacing:.02em;
  color:var(--text);margin-right:4px;display:flex;align-items:center;gap:8px;
}
.fb-bar-title::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--hrs-blue);box-shadow:0 0 8px var(--glow-blue)}
.fb-tools{display:flex;gap:6px;flex-wrap:wrap}
.fb-tool-sep{width:1px;align-self:stretch;min-height:24px;background:var(--border);margin:0 2px;flex:0 0 auto}
.fb-spacer{flex:1 1 auto}

.fb-tool{
  display:inline-flex;align-items:center;gap:6px;
  font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.03em;
  text-transform:uppercase;
  background:var(--bg3);color:var(--text2);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:7px 10px;min-height:36px;cursor:pointer;
  transition:all var(--dur-fast);
}
.fb-tool svg{width:15px;height:15px;display:block;flex:0 0 auto}
.fb-tool:hover{color:var(--text);border-color:var(--border-hover)}
.fb-tool:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-tool[aria-pressed="true"]{
  background:color-mix(in srgb, var(--brand) 16%, transparent);
  color:var(--fb-brand-ink, var(--hrs-blue-light));
  border-color:var(--hrs-blue);
}
[data-theme="light"] .fb-tool{background:rgba(255,255,255,.7)}
[data-theme="light"] .fb-tool[aria-pressed="true"]{color:var(--hrs-blue-dark)}

/* Reset tool: icon + "Reset" label (replaces the trash-can affordance) */
.fb-tool .fb-tool-ico{display:inline-flex;align-items:center}
.fb-tool .fb-tool-ico svg{width:15px;height:15px;display:block}

/* Annotation color swatches — chosen color applies to NEW annotations */
.fb-colors{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.fb-swatch{
  width:22px;height:22px;border-radius:50%;padding:0;cursor:pointer;
  background:var(--sw,#ef4444);
  border:2px solid var(--border);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.18);
  transition:transform var(--dur-fast), border-color var(--dur-fast), box-shadow var(--dur-fast);
}
.fb-swatch:hover{transform:scale(1.08)}
.fb-swatch:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-swatch[aria-pressed="true"]{
  border-color:var(--hrs-blue-light);
  box-shadow:0 0 0 2px var(--hrs-blue-light), inset 0 0 0 1px rgba(0,0,0,.2);
  transform:scale(1.05);
}

/* Canvas workspace */
.fb-canvas-wrap{
  flex:1 1 auto;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  padding:14px;min-height:0;
}
.fb-canvas-frame{
  /* Width/height are set in JS (fitFrame) to ONE aspect-correct display rect so
     the screenshot and ink canvas share a single coordinate model from capture
     through export. Do NOT reintroduce max-width/max-height or auto sizing here:
     that previously let .fb-shot (width-fit, overflowing) and .fb-ink (fills the
     height-clamped frame) resolve to different on-screen rects, which shifted
     saved annotations downward on reopen (HRS-1198). */
  position:relative;line-height:0;
  box-shadow:0 12px 48px -12px rgba(0,0,0,.7);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  overflow:hidden;
}
/* Both canvases fill the frame identically — one rect, no drift. */
.fb-shot,.fb-ink{
  position:absolute;top:0;left:0;width:100%;height:100%;display:block;margin:0;
}
.fb-ink{touch-action:none;cursor:crosshair}
/* Inline text-note input, positioned over the screenshot while typing */
.fb-text-input{
  position:absolute;transform:translateY(-2px);z-index:3;
  min-width:160px;max-width:70%;
  font-family:Hind,sans-serif;font-size:13px;color:var(--text);
  background:var(--bg2);border:1px solid var(--hrs-blue);
  border-radius:var(--radius-sm);padding:5px 8px;
  box-shadow:0 6px 18px -6px rgba(0,0,0,.6);
}
.fb-text-input:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 25%, transparent)}

/* Compose dock (comment + submit) */
/* Same token-driven surface rationale as .fb-bar above. */
.fb-compose{
  display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;
  padding:12px 14px;
  background:var(--bg2, #111820);
  border-top:1px solid var(--border);
  position:relative;z-index:2;
}
.fb-fields{flex:1 1 320px;display:flex;flex-direction:column;gap:8px;min-width:0}
.fb-actions{display:flex;gap:8px;align-items:center}
.fb-input,.fb-textarea{
  width:100%;font-family:Hind,sans-serif;font-size:13px;color:var(--text);
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:9px 11px;resize:none;
  transition:border-color var(--dur-fast), box-shadow var(--dur-fast);
}
.fb-input::placeholder,.fb-textarea::placeholder{color:var(--text3)}
.fb-input:focus,.fb-textarea:focus{outline:none;border-color:var(--hrs-blue);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent)}
.fb-textarea{min-height:46px;max-height:140px;line-height:1.45}
[data-theme="light"] .fb-input,[data-theme="light"] .fb-textarea{background:rgba(255,255,255,.85)}

.fb-btn{
  font-family:Montserrat,sans-serif;font-weight:600;font-size:12px;letter-spacing:.04em;
  text-transform:uppercase;
  padding:10px 16px;min-height:40px;border-radius:var(--radius-sm);
  border:1px solid var(--border);background:var(--bg3);color:var(--text2);
  cursor:pointer;transition:all var(--dur-fast);white-space:nowrap;
}
.fb-btn:hover{color:var(--text);border-color:var(--border-hover)}
.fb-btn:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-btn-primary{
  background:linear-gradient(135deg, var(--hrs-blue) 0%, var(--hrs-blue-dark) 100%);
  border-color:var(--hrs-blue);color:#fff;
}
.fb-btn-primary:hover{filter:brightness(1.08);color:#fff}
.fb-btn-link{
  margin-right:auto;
  background:transparent;
  color:var(--text3);
}
.fb-btn-link:hover{color:var(--text);background:color-mix(in srgb, var(--brand) 8%, transparent)}
.fb-btn:disabled{opacity:.5;cursor:not-allowed;filter:none}

.fb-hint{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--text3);letter-spacing:.02em}

/* Reviewer guidance: makes it obvious you can draw on the shot + comment */
.fb-guide{
  display:flex;align-items:flex-start;gap:7px;
  font-family:Hind,sans-serif;font-size:12px;line-height:1.45;
  color:var(--text2);
  padding:8px 11px;margin-bottom:2px;
  background:color-mix(in srgb, var(--brand) 10%, transparent);
  border:1px solid color-mix(in srgb, var(--brand) 28%, transparent);
  border-radius:var(--radius-sm);
}
.fb-guide::before{content:"✎";font-size:13px;line-height:1.3;color:var(--fb-brand-ink, var(--hrs-blue-light))}
[data-theme="light"] .fb-guide{background:color-mix(in srgb, var(--brand) 8%, transparent);color:var(--text2)}

.fb-privacy-note{
  font-family:Hind,sans-serif;font-size:11px;line-height:1.4;
  color:var(--text3);padding:0 2px;
}

/* Inline status / error inside the overlay */
.fb-note{
  font-family:Hind,sans-serif;font-size:12px;line-height:1.4;
  padding:8px 11px;border-radius:var(--radius-sm);width:100%;
  border:1px solid var(--border);background:var(--bg2);color:var(--text2);
}
.fb-note.fb-note-err{border-color:var(--red);background:var(--red-bg);color:var(--text)}
.fb-note.fb-note-ok{border-color:var(--green);background:var(--green-bg);color:var(--text)}
.fb-note[hidden]{display:none}

/* Capture progress / failure card (shown before the overlay paints) */
.fb-capture-card{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);
  z-index:9700;min-width:240px;max-width:90vw;
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);padding:20px 22px;text-align:center;
  font-family:Hind,sans-serif;color:var(--text);
}
.fb-capture-card .fb-cap-title{font-family:Montserrat,sans-serif;font-weight:600;font-size:14px;margin-bottom:6px}
.fb-capture-card .fb-cap-msg{font-size:12px;color:var(--text2);line-height:1.5;margin-bottom:14px}
.fb-spinner{
  width:26px;height:26px;margin:0 auto 12px;border-radius:50%;
  border:2.5px solid var(--border);border-top-color:var(--hrs-blue);
  animation:fb-spin .8s linear infinite;
}
@keyframes fb-spin{to{transform:rotate(360deg)}}
.fb-cap-actions{display:flex;gap:8px;justify-content:center}

/* ================================================================
   PAST FEEDBACK PANEL (sanitized, app-owned fields only)
   ================================================================ */
#fb-panel{z-index:9500}
.fb-drawer{
  position:absolute;top:0;right:0;bottom:0;
  width:min(440px, 100%);
  background:var(--bg2);border-left:1px solid var(--border);
  box-shadow:-12px 0 40px -16px rgba(0,0,0,.6);
  display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform var(--dur-med) var(--ease-out);
}
.fb-root.fb-open .fb-drawer{transform:translateX(0)}
.fb-drawer-head{
  display:flex;align-items:center;gap:10px;
  padding:16px 18px;border-bottom:1px solid var(--border);
}
.fb-drawer-head h2{font-family:Montserrat,sans-serif;font-weight:600;font-size:15px;color:var(--text);flex:1}
.fb-icon-btn{
  background:none;border:1px solid var(--border);border-radius:var(--radius-sm);
  color:var(--text3);cursor:pointer;width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  transition:all var(--dur-fast);
}
.fb-icon-btn:hover{color:var(--text);border-color:var(--border-hover)}
.fb-icon-btn:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-icon-btn svg{width:16px;height:16px}

/* Status tabs: New / In Progress / Done */
.fb-tabs{
  display:flex;gap:4px;padding:8px 12px 0;
  border-bottom:1px solid var(--border);
}
.fb-tab{
  display:inline-flex;align-items:center;gap:7px;
  font-family:Montserrat,sans-serif;font-weight:600;font-size:11.5px;letter-spacing:.02em;
  color:var(--text3);background:none;border:0;cursor:pointer;
  padding:9px 11px;border-bottom:2px solid transparent;margin-bottom:-1px;
  transition:color var(--dur-fast), border-color var(--dur-fast);
}
.fb-tab:hover{color:var(--text2)}
.fb-tab:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:-2px;border-radius:var(--radius-sm)}
.fb-tab.is-active{color:var(--text);border-bottom-color:var(--hrs-blue)}
.fb-tab-count{
  font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:600;
  min-width:18px;text-align:center;padding:1px 5px;border-radius:999px;
  background:var(--bg3);color:var(--text3);border:1px solid var(--border);
}
.fb-tab.is-active .fb-tab-count{background:var(--blue-bg);color:var(--blue);border-color:transparent}

.fb-list{flex:1 1 auto;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.fb-empty,.fb-unavailable{
  font-family:Hind,sans-serif;font-size:13px;color:var(--text2);line-height:1.5;
  padding:24px 8px;text-align:center;
}
.fb-unavailable{color:var(--text3)}

.fb-item{
  border:1px solid var(--border);border-radius:var(--radius-md);
  background:var(--bg3);padding:12px 13px;
}
.fb-item.fb-item-archived{opacity:.82}
.fb-item-top{display:flex;align-items:center;gap:8px}
.fb-item-top .fb-spacer{flex:1 1 auto}
/* Description-first: the editable original feedback body leads the card */
.fb-item-body{font-family:Hind,sans-serif;font-size:13px;color:var(--text);line-height:1.5;margin-top:9px;overflow-wrap:break-word;white-space:pre-wrap}
.fb-item-meta{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--text3);margin-top:7px;display:flex;gap:8px;flex-wrap:wrap}
.fb-item-meta .fb-dot{opacity:.5}
.fb-session-context{margin-top:9px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface2);display:flex;flex-direction:column;gap:5px;font-size:11px}
.fb-session-links{display:flex;gap:10px;flex-wrap:wrap}
.fb-session-link{color:var(--hrs-blue-light);text-decoration:underline;text-underline-offset:2px}
.fb-session-details{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--text3);overflow-wrap:anywhere}

/* Small inline action button (Edit own feedback) */
.fb-mini-btn{
  display:inline-flex;align-items:center;gap:5px;
  font-family:"JetBrains Mono",monospace;font-size:10px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--text3);background:none;border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:4px 8px;cursor:pointer;transition:all var(--dur-fast);
}
.fb-mini-btn:hover{color:var(--hrs-blue);border-color:var(--hrs-blue)}
.fb-mini-btn:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-mini-ico{display:inline-flex}
.fb-mini-ico svg{width:12px;height:12px;display:block}

/* Inline edit editor for own feedback */
.fb-edit{margin-top:9px;display:flex;flex-direction:column;gap:7px}
.fb-edit-ta{min-height:64px}
.fb-edit-actions{display:flex;gap:7px;justify-content:flex-end}
.fb-edit-actions .fb-btn{padding:7px 13px;min-height:auto}

/* Inline error line (edit / comment / maintainer save) — keeps the draft intact */
.fb-err{font-family:Hind,sans-serif;font-size:11.5px;line-height:1.4;color:var(--red);padding:2px 1px}
.fb-err[hidden]{display:none}
.fb-thumb{display:block;margin-top:9px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;line-height:0;background:var(--bg2)}
.fb-thumb img{display:block;width:100%;height:auto;max-height:150px;object-fit:cover;object-position:top}
.fb-thumb:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:2px}
.fb-status{
  display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;
  font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;
  padding:3px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap;
}
.fb-status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentcolor}
.fb-status.s-new{color:var(--blue);background:var(--blue-bg)}
.fb-status.s-progress{color:var(--yellow);background:var(--yellow-bg)}
.fb-status.s-partial{color:var(--cyan);background:rgba(56,189,248,.14)}
.fb-status.s-done{color:var(--green);background:var(--green-bg)}
.fb-status.s-wontdo{color:var(--text3);background:rgba(255,255,255,.06)}
[data-theme="light"] .fb-status.s-wontdo{background:rgba(10,14,20,.06)}

/* Comment thread (dashboard-originated only) */
.fb-comments{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.fb-comment{font-family:Hind,sans-serif;font-size:12px;color:var(--text2);line-height:1.45;padding:6px 9px;background:var(--bg2);border-radius:var(--radius-sm)}
.fb-comment.fb-comment-maint{border-left:2px solid var(--hrs-blue);border-radius:0 var(--radius-sm) var(--radius-sm) 0}
.fb-comment .fb-c-author{font-weight:600;color:var(--text);font-size:11px}
.fb-comment .fb-c-time{font-family:"JetBrains Mono",monospace;font-size:9px;color:var(--text3);margin-left:6px}
.fb-comment-add-wrap{margin-top:8px;display:flex;flex-direction:column;gap:5px}
.fb-comment-add{display:flex;gap:6px}
.fb-comment-add .fb-input{flex:1}
.fb-comment-add .fb-btn{padding:8px 12px;min-height:auto}

/* Maintainer + lifecycle controls. Rendered by JS only when the backend marks
   the session capable (dev mode is a local QA fallback), so it's always shown
   when present — no CSS dev-mode gate. */
.fb-maint{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:7px}
.fb-maint-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.fb-select{
  font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--text);
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:6px 8px;min-height:32px;
}
.fb-maint-link{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--hrs-blue-light);text-decoration:none}

/* Lifecycle buttons (archive / restore) + permanent delete (two-click confirm) */
.fb-life-btn,.fb-danger-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;min-height:auto}
.fb-danger-btn{color:var(--red);border-color:var(--red)}
.fb-danger-btn:hover{color:#fff;background:var(--red);border-color:var(--red)}
.fb-danger-btn.fb-armed{color:#fff;background:var(--red);border-color:var(--red);font-weight:700}
.fb-del-label{white-space:nowrap}

/* Archive tray — pinned at the bottom of the drawer, collapsed by default */
.fb-archive{border-top:1px solid var(--border);background:var(--bg2);flex:0 0 auto}
.fb-archive-head{
  width:100%;display:flex;align-items:center;gap:9px;
  font-family:Montserrat,sans-serif;font-weight:600;font-size:12px;color:var(--text2);
  background:none;border:0;cursor:pointer;padding:11px 16px;
  transition:color var(--dur-fast);
}
.fb-archive-head:hover{color:var(--text)}
.fb-archive-head:focus-visible{outline:2px solid var(--hrs-blue-light);outline-offset:-2px}
.fb-arch-ico{display:inline-flex;color:var(--text3)}
.fb-arch-ico svg{width:15px;height:15px;display:block}
.fb-arch-label{flex:0 0 auto}
.fb-archive-head .fb-arch-chev{margin-left:auto;font-size:10px;color:var(--text3)}
.fb-archive-body{
  max-height:38vh;overflow-y:auto;
  padding:4px 16px 14px;display:flex;flex-direction:column;gap:12px;
  border-top:1px dashed var(--border);
}

.fb-drawer-foot{
  padding:12px 16px;border-top:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.fb-reviewer-btn{
  max-width:210px;overflow:hidden;text-overflow:ellipsis;
  background:transparent;
}

/* ---- Toast (post-submit confirmation) ------------------------- */
.fb-toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(12px);
  z-index:9800;opacity:0;pointer-events:none;
  background:var(--bg2);border:1px solid var(--green);border-radius:var(--radius-md);
  box-shadow:var(--shadow-lg);padding:11px 16px;
  font-family:Hind,sans-serif;font-size:13px;color:var(--text);
  display:flex;align-items:center;gap:9px;max-width:90vw;
  transition:opacity var(--dur-med), transform var(--dur-med) var(--ease-out);
}
.fb-toast.fb-show{opacity:1;transform:translateX(-50%) translateY(0)}
.fb-toast.fb-toast-err{border-color:var(--red)}
.fb-toast svg{width:16px;height:16px;flex:0 0 auto}

/* ================================================================
   RESPONSIVE — mobile-safe
   ================================================================ */
@media (max-width:640px){
  .fb-launcher{width:50px;height:50px}
  .fb-launcher img{width:30px}
  .fb-bar{padding:8px 10px;gap:8px}
  .fb-bar-title{width:100%;order:-1}
  .fb-tool{padding:8px}
  .fb-tool svg{width:17px;height:17px}
  .fb-compose{flex-direction:column;align-items:stretch}
  .fb-actions{justify-content:flex-end}
  .fb-drawer{width:100%}
  .fb-colors{gap:4px}
  .fb-swatch{width:20px;height:20px}
  .fb-tabs{overflow-x:auto}
  .fb-tab{padding:9px 9px;font-size:11px;flex:0 0 auto}
  .fb-archive-body{max-height:46vh}
}

/* Honor reduced-motion */
@media (prefers-reduced-motion:reduce){
  .fb-launcher,.fb-drawer,.fb-toast,.fb-tool,.fb-btn,
  .fb-tab,.fb-swatch,.fb-mini-btn,.fb-archive-head{transition:none}
  .fb-spinner{animation-duration:1.6s}
}
