/* Visitor feedback: the dialog (feedback.js), the no-JS form at /feedback and the Feedback links (docs/FEEDBACK.md).
   Uses the site's tokens when present (site.css), with fallbacks, in light and dark. */
:root { --fb-bg:var(--card, #fff); --fb-fg:var(--fg, #1d1d1b); --fb-muted:var(--muted, #6b6a64); --fb-line:var(--line, #e3e0d8);
        --fb-accent:var(--accent, #1f5f8b); --fb-err:var(--nay, #a33a2b); --fb-ok:var(--ok, #2e6b3a);
        --fb-errbg:#fff4f1; --fb-okbg:#eaf5ec; --fb-shade:rgba(20, 20, 18, .45); }
@media (prefers-color-scheme: dark) {
  :root { --fb-bg:var(--card, #1d1f23); --fb-fg:var(--fg, #e8e6e1); --fb-muted:var(--muted, #9a988f); --fb-line:var(--line, #2c2e33);
          --fb-accent:var(--accent, #79b8e6); --fb-err:var(--nay, #e4826f); --fb-ok:var(--ok, #8fcf9b);
          --fb-errbg:#3a1f1a; --fb-okbg:#1c3322; --fb-shade:rgba(0, 0, 0, .6); }
}

a.feedback-link { white-space:nowrap; }
.fb-foot { max-width:1080px; margin:24px auto 0; padding:12px 16px 28px; border-top:1px solid var(--fb-line); font-size:13px;
           color:var(--fb-muted); display:flex; flex-wrap:wrap; gap:6px 16px; }
html.fb-open { overflow:hidden; }
.fb-dialog [hidden] { display:none !important; }

.fb-dialog { width:min(560px, calc(100vw - 16px)); max-height:calc(100dvh - 16px); overflow:auto; box-sizing:border-box;
             padding:16px 18px 18px; border:1px solid var(--fb-line); border-radius:12px; background:var(--fb-bg); color:var(--fb-fg);
             box-shadow:0 12px 40px rgba(0, 0, 0, .25); font:15px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; }
.fb-dialog::backdrop { background:var(--fb-shade); }
.fb-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.fb-head h2 { margin:0 0 4px; font-size:18px; font-weight:650; }
.fb-x { font-size:22px; line-height:1; padding:2px 10px; background:transparent; color:var(--fb-fg); border:1px solid transparent;
        border-radius:6px; cursor:pointer; }
.fb-x:hover { border-color:var(--fb-line); }

.fb-form { display:grid; gap:2px; }
.fb-field { margin:6px 0; display:grid; gap:4px; }
.fb-field label, .fb-optional legend { font-weight:600; font-size:14px; }
.fb-form textarea, .fb-form input[type=text], .fb-form input[type=email], .fb-form select {
  font:inherit; color:var(--fb-fg); background:var(--fb-bg); border:1px solid var(--fb-line); border-radius:6px; padding:7px 9px;
  width:100%; box-sizing:border-box; }
.fb-form textarea { min-height:7.5em; resize:vertical; }
.fb-form [aria-invalid="true"] { border-color:var(--fb-err); box-shadow:0 0 0 1px var(--fb-err); }
.fb-optional { border:1px solid var(--fb-line); border-radius:8px; padding:4px 12px 6px; margin:6px 0; }
.fb-optional legend { padding:0 4px; font-weight:500; color:var(--fb-muted); }
.fb-req, .fb-hint, .fb-count { color:var(--fb-muted); font-size:12.5px; font-weight:400; }
.fb-count { display:block; text-align:right; font-variant-numeric:tabular-nums; }
.fb-disclose { font-size:12.5px; color:var(--fb-muted); border-left:3px solid var(--fb-line); padding:2px 0 2px 10px; margin:8px 0; }
.fb-error:empty { display:none; }
.fb-error { color:var(--fb-err); background:var(--fb-errbg); border-radius:6px; padding:6px 10px; font-size:14px; margin:6px 0; }
.fb-banner { color:var(--fb-err); background:var(--fb-errbg); border-radius:6px; padding:8px 12px; }
.fb-success { color:var(--fb-ok); background:var(--fb-okbg); border-radius:6px; padding:10px 12px; font-weight:600; }
.fb-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.fb-send, .fb-cancel, .fb-quick { font:inherit; border-radius:6px; padding:7px 14px; cursor:pointer; border:1px solid var(--fb-accent); }
.fb-send { background:var(--fb-accent); color:var(--fb-bg); }
.fb-send:disabled { opacity:.6; cursor:default; }
.fb-cancel, .fb-quick { background:transparent; color:var(--fb-accent); }
.fb-quick { font-size:13.5px; padding:4px 10px; }
.fb-row { margin:4px 0; }
.fb-dialog :focus-visible, .fb-page :focus-visible { outline:2px solid var(--fb-accent); outline-offset:2px; }
/* for screen readers only (the counter's threshold announcements) */
.fb-sr { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0);
         white-space:nowrap; border:0; }
/* the honeypot: out of sight and out of the accessibility tree */
.fb-hp { position:absolute !important; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden; }

.fb-page { max-width:640px; }
.fb-page h1 { font-size:22px; }

@media (max-width: 520px) {
  .fb-dialog { width:100vw; max-width:100vw; max-height:100dvh; height:100dvh; margin:0; border-radius:0; border:0; padding:12px 14px 16px; }
  .fb-actions button { flex:1 1 auto; }
}
@media (prefers-reduced-motion: no-preference) {
  .fb-dialog[open] { animation:fb-in .14s ease-out; }
  @keyframes fb-in { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
}
