/* ══ PN-FEEDBACK · CEO instruction 17 Aug, REDESIGNED 27 Sep 2026 ═══════════════════════════════
   CEO, 27 Sep (verbatim): "the feedback panel is badly designed — it should pop up like a chat
   window at the bottom — and be clear on how users can add feedback." This file replaces the
   tall full-height Finder-glass side sheet with a compact chat widget: a FEEDBACK tab fixed
   bottom-right of the browser (unchanged, mounted on <html> — see pn-feedback.js header) that
   opens a chat window anchored bottom-right, max 380×560, scale+fade in from the tab, full-width
   bottom sheet under 480px. Presentation only — every id the tests hold (pn-feedback.js /
   qa/feedback_send.test.mjs) is unchanged; nothing here touches send/pin/upload/realtime logic. */

/* z-index: MUST clear .pn-stage (position:fixed; inset:0; z-index:10000 — account.js), the
   single biggest occlusion trap in this game (see account.js's own comments at ~956/1471: a
   full-viewport fixed layer that swallows elementFromPoint hits at whatever z-index sits under
   it, silently). 10600/10700 clears it and the "modal" band already used elsewhere
   (10045–10090) while staying well under the true system-critical overlays (21500+, and the
   ~2.1bn "always absolutely on top" kill-switch banner) — this widget should survive on top of
   ordinary game UI, including the sign-in dialog (a tester locked out of sign-in is exactly who
   needs to reach it), but must never fight a real outage banner for the same pixel. */
#pnfb-root{ position:fixed; inset:0; pointer-events:none; z-index:10600; }
#pnfb-root > *{ pointer-events:auto; }

/* shared type: JB = house mono (JetBrains Mono self-hosted alias), IS = house sans (Inter-family
   alias) — both already @font-face'd globally by pn-system-v4.css; referenced directly here since
   this widget no longer nests inside .lg-panel's token scope. */
#pnfb-root{ --pnfb-font:IS,'Segoe UI',Roboto,Arial,sans-serif; --pnfb-mono:JB,ui-monospace,Menlo,monospace; --pnfb-accent:#f97316; }

/* ── the tab — always reachable, never in the way ─────────────────────────────────────────── */
/* CEO, 27 Sep: locked to the bottom-right of the BROWSER viewport, outside the iPad case, on
   every width — not vertically centred, not anchored to the device glass. Mounted on
   document.documentElement (see pn-feedback.js) so this position:fixed always resolves against
   the true viewport, even under body.pn-folio's transform in the cased desktop layout.
   HIDDEN while the chat window is open (body.pnfb-panel-open) — the window opens exactly where
   the tab sits, so there is nothing left for the window to "cover", including the tab's own
   close affordance (the window supplies its own Close/Minimise instead — see .pnfb-head). */
#pnfb-tab{
  position:fixed; right:0; bottom:24px;
  min-width:32px; min-height:132px; padding:14px 8px;
  display:flex; align-items:center; justify-content:center;
  appearance:none; cursor:pointer; border:1px solid rgba(255,255,255,.22); border-right:0;
  border-radius:10px 0 0 10px;
  background:rgba(10,14,22,.6); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  color:rgba(238,244,252,.82);
  transition:color .15s ease, background .15s ease, border-color .15s ease;
}
#pnfb-tab:hover, #pnfb-tab:focus-visible{ color:#fff; border-color:rgba(249,115,22,.65); background:rgba(10,14,22,.8); outline:0; }
.pnfb-tab-label{ writing-mode:vertical-rl; transform:rotate(180deg); font:800 10px/1 JB,ui-monospace,monospace; letter-spacing:.24em; }
.pnfb-tab-dot{ position:absolute; top:10px; right:8px; width:9px; height:9px; border-radius:50%; background:#f97316; box-shadow:0 0 0 2px rgba(10,14,22,.8); }
#pnfb-tab.pnfb-stand-down{ display:none; }   /* QA48 SEV-2: deletion, not dimming, while an overlay owns the screen */
body.pnfb-panel-open #pnfb-tab{ display:none; }
body.mvc-light #pnfb-tab{ color:rgba(20,14,8,.72); background:rgba(250,246,239,.7); border-color:rgba(20,14,8,.28); }
body.mvc-light #pnfb-tab:hover{ color:#241f1b; }

/* ── the chat window — compact, anchored bottom-right, scale+fade in from the tab ─────────────
   CEO: "pop up like a chat window at the bottom". Not the old full-height side sheet: a bounded
   card, max 380×560, sitting where the tab was, growing UP + LEFT from that corner so the open
   animation reads as coming out of the tab. */
#pnfb-panel{
  position:fixed; right:0; bottom:24px; z-index:10700;
  width:min(380px, 94vw); height:min(560px, 78vh);
  display:flex; flex-direction:column;
  border-radius:16px;
  background:linear-gradient(168deg, rgba(30,43,64,.94), rgba(12,19,31,.97));
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 30px 80px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.08);
  -webkit-backdrop-filter:blur(24px) saturate(150%);
  backdrop-filter:blur(24px) saturate(150%);
  overflow:hidden;
  transform-origin:bottom right;
  transform:scale(.9) translateY(6px);
  opacity:0;
  transition:transform .18s cubic-bezier(.2,.9,.3,1.2), opacity .16s ease;
}
#pnfb-panel[hidden]{ display:none; }
#pnfb-panel.pnfb-open{ transform:scale(1) translateY(0); opacity:1; }
#pnfb-panel.pnfb-dragging{ outline:2px dashed #f97316; outline-offset:-8px; }
body.mvc-light #pnfb-panel{
  background:linear-gradient(168deg, rgba(250,246,238,.97), rgba(233,224,209,.98));
  border-color:rgba(58,44,26,.16);
  box-shadow:0 30px 80px rgba(74,54,28,.28), inset 0 1px 0 rgba(255,252,246,.7);
}

/* ── header — "Feedback · we read every message", close, minimise ───────────────────────────── */
.pnfb-head{
  flex:none; display:flex; align-items:center; justify-content:space-between; gap:6px;
  padding:8px 6px 8px 16px;
  background:rgba(255,255,255,.05); border-bottom:1px solid rgba(255,255,255,.12);
}
.pnfb-head-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.pnfb-head-title{ font:800 14px/1.1 var(--pnfb-font); color:#fff; letter-spacing:-.01em; }
.pnfb-head-sub{ font:600 10.5px/1.2 var(--pnfb-mono); letter-spacing:.05em; color:rgba(238,244,252,.5); text-transform:none; }
.pnfb-head-btns{ display:flex; align-items:center; gap:0; flex:none; }
.pnfb-headbtn{
  appearance:none; cursor:pointer; border:0; background:transparent; border-radius:8px;
  width:44px; height:44px; min-width:44px; min-height:44px;
  display:flex; align-items:center; justify-content:center;
  font:600 17px/1 var(--pnfb-font); color:rgba(238,244,252,.7);
  transition:background .12s ease, color .12s ease;
}
.pnfb-headbtn:hover, .pnfb-headbtn:focus-visible{ background:rgba(255,255,255,.1); color:#fff; outline:0; }
.pnfb-headbtn--close:hover, .pnfb-headbtn--close:focus-visible{ background:rgba(239,68,68,.22); color:#fff; }
body.mvc-light .pnfb-head{ background:rgba(58,44,26,.04); border-color:rgba(58,44,26,.12); }
body.mvc-light .pnfb-head-title{ color:#241f1b; }
body.mvc-light .pnfb-head-sub{ color:rgba(58,44,26,.55); }
body.mvc-light .pnfb-headbtn{ color:rgba(58,44,26,.65); }
body.mvc-light .pnfb-headbtn:hover{ background:rgba(58,44,26,.08); color:#241f1b; }

/* ── the thread — chat bubbles ─────────────────────────────────────────────────────────────── */
.pnfb-thread{ flex:1 1 auto; overflow-y:auto; padding:14px 14px 6px; display:flex; flex-direction:column; gap:10px; min-height:0; }

.pnfb-msg{ display:flex; flex-direction:column; max-width:88%; }
.pnfb-mine{ align-self:flex-end; align-items:flex-end; }
.pnfb-dave{ align-self:flex-start; align-items:flex-start; }
.pnfb-bubble{ border-radius:14px; padding:9px 11px; font:500 13px/1.45 var(--pnfb-font); }
.pnfb-mine .pnfb-bubble{ background:rgba(249,115,22,.22); border:1px solid rgba(249,115,22,.4); color:#fff; border-bottom-right-radius:4px; }
.pnfb-dave .pnfb-bubble{ background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.16); color:rgba(238,244,252,.92); border-bottom-left-radius:4px; }
.pnfb-bubble p{ margin:0; white-space:pre-wrap; word-break:break-word; }
.pnfb-from{ display:block; font:800 9px/1 var(--pnfb-mono); letter-spacing:.18em; color:#f97316; margin-bottom:3px; }
.pnfb-when{ font:500 10px/1 var(--pnfb-mono); letter-spacing:.04em; color:rgba(238,244,252,.4); margin-top:3px; }
.pnfb-shot{ margin-top:6px; max-width:200px; border-radius:6px; overflow:hidden; border:1px solid rgba(255,255,255,.16); }
.pnfb-shot img{ display:block; width:100%; height:auto; }
.pnfb-shot-load{ display:block; padding:6px 8px; font:500 10.5px/1 var(--pnfb-mono); color:rgba(238,244,252,.5); }
/* the standing intro bubble — quieter than a real reply so it doesn't read as unread team chatter */
.pnfb-intro .pnfb-bubble{ background:rgba(255,255,255,.05); }

body.mvc-light .pnfb-dave .pnfb-bubble{ background:rgba(20,14,8,.06); border-color:rgba(20,14,8,.16); color:#241f1b; }
body.mvc-light .pnfb-when{ color:rgba(20,14,8,.4); }
body.mvc-light .pnfb-intro .pnfb-bubble{ background:rgba(20,14,8,.04); }

/* ── the composer ──────────────────────────────────────────────────────────────────────────── */
.pnfb-composer{ flex:none; padding:10px 12px 12px; border-top:1px solid rgba(255,255,255,.12); display:flex; flex-direction:column; gap:8px; }
.pnfb-offnote{ margin:8px 14px 0; font:500 12px/1.4 var(--pnfb-font); color:rgba(238,244,252,.7); }

/* attachment chips — small thumbs sitting above the composer, the redesign's "chips" ask */
.pnfb-thumbs{ display:flex; gap:6px; flex-wrap:wrap; }
.pnfb-thumbs:empty{ display:none; }
.pnfb-thumb{ position:relative; width:46px; height:46px; border-radius:10px; overflow:hidden; border:1px solid rgba(255,255,255,.18); }
.pnfb-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.pnfb-thumb button{ position:absolute; top:0; right:0; width:18px; height:18px; border:0; background:rgba(0,0,0,.65); color:#fff; font-size:12px; line-height:1; cursor:pointer; border-radius:0 0 0 8px; }

/* auto-growing input */
#pnfb-composer .pnfb-input{
  resize:none; overflow-y:auto; min-height:40px; max-height:120px; width:100%;
  padding:10px 12px; border-radius:12px;
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16);
  color:#eef3fb; font:500 13.5px/1.4 var(--pnfb-font);
}
#pnfb-composer .pnfb-input::placeholder{ color:rgba(238,244,252,.42); }
#pnfb-composer .pnfb-input:focus-visible{ outline:0; border-color:rgba(249,115,22,.6); background:rgba(255,255,255,.09); }
body.mvc-light #pnfb-composer .pnfb-input{ background:rgba(255,254,250,.72); border-color:rgba(58,44,26,.18); color:#2a2119; }
body.mvc-light #pnfb-composer .pnfb-input::placeholder{ color:rgba(74,60,40,.55); }

.pnfb-row{ display:flex; align-items:center; gap:8px; }

/* icon buttons — clear labels + native tooltips (title=), 44px hit target per the a11y gate */
.pnfb-iconbtn{
  display:inline-flex; align-items:center; gap:6px; justify-content:center;
  height:44px; min-width:44px; padding:0 10px; border-radius:10px;
  border:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.04);
  color:rgba(238,244,252,.8); cursor:pointer; appearance:none;
  transition:border-color .12s ease, color .12s ease, background .12s ease;
}
.pnfb-iconbtn:hover, .pnfb-iconbtn:focus-visible{ border-color:rgba(249,115,22,.65); color:#fff; background:rgba(249,115,22,.1); outline:0; }
.pnfb-iconbtn.is-armed{ border-color:#f97316; color:#fff; background:rgba(249,115,22,.28); }
.pnfb-icon{ font-size:16px; line-height:1; }
.pnfb-iconlabel{ font:600 10.5px/1 var(--pnfb-mono); letter-spacing:.02em; white-space:nowrap; }
/* labels collapse to icon-only under 360px of composer width (phone), tooltip still carries the name */
@media (max-width:400px){ .pnfb-iconlabel{ display:none; } .pnfb-iconbtn{ min-width:44px; padding:0; } }
body.mvc-light .pnfb-iconbtn{ border-color:rgba(58,44,26,.22); color:rgba(58,44,26,.72); background:rgba(58,44,26,.03); }
body.mvc-light .pnfb-iconbtn:hover{ color:#241f1b; background:rgba(249,115,22,.12); }

/* Send — the one filled, accent action in the row */
.pnfb-sendbtn{
  margin-left:auto; appearance:none; cursor:pointer; border:1px solid rgba(249,115,22,.55);
  background:linear-gradient(180deg, #fb923c, #f97316); color:#1a0d02;
  font:800 13px/1 var(--pnfb-font); letter-spacing:.01em;
  height:44px; padding:0 20px; border-radius:10px;
  transition:transform .12s ease, filter .12s ease;
}
.pnfb-sendbtn:hover{ filter:brightness(1.06); transform:translateY(-1px); }
.pnfb-sendbtn:active{ transform:translateY(1px); }
.pnfb-sendbtn:focus-visible{ outline:2px solid #fff; outline-offset:2px; }
.pnfb-sendbtn:disabled{ opacity:.55; cursor:default; pointer-events:none; }

.pnfb-status-row{ display:flex; align-items:center; gap:10px; min-height:16px; }
.pnfb-note{ font:500 11.5px/1.4 var(--pnfb-font); color:rgba(238,244,252,.65); }
.pnfb-retry-btn{ flex:none; font:700 11px/1 var(--pnfb-mono); letter-spacing:.04em; color:#f97316;
  background:transparent; border:1px solid rgba(249,115,22,.5); border-radius:6px; padding:4px 8px; cursor:pointer; }
.pnfb-retry-btn:hover, .pnfb-retry-btn:focus-visible{ background:rgba(249,115,22,.15); outline:0; }
body.mvc-light .pnfb-retry-btn{ color:#b34a06; border-color:rgba(179,74,6,.4); }

/* the disclaimer — one quiet line, not a paragraph */
.pnfb-disclaimer{ margin:0; font:500 10px/1.35 var(--pnfb-mono); letter-spacing:.01em; color:rgba(238,244,252,.38); }
body.mvc-light .pnfb-disclaimer{ color:rgba(58,44,26,.45); }
body.mvc-light .pnfb-note{ color:rgba(58,44,26,.62); }

@media (max-width:480px){
  /* Full-width bottom sheet on phones (CEO brief: "full-width bottom sheet on phones"). Tab is
     already hidden while the panel is open (body.pnfb-panel-open above) so there's no edge gap
     to reconcile with. */
  #pnfb-tab{ min-height:96px; bottom:calc(24px + env(safe-area-inset-bottom,0px)); }
  #pnfb-panel{
    left:0; right:0; bottom:0; width:100vw; height:min(80vh, 640px);
    border-radius:18px 18px 0 0;
    padding-bottom:env(safe-area-inset-bottom,0px);
    transform-origin:bottom center;
  }
}

@media (prefers-reduced-motion:reduce){
  #pnfb-root *{ transition:none !important; }
  #pnfb-panel{ transform:none !important; }
}

.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ── PIN DROP · "point at what you mean" (CEO — proofing-sheet capture) ───────────────────────────
   A tester arms the pin, then clicks the exact spot they mean. A transparent full-viewport catcher
   takes that one click (crosshair cursor), a small orange marker records where, and a note in the
   composer confirms what was pinned. The pin rides in ctx.pin — no screenshot required to say WHERE.
   Unchanged behaviourally from the original panel; only the trigger button's class changed
   (.pnfb-attach → .pnfb-iconbtn, see pn-feedback.js) so the .is-armed rule above now targets it. */
#pnfb-pincatch{ position:fixed; inset:0; z-index:10650; cursor:crosshair; background:rgba(4,8,14,.12); }
body.pnfb-pinning{ cursor:crosshair; }
#pnfb-pinmark{ position:fixed; z-index:10680; width:18px; height:18px; margin:-9px 0 0 -9px; border-radius:50%;
  border:2px solid #f97316; background:rgba(249,115,22,.35); box-shadow:0 0 0 3px rgba(10,14,22,.55), 0 0 12px rgba(249,115,22,.7);
  pointer-events:none; }
#pnfb-pinmark::after{ content:""; position:absolute; left:50%; top:50%; width:4px; height:4px; margin:-2px 0 0 -2px; border-radius:50%; background:#f97316; }
.pnfb-pinnote:not([hidden]){ display:flex; align-items:center; gap:8px; font:600 11px/1.35 var(--pnfb-mono);
  letter-spacing:.02em; color:rgba(238,244,252,.85); background:rgba(249,115,22,.12); border:1px solid rgba(249,115,22,.35);
  border-radius:8px; padding:5px 8px; }
.pnfb-pinnote span{ flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pnfb-pinnote button{ flex:none; width:18px; height:18px; border:0; border-radius:4px; background:rgba(0,0,0,.35); color:#fff; font-size:13px; line-height:1; cursor:pointer; }
.pnfb-pinnote button:hover{ background:rgba(0,0,0,.6); }
body.mvc-light .pnfb-pinnote:not([hidden]){ color:rgba(20,14,8,.85); }

/* Send must stay a filled accent button: the game's generic button rules repaint background with
   !important (same fault the update pill had), which left dark text on a dark ground. Id-scoped. */
#pnfb-root .pnfb-sendbtn, #pnfb-root .pnfb-sendbtn:hover, #pnfb-root .pnfb-sendbtn:focus{
  background:linear-gradient(180deg, #fb923c, #f97316) !important; color:#1a0d02 !important;
  border-color:rgba(249,115,22,.55) !important; box-shadow:0 6px 18px -8px rgba(249,115,22,.7) !important;
}
#pnfb-root .pnfb-sendbtn:disabled{ opacity:.5 !important; }

/* ══ AI FOLLOW-UP · CEO 28 Sep ("Use our own Gemini for the feedback") ═══════════════════════════
   The follow-up question bubble, the "Send it now" pill, and the "Here's what we'll send" summary
   card. Built to design bible §5h: orange only on ACTION buttons (dark ink), buttons are rounded
   pills ≥44px in UI type, the summary is a PAPER block with dark ink, severity is semantic
   (high = red, medium = gold with dark ink, low = neutral). Both `color` and
   `-webkit-text-fill-color` set everywhere text sits on a fill. Id-scoped + !important on the pills
   because pn-btn-law.css / pn-ds.css repaint generic buttons with !important. */

/* the pills — .btn family classes, painted here because play.html does not load the catalogue's .btn */
#pnfb-root .pnfb-pill{
  appearance:none; cursor:pointer; display:inline-flex; align-items:center; justify-content:center;
  min-height:44px !important; height:auto; padding:0 18px !important; border-radius:999px !important;
  font:700 13.5px/1 var(--pnfb-font) !important; letter-spacing:0 !important; text-transform:none !important;
  background-image:none !important; box-shadow:none !important; white-space:nowrap;
  transition:background-color .12s ease, border-color .12s ease;
}
#pnfb-root .pnfb-pill.btn--prom{
  background-color:#f97316 !important; border:1px solid #f97316 !important;
  color:#140a04 !important; -webkit-text-fill-color:#140a04 !important;
}
#pnfb-root .pnfb-pill.btn--prom:hover{ background-color:#ffa04a !important; border-color:#ffa04a !important; }
#pnfb-root .pnfb-pill.btn--bord{
  background-color:transparent !important; border:1px solid rgba(238,244,252,.55) !important;
  color:#eef3fb !important; -webkit-text-fill-color:#eef3fb !important;
}
#pnfb-root .pnfb-pill.btn--bord:hover{ background-color:rgba(255,255,255,.08) !important; border-color:#eef3fb !important; }
#pnfb-root .pnfb-pill:focus-visible{ outline:2px solid #fff !important; outline-offset:2px; }
#pnfb-root .pnfb-pill:disabled{ opacity:.55 !important; cursor:default; }
#pnfb-root .pnfb-skip[hidden]{ display:none !important; }
/* the row: Send it now sits beside Send, right-aligned (the Send button's own margin-left:auto
   moves onto whichever of the two comes first). */
#pnfb-root .pnfb-skip:not([hidden]){ margin-left:auto; }
#pnfb-root .pnfb-skip:not([hidden]) + .pnfb-sendbtn{ margin-left:0; }
@media (max-width:400px){ #pnfb-root .pnfb-pill{ padding:0 14px !important; } }
/* phone bottom sheet: the 16px gutter law for the thread (was 14px) */
@media (max-width:480px){ #pnfb-root .pnfb-thread{ padding-left:16px; padding-right:16px; } }

/* the AI's question — the same "from PitchNoir" bubble as the intro, slightly firmer edge so it
   reads as the current question, not background copy. Light ink on the dark glass. */
.pnfb-ai .pnfb-bubble{ border-color:rgba(238,244,252,.32); color:#eef3fb; -webkit-text-fill-color:#eef3fb; }
.pnfb-assist{ display:flex; flex-direction:column; gap:10px; }
.pnfb-dots{ display:inline-flex; gap:4px; padding:4px 0; }
.pnfb-dots i{ width:6px; height:6px; border-radius:50%; background:rgba(238,244,252,.7); animation:pnfbDot 1s infinite ease-in-out; }
.pnfb-dots i:nth-child(2){ animation-delay:.15s; } .pnfb-dots i:nth-child(3){ animation-delay:.3s; }
@keyframes pnfbDot{ 0%,80%,100%{ opacity:.3; transform:translateY(0); } 40%{ opacity:1; transform:translateY(-3px); } }
@media (prefers-reduced-motion:reduce){ .pnfb-dots i{ animation:none; opacity:.7; } }

/* the summary card — PAPER block, dark ink (§5h: neutral reading = paper #f3efe6 two-tone) */
#pnfb-root .pnfb-summary{
  align-self:stretch; border-radius:14px; padding:14px 14px 12px;
  background:radial-gradient(120% 80% at 0% 0%, rgba(255,255,255,.55), rgba(255,255,255,0) 60%),
             linear-gradient(170deg, #f3efe6, #e7dfcf);
  border:1px solid rgba(20,10,4,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7), 0 10px 24px -14px rgba(0,0,0,.6);
  color:#140a04; -webkit-text-fill-color:#140a04;
}
#pnfb-root .pnfb-sum-eyebrow{ margin:0 0 6px; font:700 10px/1 var(--pnfb-mono); letter-spacing:.12em; text-transform:uppercase;
  color:#3d3226; -webkit-text-fill-color:#3d3226; }
#pnfb-root .pnfb-sum-title{ margin:0 0 8px; font:800 15px/1.25 var(--pnfb-font); color:#140a04; -webkit-text-fill-color:#140a04; letter-spacing:-.01em; }
#pnfb-root .pnfb-sum-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
#pnfb-root .pnfb-chip{ display:inline-flex; align-items:center; min-height:22px; padding:0 9px; border-radius:999px;
  font:700 11px/1 var(--pnfb-font); border:1px solid transparent; }
#pnfb-root .pnfb-chip--high{ background:#b42318; color:#fff; -webkit-text-fill-color:#fff; }
#pnfb-root .pnfb-chip--medium{ background:linear-gradient(180deg, #ffd24a, #f0a500); color:#140a04; -webkit-text-fill-color:#140a04; }
#pnfb-root .pnfb-chip--low, #pnfb-root .pnfb-chip--area{ background:rgba(20,10,4,.06); border-color:rgba(20,10,4,.22); color:#3d3226; -webkit-text-fill-color:#3d3226; }
#pnfb-root .pnfb-sum-list{ margin:0 0 12px; display:grid; gap:2px; }
#pnfb-root .pnfb-sum-list dt{ margin-top:6px; font:700 10.5px/1.2 var(--pnfb-font); color:#3d3226; -webkit-text-fill-color:#3d3226; }
#pnfb-root .pnfb-sum-list dd{ margin:0; font:500 13px/1.4 var(--pnfb-font); color:#140a04; -webkit-text-fill-color:#140a04; white-space:pre-wrap; word-break:break-word; }
#pnfb-root .pnfb-sum-btns{ display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
/* outline pill on PAPER takes the paper's dark ink, never the glass's light ink */
#pnfb-root .pnfb-summary .pnfb-pill.btn--bord{ border-color:rgba(20,10,4,.55) !important; color:#140a04 !important; -webkit-text-fill-color:#140a04 !important; }
#pnfb-root .pnfb-summary .pnfb-pill.btn--bord:hover{ background-color:rgba(20,10,4,.06) !important; }
#pnfb-root .pnfb-summary .pnfb-pill:focus-visible{ outline-color:#140a04 !important; }

/* while the summary card is up, its own Send/Edit are the only actions — the composer's input and
   button row step aside, the status line (Sending… / Retry) stays visible. */
#pnfb-composer.pnfb-summary-mode .pnfb-input,
#pnfb-composer.pnfb-summary-mode .pnfb-row{ display:none !important; }

/* 2026-09-28: the sender label ("PITCHNOIR" / "DAVE") was orange text — orange is for actions only
   (design bible §5h). Neutral ink on the dark bubble; two ids so it beats the legibility sheet. */
html:not(#pnpl-x):not(#pnfb-x2) body #pnfb-panel .pnfb-from{
  color:rgba(233,237,243,.72) !important; -webkit-text-fill-color:rgba(233,237,243,.72) !important;
}
