/* Scan-61 customer portal: legacy Accountability look (cdb_preview.html tokens).
   Dark is the default; light lives under :root[data-theme="light"] (owner-approved plan A). The
   theme is set on <html> by an inline script in index.html (localStorage "s61p.theme") and switched
   by the sun/moon button in the header. */
:root {
  color-scheme: dark;
  /* Page background: near-neutral very dark, only a hint of blue
     (CEO comment c20261021T183312322-02a637: "tone down the blue on background color. go darker").
     Was --page #030617 with a #071030 glow. Cards/panels sit a step lighter so they still separate. */
  --page: #000000; --page-glow: #000000; --page-edge: #000000; --bar: #000000;  /* CEO 21 Oct: black, not grey */
  --panel: rgba(23, 26, 33, 0.92); --panel-2: #171a21; --field: #0f1116; --soft: rgba(255, 255, 255, 0.04);
  --line: rgba(255, 255, 255, 0.10); --line-2: rgba(255, 255, 255, 0.18); --line-soft: rgba(255, 255, 255, 0.06);
  --ink: #ffffff; --ink-2: rgba(255, 255, 255, 0.74); --ink-3: rgba(255, 255, 255, 0.56);
  /* Palette pass (owner-approved; CEO: "green is not on our palette", "yellow is never part of our
     palette"): only the old dashboard/deck colours. Good = marker blue #10609d, attention = rose,
     bad = marker red #a83838. No green, yellow or amber anywhere. */
  --rose: #bf7474; --rose-2: #e87a7a; --rose-3: #d99e9e; --navy: #10609d; --marker: #a83838; --blue: #10609d;
  --ok: #10609d; --warn: #bf7474;
  --ok-ink: #ffffff; --warn-ink: #d99e9e; --info-ink: #a8b3bf; --bad-ink: #d99e9e; --severe-ink: #e87a7a;
  --ok-line: rgba(16, 96, 157, 0.6); --warn-line: rgba(191, 116, 116, 0.55);
  /* Risk grade ramp (dashboard Key findings: white -> marker red). */
  --g-min: #ffffff; --g-low: #ead2d2; --g-mod: #d4a5a5; --g-high: #ffffff; --g-sev: #ffffff;
  --g-high-bg: rgba(168, 56, 56, 0.68); --g-sev-bg: rgba(168, 56, 56, 0.85);
  --risk-bg: rgba(168, 56, 56, 0.16); --risk-ink: #f2c5c5;
  --row-hover: rgba(191, 116, 116, 0.06); --item-hover: rgba(191, 116, 116, 0.14);
  --track: rgba(255, 255, 255, 0.10); --track-2: rgba(255, 255, 255, 0.14);
  --mark: rgba(168, 56, 56, 0.75); --divider: rgba(255, 255, 255, 0.25);
  --shadow-card: 0 20px 60px rgba(0, 0, 0, 0.45); --shadow-pop: 0 18px 40px rgba(0, 0, 0, 0.55);
  --shadow-modal: 0 30px 80px rgba(0, 0, 0, 0.6), 0 0 60px rgba(191, 116, 116, 0.12);
  --shadow-top: 0 18px 48px rgba(0, 0, 0, 0.7), 0 10px 64px rgba(191, 116, 116, 0.30);
  --backdrop: rgba(0, 1, 10, 0.72); --scroll-thumb: #2a2e36; --scroll-track: #000000;
  --r: 10px;
}
:root[data-theme="light"] {
  color-scheme: light;
  --page: #f5f3ef; --page-glow: #ffffff; --page-edge: #ebe7e1; --bar: #ffffff;
  --panel: rgba(255, 255, 255, 0.94); --panel-2: #ffffff; --field: #ffffff; --soft: rgba(20, 22, 28, 0.04);
  --line: rgba(20, 22, 28, 0.12); --line-2: rgba(20, 22, 28, 0.24); --line-soft: rgba(20, 22, 28, 0.07);
  --ink: #15171d; --ink-2: #3c414d; --ink-3: #5c6170;
  /* Brand rose, deepened so white button text and rose text on white both pass AA. */
  --rose: #a64f4f; --rose-2: #a8423f; --marker: #a83838;
  --rose-3: #a64f4f;
  --ok-ink: #10609d; --warn-ink: #a64f4f; --info-ink: #4f5664; --bad-ink: #a64f4f; --severe-ink: #a83838;
  --ok-line: rgba(16, 96, 157, 0.5); --warn-line: rgba(166, 79, 79, 0.5);
  /* Same ramp in dark ink: #2b2f36 -> #a83838, bands at lighter alpha (white text still AA on them). */
  --g-min: #2b2f36; --g-low: #6e4448; --g-mod: #8f3f3f; --g-high: #ffffff; --g-sev: #ffffff;
  --g-high-bg: rgba(168, 56, 56, 0.82); --g-sev-bg: rgba(140, 40, 40, 0.92);
  --risk-bg: rgba(168, 56, 56, 0.09); --risk-ink: #8a2f2f;
  --row-hover: rgba(166, 79, 79, 0.05); --item-hover: rgba(166, 79, 79, 0.10);
  --track: rgba(20, 22, 28, 0.10); --track-2: rgba(20, 22, 28, 0.20);
  --mark: rgba(232, 122, 122, 0.42); --divider: rgba(20, 22, 28, 0.14);
  --shadow-card: 0 8px 28px rgba(20, 22, 28, 0.07); --shadow-pop: 0 14px 34px rgba(20, 22, 28, 0.14);
  --shadow-modal: 0 24px 60px rgba(20, 22, 28, 0.18);
  --shadow-top: 0 6px 24px rgba(20, 22, 28, 0.06), 0 10px 40px rgba(191, 116, 116, 0.14);
  --backdrop: rgba(20, 22, 28, 0.42); --scroll-thumb: #c3c6cd; --scroll-track: #ece9e4;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: clamp(13px, calc(0.68vw + 4.4px), 16px); background-color: var(--page); }
body {
  font-family: 'Montserrat', 'Heebo', sans-serif; font-size: 0.9rem; color: var(--ink);
  background: radial-gradient(ellipse at 50% 30%, var(--page-glow) 0%, var(--page) 45%, var(--page-edge) 100%) fixed;
  background-color: var(--page); min-height: 100vh; -webkit-font-smoothing: antialiased;
}
a { color: var(--ink); }
button { font: inherit; color: inherit; }
* { scrollbar-width: thin; scrollbar-color: var(--scroll-thumb) var(--scroll-track); }

/* ── top bar ─────────────────────────────── */
.p-top {
  position: sticky; top: 0; z-index: 30; height: 4rem; display: flex; align-items: center; gap: 18px;
  padding: 0 1.5rem; background: var(--bar);
  box-shadow: var(--shadow-top);
}
.p-top::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--divider); animation: p-divider 12s linear infinite;
}
@keyframes p-divider { 0%, 100% { background: var(--divider); } 33% { background: var(--rose); } 66% { background: var(--marker); } }
/* Sun/moon theme switch: the sun shows in dark (switch to light), the moon in light. */
.p-theme-btn {
  flex: none; width: 36px; height: 36px; display: inline-grid; place-items: center; padding: 0; cursor: pointer;
  background: none; border: 1px solid var(--line-2); border-radius: 50%; color: var(--ink-2);
  transition: color .15s ease, border-color .15s ease;
}
.p-theme-btn:hover, .p-theme-btn:focus-visible { color: var(--ink); border-color: var(--rose); outline: none; }
.p-theme-btn svg { width: 18px; height: 18px; display: block; }
.p-theme-btn .i-moon, :root[data-theme="light"] .p-theme-btn .i-sun { display: none; }
:root[data-theme="light"] .p-theme-btn .i-moon { display: block; }
.p-title[hidden] + .p-theme-btn { margin-left: auto; }
.p-logo { display: inline-flex; align-items: baseline; text-decoration: none; font-size: 22px; line-height: 1; letter-spacing: -.5px; user-select: none; }
.p-logo .b-account { font-family: 'Bebas Neue', Impact, sans-serif; font-size: 1.15em; letter-spacing: .5px; }
.p-logo .b-ability { font-weight: 500; letter-spacing: -.3px; }
.p-logo .b-beta { font-size: 9px; font-weight: 600; letter-spacing: .4px; margin-left: 3px; align-self: flex-start; margin-top: 1px; }
.p-title { margin-left: auto; font-family: 'Bebas Neue', Impact, sans-serif; font-size: 15px; letter-spacing: 1.3px; color: var(--ink-3); text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-title .sep { display: inline-block; width: 2px; height: .85em; background: var(--ink); margin: 0 8px 0 12px; vertical-align: -2px; }
.p-title .subject { font-family: 'Montserrat', 'Heebo', sans-serif; font-size: 13px; color: var(--ink); text-transform: none; letter-spacing: .4px; }
.p-acct { position: relative; }
.p-acct-btn { background: none; border: 1px solid var(--line-2); border-radius: 9999px; padding: 6px 14px; cursor: pointer; font-size: 12px; color: var(--ink-2); max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.p-acct-btn:hover { color: var(--ink); border-color: var(--rose); }

/* ── shared pieces ───────────────────────── */
.p-main { max-width: 1240px; margin: 0 auto; padding: 2.2rem 1.5rem 4rem; }
.p-h1 { font-family: 'Bebas Neue', Impact, sans-serif; font-weight: 400; letter-spacing: 1.6px; font-size: 2.4rem; line-height: 1; }
.p-h1 .rose { color: var(--rose); }
/* Home "Scan results": the word "results" is plain foreground, not accent (CEO comment
   c20261021T183246046-4fa3cf): white in dark, dark ink in light. */
.p-head .p-h1 .rose { color: var(--ink); }
.p-sub { color: var(--ink-2); margin-top: .5rem; line-height: 1.6; }
.p-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-card); backdrop-filter: blur(6px); }
.p-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; text-decoration: none;
  background: var(--rose); color: #fff; border: 0; border-radius: 9999px; padding: 11px 26px; font-weight: 600; letter-spacing: .3px;
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
  box-shadow: 0 0 18px 2px rgba(232,122,122,.22);
}
.p-btn:hover { background: var(--rose-2); transform: translateY(-1px); box-shadow: 0 0 26px 4px rgba(232,122,122,.40); }
.p-btn:disabled { opacity: .55; cursor: default; transform: none; }
.p-btn.ghost { background: transparent; border: 1px solid rgba(232,116,116,.65); color: var(--rose-2); box-shadow: none; }
.p-btn.ghost:hover { color: var(--ink); }
.p-link { background: none; border: 0; color: var(--ink-3); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; font-size: .85rem; }
.p-link:hover { color: var(--ink); }
.p-input {
  width: 100%; background: var(--field); border: 1px solid var(--line-2); border-radius: 8px; color: var(--ink);
  padding: 12px 14px; font: inherit; font-size: 1rem; outline: none; transition: border-color .15s ease, box-shadow .15s ease; caret-color: auto;
}
.p-input:focus { border-color: var(--rose); box-shadow: 0 0 0 3px rgba(191,116,116,.18); }
.p-input::placeholder { color: var(--ink-3); opacity: 1; }
.p-err { color: var(--bad-ink); font-size: .85rem; min-height: 1.2em; margin-top: .5rem; }
.p-fade { animation: p-fade .45s ease both; }
@keyframes p-fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ── sign-in ─────────────────────────────── */
.p-auth { min-height: calc(100vh - 4rem); display: grid; place-items: center; padding: 2rem 16px; }
.p-auth .p-card { width: min(460px, 100%); padding: 2.4rem 2.2rem; text-align: left; }
.p-auth .p-h1 { font-size: 2.1rem; }
.p-auth form { margin-top: 1.6rem; display: grid; gap: .9rem; }
.p-auth .who { margin-top: 1.4rem; font-size: 1rem; line-height: 1.5; color: var(--ink-2); }
.p-auth .who b { color: var(--ink); font-weight: 600; word-break: break-all; }
.p-auth .row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 1.4rem; }
.p-mark { position: relative; display: inline; padding: 0 .1em; background-image: linear-gradient(transparent 58%, var(--mark) 58%, var(--mark) 92%, transparent 92%); background-repeat: no-repeat; background-size: 0% 100%; animation: p-sweep 1.1s .35s cubic-bezier(.6,.05,.2,1) forwards; }
@keyframes p-sweep { to { background-size: 100% 100%; } }
.p-env { width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; background: rgba(191,116,116,.12); border: 1px solid rgba(191,116,116,.45); margin-bottom: 1.2rem; color: var(--rose-2); }
.p-spinner { width: 34px; height: 34px; border-radius: 50%; border: 3px solid var(--track); border-top-color: var(--rose); animation: p-spin .9s linear infinite; margin-bottom: 1.2rem; }
@keyframes p-spin { to { transform: rotate(360deg); } }

/* ── subject table ───────────────────────── */
.p-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.p-tools { display: flex; gap: .7rem; flex-wrap: wrap; margin: 1.6rem 0 1rem; align-items: center; }
.p-tools .p-input { width: 260px; padding: 9px 12px; font-size: .9rem; }
.p-count { color: var(--ink-3); font-size: .8rem; margin-left: auto; }
.p-table-wrap { overflow: hidden; }
table.p-table { width: 100%; border-collapse: collapse; }
.p-table th { text-align: left; font-family: 'Bebas Neue', Impact, sans-serif; font-weight: 400; letter-spacing: 1.2px; font-size: 14px; color: var(--ink-3); padding: 14px 14px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; user-select: none; }
.p-table th.sort { cursor: pointer; }
.p-table th.sort:hover { color: var(--ink); }
.p-table th .arr { color: var(--rose-2); margin-left: 4px; font-family: 'Montserrat', sans-serif; font-size: 10px; }
.p-table td { padding: 14px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; font-size: .88rem; }
.p-table tbody tr { transition: background .15s ease; }
.p-table tbody tr:hover { background: var(--row-hover); }
.p-table tbody tr.ready { cursor: pointer; }
.p-table .name { font-weight: 600; text-align: left; }
.p-table .muted { color: var(--ink-3); }
.p-table .num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.p-pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 9999px; font-size: .75rem; font-weight: 600; letter-spacing: .2px; white-space: nowrap; border: 1px solid var(--line-2); color: var(--ink-2); }
.p-pill::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.p-pill.ready { color: var(--ok-ink); border-color: var(--ok-line); }
.p-pill.ready::before { background: var(--blue); box-shadow: 0 0 0 1px var(--ok-line); }
.p-pill.review { color: var(--warn-ink); border-color: var(--warn-line); }
.p-pill.progress { color: var(--info-ink); border-color: var(--line-2); }
.p-pill.failed { color: var(--bad-ink); border-color: rgba(168,56,56,.6); }
.p-pill.recalc { color: var(--warn-ink); border-color: var(--warn-line); }
/* Risk grades: white -> marker-red ramp of the dashboard Key findings (palette pass, no green). */
.p-grade { font-family: 'Bebas Neue', Impact, sans-serif; letter-spacing: 1px; font-size: 1.05rem; }
.p-grade.g-Minimal { color: var(--g-min); } .p-grade.g-Low { color: var(--g-low); } .p-grade.g-Considerable { color: var(--g-mod); }
.p-grade.g-High, .p-grade.g-Severe { display: inline-block; padding: 1px 8px 0; border-radius: 4px; line-height: 1.25; }
.p-grade.g-High { color: var(--g-high); background: var(--g-high-bg); } .p-grade.g-Severe { color: var(--g-sev); background: var(--g-sev-bg); }
.p-tox { display: inline-flex; align-items: center; gap: 8px; }
.p-tox .bar { width: 64px; height: 5px; border-radius: 3px; background: var(--track); overflow: hidden; }
.p-tox .bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--blue), var(--rose), var(--marker)); border-radius: 3px; }
.p-risks { display: flex; flex-wrap: wrap; gap: 4px; }
.p-risks span { font-size: .72rem; padding: 2px 8px; border-radius: 6px; background: var(--risk-bg); color: var(--risk-ink); white-space: nowrap; }
.p-open { color: var(--rose-2); font-weight: 600; text-decoration: none; white-space: nowrap; }
.p-open:hover { color: var(--ink); }
.p-empty { padding: 3rem 1rem; text-align: center; color: var(--ink-3); }
.p-cards { display: none; }

/* ── dropdown (custom, never a native select) ── */
.dd { position: relative; display: inline-block; }
.dd-btn { display: inline-flex; align-items: center; gap: 10px; background: var(--field); border: 1px solid var(--line-2); border-radius: 8px; padding: 9px 12px; cursor: pointer; font-size: .9rem; min-width: 150px; justify-content: space-between; }
.dd-btn:hover, .dd.open .dd-btn { border-color: var(--rose); }
.dd-btn .chev { width: 8px; height: 8px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(45deg) translateY(-2px); transition: transform .15s ease; }
.dd.open .dd-btn .chev { transform: rotate(225deg) translateY(-2px); }
.dd-menu { position: absolute; z-index: 50; top: calc(100% + 6px); left: 0; min-width: 100%; background: var(--panel-2); border: 1px solid var(--line-2); border-radius: 8px; padding: 6px; box-shadow: var(--shadow-pop); opacity: 0; transform: translateY(-4px); pointer-events: none; transition: opacity .14s ease, transform .14s ease; max-height: 320px; overflow: auto; }
.dd.right .dd-menu { left: auto; right: 0; }
.dd.open .dd-menu { opacity: 1; transform: none; pointer-events: auto; }
.dd-item { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 8px 10px; border-radius: 6px; cursor: pointer; font-size: .88rem; color: var(--ink-2); white-space: nowrap; }
.dd-item:hover, .dd-item:focus { background: var(--item-hover); color: var(--ink); outline: none; }
.dd-item.on { color: var(--ink); }
.dd-item.on::after { content: '✓'; float: right; color: var(--rose-2); margin-left: 12px; }

/* ── modal ───────────────────────────────── */
.m-back { position: fixed; inset: 0; z-index: 80; background: var(--backdrop); display: grid; place-items: center; padding: 16px; opacity: 0; transition: opacity .18s ease; }
.m-back.on { opacity: 1; }
.m-box { width: min(480px, 100%); background: var(--panel-2); border: 1px solid var(--line-2); border-radius: 12px; padding: 1.6rem; box-shadow: var(--shadow-modal); transform: translateY(10px) scale(.98); transition: transform .2s ease; }
.m-back.on .m-box { transform: none; }
.m-box h2 { font-family: 'Bebas Neue', Impact, sans-serif; font-weight: 400; letter-spacing: 1.4px; font-size: 1.6rem; margin-bottom: .6rem; }
.m-box p { color: var(--ink-2); line-height: 1.6; }
.m-actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 1.4rem; flex-wrap: wrap; }
.sw-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.sw-row:last-child { border-bottom: 0; }
.sw-row .lbl b { display: block; font-weight: 600; }
.sw-row .lbl span { color: var(--ink-3); font-size: .82rem; }
.sw { position: relative; width: 44px; height: 24px; flex: 0 0 auto; border-radius: 9999px; background: var(--track-2); border: 0; cursor: pointer; transition: background .18s ease; }
.sw::after { content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .18s ease; }
.sw[aria-checked="true"] { background: var(--rose); }
.sw[aria-checked="true"]::after { transform: translateX(20px); }

/* ── toast ───────────────────────────────── */
.toast { position: fixed; left: 50%; bottom: 28px; transform: translate(-50%, 20px); z-index: 90; background: var(--panel-2); border: 1px solid var(--line-2); border-left: 3px solid var(--rose); padding: 12px 18px; border-radius: 8px; opacity: 0; transition: opacity .2s ease, transform .2s ease; max-width: calc(100% - 32px); }
.toast.on { opacity: 1; transform: translate(-50%, 0); }

/* ── status page (server-rendered) ───────── */
.p-status { max-width: 640px; margin: 18vh auto 0; padding: 0 16px; }
.p-status h1 { font-family: 'Bebas Neue', Impact, sans-serif; font-weight: 400; letter-spacing: 1.4px; font-size: 2.4rem; }
.p-status p { color: var(--ink-2); margin-top: 1rem; line-height: 1.6; }

/* ── flag carousel window (red-flag / tone count -> that report's carousel) ──
   Open / close mirror the investors deck's Compliance Guide popover (.cp-veil / .cp-box / .cp-scan):
   cpTvOn 0.86s cubic-bezier(.16,.84,.28,1), cpTvOff 0.46s cubic-bezier(.5,0,.75,0), scan 1.05s linear,
   beam 0.62s / 0.46s ease-in, origin center, veil rgba(0,0,0,.14) fading out over 0.3s.
   Placement: clear of the sticky header (top) and of the comment button's corner zone (bottom, 44px + 12px). */
.p-flagnum { font: inherit; color: inherit; background: none; border: 0; padding: 2px 8px; margin: -2px -8px; border-radius: 6px;
  cursor: pointer; text-decoration: underline dotted rgba(191, 116, 116, .7); text-underline-offset: 4px; transition: background .15s ease, color .15s ease; }
@media (max-width: 900px), (pointer: coarse) {
  .p-flagnum { display: inline-flex; align-items: center; min-width: 44px; min-height: 36px; margin: -6px -8px; }
}
.p-flagnum:hover { background: var(--item-hover); color: var(--rose-3); text-decoration-color: var(--rose-3); }
.p-flagnum:focus-visible { outline: 2px solid var(--rose); outline-offset: 2px; }
.fp-veil { position: fixed; inset: 0; z-index: 70; display: none; overflow: hidden; background: rgba(0, 0, 0, 0.14);
  padding: calc(4rem + 12px) 16px 68px; }
.fp-veil.on { display: flex; align-items: center; justify-content: center; }
.fp-veil.tvoff { background: rgba(0, 0, 0, 0); transition: background .3s ease; }
/* Size (CEO comment c20261021T232902627-2d6098): as big as the viewport allows between the sticky header and the
   comment button's zone, capped at 1400 x 1000 on very large screens. */
.fp-box { position: relative; display: flex; flex-direction: column; width: min(1400px, 100%); height: min(1000px, 100%);
  overflow: hidden; border-radius: 16px; background: rgba(9, 13, 24, 0.46);
  -webkit-backdrop-filter: blur(42px) saturate(1.35); backdrop-filter: blur(42px) saturate(1.35);
  box-shadow: 0 30px 90px rgba(0, 0, 0, .55), inset 0 0 0 1px rgba(255, 255, 255, .04);
  transform-origin: center center; will-change: transform, filter; }
.fp-head { flex: 0 0 auto; display: flex; align-items: center; gap: 14px; min-height: 52px; padding: 0 10px 0 22px;
  border-bottom: 1px solid rgba(255, 255, 255, .08); color: #fff; }
.fp-title { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 10px; font-weight: 600; font-size: .95rem;
  white-space: nowrap; overflow: hidden; }
.fp-title .sep { width: 1px; height: 14px; background: rgba(255, 255, 255, .22); align-self: center; }
.fp-subject { color: rgba(255, 255, 255, .62); font-weight: 400; overflow: hidden; text-overflow: ellipsis; }
.fp-open { flex: 0 0 auto; color: #d99e9e; font-size: .82rem; text-decoration: none; padding: 8px 6px; }
.fp-open:hover { color: #e87a7a; }
.fp-close { flex: 0 0 auto; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 8px;
  background: none; color: #565e6a; cursor: pointer; transition: color .15s ease, background .15s ease; }
.fp-close svg { width: 20px; height: 20px; }
.fp-close:hover { color: #d99e9e; background: rgba(255, 255, 255, .05); }
.fp-close:focus-visible, .fp-open:focus-visible { outline: 2px solid #bf7474; outline-offset: 1px; }
.fp-stage { position: relative; flex: 1 1 auto; min-height: 0; }
.fp-spin { position: absolute; left: 50%; top: 50%; margin: -17px 0 0 -17px; }
.fp-frame { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; opacity: 0; transition: opacity .25s ease; }
.fp-stage.on .fp-frame { opacity: 1; }
.fp-stage.on .fp-spin { display: none; }
.fp-scan { position: absolute; inset: 0; z-index: 5; pointer-events: none; opacity: 0;
  background: repeating-linear-gradient(180deg, rgba(255, 255, 255, 0.05) 0 1px, transparent 1px 3px),
              linear-gradient(180deg, transparent 0%, rgba(191, 116, 116, 0.15) 50%, transparent 100%);
  background-size: 100% 3px, 100% 200%; }
.fp-scan::after { content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 2px; transform: translateY(-50%); opacity: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .95) 12%, rgba(255, 255, 255, .95) 88%, transparent);
  box-shadow: 0 0 22px 7px rgba(255, 255, 255, .75); }
.fp-veil.tv .fp-box { animation: fpTvOn .86s cubic-bezier(.16, .84, .28, 1) both; }
.fp-veil.tv .fp-scan { animation: fpScan 1.05s linear both; }
.fp-veil.tv .fp-scan::after { animation: fpBeam .62s cubic-bezier(.16, .84, .28, 1) both; }
.fp-veil.tvoff .fp-box { animation: fpTvOff .46s cubic-bezier(.5, 0, .75, 0) both; }
.fp-veil.tvoff .fp-scan { opacity: 1; }
.fp-veil.tvoff .fp-scan::after { animation: fpBeamOff .46s ease-in both; }
.fp-veil.fp-fadeout { opacity: 0; transition: opacity .15s ease; }
@keyframes fpTvOn {
  0%   { transform: scale(0.004, 0.003); filter: brightness(40) saturate(0); opacity: 1; }
  9%   { transform: scale(0.30, 0.004); filter: brightness(34) saturate(0); }
  18%  { transform: scale(1.06, 0.004); filter: brightness(26) saturate(0); }
  27%  { transform: scale(1.04, 0.006); filter: brightness(16) saturate(0); }
  40%  { transform: scale(1.01, 1.07); filter: brightness(4.5) saturate(1.7); }
  49%  { transform: scale(0.997, 0.955); filter: brightness(2.3) saturate(1.3); }
  57%  { transform: scale(1, 1.018); filter: brightness(1.7); }
  65%  { transform: translateX(-7px) skewX(1.1deg) scaleY(1); filter: brightness(1.9) hue-rotate(7deg); }
  72%  { transform: translateX(6px) skewX(-0.7deg); filter: brightness(1.35) hue-rotate(-6deg); }
  79%  { transform: translateX(-3px) skewX(0.3deg); filter: brightness(1.16); }
  87%  { transform: translateX(1px); filter: brightness(1.05); }
  100% { transform: none; filter: none; opacity: 1; }
}
@keyframes fpTvOff {
  0%   { transform: none; filter: none; opacity: 1; }
  18%  { transform: scale(1.012, 0.88); filter: brightness(2.6) saturate(0.6); }
  42%  { transform: scale(1.05, 0.006); filter: brightness(11) saturate(0); }
  64%  { transform: scale(0.92, 0.004); filter: brightness(16) saturate(0); opacity: 1; }
  100% { transform: scale(0.11, 0.002); filter: brightness(30) saturate(0); opacity: 0; }
}
@keyframes fpScan {
  0%   { opacity: 0; background-position: 0 0, 0 -100%; }
  22%  { opacity: 1; }
  70%  { opacity: .5; }
  100% { opacity: 0; background-position: 0 14px, 0 200%; }
}
@keyframes fpBeam {
  0%   { opacity: 1; transform: translateY(-50%) scaleX(.02); }
  16%  { opacity: 1; transform: translateY(-50%) scaleX(1); }
  36%  { opacity: .85; }
  52%  { opacity: 0; }
  100% { opacity: 0; }
}
@keyframes fpBeamOff {
  0%   { opacity: 0; transform: translateY(-50%) scaleX(1); }
  45%  { opacity: 1; transform: translateY(-50%) scaleX(1); }
  100% { opacity: 0; transform: translateY(-50%) scaleX(.04); }
}
@media (prefers-reduced-motion: reduce) {
  .fp-veil.tv .fp-box, .fp-veil.tv .fp-scan, .fp-veil.tv .fp-scan::after, .fp-veil.tvoff .fp-box, .fp-veil.tvoff .fp-scan::after { animation: none; }
}
@media (max-width: 760px) {
  .fp-veil { padding: calc(56px + 8px) 8px calc(68px + env(safe-area-inset-bottom)); }
  .fp-box { width: 100%; height: 100%; border-radius: 14px; }
  .fp-head { min-height: 48px; padding-left: 16px; gap: 8px; }
  .fp-open { font-size: .78rem; }
}

/* ── reduced motion / animations off ─────── */
body.no-anim *, body.no-anim *::before, body.no-anim *::after { animation: none !important; transition: none !important; }
body.no-anim .p-mark { background-size: 100% 100%; }
@media (prefers-reduced-motion: reduce) { .p-top::after, .p-fade, .p-mark { animation: none; } .p-mark { background-size: 100% 100%; } }

/* Sticky header never hides an in-page target. */
html { scroll-padding-top: calc(4rem + 12px); }
.p-table-wrap { overflow-x: auto; }

/* ── touch screens and tablets: thumb-sized targets ── */
@media (max-width: 900px), (pointer: coarse) {
  .p-btn, .p-input, .dd-btn { min-height: 44px; }
  .p-tools .p-input { padding-top: 11px; padding-bottom: 11px; }
  .dd-item { min-height: 40px; padding-top: 10px; padding-bottom: 10px; }
  .p-acct-btn { min-height: 40px; padding: 10px 16px; }
  .p-link { padding: 12px 6px; margin: -12px -6px; }
  .p-open { display: inline-flex; align-items: center; min-height: 40px; }
  .p-logo { padding: 10px 0; }
  .sw::before { content: ''; position: absolute; inset: -10px -4px; }
  .m-box .p-btn { min-height: 44px; }
}

/* ── tablet + phone: report list as cards ── */
@media (max-width: 900px) {
  .p-table-wrap { display: none; }
  .p-cards { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
  .p-cards .c { padding: 16px; }
  .p-cards .c .top { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
  .p-cards .c .nm { font-weight: 600; font-size: 1rem; overflow-wrap: anywhere; text-align: left; }
  .p-cards .c .meta { color: var(--ink-3); font-size: .8rem; margin-top: 4px; }
  .p-cards .c .stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 14px; }
  .p-cards .c .stats div { background: var(--soft); border-radius: 8px; padding: 8px; }
  .p-cards .c .stats small { display: block; color: var(--ink-3); font-size: .68rem; text-transform: uppercase; letter-spacing: .6px; }
  .p-cards .c .stats b { font-size: 1rem; }
  .p-cards .c .p-risks { margin-top: 12px; }
  .p-cards .c .go { margin-top: 14px; display: flex; justify-content: flex-end; align-items: center; }
}

/* ── phone ───────────────────────────────── */
@media (max-width: 760px) {
  html { scroll-padding-top: 68px; }
  .p-top { padding: 0 16px; height: 56px; gap: 10px; }
  .p-title { display: none; }
  .p-theme-btn { margin-left: auto; width: 40px; height: 40px; }
  .p-acct { min-width: 0; flex: 0 1 auto; max-width: 150px; }
  .p-acct .dd, .p-acct-btn { max-width: 100%; }
  .dd-menu { max-width: calc(100vw - 32px); }
  .dd-item { white-space: normal; }
  .p-main { padding: 1.4rem 16px 3rem; }
  .p-h1 { font-size: 2rem; }
  .p-tools .p-input { width: 100%; }
  .p-tools .dd { flex: 1 1 140px; }
  .p-tools .dd-btn { width: 100%; }
  .p-count { margin-left: 0; width: 100%; }
  .p-cards { grid-template-columns: 1fr; }
  /* Modals open as a bottom sheet. */
  .m-back { place-items: end stretch; padding: 0; }
  .m-box { width: 100%; max-height: 92dvh; overflow-y: auto; border-radius: 16px 16px 0 0; padding: 1.4rem 16px calc(16px + env(safe-area-inset-bottom)); transform: translateY(24px); }
  .m-box .p-btn { flex: 1 1 auto; }
  .p-auth .p-card { padding: 1.8rem 1.3rem; }
}
