:root {
  --amber: oklch(72% 0.15 72);
  --amber-highlight: oklch(83% 0.11 78);
  --amber-deep: oklch(55% 0.13 66);
  --amber-soft: oklch(96% 0.035 80);
  --ink: oklch(18% 0.009 82);
  --bone: oklch(98.4% 0.006 95);
  --paper: oklch(99.2% 0.004 95);
  --tile-fill: oklch(95.4% 0.014 88);
  --navy: oklch(28% 0.07 264);
  --navy-soft: oklch(94% 0.018 264);
  --slate: oklch(45% 0.055 264);
  --line: oklch(89% 0.011 88);
  --line-strong: oklch(78% 0.028 264);
  --muted: oklch(42% 0.012 82);
  --quiet: oklch(58% 0.012 82);
  --success: oklch(50% 0.09 160);
  --success-soft: oklch(96% 0.025 160);
  --warning: oklch(58% 0.11 65);
  --warning-soft: oklch(97% 0.035 80);
  --radius: 8px;
  --page-max: 1040px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
  background: var(--bone);
  color: var(--ink);
  font-family: Schibsted Grotesk, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 16px;
  line-height: 1.45;
}

body {
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a {
  color: inherit;
  text-decoration: none;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 3px;
}

.beta-topbar {
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 0 max(20px, calc((100vw - var(--page-max)) / 2));
  background: var(--navy);
  color: var(--bone);
  border-bottom: 1px solid var(--amber);
}

.beta-brand {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--bone);
  font-size: 22px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
}

.beta-mark {
  width: 30px;
  height: 30px;
  display: inline-block;
  flex: 0 0 auto;
  line-height: 0;
}

.p65mark {
  --mark-size: 30px;
  width: var(--mark-size);
  height: var(--mark-size);
}

/* Pre-hydration / no-JS fallback: the mark span is empty until
   stone-mark.js hydrates it. Show a branded amber tile so the topbar
   never renders a blank gap if the script is slow or fails to load.
   Cleared once hydrateStoneMarks() sets data-prop65-mark-hydrated. */
.p65mark:not([data-prop65-mark-hydrated="true"]) {
  background: #e89b2e;
  border-radius: 6px;
}

.p65mark__inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform: rotate(180deg);
  container-type: size;
}

.p65mark__inner svg {
  display: block;
}

.p65mark .stone-spin {
  animation: prop65-mark-spin 9.2s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

.p65mark[data-prop65-mark="hover"] .stone-spin {
  animation-play-state: paused;
}

.p65mark[data-prop65-mark="hover"]:hover .stone-spin,
.beta-brand:hover .p65mark[data-prop65-mark="hover"] .stone-spin {
  animation-play-state: running !important;
}

@keyframes prop65-mark-spin {
  0% {
    transform: rotateY(0deg);
  }

  17.4% {
    transform: rotateY(180deg);
  }

  50% {
    transform: rotateY(180deg);
  }

  67.4% {
    transform: rotateY(360deg);
  }

  100% {
    transform: rotateY(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .p65mark .stone-spin {
    animation: none;
  }
}

.beta-dot {
  color: var(--amber);
}

.p65wordmark {
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  white-space: nowrap;
}

.beta-nav {
  display: flex;
  align-items: center;
  gap: 22px;
  color: oklch(83% 0.035 264);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.beta-nav a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.beta-nav a:hover,
.beta-nav a:focus-visible {
  color: var(--amber);
}

.report-shell {
  width: 100%;
  margin: 0;
  padding: 20px 16px 72px;
}

.report-lock,
.report-loading,
.report-state {
  width: min(720px, 100%);
  margin: 20px auto;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 24px;
}

h1,
h2,
h3,
p {
  margin: 0;
}

p {
  color: var(--muted);
}.report-kicker,
.report-meta-label,
.report-note-label,
.report-basis {
  font-family: "Schibsted Grotesk", monospace;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.report-kicker {
  margin-bottom: 4px;
  color: var(--slate);
  font-size: 10px;
}

.report-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
}

.report-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 9px 14px;
  border-radius: var(--radius);
  border: 1px solid var(--line-strong);
  background: transparent;
  color: var(--ink);
  font-weight: 600;
}

.report-button:hover {
  border-color: var(--navy);
  background: var(--navy-soft);
}

.report-button-primary {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--bone);
}

.report-button-primary:hover,
.report-button-primary:focus-visible {
  background: var(--navy);
  border-color: var(--navy);
  color: var(--bone);
}

.threat-report {
  width: min(var(--page-max), 100%);
  margin: 0 auto;
  display: grid;
  /* Constrained track: a wide child (nowrap table) must scroll in its own
     wrap, not inflate the page column to its min-content width. */
  grid-template-columns: minmax(0, 1fr);
}

.report-source-inline {
  color: var(--slate);
  font-weight: 600;
  border-bottom: 1px solid var(--line-strong);
}

.report-section {
  padding: 18px 0 16px;
  border-top: 1px solid var(--line);
}

.report-basis {
  margin-top: 7px;
  color: var(--quiet);
  font-size: 9.5px;
  line-height: 1.45;
}.report-note{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--tile-fill);
}

.report-note {
  margin-top: 10px;
  padding: 12px 14px;
  background: var(--warning-soft);
}

.report-note p:not(.report-note-label) {
  color: var(--muted);
  font-size: 13px;
}

.report-meta-label,
.report-note-label {
  margin-bottom: 5px;
  color: var(--slate);
  font-size: 9.5px;
}

.report-meta-value {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.42;
  overflow-wrap: anywhere;
}

.report-source-type {
  flex: 0 0 auto;
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.report-empty {
  margin-top: 8px;
  color: var(--muted);
  font-size: 13px;
}

/* ---- Source traceability + caveat layer (Spec 11) ---------------------- */

.report-metric-line {
  margin-top: 8px;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.5;
}

.report-metric {
  display: inline;
}

.report-metric-value {
  font-weight: 700;
  color: var(--ink);
}

.report-metric-binding {
  display: inline;
}

.report-source-anchor {
  color: var(--navy);
  font-weight: 600;
  border-bottom: 1px solid var(--line-strong);
  white-space: nowrap;
}

.report-source-anchor:hover {
  border-bottom-color: var(--navy);
}

/* Fires on most pre-2016 rows (no OAG detail page exists for them at all),
   so it reads as the expected case, not an exception: quiet inline text,
   not an amber alert pill. Amber stays reserved for genuine anomalies.
   Stays a plain inline span (no forced display) because renderSourceLink()
   embeds it two ways: stacked under a link inside the flex-column
   .report-source-linkset (blockified there for free as a flex item), and
   inline mid-sentence in the brief subtitle's "/"-separated meta line. */
.report-source-badge {
  color: var(--muted);
  font-family: "Schibsted Grotesk", sans-serif;
  font-size: 11px;
  font-style: italic;
  font-weight: 400;
  letter-spacing: normal;
  text-transform: none;
}

/* Source triggers are trace-back affordances, not chrome: quiet mono text,
   no pill border/background (2026-07-03 pill-density feedback). */
.report-source-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 24px;
  min-height: 24px;
  margin-left: 8px;
  padding: 2px 3px;
  border: 0;
  background: none;
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
  cursor: pointer;
}

.report-source-trigger:hover {
  color: var(--navy);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Pointer devices: triggers rest invisible and reveal when the stat line
   they bind is hovered, when focused, or while their drawer is open. Touch
   has no hover, so triggers stay visible there (quiet text, no pill). */
@media (hover: hover) and (pointer: fine) {
  .report-source-trigger {
    opacity: 0;
  }

  :hover > .report-metric-binding > .report-source-trigger,
  .report-metric-binding:hover > .report-source-trigger,
  .report-source-trigger:focus-visible,
  .report-source-trigger[aria-expanded="true"] {
    opacity: 1;
  }
}

@media screen and (prefers-reduced-motion: no-preference) {
  .report-source-trigger {
    transition: opacity 120ms ease;
  }
}

.report-source-drawer {
  position: relative;
  width: min(100%, 760px);
  max-width: 100%;
  max-height: min(460px, 55vh);
  margin-top: 10px;
  padding: 14px;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  text-align: left;
  text-transform: none;
  letter-spacing: normal;
  font-weight: 400;
}

/* The binder moves an opened panel into the first useful-width block/grid
   ancestor. The host stays in normal flow, spans a grid when present, and is
   removed from layout whenever all of its panels are closed. This preserves
   the trigger-first keyboard sequence without forcing a dense stat cell to
   render source records in a 100px column. */
.report-source-disclosure-host {
  width: 100%;
  min-width: 0;
  grid-column: 1 / -1;
  margin-top: 10px;
}

.report-source-disclosure-host:not(:has(.report-source-drawer:not([hidden]))) {
  display: none;
}

.report-source-disclosure-host > .report-source-drawer {
  width: min(100%, 760px);
  margin-top: 0;
}

.report-source-trigger-compact {
  margin-left: 4px;
  letter-spacing: 0.04em;
}

.report-source-close {
  position: absolute;
  top: 8px;
  right: 10px;
  min-width: 32px;
  min-height: 32px;
  padding: 3px 8px;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  background: var(--paper);
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
}

.report-source-close:hover {
  border-color: var(--navy);
  color: var(--navy);
}

.report-source-trigger:focus-visible,
.report-source-close:focus-visible,
.report-source-anchor:focus-visible {
  outline: 2px solid var(--navy);
  outline-offset: 2px;
}

.report-source-linkset {
  min-width: 0;
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
}

.report-source-subhead {
  padding-right: 68px;
  margin-bottom: 6px;
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.report-source-basis-line {
  margin-bottom: 8px;
  color: var(--muted);
  font-size: 11px;
}

.report-source-rows {
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
}

.report-source-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(120px, 100%), 1fr));
  gap: 10px;
  align-items: baseline;
  padding: 7px 0;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
}

.report-source-row:last-child {
  border-bottom: 0;
}

.report-source-cell {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--ink);
}

.report-source-ag {
  font-family: "Schibsted Grotesk", monospace;
  font-weight: 700;
}

.report-source-type {
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.report-source-basis {
  color: var(--muted);
  font-size: 11px;
}

.report-source-overflow,
.report-source-empty {
  margin-top: 8px;
  color: var(--muted);
  font-size: 11px;
}

.report-source-caveats {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed var(--line-strong);
  display: grid;
  gap: 8px;
}

.report-caveat {
  display: block;
  margin-top: 8px;
  padding: 8px 12px;
  border: 1px solid oklch(82% 0.06 72);
  background: var(--amber-soft);
  border-radius: var(--radius);
}

.report-source-caveats .report-caveat {
  margin-top: 0;
}

.report-export-integrity {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}

.report-export-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 8px;
}

.report-export-meta > div {
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--tile-fill);
}

.report-export-source-appendix {
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
}

.report-export-source-list {
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
}

.report-export-source-list li {
  border-bottom: 1px solid var(--line);
}

.report-export-source-list li:last-child {
  border-bottom: 0;
}

/* Screen-only collapse for long appendixes: the full list stays in the DOM
   so print/PDF (below) always carries every source. */
.report-export-source-list.is-capped li:nth-child(n + 21) {
  display: none;
}

.report-source-appendix-toggle {
  margin-top: 10px;
}

@media print {
  .report-export-source-list.is-capped li:nth-child(n + 21) {
    display: list-item;
  }

  .report-source-appendix-toggle {
    display: none;
  }
}

.report-export-source-list a {
  min-height: 34px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 7px 0;
  color: var(--ink);
  font-size: 12px;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.report-export-legal {
  margin-top: 10px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}

.beta-intent-modal {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  padding: 20px;
  background: color-mix(in oklch, var(--navy) 72%, transparent);
}

.beta-intent-card {
  width: min(520px, 100%);
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: 0 18px 60px color-mix(in oklch, var(--navy) 22%, transparent);
}

.beta-intent-card h2 {
  margin-bottom: 14px;
  color: var(--ink);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0;
}

.beta-intent-options {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  border: 0;
}

.beta-intent-options label {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink);
  font-size: 13px;
}

.beta-intent-options input {
  width: auto;
  min-height: 0;
  margin: 0;
}

.report-caveat-label {
  display: block;
  margin-bottom: 3px;
  color: var(--slate);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.report-caveat-text {
  display: block;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

@media screen and (min-width: 1100px) {
  /* Make room for the rail only when a report (with its nav) is rendered;
     lock/loading/missing states and other report.css consumers stay centered.
     Padding is symmetric so the content column stays viewport-centered
     beside the fixed rail instead of reading ~100px right of center. */
  .report-shell:has([data-report-nav]) {
    padding-left: 212px;
    padding-right: 212px;
  }
}

@media screen and (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

[hidden] {
  display: none !important;
}

@media (max-width: 760px) {
  .beta-topbar {
    gap: 14px;
    padding: 0 18px;
  }

  .beta-brand {
    font-size: 20px;
  }

  .beta-nav {
    gap: 12px;
    font-size: 11px;
  }

  .report-shell {
    padding: 14px 12px 56px;
  }

  .report-export-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .report-source-drawer {
    width: 100%;
  }

  .report-source-row {
    grid-template-columns: 1fr;
    gap: 3px;
    padding: 9px 0;
  }

  .report-source-trigger {
    margin-left: 0;
    margin-top: 6px;
  }

  .report-source-close {
    min-width: 44px;
    min-height: 44px;
  }
}

@media print {
  @page {
    margin: 0.5in;
  }

  :root {
    --bone: white;
    --paper: white;
    --tile-fill: white;
  }

  html,
  body {
    background: white;
    color: black;
    font-size: 11px;
  }.beta-product-topbar,
.beta-topbar,
.beta-nav,
.beta-intent-modal,
.report-lock,
.report-loading,
[data-beta-export],
[data-export-concierge-cta],
.report-source-trigger,
.report-source-drawer{
    display: none !important;
  }

  .report-shell {
    padding: 0;
  }

  .threat-report {
    width: 100%;
    display: block;
  }.report-section,
[data-export-integrity],
.report-export-source-appendix{
    break-inside: avoid;
  }

  .report-source-anchor[data-beta-source-link]::after {
    content: " (" attr(href) ")";
    font-family: "Schibsted Grotesk", monospace;
    font-size: 9px;
    color: var(--quiet);
    word-break: break-all;
  }

  .report-caveat,
  .report-export-source-appendix {
    break-inside: avoid;
  }
}

/* Mid-band step: three-up minis crush toward ~150px cells below 640px, but
   the single-column phone layout wastes the band. Two-up bridges it. */

@media (max-width: 480px) {
  .beta-mark {
    width: 28px;
    height: 28px;
  }

  .beta-brand {
    font-size: 19px;
  }

  .beta-nav {
    gap: 10px;
  }.report-export-meta{
    grid-template-columns: 1fr;
  }
}

/* === Shared data-table primitives ==================================
   DESIGN.md "Data Tables (Product Register)" + DESIGN.json "Data Table".
   Defined once here (threat-report.css is loaded by every report surface:
   Threat Report, Settlement Benchmarks, Plaintiff-firm Profiles, Landscape)
   and reused by each table family below and in the sibling stylesheets.
   website/beta/search.html is self-contained inline CSS by design; it mirrors
   the is-num / sticky rules verbatim and names this block as the source.
   Banned here and everywhere (DESIGN.md Rows/Alignment): zebra striping,
   vertical rules, tabular-nums, bordered per-row pills, row shadows or lift. */

/* Visually-hidden <caption>: names the table for assistive tech (WCAG) with no
   visual weight. */
.report-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* Numeric-cell hook (The Alignment Rule): right-align comparable magnitudes —
   dollars, counts, percentages — and their column header at a shared right
   edge. Carried on both the <td> and its <th> so conformance is testable from
   rendered markup. No tabular-nums (Schibsted gaps around commas/periods;
   right-edge alignment is what lines numbers up). */
.benchmark-table .is-num,
.profile-table .is-num,
.landscape-table .is-num {
  text-align: right;
  white-space: nowrap;
}

/* Sticky header inside the table's own overflow-x scroll wrap — opaque paper
   band matching the section card so rows scroll under it cleanly. Engages
   wherever the wrap is height-bounded. */
.benchmark-table thead th,
.profile-table thead th,
.landscape-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--paper);
}

/* Interactive row hover tint; tint only — rows never lift or gain a shadow. */
.benchmark-table tbody tr:hover,
.profile-table tbody tr:hover,
.landscape-table tbody tr:hover {
  background: var(--tile-fill);
}

.report-subject-sources {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  margin-top: 14px;
  font-size: 13px;
}

.report-subject-sources > span {
  color: var(--quiet);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.report-source-inline {
  color: var(--navy);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--amber);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
}

.report-action-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 22px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}.report-action-strip .report-button {
  min-height: 44px;
}

.report-action-status {
  min-height: 20px;
  margin-left: 4px;
  color: var(--muted);
  font-size: 12px;
}

.report-action-status[data-state="success"] {
  color: var(--success);
}

.report-action-status[data-state="error"] {
  color: var(--warning);
}

@media (max-width: 760px) {

  .report-action-strip .report-button {
    flex: 1 1 96px;
  }

  .report-action-status {
    flex-basis: 100%;
    margin-left: 0;
  }
}

@media (max-width: 480px) {
  .report-subject-sources {
    align-items: flex-start;
    flex-direction: column;
  }
}

@media print {.report-action-strip {
    display: none !important;
  }[data-report-disclosure]{
    overflow: visible !important;
  }
}

/* ==========================================================================
   Locked notice-page shell (Spec 09, 2026-07-19)
   One shared accordion shell serves the Active and Resolved notice
   summaries. Treatments are ported from the locked wireframes:
   docs/features/2026-07-11-notice-intelligence-follow-through/wireframes.html
   and resolved-wireframes.html.
   ========================================================================== */

.notice-shell,
.plaintiff-firm-profile {
  /* Neutral scaffolding rides the production bone-and-amber tokens
     (DESIGN.md); only Ian-locked colors stay literal: the outcome tints,
     the slate-blue open-section border, and the red subject diamond. */
  --ns-ink: var(--ink);
  --ns-muted: var(--muted);
  --ns-faint: var(--line-strong);
  --ns-line: var(--line);
  --ns-panel: var(--tile-fill);
  --ns-card: var(--paper);
  --ns-amber-bg: var(--amber-soft);
  --ns-amber-tx: var(--amber-deep);
  --ns-blue-tx: var(--slate);
  --ns-navy: var(--navy);
  --ns-blue-bg: var(--navy-soft);
  --ns-open-line: #c9d2e6;
  --file-pdf: oklch(55% 0.08 32);
  --file-word: oklch(52% 0.07 250);
  --file-excel: oklch(53% 0.07 155);
  --file-html: oklch(58% 0.08 75);
}

.notice-shell {
  position: relative;
  /* Grid-item guard: an explicit width stops fit-content sizing from letting
     a wide table's min-content inflate the shell past the article's
     constrained track; wide content scrolls in its own wrap instead. */
  width: 100%;
  max-width: 900px;
  min-width: 0;
  margin: 0 auto;
  background: var(--ns-card);
  border: 1px solid var(--ns-line);
  border-radius: 8px;
  color: var(--ns-ink);
}
.threat-report.notice-shell-page { min-width: 0; overflow-x: clip; }

.notice-shell .go, .plaintiff-firm-profile .go { font-size: 12.5px; color: var(--ns-muted); }
.notice-shell .btn, .plaintiff-firm-profile .btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--ns-faint); border-radius: 8px; padding: 6px 12px; font: inherit; font-size: 13px; background: var(--ns-card); color: var(--ns-ink); cursor: pointer; }
.notice-shell .btn.primary, .plaintiff-firm-profile .btn.primary { background: var(--ns-ink); border-color: var(--ns-ink); color: #fff; }
.notice-shell .btn.quiet{ border-color: transparent; color: var(--ns-muted); padding: 6px 6px; }
.notice-shell .btn.follow{ border-color: #d9b36c; }
.notice-shell .btn.share-action{ border: 0; background: transparent; padding: 6px; }
.notice-shell .btn.share-action:hover, .notice-shell .btn.share-action:focus-visible{ background: var(--ns-panel); }
.notice-shell .btn.follow.is-followed{ border-color: #d9b36c; background: var(--ns-amber-bg); color: var(--ns-amber-tx); }
.notice-shell .follow-check { display: none; font-weight: 700; }
.notice-shell .btn.follow.is-followed .follow-check{ display: inline; }
.notice-shell .head-tip { color: #993c1d; font-weight: 600; font-size: 10px; cursor: default; }
.notice-shell svg.ic { width: 15px; height: 15px; flex: 0 0 auto; stroke: var(--ns-muted); fill: none; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.notice-shell svg.ic.ph { color: var(--ns-muted); fill: var(--ns-muted); stroke: none; }
.notice-shell svg.ic.lock { width: 13px; height: 13px; stroke: var(--ns-faint); }
.notice-shell .acc-row > svg.ic.ph { width: 19px; height: 19px; }
.notice-shell .notice-toast[hidden] { display: none; }
.notice-shell .notice-toast { position: fixed; right: max(20px, env(safe-area-inset-right)); bottom: max(76px, calc(env(safe-area-inset-bottom) + 76px)); z-index: 70; width: min(320px, calc(100vw - 40px)); border: 1px solid #d9b36c; border-radius: 8px; background: var(--ns-card); color: var(--ns-ink); padding: 11px 14px; box-shadow: 0 10px 30px rgba(44, 44, 42, .18); font-size: 12.5px; }
.notice-shell .notice-context-bar, .plaintiff-firm-profile .notice-context-bar { position: fixed; top: 0; right: 0; left: 0; z-index: 44; display: flex; width: 100%; box-sizing: border-box; align-items: center; justify-content: center; gap: 8px; overflow: hidden; border-bottom: 1px solid var(--ns-line); background: var(--bone); color: var(--ns-ink); padding: 6px 16px; font-size: 11px; font-weight: 400; line-height: 1.2; white-space: nowrap; opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-6px); transition: opacity .16s cubic-bezier(.16, 1, .3, 1), transform .16s cubic-bezier(.16, 1, .3, 1), visibility 0s linear .16s; }
.notice-shell .notice-context-bar.is-visible, .plaintiff-firm-profile .notice-context-bar.is-visible { opacity: 1; visibility: visible; transform: translateY(0); transition-delay: 0s; }
.notice-shell .notice-context-ag, .plaintiff-firm-profile .notice-context-ag { flex: 0 0 auto; color: #465a88; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.notice-shell .notice-context-separator, .plaintiff-firm-profile .notice-context-separator { flex: 0 0 auto; color: var(--ns-faint); }
.notice-shell .notice-context-company, .plaintiff-firm-profile .notice-context-company { min-width: 0; overflow: hidden; font-weight: 600; text-overflow: ellipsis; }
.notice-shell .notice-context-subject, .plaintiff-firm-profile .notice-context-subject { min-width: 0; overflow: hidden; color: var(--ns-muted); text-overflow: ellipsis; }

/* ---- header block ---- */
.notice-shell .head { display: flex; justify-content: space-between; gap: 20px; padding: 20px 24px 16px; border-bottom: 1px solid var(--ns-line); }
.notice-shell .head-main { min-width: 0; }
.notice-shell .header-label-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.notice-shell .eyebrow { margin: 0 0 6px; color: var(--ns-muted); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; font-family: "Schibsted Grotesk", monospace; font-weight: 700; white-space: nowrap; }
.notice-shell .header-label-row .eyebrow { margin: 0; }
.notice-shell .head h1 { margin: 0 0 2px; font-size: 25px; line-height: 1.25; }
.notice-shell .head h1 .go, .plaintiff-firm-profile .head h1 .go { font-weight: 400; font-size: 12px; white-space: nowrap; }
.notice-shell .head h1 .co-defendants { white-space: normal; }
.notice-shell .head h1 .co-defendants.is-expanded { display: block; margin-top: 4px; font-size: 12px; line-height: 1.35; }
.notice-shell .co-defendant-list { line-height: 1.35; }
.notice-shell .company-profile-link { position: relative; display: inline-block; color: inherit; text-decoration: none; cursor: pointer; }
.notice-shell .head h1 .company-profile-link { display: inline; }
.notice-shell .company-profile-link.is-static { cursor: default; }
.notice-shell .company-profile-link:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: 2px; border-radius: 2px; }
.notice-shell .co-defendants-toggle { appearance: none; border: 0; background: transparent; color: inherit; padding: 0; font: inherit; white-space: nowrap; cursor: pointer; }
.notice-shell .co-defendants-toggle:hover { color: var(--ns-ink); }
.notice-shell .co-defendants-toggle:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: 2px; border-radius: 2px; }
.notice-shell .co-defendant-list .company-profile-link { display: inline; font-weight: 500; }
.notice-shell .head .sub { margin: 0 0 10px; font-size: 18px; color: var(--ns-muted); }
/* base class: static spans keep colour/weight */
.notice-shell .chemical-family-link { color: var(--ns-amber-tx); font-weight: 700; text-decoration: none; }
.notice-shell .product-category-link { color: var(--ns-blue-tx); font-weight: 700; text-decoration: none; }
.notice-shell .profile-link.company-profile-link { text-decoration: none; }
.notice-shell .factline { margin: 2px 0; font-size: 13px; }
.notice-shell .product-factline { position: relative; display: flex; min-width: 0; align-items: baseline; gap: 4px; padding-right: 44px; }
.notice-shell .product-factline .k { flex: 0 0 auto; }
.notice-shell .product-value { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.notice-shell .product-factline.is-expanded { align-items: flex-start; }
.notice-shell .product-factline.is-expanded .product-value { overflow: visible; text-overflow: clip; white-space: normal; }
.notice-shell .product-toggle { position: absolute; right: 0; top: 50%; display: inline-grid; min-width: 44px; min-height: 44px; place-items: center; border: 0; border-radius: 2px; background: transparent; color: var(--ns-muted); padding: 0; font: inherit; font-size: 18px; line-height: 1; cursor: pointer; transform: translateY(-50%); }
.notice-shell .product-toggle:hover { color: var(--ns-ink); }
.notice-shell .product-toggle:focus-visible { color: var(--ns-ink); outline: 2px solid var(--ns-ink); outline-offset: 2px; }
.notice-shell .factline .k { color: var(--ns-muted); }
.notice-shell .chemical-link { font-weight: 400; color: inherit; }
.notice-shell a.chemical-link { text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; }
.notice-shell .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 14px; }
.notice-shell .action-menu-wrap, .notice-shell .more-menu-wrap { position: relative; display: inline-flex; }
.notice-shell .more-menu[hidden] { display: none; }
.notice-shell .more-menu { position: absolute; z-index: 12; top: calc(100% + 5px); left: 0; width: 154px; box-sizing: border-box; border: 1px solid var(--ns-line); border-radius: 8px; background: var(--ns-card); padding: 5px; box-shadow: 0 8px 22px rgba(44, 44, 42, .15); }
.notice-shell .more-menu-item { display: block; width: 100%; border: 0; border-radius: 5px; background: transparent; color: var(--ns-ink); padding: 8px 9px; font: inherit; font-size: 12.5px; text-align: left; cursor: pointer; }
.notice-shell .more-menu-item:hover, .notice-shell .more-menu-item:focus-visible { background: var(--ns-panel); outline: none; }
.notice-shell .follow-status:empty, .notice-shell .export-feedback:empty, .notice-shell .share-feedback:empty { display: none; }

/* ---- dialogs ---- */
.notice-shell .export-ic { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; color: var(--ns-muted); }
.notice-shell .file-logo { display: block; width: 22px; height: 22px; }
.notice-shell .file-logo-pdf { color: var(--file-pdf); }
.notice-shell .file-logo-word { color: var(--file-word); }
.notice-shell .file-logo-excel { color: var(--file-excel); }
.notice-shell .file-logo-html { color: var(--file-html); }
.notice-shell .export-dialog-backdrop[hidden] { display: none; }
.notice-shell .export-dialog-backdrop { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; box-sizing: border-box; padding: 20px; background: rgba(44, 44, 42, .42); }
.notice-shell .export-dialog { width: min(360px, 100%); box-sizing: border-box; border: 1px solid var(--ns-faint); border-radius: 10px; background: var(--ns-card); padding: 18px; box-shadow: 0 12px 36px rgba(44, 44, 42, .22); }
.notice-shell .export-dialog h2 { margin: 0 0 4px; font-size: 18px; }
.notice-shell .export-dialog-copy { margin: 0 0 12px; color: var(--ns-muted); font-size: 12.5px; }
.notice-shell .export-choice { display: flex; align-items: center; gap: 10px; margin: 7px 0; border: 1px solid var(--ns-line); border-radius: 8px; padding: 9px 10px; cursor: pointer; }
.notice-shell .export-choice:has(input:checked) { border-color: var(--ns-ink); background: var(--ns-panel); }
.notice-shell .export-choice input { margin: 0; accent-color: var(--ns-ink); }
.notice-shell .export-dialog-actions { display: flex; justify-content: flex-end; gap: 7px; margin-top: 14px; }
.notice-shell .case-role-options { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin: 10px 0 12px; }
.notice-shell .case-role-choice { display: flex; align-items: center; gap: 7px; border: 1px solid var(--ns-line); border-radius: 8px; padding: 9px; cursor: pointer; font-size: 12.5px; }
.notice-shell .case-role-choice:has(input:checked) { border-color: var(--ns-ink); background: var(--ns-panel); }
.notice-shell .case-role-choice input { margin: 0; accent-color: var(--ns-ink); }
.notice-shell .case-field[hidden], .notice-shell .case-confirmation[hidden], .notice-shell .case-form[hidden] { display: none; }
.notice-shell .case-field { margin-top: 10px; }
.notice-shell .case-field label { display: block; margin-bottom: 5px; color: var(--ns-muted); font-size: 11.5px; }
.notice-shell .case-field select, .notice-shell .case-field input { width: 100%; box-sizing: border-box; border: 1px solid var(--ns-faint); border-radius: 8px; background: var(--ns-card); color: var(--ns-ink); padding: 8px 9px; font: inherit; font-size: 12.5px; }
.notice-shell .case-confirmation p { margin: 8px 0 0; color: var(--ns-muted); font-size: 12.5px; line-height: 1.45; }
.notice-shell .share-option { display: flex; width: 100%; align-items: center; gap: 10px; margin: 7px 0; border: 1px solid var(--ns-line); border-radius: 8px; background: var(--ns-card); color: var(--ns-ink); padding: 10px; font: inherit; font-size: 12.5px; text-align: left; cursor: pointer; }
.notice-shell .share-option:not(:disabled):hover, .notice-shell .share-option:not(:disabled):focus-visible { border-color: var(--ns-ink); background: var(--ns-panel); outline: none; }
.notice-shell .share-option:disabled { background: var(--ns-panel); color: var(--ns-muted); cursor: not-allowed; opacity: .58; }
.notice-shell .share-option-note { margin-left: auto; font-size: 10.5px; font-weight: 600; letter-spacing: .02em; }
.notice-shell .share-option svg { width: 16px; height: 16px; stroke: var(--ns-muted); fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

/* ---- timeline ---- */
.notice-shell .timeline { text-align: right; flex: 0 0 auto; padding-top: 8px; }
.notice-shell .tag { appearance: none; display: inline-block; border: 0; border-radius: 999px; padding: 2px 9px; background: transparent; color: inherit; font: inherit; font-size: 11.5px; white-space: nowrap; cursor: default; }
.notice-shell .tag.window { position: relative; background: var(--ns-amber-bg); color: var(--ns-amber-tx); }
.notice-shell .tag.window.is-closed { border: 1px solid var(--ns-line); background: var(--ns-panel); color: var(--ns-muted); }
.notice-shell .timeline .go, .plaintiff-firm-profile .timeline .go { display: block; margin-top: 5px; font-size: 11.5px; }

/* ---- info cards ---- */
/* 14px step at the cards/stack boundary (was 28px) */
.notice-shell .cards { display: flex; gap: 10px; padding: 14px 24px 6px; }
.notice-shell .card-box { flex: 1; min-width: 0; border: 1px solid var(--ns-line); border-radius: 8px; padding: 10px 12px; }
.notice-shell .card-box .eyebrow { margin-bottom: 7px; }
.notice-shell .card-box .big { position: relative; font-size: 16px; font-weight: 600; }
/* Terrain-lock type sizes are production sizes (2026-07-26 ruling 4). */
.notice-shell .status-card .big { font-size: 18px; }
/* Resolved-notice Status card tints (locked resolved-wireframes palette). */
.notice-shell .status-card.is-settled, .notice-shell .status-card.is-judgment { background: #faeeda; border-color: #e4c38e; }
.notice-shell .status-card.is-withdrawn { background: #eef3fb; border-color: #c9d2e6; }
.notice-shell .status-card.is-no-public-resolution { background: #f3f0e8; border-color: #d8d0c3; }
.notice-shell .card-line { margin: 4px 0; font-size: 12.5px; }
.notice-shell .card-line .go, .plaintiff-firm-profile .card-line .go { display: block; font-size: 11.5px; }
.notice-shell .plaintiff-name { font-weight: 700; }
.notice-shell .profile-link { position: relative; display: inline-block; cursor: pointer; color: inherit; }
.notice-shell a.profile-link { text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; }
.notice-shell .profile-link.is-static { cursor: default; text-decoration: none; }
.notice-shell a.profile-link.chemical-family-link { color: var(--ns-amber-tx); text-decoration: none; }
.notice-shell a.profile-link.product-category-link { color: var(--ns-blue-tx); text-decoration: none; }
.notice-shell .doc-link { display: flex; align-items: center; gap: 7px; }
.notice-shell .doc-type { display: inline-flex; width: 24px; height: 24px; flex: 0 0 auto; align-items: center; justify-content: center; color: var(--ns-muted); }
.notice-shell .doc-link-a { color: inherit; text-decoration: none; }
.notice-shell .doc-link-a u { text-decoration-color: var(--ns-faint); text-underline-offset: 2px; }
.notice-shell .documents-toggle { display: block; margin: 5px 0 0 31px; border: 0; background: transparent; color: var(--ns-navy); padding: 0; font: inherit; font-size: 11.5px; font-weight: 600; text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; cursor: pointer; }
.notice-shell .documents-toggle:hover { color: var(--ns-amber-tx); }
.notice-shell .documents-toggle:focus-visible { border-radius: 2px; outline: 2px solid var(--ns-ink); outline-offset: 2px; }
.notice-shell .documents-more { position: relative; display: inline-block; color: var(--ns-muted); letter-spacing: .12em; cursor: default; }

/* ---- accordion stack ---- */
.notice-shell .stack { padding: 0 24px 18px; }
.notice-shell .acc { position: relative; border: 1px solid var(--ns-line); border-radius: 8px; margin: 8px 0; overflow: hidden; }
.notice-shell .acc:hover, .notice-shell .acc:focus-within { z-index: 43; }
.notice-shell [data-scatter-point], .notice-shell [data-comp-row] { scroll-margin-bottom: 96px; }
.notice-shell .acc:has([data-tooltip]:hover), .notice-shell .acc:has([data-tooltip]:focus-visible),
.notice-shell .acc:has(.scatter-dot:hover), .notice-shell .acc:has(.scatter-dot:focus-visible) { overflow: visible; }
.notice-shell .acc.is-open { border-color: var(--ns-open-line); }
.notice-shell .acc.is-open > .acc-panel { border-top-color: var(--ns-open-line); }
.notice-shell .acc-row { position: relative; display: flex; align-items: center; gap: 10px; padding: 10px 12px; font-size: 14px; background: var(--ns-card); }
.notice-shell .acc-row .t { font-size: 16px; font-weight: 600; }
.notice-shell .acc-row .s { font-size: 12px; color: var(--ns-muted); }
.notice-shell .acc-row .grow { flex: 1; min-width: 0; }
.notice-shell .acc-row .plus { font-size: 15px; color: var(--ns-muted); width: 16px; text-align: center; }
.notice-shell .assessment-pill { flex: 0 0 auto; border: 1px solid #d9b36c; border-radius: 999px; background: var(--ns-amber-bg); color: var(--ns-amber-tx); padding: 2px 7px; font-size: 9.5px; font-weight: 600; line-height: 1.2; white-space: nowrap; }
.notice-shell .acc:not(.is-locked) > .acc-row { cursor: pointer; user-select: none; }
.notice-shell .acc:not(.is-locked) > .acc-row:hover { background: var(--ns-panel); }
.notice-shell .acc-row:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: -2px; }
.notice-shell .lock-indicator { display: inline-flex; width: 16px; align-items: center; justify-content: center; }
.notice-shell .lock-indicator.is-unlocked svg { stroke: var(--ns-muted); }
.notice-shell .acc.is-locked .acc-row { cursor: default; }
.notice-shell .acc.is-locked .lock-indicator, .notice-shell .acc.is-locked .plus { opacity: .45; }
.notice-shell .locked-message { position: absolute; right: 60px; top: 50%; border: 1px solid var(--ns-line); border-radius: 999px; background: var(--ns-panel); color: var(--ns-muted); padding: 3px 8px; font-size: 10.5px; line-height: 1; white-space: nowrap; opacity: 0; pointer-events: none; transform: translateY(-50%); }
.notice-shell .acc.is-locked .acc-row:hover .locked-message,
.notice-shell .acc.is-locked .acc-row:focus-visible .locked-message,
.notice-shell .acc.is-locked .acc-row.is-notified .locked-message { opacity: 1; }
.notice-shell .acc-panel { border-top: 1px solid var(--ns-line); background: var(--bone); padding: 12px 14px 14px; }
.notice-shell .acc[data-acc-open="false"] > .acc-panel { display: none; }
.notice-shell .insight-list { margin: 2px 0 0; padding-left: 20px; }
.notice-shell .insight-list li { margin: 4px 0; padding-left: 2px; font-size: 13.5px; line-height: 1.5; }
.notice-shell [data-raw-injunctive-relief="long"] { font-size: 12.5px; line-height: 1.45; }
.notice-shell .info-tip-wrap { display: inline-flex; align-items: baseline; margin-left: 3px; }
.notice-shell .info-tip { display: inline-grid; width: 16px; height: 16px; place-items: center; border: 1px solid var(--ns-faint); border-radius: 50%; background: var(--ns-card); color: var(--ns-muted); padding: 0; font: inherit; font-size: 10px; font-weight: 700; line-height: 1; cursor: default; }
.notice-shell .info-tip:hover, .notice-shell .info-tip:focus-visible { border-color: var(--ns-ink); color: var(--ns-ink); }
.notice-shell .info-tip-print { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.notice-shell .insight-comparables-link { margin-top: 10px; border: 0; background: transparent; color: var(--ns-muted); padding: 0; font: inherit; font-size: 11.5px; text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; cursor: pointer; }
.notice-shell .insight-comparables-link:hover, .notice-shell .insight-comparables-link:focus-visible { color: var(--ns-ink); text-decoration-color: currentColor; }
.notice-shell .basis-tip { white-space: nowrap; }
.notice-shell .caveat { margin: 10px 0 0; font-size: 11.5px; color: var(--ns-muted); }
.notice-shell .insight-fallback { margin: 2px 0 0; font-size: 13.5px; }
.notice-print-extras { display: none; }

/* ---- plaintiff profile panel ---- */
.notice-shell .profile-summary { margin: 0 0 12px; font-size: 13px; color: var(--ns-muted); }
.notice-shell .profile-summary .plaintiff-name { color: var(--ns-ink); }
.notice-shell .profile-empty { margin: 0; font-size: 12.5px; color: var(--ns-muted); }
.notice-shell .profile-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.notice-shell .profile-metric { position: relative; min-height: 76px; display: flex; flex-direction: column; align-items: center; justify-content: center; box-sizing: border-box; border: 1px solid var(--ns-line); border-radius: 8px; background: var(--ns-panel); padding: 9px 6px; text-align: center; }
.notice-shell .profile-metric-value { color: #171716; font-size: 24px; font-weight: 700; line-height: 1; }
.notice-shell .profile-metric-label { margin-top: 7px; color: #465a88; font-size: 9.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.notice-shell .profile-info { appearance: none; position: relative; display: inline-grid; width: 13px; height: 13px; margin-left: 2px; place-items: center; border: 0; border-radius: 50%; background: #465a88; color: #fff; padding: 0; font: inherit; font-size: 8.5px; font-style: normal; letter-spacing: 0; vertical-align: 1px; cursor: default; }
.notice-shell .profile-viz { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 16px; margin-top: 14px; padding-top: 13px; border-top: 1px dashed var(--ns-line); }
/* The donut fails closed on a payload that cannot state its own shares, which
   leaves Activity alone in a row whose first track is sized for the donut.
   Only that case spans the row; a donut without Activity keeps its column. */
.notice-shell .profile-viz > [data-report-metric="firm-activity"]:only-child { grid-column: 1 / -1; }
.notice-shell .profile-kicker { margin: 0 0 8px; color: #465a88; font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.notice-shell .chem-layout { display: flex; align-items: center; gap: 12px; }
.notice-shell .chem-donut { position: relative; width: 88px; height: 88px; flex: 0 0 auto; border-radius: 50%; }
.notice-shell .chem-donut::after { content: ""; position: absolute; inset: 18px; border-radius: 50%; background: var(--bone); }
.notice-shell .chem-donut-center { position: absolute; z-index: 1; inset: 0; display: grid; place-content: center; color: var(--ns-muted); font-size: 9px; text-align: center; }
.notice-shell .chem-donut-center strong { display: block; color: #172f5a; font-size: 18px; line-height: 1.1; }
.notice-shell .chem-legend { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 10px; }
/* Chemical names are source data and are never shortened, and the longest
   real one runs 64 characters. It wraps inside the legend column rather
   than overrunning the panel and clipping mid-word. */
.notice-shell .chem-legend li { display: flex; align-items: flex-start; gap: 6px; }
.notice-shell .chem-key { width: 8px; height: 8px; flex: 0 0 auto; margin-top: 3px; border-radius: 50%; background: var(--key); }
.notice-shell .activity-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.notice-shell .profile-toggles { display: flex; gap: 7px; }
.notice-shell .toggle-group { display: inline-flex; overflow: hidden; border: 1px solid var(--ns-line); border-radius: 7px; background: var(--ns-panel); }
.notice-shell .toggle-btn { border: 0; background: transparent; color: var(--ns-muted); padding: 5px 7px; cursor: pointer; font: inherit; font-size: 8.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.notice-shell .toggle-btn.is-active { background: var(--ns-card); color: #172f5a; }
.notice-shell .toggle-btn:focus-visible { position: relative; z-index: 1; outline: 2px solid #172f5a; outline-offset: -2px; }
.notice-shell .activity-chart { display: block; width: 100%; height: auto; margin-top: 4px; }
.notice-shell .activity-point { cursor: default; outline: none; }
.notice-shell .activity-point circle { fill: #172f5a; fill-opacity: .38; stroke: var(--bone); stroke-width: 1; }
.notice-shell .activity-point:hover circle, .notice-shell .activity-point:focus-visible circle { fill-opacity: 1; stroke-width: 2.4; }
.notice-shell .activity-point.is-latest circle { fill-opacity: 1; stroke-width: 1.5; }
.notice-shell .profile-legend { display: flex; gap: 14px; margin-top: 3px; color: var(--ns-muted); font-size: 9.5px; }
.notice-shell .profile-legend span { display: inline-flex; align-items: center; gap: 5px; }
.notice-shell .legend-line { width: 14px; height: 2px; background: #172f5a; }

/* ---- defense strategy / summaries ---- */
.notice-shell .strategy-notices { display: grid; gap: 9px; margin: 0 0 12px; }
.notice-shell .strategy-notice { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 9px; align-items: start; margin: 0; padding: 11px 13px; border: 1px solid #c9d2e6; border-radius: 10px; background: #f7f8fb; color: #314b7c; font-size: 11.5px; line-height: 1.55; }
.notice-shell .strategy-notice strong { color: #172f5a; }
.notice-shell .strategy-notice.is-warning { border-color: #e4b6a8; background: #fff7f4; color: #6f3323; }
.notice-shell .strategy-notice.is-warning strong { color: #7b2b1b; }
.notice-shell .strategy-notice-mark { display: inline-flex; width: 20px; height: 20px; align-items: center; justify-content: center; border-radius: 999px; background: #e5eaf4; color: #314b7c; font-size: 11px; font-weight: 700; line-height: 1; }
.notice-shell .strategy-notice.is-warning .strategy-notice-mark { background: #f5d9d0; color: #9d341f; }
.notice-shell .strategy-notice-copy { margin: 0; }
.notice-shell .strategy-directory-note { color: var(--ns-muted); }
.notice-shell .strategy-intro { margin: 0 0 12px; color: var(--ns-muted); font-size: 12px; line-height: 1.5; }
.notice-shell .strategy-evidence { margin: 0 0 12px; padding: 10px 12px; border: 1px solid #d8d3c8; border-radius: 10px; background: #faf8f3; color: #54514b; font-size: 11.5px; line-height: 1.5; }
.notice-shell .strategy-evidence strong { color: #2f2e2b; }
.notice-shell .strategy-paths { overflow: hidden; margin: 0; padding: 0; border: 1px solid #c9d2e6; border-radius: 10px; list-style: none; }
.notice-shell .strategy-path { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 10px; padding: 12px 14px; }
.notice-shell .strategy-path + .strategy-path { border-top: 1px solid #dfe5f0; }
.notice-shell .strategy-number { color: #172f5a; font-size: 18px; font-weight: 700; line-height: 1.25; }
.notice-shell .strategy-copy { margin: 0; color: var(--ns-muted); font-size: 11.5px; line-height: 1.5; }
.notice-shell .strategy-copy strong { color: #172f5a; font-size: 12.5px; }
.notice-shell .strategy-situation { margin: 12px 0 0; padding: 12px 14px; border: 1px solid #c9d2e6; border-radius: 10px; background: #f5f7fb; color: #314b7c; font-size: 11.5px; line-height: 1.55; }
.notice-shell .strategy-situation strong { color: #172f5a; }
.notice-shell .summary-lede { margin: 0 0 12px; color: var(--ns-ink); font-size: 13px; line-height: 1.5; }
.notice-shell .case-summary-list { overflow: hidden; margin: 0; border: 1px solid #c9d2e6; border-radius: 10px; background: var(--ns-panel); }
.notice-shell .case-summary-row { display: grid; grid-template-columns: 145px minmax(0, 1fr); gap: 14px; padding: 10px 12px; }
.notice-shell .case-summary-row + .case-summary-row { border-top: 1px solid #dfe5f0; }
.notice-shell .case-summary-row dt { color: #465a88; font-size: 9.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.notice-shell .case-summary-row dd { margin: 0; color: var(--ns-ink); font-size: 11.5px; line-height: 1.5; }
.notice-shell .case-summary-row u { color: #172f5a; text-decoration-color: #7d96bf; text-underline-offset: 2px; }

/* ---- defense law firms ---- */
.notice-shell .defense-intro { max-width: 68ch; margin: 0 0 12px; color: var(--ns-muted); font-size: 12px; line-height: 1.5; }
.notice-shell .defense-table-wrap { overflow: hidden; border: 1px solid #c9d2e6; border-radius: 10px; }
.notice-shell .defense-table { width: 100%; table-layout: fixed; border-collapse: collapse; }
.notice-shell .defense-table th { position: relative; padding: 9px 8px; color: #465a88; font-size: 9px; font-weight: 700; line-height: 1.2; letter-spacing: .05em; text-align: left; text-transform: uppercase; vertical-align: bottom; }
.notice-shell .defense-table td { padding: 10px 8px; border-top: 1px solid #dfe5f0; color: var(--ns-ink); font-size: 11px; line-height: 1.35; vertical-align: top; }
.notice-shell .defense-table .firm-name { color: #172f5a; font-size: 11.5px; font-weight: 700; }
.notice-shell .defense-firm-link { color: inherit; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 2px; transition: text-decoration-color .15s ease; }
.notice-shell .defense-firm-link:hover, .notice-shell .defense-firm-link:focus-visible { text-decoration-color: currentColor; }
.notice-shell .defense-firm-link:focus-visible, .notice-shell .firm-category:focus-visible { outline: 2px solid #8fa5cc; outline-offset: 2px; }
.notice-shell .defense-table .matter-count { color: #172f5a; font-size: 12px; font-weight: 600; text-align: center; }
.notice-shell .firm-categories { display: flex; flex-wrap: wrap; gap: 4px; }
.notice-shell .firm-category { display: inline-flex; border-radius: 999px; background: #eef1f8; color: #172f5a; padding: 3px 6px; font-size: 11px; font-weight: 600; line-height: 1.2; text-decoration: none; white-space: nowrap; }
.notice-shell .firm-category:hover, .notice-shell .firm-category:focus-visible { filter: brightness(.96); box-shadow: 0 0 0 1px currentColor; }
.notice-shell .firm-category.is-amber { background: #fff2dc; color: #aa6500; }
.notice-shell .firm-category.is-salmon { background: #fde4de; color: #af3c22; }
.notice-shell .defense-directory { margin: 12px 0 0; font-size: 11.5px; line-height: 1.45; }

/* ---- recommended actions ---- */
.notice-shell .actions-disclaimer, .notice-shell .actions-warning { margin: 0 0 12px; border: 1px solid #c9d2e6; border-radius: 10px; padding: 11px 13px; color: #314b7c; font-size: 11.5px; line-height: 1.55; }
.notice-shell .actions-disclaimer { background: #f5f7fb; }
.notice-shell .actions-warning { border-color: #e4b6a8; background: #fff7f4; color: #6f3323; }
.notice-shell .actions-disclaimer strong, .notice-shell .actions-warning strong { color: #172f5a; }
.notice-shell .recommended-list { overflow: hidden; margin: 0; padding: 0; border: 1px solid #c9d2e6; border-radius: 10px; list-style: none; }
.notice-shell .recommended-item { display: grid; grid-template-columns: 24px minmax(0, 1fr) 58px; gap: 10px; padding: 11px 13px; }
.notice-shell .recommended-item + .recommended-item { border-top: 1px solid #dfe5f0; }
.notice-shell .recommended-number { color: #172f5a; font-size: 15px; font-weight: 700; line-height: 1.4; }
.notice-shell .recommended-copy { margin: 0; color: var(--ns-muted); font-size: 10.5px; line-height: 1.5; }
.notice-shell .recommended-copy strong { color: #172f5a; font-size: 11.5px; }
.notice-shell .recommended-when { color: var(--ns-muted); font-size: 9.5px; font-weight: 600; line-height: 1.4; text-align: right; white-space: nowrap; }
.notice-shell .recommended-when.is-urgent { color: #b23f24; }
.notice-shell .actions-closed { margin: 0; font-size: 13.5px; }

/* ---- comparables: scatter ---- */
.notice-shell .landing-copy { margin: 0; font-size: 12px; color: var(--ns-muted); }
.notice-shell .scatter-viewport { display: block; width: 100%; padding: 4px 0 8px; }
.notice-shell .scatter { position: relative; display: block; width: 100%; height: 168px; margin: 8px 0 2px; }
.notice-shell .scatter::before { content: ""; position: absolute; right: 3%; left: 3%; top: 68px; height: 1px; background: #9fb0ca; }
.notice-shell .scatter-stat { position: absolute; z-index: 1; top: 28px; bottom: 52px; left: var(--stat-x); border-left: 1px dashed var(--ns-faint); color: var(--ns-muted); transition: left 260ms cubic-bezier(.25, 1, .5, 1); }
.notice-shell .scatter-stat.is-median { border-left-style: solid; }
.notice-shell .scatter-stat.is-mean { border-left-style: dotted; }
.notice-shell .scatter-stat.is-mean .scatter-stat-label { left: 4px; transform: none; }
.notice-shell .scatter-stat-label { position: absolute; top: -16px; left: 0; font-family: "Schibsted Grotesk", monospace; font-size: 8.5px; white-space: nowrap; transform: translateX(-50%); }
.notice-shell .scatter-dot { position: absolute; z-index: 2; top: calc(68px + var(--point-y)); left: var(--point-x); width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #18345f; transform: translate(-50%, -50%); cursor: pointer; }
.notice-shell .scatter-dot::before { content: ""; position: absolute; width: 18px; height: 18px; box-sizing: border-box; border: 2px solid currentColor; border-radius: 50%; background: var(--ns-card); }
.notice-shell .scatter-dot::after { content: ""; position: absolute; width: 10px; height: 10px; border-radius: 50%; background: currentColor; }
.notice-shell .scatter-dot:hover::before, .notice-shell .scatter-dot:focus-visible::before { width: 21px; height: 21px; }
.notice-shell .scatter-dot:hover::after, .notice-shell .scatter-dot:focus-visible::after { width: 12px; height: 12px; background: #b67519; }
.notice-shell .scatter-dot.is-highlighted { color: #b67519; }
.notice-shell .scatter-dot.is-highlighted::before { width: 21px; height: 21px; }
.notice-shell .scatter-dot.is-highlighted::after { width: 12px; height: 12px; background: #b67519; }
.notice-shell .scatter-dot:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: 1px; }
.notice-shell .scatter-dot.is-current-case { z-index: 4; color: #b23f24; cursor: pointer; }
.notice-shell .scatter-dot.is-current-case::before { width: 20px; height: 20px; border-width: 3px; border-radius: 4px; transform: rotate(45deg); }
.notice-shell .scatter-dot.is-current-case::after { width: 8px; height: 8px; border-radius: 2px; background: currentColor; transform: rotate(45deg); }
.notice-shell .scatter-dot.is-current-case:hover::before, .notice-shell .scatter-dot.is-current-case:focus-visible::before { width: 22px; height: 22px; }
.notice-shell .scatter-dot.is-current-case:hover::after, .notice-shell .scatter-dot.is-current-case:focus-visible::after { width: 10px; height: 10px; background: currentColor; }
.notice-shell .dot-tip { position: absolute; left: 50%; bottom: calc(100% + 5px); z-index: 3; width: max-content; max-width: 220px; padding: 6px 8px; border: 1px solid var(--ns-line); border-radius: 6px; background: var(--ns-ink); color: var(--ns-card); font-size: 10.5px; line-height: 1.35; text-align: left; white-space: normal; opacity: 0; pointer-events: none; transform: translateX(-50%); }
/* Edge anchoring keys off x-position, never DOM order: dots render in packet
   order, so a leftmost dot can be last in the markup. */
.notice-shell .scatter-dot.is-edge-left .dot-tip { left: 0; transform: none; }
.notice-shell .scatter-dot.is-edge-right .dot-tip { right: 0; left: auto; transform: none; }
.notice-shell .scatter-dot:hover .dot-tip, .notice-shell .scatter-dot:focus-visible .dot-tip { opacity: 1; }
.notice-shell .scatter-axis { position: absolute; right: 3%; bottom: 8px; left: 3%; display: flex; justify-content: space-between; font-size: 10px; color: var(--ns-muted); }
.notice-shell .landing-note { margin: 7px 0 0; font-size: 11px; color: var(--ns-muted); }
.notice-shell .method-sources { cursor: pointer; }
.notice-shell .current-case-key { display: inline-flex; align-items: center; gap: 6px; color: #7b2b1b; font-weight: 700; }
.notice-shell .current-case-key i { width: 8px; height: 8px; border-radius: 2px; background: #b23f24; transform: rotate(45deg); }
.notice-shell .scatter-dot[hidden] { display: none; }
.notice-shell .scatter-dot { transition: opacity 180ms cubic-bezier(.25, 1, .5, 1); }
.notice-shell .scatter-dot.is-terrain-out { opacity: 0; pointer-events: none; }

/* ---- comparables: terrain instrument (Spec 16) ----
   Canvas scatter (public settlement dollars × months to public resolution)
   below the linear settlement-range strip. Behavior contract: Spec 15
   (docs/features/2026-07-11-notice-intelligence-follow-through/specs/
   15-comparable-terrain-interaction-layer.md); component rules: DESIGN.md
   §5 "Comparable Terrain Field (Product Register)". Selectors re-scoped
   from the reference mockup's body-class prefixes down to .notice-shell —
   the JS itself never reads body classes. */
.terrain-lab { margin: 18px 0 16px; border: 0; border-top: 1px solid var(--ns-line); border-radius: 0; background: transparent; padding: 16px 0 0; color: var(--ns-ink); }
.terrain-range-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 4px; }
.terrain-range-title { margin: 0; font-size: 14px; font-weight: 400; line-height: 1.3; }
.terrain-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.terrain-head h3 { margin: 0; font-size: 14px; font-weight: 400; line-height: 1.3; }
.terrain-copy { max-width: 68ch; margin: 4px 0 0; color: var(--ns-muted); font-size: 10.5px; line-height: 1.45; }
/* Spec 18/19 sweep-concentration caveat: a quiet flag that the plotted comps
   are dominated by one sweep's per-notice shares. */
.terrain-sweep-note { font-style: italic; }
.terrain-controls { display: grid; justify-items: end; gap: 6px; }
.terrain-bands { display: flex; flex-wrap: wrap; gap: 4px; justify-content: flex-end; }
.terrain-bands button,
.terrain-additional-toggle {
  border: 1px solid var(--ns-faint);
  border-radius: 6px;
  background: var(--ns-card);
  color: var(--ns-muted);
  padding: 5px 7px;
  font: inherit;
  font-size: 9.5px;
  cursor: pointer;
  transition:
    transform 180ms cubic-bezier(.25, 1, .5, 1),
    color 180ms cubic-bezier(.25, 1, .5, 1),
    border-color 180ms cubic-bezier(.25, 1, .5, 1),
    background-color 180ms cubic-bezier(.25, 1, .5, 1);
}
.terrain-bands button:hover,
.terrain-bands button:focus-visible,
.terrain-bands button[aria-pressed="true"],
.terrain-additional-toggle:hover,
.terrain-additional-toggle:focus-visible,
.terrain-additional-toggle[aria-pressed="true"] {
  border-color: var(--ns-navy);
  background: var(--ns-card);
  color: var(--ns-navy);
  outline: none;
}
.terrain-additional-toggle { border-color: #d9b36c; color: var(--ns-amber-tx); }
@media (hover: hover) {
  .terrain-bands button:hover,
  .terrain-additional-toggle:hover { transform: translateY(-1px); }
  .terrain-bands button:active,
  .terrain-additional-toggle:active { transform: translateY(1px); }
}
.terrain-stage { position: relative; min-height: 310px; overflow: hidden; border: 1px solid var(--ns-line); border-radius: 8px; background: var(--ns-card); cursor: crosshair; touch-action: none; }
.terrain-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.terrain-print { display: none; }
.terrain-points { position: absolute; inset: 0; pointer-events: none; }
.terrain-point { position: absolute; display: grid; width: 44px; height: 44px; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--ns-navy); padding: 0; transform: translate(-50%, -50%); cursor: pointer; pointer-events: auto; }
.terrain-point[hidden] { display: none; }
.terrain-point::before {
  width: 11px;
  height: 11px;
  border: 2px solid var(--ns-card);
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 0 1px currentColor;
  content: "";
  transform: scale(1);
  transition: transform 180ms cubic-bezier(.25, 1, .5, 1), background-color 180ms cubic-bezier(.25, 1, .5, 1);
}
.terrain-point:hover::before,
.terrain-point:focus-visible::before,
.terrain-point[aria-pressed="true"]::before { background: #c67b16; transform: scale(1.55); }
.terrain-point:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: -6px; }
.terrain-point.is-terrain-out { opacity: .2; }
.terrain-point { transition: opacity 180ms cubic-bezier(.25, 1, .5, 1); }
.notice-shell .comp-row { transition: opacity 180ms cubic-bezier(.25, 1, .5, 1), background-color 180ms cubic-bezier(.25, 1, .5, 1); }
.terrain-brush { position: absolute; display: none; border: 1px solid #c67b16; background: rgba(232, 155, 46, .12); pointer-events: none; }
.terrain-brush.is-active { display: block; }
.terrain-detail { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; min-height: 44px; margin-top: 8px; border-top: 1px solid var(--ns-line); padding-top: 8px; }
.terrain-detail strong,
.terrain-detail span { display: block; }
.terrain-detail strong { font-size: 11.5px; font-weight: 400; }
.terrain-detail span { margin-top: 2px; color: var(--ns-muted); font-size: 10.5px; line-height: 1.35; }
.terrain-source { color: var(--ns-navy); font-size: 10.5px; font-weight: 600; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; white-space: nowrap; }
.notice-shell .comp-row.is-terrain-out { opacity: .32; }
.notice-shell .comp-row.is-terrain-band { background: var(--ns-blue-bg); }

/* Stat markers: dollar-value label + declutter stagger/merge states
   (Spec 15 §5, DESIGN.md "Stat-Label Declutter Rule"). */
.notice-shell .terrain-stat-value {
  position: absolute;
  top: -5px;
  left: 0;
  color: var(--ns-muted);
  font-family: "Schibsted Grotesk", monospace;
  font-size: 8.5px;
  font-weight: 400;
  white-space: nowrap;
  transform: translateX(-50%);
}
.notice-shell .scatter-stat.is-mean .terrain-stat-value { left: 4px; transform: none; }
.notice-shell .scatter-stat.is-stagger .scatter-stat-label { top: -40px; }
.notice-shell .scatter-stat.is-stagger .terrain-stat-value { top: -29px; }
.notice-shell .scatter-stat.is-label-merged .scatter-stat-label,
.notice-shell .scatter-stat.is-label-merged .terrain-stat-value { visibility: hidden; }

/* Subject diamond (Resolved only): this notice's own point, excluded from
   comparable-set medians/filters. Reuses the red the linear strip already
   uses for .scatter-dot.is-current-case. */
.terrain-subject {
  position: absolute;
  z-index: 4;
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  color: #b23f24;
  transform: translate(-50%, -50%);
  pointer-events: auto;
}
.terrain-subject::before {
  content: "";
  position: absolute;
  width: 14px;
  height: 14px;
  box-sizing: border-box;
  border: 2.5px solid currentColor;
  border-radius: 3px;
  background: var(--ns-card);
  transform: rotate(45deg);
}
.terrain-subject::after {
  content: "";
  position: absolute;
  width: 5px;
  height: 5px;
  border-radius: 1px;
  background: currentColor;
  transform: rotate(45deg);
}
.terrain-subject:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: -6px; }

@media (max-width: 720px) {
  .terrain-range-head,
  .terrain-head,
  .terrain-detail { display: block; }
  .terrain-range-head .terrain-additional-toggle { margin-top: 8px; }
  .terrain-controls { justify-items: start; }
  .terrain-bands { justify-content: flex-start; }
  .terrain-stage { min-height: 350px; }
  .terrain-source { display: inline-block; margin-top: 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .terrain-point::before { transition: none; }
  .terrain-point,
  .notice-shell .comp-row,
  .notice-shell .scatter-dot,
  .terrain-bands button,
  .terrain-additional-toggle { transition: none; }
}

@media print {
  .terrain-lab { break-inside: avoid; }
  .terrain-stage { min-height: 0; overflow: visible; cursor: default; }
  .terrain-stage canvas,
  .terrain-points { display: none !important; }
  .terrain-print { display: block; width: 100%; height: auto; }
  .terrain-controls,
  .terrain-additional-toggle,
  .terrain-brush { display: none !important; }
  .terrain-point.is-terrain-out,
  .notice-shell .comp-row.is-terrain-out,
  .notice-shell .scatter-dot.is-terrain-out { opacity: 1 !important; pointer-events: auto; }
}

/* ---- comparables: tables ---- */
.notice-shell .comp-table-wrap { position: relative; margin-top: 14px; overflow: visible; border: 1px solid var(--ns-line); border-radius: 9px; }
.notice-shell .comp-table { width: 100%; min-width: 0; table-layout: fixed; border-collapse: collapse; font-size: 11px; }
.notice-shell .comp-table col.col-filed { width: 8%; }
.notice-shell .comp-table col.col-defendant { width: 20%; }
.notice-shell .comp-table col.col-category { width: 12%; }
.notice-shell .comp-table col.col-chemical { width: 10%; }
.notice-shell .comp-table col.col-firm { width: 14%; }
.notice-shell .comp-table col.col-outcome { width: 11%; }
.notice-shell .comp-table col.col-settlement { width: 10%; }
.notice-shell .comp-table col.col-citability { width: 8%; }
.notice-shell .comp-table col.col-feedback { width: 7%; }
.notice-shell .comp-table th, .notice-shell .comp-table td { padding: 7px 6px; border-bottom: 1px solid var(--ns-line); text-align: left; vertical-align: middle; }
.notice-shell .comp-table thead th { position: sticky; top: 0; z-index: 1; background: var(--ns-panel); color: #465a88; font-size: 9px; font-weight: 700; line-height: 1.15; letter-spacing: .04em; text-transform: uppercase; white-space: normal; }
.report-comp-sort-btn { border: 0; background: transparent; padding: 0; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }
.report-comp-sort-btn:focus-visible { outline: 2px solid #465a88; outline-offset: 2px; }
.report-comp-sort-arrow { opacity: 0; margin-left: 2px; color: #aab2c1; font-size: 8.5px; transition: opacity .12s ease-out; }
th:hover .report-comp-sort-arrow, th:focus-within .report-comp-sort-arrow, .report-comp-th-active .report-comp-sort-arrow { opacity: 1; }
.report-comp-table .report-metric > .report-caveat { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.notice-shell .comp-table .is-num { text-align: right; white-space: nowrap; }
.notice-shell .comp-table tbody tr:hover { background: var(--ns-panel); }
.notice-shell .comp-table tbody.is-capped tr:nth-child(n + 13) { display: none; }
.notice-shell .comp-table .defendant { font-weight: 700; color: var(--ns-ink); }
.notice-shell .notice-summary-link { color: inherit; text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; }
.notice-shell .notice-summary-link:hover { text-decoration-color: currentColor; }
.notice-shell .notice-summary-link:focus-visible { border-radius: 2px; outline: 2px solid #465a88; outline-offset: 2px; text-decoration-color: currentColor; }
.notice-shell .comp-table .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.notice-shell .comp-table [data-overflow-copy] { cursor: pointer; }
.notice-shell .outcome-chip { display: inline-flex; align-items: center; border: 1px solid #a9ceb9; border-radius: 999px; background: #eaf6ef; color: #286746; padding: 2px 7px; font-size: 11px; font-weight: 700; line-height: 1.2; white-space: nowrap; }
.notice-shell .outcome-chip.is-npr { min-width: 34px; justify-content: center; }
.notice-shell .report-comp-money { color: inherit; text-decoration: underline; text-decoration-color: var(--ns-faint); text-underline-offset: 2px; }
.notice-shell .report-comp-money:hover, .notice-shell .report-comp-money:focus-visible { text-decoration-color: currentColor; }
.notice-shell .comp-table .citability { position: relative; background: #f2f1ee; text-align: center; font-size: 12px; font-weight: 700; color: var(--ns-ink); cursor: pointer; }
.notice-shell .comp-table .citability:focus-visible { outline: 2px solid #465a88; outline-offset: -2px; }
.notice-shell .citability-tooltip { position: absolute; right: 50%; bottom: calc(100% + 8px); z-index: 8; display: none; width: 190px; box-sizing: border-box; border-radius: 7px; background: #20345d; color: #f9f8f4; padding: 10px 12px; font-size: 10.5px; font-weight: 400; line-height: 1.35; text-align: left; pointer-events: none; transform: translate(50%, 0); }
.notice-shell .citability:hover .citability-tooltip, .notice-shell .citability:focus .citability-tooltip, .notice-shell .citability:focus-within .citability-tooltip { display: block; }
.notice-shell .citability-tooltip-title { display: block; margin-bottom: 7px; color: #cbd5e8; font-size: 9px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.notice-shell .citability-tooltip-line { display: flex; justify-content: space-between; gap: 8px; margin: 2px 0; }
.notice-shell .citability-tooltip-total { display: flex; justify-content: space-between; gap: 8px; margin-top: 7px; padding-top: 7px; border-top: 1px solid rgba(249, 248, 244, .24); font-weight: 700; }
.notice-shell .comp-table .feedback { white-space: nowrap; text-align: center; }
.notice-shell .feedback-btn { width: 24px; height: 24px; margin: 0 1px; border: 1px solid #b9c5dc; border-radius: 5px; background: var(--ns-card); color: var(--ns-muted); font: inherit; font-size: 13px; line-height: 1; cursor: pointer; }
.notice-shell .feedback-btn:hover, .notice-shell .feedback-btn:focus-visible { border-color: #465a88; color: #465a88; }
.notice-shell .feedback-btn[data-comp-action="promote"] { border-color: #a9ceb9; color: #286746; }
.notice-shell .comp-row { cursor: pointer; }
.notice-shell .comp-row.is-highlighted { background: var(--ns-amber-bg); outline: 1px solid #d9b36c; outline-offset: -1px; }
.notice-shell .comp-row:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: 1px; }
.notice-shell .comp-row.delight-row-landed { animation: delight2-row-land 640ms cubic-bezier(.16, 1, .3, 1); }

@keyframes delight2-row-land {
  0% { background-color: rgba(232, 155, 46, .18); }
  100% { background-color: rgba(232, 155, 46, 0); }
}

@media (prefers-reduced-motion: reduce) {
  .notice-shell .scatter-stat { transition: none; }
  .notice-shell .comp-row.delight-row-landed { animation: none; }
}

/* ---- Delight 1.0: state-linked micro-motion (Ian-approved delight review,
   ported from deliverables/delight2-handoff prototype). Fast, state-linked
   cues that never delay or obscure the comparable data; all reduced-motion
   gated below. Scoped to .notice-shell so both the Active (/reports/) and
   Resolved (/reports/notice-summary/) destinations share it by default. ---- */
.notice-shell .btn, .plaintiff-firm-profile .btn,
.notice-shell .product-toggle,
.notice-shell .documents-toggle,
.notice-shell .info-tip,
.notice-shell .share-option,
.notice-shell .doc-type,
.notice-shell .doc-link-a u,
.notice-shell .acc-row .plus,
.notice-shell .acc-row > svg.ic.ph {
  transition:
    transform 180ms cubic-bezier(.25, 1, .5, 1),
    color 180ms cubic-bezier(.25, 1, .5, 1),
    fill 180ms cubic-bezier(.25, 1, .5, 1),
    border-color 180ms cubic-bezier(.25, 1, .5, 1),
    background-color 180ms cubic-bezier(.25, 1, .5, 1),
    text-decoration-color 180ms cubic-bezier(.25, 1, .5, 1),
    opacity 180ms cubic-bezier(.25, 1, .5, 1);
}
/* NB: .locked-message is deliberately excluded from the transition above --
   its reveal is an instant visibility gate (asserted by test_notice_page_shell
   test_accordion_rows_toggle_and_locked_rows_never_expand); a fade would make
   the gate sample mid-animation. */
.notice-shell .share-action { position: relative; }
.notice-shell .share-action svg { transform-origin: 44% 55%; transition: transform 180ms cubic-bezier(.25, 1, .5, 1); }
.notice-shell .doc-link-a u { text-decoration-thickness: 1px; }
.notice-shell .acc.is-open > .acc-row > svg.ic.ph { color: var(--ns-blue-tx); fill: currentColor; }
.notice-shell .follow.delight-just-followed .follow-check { animation: delight-check-settle 240ms cubic-bezier(.16, 1, .3, 1); }
.notice-shell .acc.delight-just-toggled > .acc-row .plus { animation: delight-control-settle 220ms cubic-bezier(.16, 1, .3, 1); }
.notice-shell .acc.delight-just-opened > .acc-panel { animation: delight-panel-reveal 220ms cubic-bezier(.16, 1, .3, 1); }
.notice-shell .notice-toast.is-visible { animation: delight-toast-arrive 240ms cubic-bezier(.16, 1, .3, 1); }
.notice-shell .share-action.delight-copied svg { animation: delight-share-confirm 360ms cubic-bezier(.16, 1, .3, 1); }
.notice-shell .share-action.delight-copied::after {
  position: absolute; top: -2px; right: -3px; display: grid; width: 14px; height: 14px; place-items: center;
  border: 1px solid #d9b36c; border-radius: 50%; background: var(--ns-card); color: var(--ns-amber-tx);
  content: "\2713"; font-size: 9px; font-weight: 700; line-height: 1;
  animation: delight-confirm-arrive 420ms cubic-bezier(.16, 1, .3, 1); pointer-events: none;
}

@media (hover: hover) {
  .notice-shell .btn:not(:disabled):hover, .plaintiff-firm-profile .btn:not(:disabled):hover,
  .notice-shell .documents-toggle:hover,
  .notice-shell .share-option:not(:disabled):hover { transform: translateY(-1px); }
  .notice-shell .btn:not(:disabled):active, .plaintiff-firm-profile .btn:not(:disabled):active,
  .notice-shell .documents-toggle:active,
  .notice-shell .share-option:not(:disabled):active { transform: translateY(1px); }
  .notice-shell .share-action:hover svg { transform: rotate(-7deg); }
  .notice-shell .doc-link:hover .doc-type,
  .notice-shell .doc-link:focus-within .doc-type { transform: translateX(2px); }
  .notice-shell .doc-link:hover .doc-link-a u,
  .notice-shell .doc-link:focus-within .doc-link-a u { text-decoration-color: currentColor; text-decoration-thickness: 2px; }
  .notice-shell .acc:not(.is-open):not(.is-locked) > .acc-row:hover .plus { color: var(--ns-ink); transform: rotate(90deg); }
  .notice-shell .info-tip:hover { transform: translateY(-1px); }
}

@keyframes delight-check-settle {
  0% { opacity: 0; transform: scale(.55) rotate(-16deg); }
  100% { opacity: 1; transform: scale(1) rotate(0); }
}
@keyframes delight-control-settle {
  0% { transform: rotate(-45deg); }
  100% { transform: rotate(0); }
}
@keyframes delight-panel-reveal {
  0% { opacity: 0; transform: translateY(-3px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes delight-toast-arrive {
  0% { opacity: 0; transform: translateY(5px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes delight-share-confirm {
  0% { transform: rotate(0); }
  45% { transform: rotate(-9deg) translateY(-1px); }
  100% { transform: rotate(0); }
}
@keyframes delight-confirm-arrive {
  0% { opacity: 0; transform: scale(.6); }
  55% { opacity: 1; transform: scale(1.08); }
  100% { opacity: 1; transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .notice-shell .btn, .plaintiff-firm-profile .btn,
  .notice-shell .product-toggle,
  .notice-shell .documents-toggle,
  .notice-shell .info-tip,
  .notice-shell .share-option,
  .notice-shell .doc-type,
  .notice-shell .doc-link-a u,
  .notice-shell .acc-row .plus,
  .notice-shell .acc-row > svg.ic.ph,
  .notice-shell .share-action svg { transition: none; }
  .notice-shell .follow.delight-just-followed .follow-check,
  .notice-shell .acc.delight-just-toggled > .acc-row .plus,
  .notice-shell .acc.delight-just-opened > .acc-panel,
  .notice-shell .notice-toast.is-visible,
  .notice-shell .share-action.delight-copied svg,
  .notice-shell .share-action.delight-copied::after { animation: none; }
}

.notice-shell .comp-toggle { display: flex; width: max-content; margin: 10px auto; }
.notice-shell .comp-toggle[hidden] { display: none; }
.notice-shell .primary-comps { margin-top: 12px; overflow: visible; border: 1px solid var(--ns-line); border-radius: 9px; background: var(--ns-card); }
.notice-shell .primary-comps-head { display: flex; align-items: center; gap: 10px; padding: 10px 12px; color: var(--ns-ink); font-size: 12.5px; font-weight: 600; }
.notice-shell .primary-comps .comp-table-wrap { margin: 0; border-width: 1px 0 0; border-radius: 0; }
.notice-shell .additional-comps { margin-top: 12px; overflow: hidden; border: 1px solid var(--ns-line); border-radius: 9px; background: var(--ns-card); }
.notice-shell .additional-comps[open] { overflow: visible; }
.notice-shell .additional-comps summary { display: flex; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; list-style: none; color: var(--ns-ink); font-size: 12.5px; font-weight: 600; user-select: none; }
.notice-shell .additional-comps summary::-webkit-details-marker { display: none; }
.notice-shell .additional-comps summary:hover { background: var(--ns-panel); }
.notice-shell .additional-comps summary:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: -2px; }
.notice-shell .additional-comps summary::after { content: "+"; margin-left: auto; color: var(--ns-muted); font-size: 15px; font-weight: 400; }
.notice-shell .additional-comps[open] summary::after { content: "−"; }
.notice-shell .additional-count { color: var(--ns-muted); font-size: 10.5px; font-weight: 400; }
.notice-shell .additional-comps-copy { margin: 0; padding: 0 12px 10px; color: var(--ns-muted); font-size: 10.5px; line-height: 1.4; }
.notice-shell .additional-comps .comp-table-wrap { margin: 0; border-width: 1px 0 0; border-radius: 0; }
.notice-shell .comparable-basis { margin-top: 10px; overflow: hidden; border: 1px solid var(--ns-line); border-radius: 9px; background: var(--ns-card); }
.notice-shell .comparable-basis[open] { overflow: visible; }
.notice-shell .comparable-basis summary { display: flex; min-height: 44px; align-items: center; gap: 8px; padding: 8px 12px; cursor: pointer; list-style: none; color: var(--ns-ink); font-size: 11.5px; font-weight: 600; }
.notice-shell .comparable-basis summary::-webkit-details-marker { display: none; }
.notice-shell .comparable-basis summary:hover { background: var(--ns-panel); }
.notice-shell .comparable-basis summary:focus-visible { outline: 2px solid var(--ns-ink); outline-offset: -2px; }
.notice-shell .comparable-basis-action { margin-left: auto; color: var(--ns-navy); font-size: 10.5px; white-space: nowrap; }
.notice-shell .comparable-basis-copy { margin: 0; padding: 0 12px 10px; color: var(--ns-muted); font-size: 10.5px; line-height: 1.4; }
.notice-shell .comparable-basis .comp-table-wrap { margin: 0; border-width: 1px 0 0; border-radius: 0; }

/* ---- ask-us bubble + popover + tooltips ---- */
/* Ask Us always on top (was 60, under .acc's 61) */
.notice-shell .askus, .plaintiff-firm-profile .askus { position: fixed; right: max(20px, env(safe-area-inset-right)); bottom: max(20px, env(safe-area-inset-bottom)); z-index: 80; display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--ns-ink); border-radius: 999px; background: var(--ns-ink); color: #fff; padding: 7px 10px 7px 14px; font: inherit; font-size: 12.5px; cursor: pointer; box-shadow: 0 8px 22px rgba(44, 44, 42, .18); }
.notice-shell .ask-label, .plaintiff-firm-profile .ask-label { display: inline-block; transition: opacity .3s ease-out; }
.notice-shell .ask-label.is-fading, .plaintiff-firm-profile .ask-label.is-fading { opacity: 0; }
.notice-shell .ask-pop[hidden], .plaintiff-firm-profile .ask-pop[hidden] { display: none; }
.notice-shell .ask-pop, .plaintiff-firm-profile .ask-pop { position: fixed; right: max(20px, env(safe-area-inset-right)); bottom: max(64px, calc(env(safe-area-inset-bottom) + 64px)); z-index: 61; width: min(380px, calc(100vw - 40px)); border: 1px solid var(--ns-faint); border-radius: 10px; background: var(--ns-card); padding: 12px 14px; box-shadow: 0 8px 24px rgba(44, 44, 42, .16); }
.notice-shell .ask-pop h4, .plaintiff-firm-profile .ask-pop h4 { margin: 0 0 8px; font-size: 13.5px; }
.notice-shell .ask-pop-head, .plaintiff-firm-profile .ask-pop-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.notice-shell .ask-pop-head .ai-marks, .plaintiff-firm-profile .ask-pop-head .ai-marks { margin-left: auto; }
.notice-shell .ai-marks, .plaintiff-firm-profile .ai-marks { position: relative; display: inline-flex; align-items: center; gap: 4px; color: var(--ns-muted); }
.notice-shell .ai-mark, .plaintiff-firm-profile .ai-mark { display: inline-flex; width: 18px; height: 18px; align-items: center; justify-content: center; border: 0; background: transparent; opacity: .72; }
.notice-shell .ai-mark img, .plaintiff-firm-profile .ai-mark img { display: block; width: 14px; height: 14px; object-fit: contain; }
.notice-shell .askus .ai-mark img, .plaintiff-firm-profile .askus .ai-mark img { filter: grayscale(1) brightness(0) invert(72%); }
.notice-shell .ask-pop .ai-mark, .plaintiff-firm-profile .ask-pop .ai-mark { opacity: 1; }
.notice-shell .ask-input, .plaintiff-firm-profile .ask-input { display: block; width: 100%; min-height: 86px; box-sizing: border-box; overflow: hidden; resize: none; border: 1px solid var(--ns-faint); border-radius: 8px; background: var(--ns-card); padding: 9px 10px; font: inherit; font-size: 12.5px; line-height: 1.4; color: var(--ns-ink); margin-bottom: 8px; }
.notice-shell .ask-input::placeholder, .plaintiff-firm-profile .ask-input::placeholder { color: var(--ns-muted); opacity: 1; }
.notice-shell .ask-pop-send, .plaintiff-firm-profile .ask-pop-send { display: flex; align-items: center; gap: 10px; }
.notice-shell .ask-pop-send .btn, .plaintiff-firm-profile .ask-pop-send .btn { flex: 0 0 auto; }
.notice-shell .ask-confirm, .plaintiff-firm-profile .ask-confirm { flex: 1; min-width: 0; margin: 0; }
.notice-shell .foot { padding: 9px 24px 11px; border-top: 1px solid var(--ns-line); color: var(--ns-muted); font-size: 11.5px; }
.notice-shell [data-tooltip], .plaintiff-firm-profile [data-tooltip] { position: relative; }
.notice-shell [data-tooltip]::after, .plaintiff-firm-profile [data-tooltip]::after { content: attr(data-tooltip); position: absolute; left: 0; right: auto; bottom: calc(100% + 8px); z-index: 80; width: min(238px, calc(100vw - 40px)); box-sizing: border-box; border: 1px solid var(--ns-line); border-radius: 7px; background: var(--ns-ink); color: var(--ns-card); padding: 8px 9px; font-size: 10.5px; font-weight: 400; line-height: 1.35; text-align: left; text-transform: none; letter-spacing: 0; opacity: 0; pointer-events: none; transform: translateY(3px); transition: opacity .12s ease-out, transform .12s ease-out; white-space: normal; }
.notice-shell [data-tooltip]:hover::after, .notice-shell [data-tooltip]:focus-visible::after, .plaintiff-firm-profile [data-tooltip]:hover::after, .plaintiff-firm-profile [data-tooltip]:focus-visible::after { opacity: 1; transform: translateY(0); }
.notice-shell .table-cell-tooltip { position: fixed; z-index: 90; width: max-content; max-width: min(340px, calc(100vw - 24px)); box-sizing: border-box; border: 1px solid var(--ns-line); border-radius: 6px; background: var(--ns-ink); color: var(--ns-card); padding: 6px 8px; font-size: 11px; font-weight: 400; line-height: 1.35; text-align: left; white-space: normal; pointer-events: none; }
.notice-shell .table-cell-tooltip[hidden] { display: none; }
.notice-shell .tooltip-from-right[data-tooltip]::after, .plaintiff-firm-profile .tooltip-from-right[data-tooltip]::after { left: auto; right: 0; }
.notice-shell .profile-info.tooltip-from-right[data-tooltip] { position: static; }
.plaintiff-firm-profile .profile-info.tooltip-from-right[data-tooltip] { position: static; }
.notice-shell .profile-link[data-tooltip]::after { right: auto; left: 50%; width: max-content; max-width: 220px; white-space: nowrap; transform: translate(-50%, 3px); }
.notice-shell .profile-link[data-tooltip]:hover::after, .notice-shell .profile-link[data-tooltip]:focus-visible::after { transform: translate(-50%, 0); }
.notice-shell .info-tip[data-tooltip]::after { right: auto; left: 50%; transform: translate(-50%, 3px); }
.notice-shell .info-tip[data-tooltip]:hover::after, .notice-shell .info-tip[data-tooltip]:focus-visible::after { transform: translate(-50%, 0); }
.notice-shell .status-card { position: relative; }
.notice-shell .status-card .allocated-share-tooltip-boundary .info-tip[data-tooltip]::after { content: none; }
.notice-shell .status-card .allocated-share-tooltip-panel { position: absolute; top: 12px; right: 12px; bottom: auto; left: 12px; z-index: 80; width: auto; box-sizing: border-box; border: 1px solid var(--ns-line); border-radius: 7px; background: var(--ns-ink); color: var(--ns-card); padding: 8px 9px; font-size: 10.5px; font-weight: 400; line-height: 1.35; text-align: left; opacity: 0; pointer-events: none; transform: translateY(3px); transition: opacity .12s ease-out, transform .12s ease-out; white-space: normal; }
.notice-shell .status-card .allocated-share-tooltip-boundary:hover .allocated-share-tooltip-panel, .notice-shell .status-card .allocated-share-tooltip-boundary:focus-within .allocated-share-tooltip-panel { opacity: 1; transform: translateY(0); }

/* ---- intentional placeholder for not-yet-launched entity profiles ---- */
.profile-under-development { width: min(680px, 100%); margin: 28px auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); padding: 28px; }
.profile-under-development h1 { margin: 4px 0 10px; font-size: clamp(24px, 4vw, 36px); line-height: 1.15; }
.profile-under-development p:not(.report-kicker) { max-width: 58ch; margin-bottom: 20px; color: var(--muted); }

/* ---- responsive ---- */
@media (max-width: 560px) {
  .notice-shell .head { flex-direction: column; }
  .notice-shell .notice-context-bar, .plaintiff-firm-profile .notice-context-bar { gap: 6px; padding: 5px 12px; font-size: 10px; }
  .notice-shell .notice-context-ag, .plaintiff-firm-profile .notice-context-ag { font-size: 9px; }
  .notice-shell .timeline { padding-top: 0; text-align: left; }
  .notice-shell .cards { flex-direction: column; }
  .notice-shell .acc-row { flex-wrap: wrap; }
  .notice-shell .acc-row:has(.assessment-pill) { display: grid; grid-template-columns: 15px minmax(0, 1fr) 16px 16px; }
  .notice-shell .acc-row:has(.assessment-pill) > .ic { grid-column: 1; grid-row: 1; }
  .notice-shell .acc-row:has(.assessment-pill) > .grow { grid-column: 2; grid-row: 1; }
  .notice-shell .acc-row:has(.assessment-pill) > .lock-indicator { grid-column: 3; grid-row: 1; }
  .notice-shell .acc-row:has(.assessment-pill) > .plus { grid-column: 4; grid-row: 1; }
  .notice-shell .acc-row:has(.assessment-pill) > .assessment-pill { grid-column: 2 / 5; grid-row: 2; justify-self: start; }
  .notice-shell .comp-table-wrap, .notice-shell .defense-table-wrap { overflow-x: auto; overflow-y: hidden; }
  .notice-shell .comp-table, .notice-shell .additional-comps .comp-table { min-width: 720px; }
  .notice-shell .defense-table { min-width: 620px; }
  .notice-shell .strategy-notice { grid-template-columns: 20px minmax(0, 1fr); gap: 7px; padding: 10px; }
  .notice-shell .strategy-path { grid-template-columns: 24px minmax(0, 1fr); gap: 7px; padding: 10px; }
  .notice-shell .strategy-number { font-size: 15px; }
  .notice-shell .recommended-item { grid-template-columns: 20px minmax(0, 1fr); gap: 7px; padding: 10px; }
  .notice-shell .recommended-when { grid-column: 2; text-align: left; }
  .notice-shell .case-summary-row { grid-template-columns: 1fr; gap: 3px; }
}

@media (max-width: 620px) {
  .notice-shell .profile-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .notice-shell .profile-info.tooltip-from-right[data-tooltip]::after { left: 0; right: auto; }
  .plaintiff-firm-profile .profile-info.tooltip-from-right[data-tooltip]::after { left: 0; right: auto; }
  .notice-shell .profile-viz { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  .notice-shell .askus, .plaintiff-firm-profile .askus { width: 52px; height: 40px; box-sizing: border-box; justify-content: center; gap: 0; padding: 0; }
  .notice-shell .askus .ask-label, .plaintiff-firm-profile .askus .ask-label { display: none; }
  .notice-shell .askus .ai-marks, .plaintiff-firm-profile .askus .ai-marks { gap: 3px; }
}

@media (prefers-reduced-motion: reduce) {
  .notice-shell .ask-label, .plaintiff-firm-profile .ask-label { transition: none; }
  .notice-shell .notice-context-bar, .plaintiff-firm-profile .notice-context-bar { transition: none; }
}

/* ---- card elevation: scoped exception to the Hairline-Over-Shadow Rule,
   approved by Ian 2026-07-20 for the notice report's own card surfaces only
   (DESIGN.md §4). Hairline borders are unchanged; the shadow is additive. ---- */
.notice-shell,
.notice-shell .card-box,
.notice-shell .acc {
  box-shadow:
    0 1px 2px rgba(44, 40, 28, .05),
    0 6px 16px rgba(44, 40, 28, .06);
}
.plaintiff-firm-profile .pf-card {
  box-shadow:
    0 1px 2px rgba(44, 40, 28, .05),
    0 6px 16px rgba(44, 40, 28, .06);
}

/* ---- print: full evidence regardless of on-screen accordion state ---- */
@media print {
  .notice-shell { border: 0; }
  .notice-shell,
  .notice-shell .card-box,
  .notice-shell .acc { box-shadow: none; }
  .plaintiff-firm-profile .pf-card { box-shadow: none; }
  .notice-shell .acc[data-acc-open="false"] > .acc-panel { display: block; }
  .notice-shell .acc.is-locked { display: none; }
  .notice-shell .plus,
  .notice-shell .lock-indicator,
  .notice-shell .actions,
  .notice-shell .askus, .plaintiff-firm-profile .askus,
  .notice-shell .ask-pop, .plaintiff-firm-profile .ask-pop,
  .notice-shell .notice-context-bar, .plaintiff-firm-profile .notice-context-bar,
  .notice-shell .table-cell-tooltip,
  .notice-shell .export-dialog-backdrop,
  .notice-shell .allocated-share-tooltip-panel,
  .notice-shell .comp-toggle,
  .notice-shell .feedback-btn,
  .notice-shell .comp-table .feedback,
  .notice-shell .profile-toggles { display: none !important; }
  .notice-shell .notice-toast,
  .notice-shell .product-toggle,
  .notice-shell .documents-toggle,
  .notice-shell .info-tip { display: none !important; }
  .notice-shell [data-document-overflow][hidden] { display: flex !important; }
  .notice-shell .product-value { overflow: visible; text-overflow: clip; white-space: normal; }
  .notice-shell .info-tip-wrap { display: inline; margin-left: 0; }
  .notice-shell .info-tip-print { position: static !important; display: block; width: auto; height: auto; margin: 4px 0 0; overflow: visible; clip: auto; white-space: normal; color: var(--ns-muted); font-size: 10.5px; line-height: 1.45; }
  .notice-shell .comp-table tbody.is-capped tr:nth-child(n + 13) { display: table-row; }
  .notice-shell .additional-comps { overflow: visible; }
  .notice-shell .additional-comps:not([open]) > *:not(summary) { display: block; }
  .notice-shell .additional-comps summary::after { content: ""; }
  .notice-shell .comparable-basis { overflow: visible; }
  .notice-shell .comparable-basis:not([open]) > *:not(summary) { display: block; }
  .notice-shell .comparable-basis-action { display: none; }
  .notice-print-extras { display: block; padding: 12px 24px; }
  .notice-shell .doc-link-a::after { content: " (" attr(href) ")"; font-size: 9px; color: var(--ns-muted); word-break: break-all; }
  .notice-shell .dot-tip, .notice-shell .citability-tooltip { display: none !important; }
  .notice-shell [data-tooltip]::after, .plaintiff-firm-profile [data-tooltip]::after { display: none !important; }
  .notice-shell .outcome-chip.is-npr::after { display: inline !important; content: " (No public resolution)"; }
}

/* ---- Shared contextual-actions + follow-panel styles ----
   Used by the entity-profile action surfaces (entity-profile-actions.js,
   contextual-actions.js), which load this stylesheet. The locked notice
   pages render their own action row and do not use these classes. */

.contextual-actions-overflow {
  position: relative;
}

.contextual-actions-overflow > summary {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  cursor: pointer;
  list-style: none;
}

.contextual-actions-overflow > summary::-webkit-details-marker {
  display: none;
}

.contextual-actions-overflow-menu {
  position: absolute;
  z-index: 5;
  top: calc(100% + 6px);
  right: 0;
  display: grid;
  width: max-content;
  max-width: min(240px, calc(100vw - 32px));
  gap: 6px;
  padding: 8px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  background: var(--paper);
}

.contextual-actions-overflow-menu .report-button {
  width: 100%;
  justify-content: flex-start;
}

.report-profile-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.report-follow-panel {
  max-width: 760px;
  margin-top: 12px;
  padding: 16px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  background: var(--bone);
  overflow-wrap: anywhere;
}

.report-follow-panel[hidden] {
  display: none;
}

.report-follow-panel .report-button {
  min-height: 44px;
}

.report-follow-disclosure {
  margin: 0 0 16px;
  color: var(--slate);
  font-size: 13px;
  line-height: 1.5;
}

.report-follow-panel fieldset {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 12px;
  min-width: 0;
  margin: 0 0 14px;
  padding: 0;
  border: 0;
}

.report-follow-panel legend,
.report-follow-field > span {
  display: block;
  width: 100%;
  margin-bottom: 6px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
}

.report-follow-panel legend {
  padding: 0;
}

.report-follow-choice {
  display: flex;
  min-height: 44px;
  align-items: center;
  gap: 10px;
  padding: 7px 8px;
  border-radius: 4px;
  color: var(--ink);
  cursor: pointer;
  font-size: 13px;
}

.report-follow-choice:hover {
  background: var(--paper);
}

.report-follow-choice input {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
  accent-color: var(--navy);
}

.report-follow-field {
  display: block;
  margin-top: 12px;
}

.report-follow-field select,
.report-follow-field textarea {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line-strong);
  border-radius: 4px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}

.report-follow-field textarea {
  min-height: 88px;
  resize: vertical;
}

.report-follow-optional {
  color: var(--quiet);
  font-weight: 500;
}

.report-follow-status {
  min-height: 20px;
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 12px;
}

.report-follow-status[data-state="success"] {
  color: var(--success);
}

.report-follow-status[data-state="error"] {
  color: var(--warning);
}

.report-follow-panel .report-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

@media (max-width: 760px) {
  .report-follow-panel fieldset {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media print {
  .report-action-strip,
  .report-follow-panel,
  .contextual-actions-overflow {
    display: none !important;
  }
}

/* "VOIDED BY AG" chip — Spec 08 Option B (settlement-view surfaces). Same
   structure/tokens as the Search chip in beta-brand.css (enforcement-brick:
   text #8a3826 / wash #f3e3dd / border #a85440): a compact mono kicker that
   expands to the AG's grounds + a link to the letter (trace-back — never the
   label alone). Rendered only for AG-voided settlements; empty on current
   pilot data. beta-brand.css also carries these rules; this copy keeps the
   chip styled on the surface-owned stylesheet. */
.voided-by-ag-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  margin-left: 8px;
  vertical-align: baseline;
}

.voided-by-ag-chip-toggle {
  display: inline-block;
  margin: 0;
  padding: 2px 8px;
  border: 1px solid #a85440;
  border-radius: 4px;
  background: #f3e3dd;
  color: #8a3826;
  font-family: "Schibsted Grotesk", system-ui, sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.4;
  cursor: pointer;
}

.voided-by-ag-chip-toggle:hover {
  background: #efd9d1;
}

.voided-by-ag-chip-toggle:focus-visible {
  outline: 2px solid #8a3826;
  outline-offset: 2px;
}

.voided-by-ag-chip-detail {
  display: block;
  max-width: 46ch;
  color: #333333;
  font-family: "Schibsted Grotesk", system-ui, sans-serif;
  font-size: 12px;
  line-height: 1.45;
}

.voided-by-ag-chip-link {
  display: inline-block;
  margin-top: 4px;
  color: #8a3826;
  font-weight: 600;
  text-decoration: underline;
}
