/* Sniffer Scan — austere, dense, in the AMLBot design system (tokens from amlbot-design-system). */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 800; font-display: swap; src: url("fonts/inter-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 800; font-display: swap; src: url("fonts/inter-latin-ext.woff2") format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/plex-mono-400-latin.woff2") format('woff2'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/plex-mono-500-latin.woff2") format('woff2'); }

:root {
  --amlb-blue-500: #0057FF; --amlb-blue-600: #0042A5; --amlb-blue-200: #B8CFFF; --amlb-blue-active-bg: #E9F3FF;
  --amlb-navy-800: #060663; --amlb-navy-500: #14286E; --amlb-violet-500: #9A3FD5; --amlb-violet-700: #300060;
  --amlb-ink-900: #000; --amlb-ink-700: #272770; --amlb-ink-500: #4E677D; --amlb-ink-400: #77869E; --amlb-ink-100: #C6D0E0;
  --amlb-ui-body-text: #637381; --amlb-ui-ink-hard: #141822; --amlb-ui-stroke: #E5E8EC; --amlb-ui-stroke-soft: #F0F3F6;
  --amlb-ui-surface-card: #F4F6F8; --amlb-gray-050: #F7FAFE; --amlb-white: #fff;
  --amlb-risk-safe: #00AD50; --amlb-risk-medium: #B07F00; --amlb-risk-risky: #ED274B;
  --amlb-risk-low-bg: rgba(0,173,80,.08); --amlb-risk-medium-bg: rgba(255,184,0,.12); --amlb-risk-high-bg: rgba(237,39,75,.06);
  --amlb-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --amlb-font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --amlb-radius-sm: 6px; --amlb-radius-md: 10px; --amlb-radius-card: 12px; --amlb-radius-pill-sm: 15px; --amlb-radius-pill: 999px;
  --amlb-shadow-sm: 0 2px 8px rgba(10,20,40,.06), 0 1px 2px rgba(10,20,40,.04);
  --focus: 0 0 0 3px rgba(200,59,208,.15);
  --page: 1120px;
}
* { box-sizing: border-box; }
html { color-scheme: light; }
body { margin: 0; font-family: var(--amlb-font-sans); font-size: 14px; line-height: 1.5; color: var(--amlb-ui-ink-hard); background: var(--amlb-white); }
a { color: var(--amlb-blue-600); text-decoration: underline; text-decoration-color: var(--amlb-blue-200); text-underline-offset: 3px; }
a:hover { color: var(--amlb-blue-500); }
:focus-visible { outline: 2px solid var(--amlb-violet-500); outline-offset: 2px; box-shadow: var(--focus); }
.skip { position: absolute; left: -999px; top: 8px; background: var(--amlb-navy-800); color: #fff; padding: 8px 12px; border-radius: var(--amlb-radius-sm); z-index: 10; }
.skip:focus { left: 8px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Header: every page the same */
.hdr { border-bottom: 1px solid var(--amlb-ui-stroke); background: var(--amlb-white); }
.hdr .in { max-width: var(--page); margin: 0 auto; padding: 10px 16px; display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--amlb-ink-900); }
.nav { display: flex; gap: 16px; margin-left: auto; font-size: 13px; }
.nav a { color: var(--amlb-ink-500); text-decoration: none; }
.nav a[aria-current="page"] { color: var(--amlb-ink-900); font-weight: 600; }
.hdr form { display: flex; flex: 1 1 320px; max-width: 560px; }
.hdr input { flex: 1; font: 13px var(--amlb-font-mono); padding: 8px 10px; border: 1px solid rgba(10,20,40,.16); border-radius: var(--amlb-radius-md) 0 0 var(--amlb-radius-md); min-width: 0; }
.hdr button, .btn { font: 500 13px var(--amlb-font-sans); padding: 8px 14px; border: 1px solid var(--amlb-navy-800); background: var(--amlb-navy-800); color: #fff; border-radius: 0 var(--amlb-radius-md) var(--amlb-radius-md) 0; cursor: pointer; }
.hdr button:hover, .btn:hover { background: var(--amlb-navy-500); }
.btn { border-radius: var(--amlb-radius-md); }
.btn.sec { background: var(--amlb-white); color: var(--amlb-blue-600); border-color: var(--amlb-blue-200); }

main { max-width: var(--page); margin: 0 auto; padding: 20px 16px 48px; }
h1 { font-size: 22px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; margin: 0 0 4px; }
h2 { font-size: 15px; font-weight: 600; letter-spacing: -.01em; margin: 0; }
h3 { font-size: 13px; font-weight: 600; margin: 0 0 6px; }
.lede { color: var(--amlb-ui-body-text); margin: 0 0 20px; max-width: 760px; }
p { margin: 0 0 10px; }
.muted { color: var(--amlb-ink-400); }
td.na, td.na * { color: var(--amlb-ink-400); font-weight: 400; font-family: var(--amlb-font-sans); text-decoration: none; }
.mono { font-family: var(--amlb-font-mono); font-size: 13px; }
.cap { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--amlb-ink-400); }
.addr { font-family: var(--amlb-font-mono); font-size: 13px; white-space: nowrap; }
.addr.full { white-space: normal; word-break: break-all; }
.num { font-variant-numeric: tabular-nums; text-align: right; }
.full { word-break: break-all; }

/* Home search */
.search { background: var(--amlb-gray-050); border: 1px solid var(--amlb-ui-stroke); border-radius: var(--amlb-radius-card); padding: 20px; margin: 0 0 20px; }
.search form { display: flex; max-width: 760px; }
.search input { flex: 1; font: 14px var(--amlb-font-mono); padding: 11px 12px; border: 1px solid rgba(10,20,40,.16); border-radius: var(--amlb-radius-md) 0 0 var(--amlb-radius-md); min-width: 0; }
.search button { font: 500 14px var(--amlb-font-sans); padding: 11px 18px; border: 1px solid var(--amlb-navy-800); background: var(--amlb-navy-800); color: #fff; border-radius: 0 var(--amlb-radius-md) var(--amlb-radius-md) 0; cursor: pointer; }
.search .hint { margin: 8px 0 0; font-size: 12px; color: var(--amlb-ink-400); }
.search .result { margin: 10px 0 0; font-size: 13px; }

/* Figures */
.figs { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1px; background: var(--amlb-ui-stroke); border: 1px solid var(--amlb-ui-stroke); border-radius: var(--amlb-radius-card); overflow: hidden; margin: 0 0 20px; }
.fig { background: #fff; padding: 12px 14px; display: block; position: relative; color: inherit; text-decoration: none; }
a.fig:hover { background: var(--amlb-gray-050); }
a.fig:hover .k { color: var(--amlb-blue-600); text-decoration: underline; text-decoration-color: var(--amlb-blue-200); text-underline-offset: 3px; }
.fig .v { display: block; font-size: 22px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.fig .k { display: block; font-size: 12px; color: var(--amlb-ink-400); margin-top: 2px; }
.fig .s { display: block; font-size: 12px; color: var(--amlb-ui-body-text); margin-top: 4px; }
.fig .go { position: absolute; right: 12px; top: 10px; color: var(--amlb-ink-100); font-size: 14px; }
a.fig:hover .go { color: var(--amlb-blue-500); }
.pager { display: flex; gap: 16px; align-items: center; padding: 10px 14px; font-size: 13px; color: var(--amlb-ink-400); border-top: 1px solid var(--amlb-ui-stroke); }

/* Panels + tables */
.cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 860px) { .cols { grid-template-columns: 1fr; } }
.panel { border: 1px solid var(--amlb-ui-stroke); border-radius: var(--amlb-radius-card); overflow: hidden; margin: 0 0 20px; background: #fff; }
.panel > .ph { display: flex; align-items: baseline; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--amlb-ui-stroke); background: var(--amlb-gray-050); }
.panel > .ph .r { margin-left: auto; font-size: 12px; color: var(--amlb-ink-400); }
.tw { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
caption { text-align: left; padding: 8px 14px; font-weight: 600; }
th, td { padding: 7px 10px; border-bottom: 1px solid var(--amlb-ui-stroke-soft); vertical-align: top; text-align: left; }
th { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--amlb-ink-400); white-space: nowrap; background: #fff; }
tbody tr:hover { background: var(--amlb-gray-050); }
td.num, th.num { text-align: right; white-space: nowrap; }
td.t { white-space: nowrap; font-variant-numeric: tabular-nums; width: 1%; }
td.t time { display: inline-flex; flex-direction: column; line-height: 1.2; }
td.t time .h { font-size: 12px; color: var(--amlb-ink-400); }
.empty { padding: 14px; color: var(--amlb-ink-400); }

/* Pills: risk colours mean risk and nothing else */
.pill { display: inline-block; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: var(--amlb-radius-pill-sm); white-space: nowrap; }
.pill.bad { color: var(--amlb-risk-risky); background: var(--amlb-risk-high-bg); }
.pill.ok { color: var(--amlb-risk-safe); background: var(--amlb-risk-low-bg); }
.pill.warn { color: var(--amlb-risk-medium); background: var(--amlb-risk-medium-bg); }
.pill.neutral { color: var(--amlb-ink-700); background: var(--amlb-ui-surface-card); }
.tag { display: inline-block; font-size: 11px; font-weight: 600; padding: 1px 6px; border-radius: var(--amlb-radius-sm); background: var(--amlb-blue-active-bg); color: var(--amlb-blue-600); text-transform: uppercase; letter-spacing: .04em; }
.late { color: var(--amlb-risk-risky); font-weight: 600; }
.lead-ok { color: var(--amlb-risk-safe); }

/* Verdict block */
.verdict { border: 1px solid var(--amlb-ui-stroke); border-left: 4px solid var(--amlb-ink-100); border-radius: var(--amlb-radius-card); padding: 14px 16px; margin: 0 0 20px; }
.verdict.bad { border-left-color: var(--amlb-risk-risky); }
.verdict.warn { border-left-color: var(--amlb-risk-medium); }
.verdict.ok { border-left-color: var(--amlb-risk-safe); }
.verdict .v { font-size: 18px; font-weight: 700; letter-spacing: -.01em; }
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 8px 0 0; font-size: 13px; }
.kv dt { color: var(--amlb-ink-400); }
.kv dd { margin: 0; }

/* Path */
.path { list-style: none; margin: 0; padding: 0; }
.path li { display: grid; grid-template-columns: 56px 1fr; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--amlb-ui-stroke-soft); }
.path .hop { font-family: var(--amlb-font-mono); color: var(--amlb-violet-500); font-weight: 500; }
.path .row { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; }
.path .here { background: var(--amlb-blue-active-bg); }

/* Graph */
.graph { padding: 10px 14px; }
.graph svg { width: 100%; height: auto; display: block; font-family: var(--amlb-font-mono); font-size: 11px; }
.graph .node a { cursor: pointer; }
.graph .node circle { fill: var(--amlb-risk-risky); stroke: #fff; stroke-width: 1.5; }
.graph .node.seed circle { fill: var(--amlb-navy-800); }
.graph .node.service circle { fill: var(--amlb-blue-500); }
.graph .node.withdrawn circle { fill: #fff; stroke: var(--amlb-ink-400); stroke-dasharray: 2 2; }
.graph .node.future { opacity: .18; }
.graph .edge { fill: none; stroke: var(--amlb-ink-100); stroke-width: 1.2; }
.graph .edge.future { opacity: .15; }
.graph .edge.late { stroke: var(--amlb-risk-risky); }
.graph text { fill: var(--amlb-ink-500); }
.graph .lbl { fill: var(--amlb-ink-400); font-family: var(--amlb-font-sans); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; }
.replay { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 8px 14px 4px; font-size: 13px; }
.replay input[type=range] { flex: 1 1 240px; accent-color: var(--amlb-blue-500); }
.replay output { font-family: var(--amlb-font-mono); font-size: 12px; min-width: 160px; }
.legend { display: flex; gap: 14px; flex-wrap: wrap; padding: 4px 14px 10px; font-size: 12px; color: var(--amlb-ink-500); }
.legend i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; vertical-align: -1px; margin-right: 4px; }

/* Notes and footer */
.note { background: var(--amlb-blue-active-bg); border-radius: var(--amlb-radius-card); padding: 12px 16px; margin: 0 0 20px; font-size: 13px; color: var(--amlb-ink-700); }
.note b { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--amlb-blue-600); margin-bottom: 4px; }
.warnbox { background: var(--amlb-risk-medium-bg); color: #5b4200; border-radius: var(--amlb-radius-card); padding: 10px 16px; margin: 0 0 20px; font-size: 13px; }
.ftr { max-width: var(--page); margin: 0 auto; padding: 16px; border-top: 1px solid var(--amlb-ui-stroke); font-size: 12px; color: var(--amlb-ink-400); display: flex; gap: 16px; flex-wrap: wrap; }
.ftr a { color: inherit; }
.about { max-width: 760px; }
.about h2 { font-size: 18px; margin: 24px 0 8px; }
.about p, .about li { color: var(--amlb-ink-500); font-size: 15px; line-height: 1.6; }
.about table { max-width: 560px; }

/* Incident cell: one line, cropped */
/* Table cells ignore max-width, so the crop lives on a block inside the cell. */
td.inc .crop { max-width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
td.inc .tag { margin-right: 4px; vertical-align: 1px; }

/* Search inputs: no focus ring; a thin shadow on hover, a slightly darker border while typing. */
.search input, .hdr input { outline: none; transition: box-shadow .15s ease, border-color .15s ease; }
.search input:hover, .hdr input:hover { box-shadow: 0 1px 4px rgba(10,20,40,.08); }
.search input:focus, .search input:focus-visible, .hdr input:focus, .hdr input:focus-visible { outline: none; box-shadow: 0 1px 4px rgba(10,20,40,.08); border-color: rgba(10,20,40,.32); }

/* Polytrop's header mark: the Sniffer icon, the name, "by AMLBot" */
.brand svg { width: 26px; height: 26px; display: block; flex: none; }
.brand b { font-size: 16px; font-weight: 700; letter-spacing: -.02em; }
.brand .by { font-size: 12px; color: var(--amlb-ink-400); margin-left: 2px; white-space: nowrap; }

/* Breadcrumbs: the way back, on every page but the home */
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; color: var(--amlb-ink-400); margin: 2px 0 14px; }
.crumbs:empty { display: none; }
.crumbs a { color: var(--amlb-blue-600); text-decoration: none; }
.crumbs a:hover { color: var(--amlb-blue-500); text-decoration: underline; text-decoration-color: var(--amlb-blue-200); text-underline-offset: 3px; }
.crumbs .sep { color: var(--amlb-ink-100); }
.crumbs .cur { color: var(--amlb-ui-ink-hard); font-weight: 500; }
.crumbs .mono { font-family: var(--amlb-font-mono); font-weight: 400; font-size: 12px; }

/* The case page (incident.html) in AMLBot Promo: a light hero with the trail drawn in 3D, section heads with the ghost
   numeral, three feature cards of where the money is, four stat cards of when Sniffer knew, then the tables. */
.hero { background: var(--grad-light-hero, radial-gradient(rgba(0,87,255,.15) 0%, rgba(176,227,255,0) 100%), radial-gradient(rgba(97,57,255,.15) 0%, rgba(243,100,255,0) 100%), linear-gradient(rgb(220,241,254) 0%, rgb(235,242,246) 70%, rgba(255,255,255,0) 100%)); border-radius: 40px; padding: 44px 48px 40px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, .95fr); gap: 40px; align-items: center; margin: 0 0 8px; }
.hero .tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.hero .tag { display: inline-block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; line-height: 1; padding: 6px 10px; border-radius: 6px; background: rgba(255,255,255,.7); color: var(--amlb-ink-700); border: 1px solid rgba(10,20,40,.08); }
.hero .tag.soft { background: transparent; color: var(--amlb-ink-500); border-color: transparent; }
.hero .tag.warn { background: var(--amlb-risk-medium-bg); color: var(--amlb-risk-medium); border-color: transparent; }
.hero h1 { font-size: 48px; line-height: 1.1; letter-spacing: -.03em; color: #000; margin: 0 0 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.hero .lead { font-size: 18px; line-height: 1.55; color: var(--amlb-ink-500); margin: 0 0 28px; max-width: 520px; text-wrap: pretty; }
.big { display: flex; flex-direction: column; gap: 4px; }
.big .cap { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--amlb-ink-700); }
.big b { font-size: 64px; font-weight: 800; letter-spacing: -.04em; line-height: 1; color: #000; font-variant-numeric: tabular-nums; }
.big .sub { font-size: 14px; color: var(--amlb-ink-500); margin-top: 4px; }
.big .sub b { font-size: 18px; font-weight: 700; color: var(--amlb-ui-ink-hard); letter-spacing: -.02em; }
.hero-fig { min-width: 0; }
.hero-fig canvas { display: block; width: 100%; height: auto; }

.sec { margin: 0 0 8px; }
.amlb-sec-head { margin: 40px 0 16px; }
.amlb-sec-head h2 { margin: 0; font-size: 26px; line-height: 1.1; letter-spacing: -.03em; color: #000; }
.sec .panel { margin: 0; }
.sec .panel > .ph { padding: 8px 14px; }

.where { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.where.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.wcard { position: relative; border-radius: 16px; padding: 22px 24px 20px; background: #fff; border: 1px solid var(--amlb-ui-stroke); display: flex; flex-direction: column; gap: 6px; }
.wcard .k { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--amlb-ink-400); padding-left: 16px; position: relative; }
.wcard .k::before { content: ""; position: absolute; left: 0; top: 4px; width: 8px; height: 8px; border-radius: 50%; background: var(--amlb-ink-100); }
.wcard .v { font-size: 36px; font-weight: 700; letter-spacing: -.03em; line-height: 1.05; font-variant-numeric: tabular-nums; color: #000; }
.wcard .v small { font-size: 15px; font-weight: 500; letter-spacing: 0; margin-left: 8px; color: var(--amlb-ink-400); }
.wcard .d { font-size: 14px; line-height: 1.5; color: var(--amlb-ui-body-text); margin-top: 4px; }
/* the count in a card's sentence: semibold, a pale blue marker stroke behind its lower half */
.wcard .hl { color: var(--amlb-ui-ink-hard); font-weight: 600; background: linear-gradient(transparent 58%, #CFE1FF 58%, #CFE1FF 92%, transparent 92%); padding: 0 2px; }
.wcard.svc .k::before { background: var(--amlb-blue-500); }
.wcard.frz .k::before { background: #00A1FB; }
.wcard.still .k::before { background: var(--amlb-risk-risky); }
.bar-wrap { margin-top: 20px; }
.bar { display: flex; height: 8px; border-radius: 999px; overflow: hidden; gap: 3px; background: var(--amlb-ui-stroke-soft); }
.bar .seg { display: block; height: 100%; border-radius: 999px; }
.seg.svc { background: var(--amlb-blue-500); } .seg.frz { background: #00A1FB; } .seg.still { background: var(--amlb-risk-risky); }
.bar-note { font-size: 13px; color: var(--amlb-ink-400); margin: 10px 0 0; }

.when { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.tile { background: #fff; border: 2px solid var(--amlb-ui-stroke-soft); border-radius: 16px; padding: 22px 24px 20px; display: flex; flex-direction: column; gap: 6px; }
.tile .tk { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--amlb-ink-400); }
.tile .tv { font-size: 36px; font-weight: 700; letter-spacing: -.03em; line-height: 1.05; color: #000; font-variant-numeric: tabular-nums; }
.tile.late .tv { color: var(--amlb-risk-risky); }
.tile .ts { font-size: 14px; line-height: 1.45; color: var(--amlb-ui-body-text); }
/* the case's facts: a plain list, no title, a blue line along its left edge */
.facts { position: relative; margin: 28px 0 32px; padding: 4px 0 4px 24px; }
.facts::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; border-radius: 3px; background: var(--amlb-blue-500); }
.facts dl { margin: 0; }
.facts .fr { display: grid; grid-template-columns: 200px 1fr; gap: 16px; padding: 7px 0; font-size: 14px; }
.facts dt { margin: 0; color: var(--amlb-ink-400); }
.facts dd { margin: 0; }
.facts dd b { font-weight: 600; font-variant-numeric: tabular-nums; }
.facts .n { margin-left: 6px; color: var(--amlb-ink-400); }
.facts .flake { width: 12px; height: 12px; margin-right: 6px; vertical-align: -1px; color: #00A1FB; }
@media (max-width: 720px) { .facts .fr { grid-template-columns: 1fr; gap: 2px; } }

@media (max-width: 900px) {
  .hero { grid-template-columns: 1fr; padding: 28px 22px 26px; border-radius: 24px; gap: 20px; }
  .hero h1 { font-size: 34px; }
  .big b { font-size: 48px; }
  .amlb-sec-head { margin-top: 28px; }
  .amlb-sec-head h2 { font-size: 22px; }
  .where, .where.two, .when { grid-template-columns: 1fr; }
  .when { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* The home page's map of cases: tiles in the design system's pale fills, one hue per incident type */
.map-head { display: flex; align-items: baseline; gap: 10px; margin: 0 0 10px; }
.map-head h2 { margin: 0; font-size: 16px; font-weight: 700; letter-spacing: -.01em; }
.map-head .r { margin-left: auto; font-size: 12px; color: var(--amlb-ink-400); }
.map { position: relative; width: 100%; border-radius: 16px; overflow: hidden; background: #fff; }
.tt { position: absolute; box-sizing: border-box; display: flex; flex-direction: column; justify-content: flex-start; gap: 0; padding: .5em .6em; overflow: hidden; text-decoration: none; color: var(--amlb-ui-ink-hard); border: 2px solid #fff; border-radius: 10px; line-height: 1.2; font-weight: 400; transition: filter .12s ease; }
.tt:hover { filter: brightness(.96); z-index: 1; }
.tt .n { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; letter-spacing: -.01em; }
.tt.l1 .n { -webkit-line-clamp: 1; }
.tt .a { font-weight: 500; font-size: 1.15em; letter-spacing: -.02em; line-height: 1.2; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tt .s { font-size: .8em; opacity: .75; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: .15em; }
.tt .s em { font-style: normal; color: var(--amlb-risk-risky); opacity: 1; }
.tt.blue { background: #E9F3FF; color: #0042A5; }
.tt.pink { background: #F9E6F6; color: #7A1E72; }
.tt.yellow { background: #FFF3D1; color: #6B4E00; }
.tt.green { background: #E4F6EC; color: #0B6B3A; }
.tt.cyan { background: #DCF1FE; color: #084C8C; }
.tt.violet { background: #EEEAFF; color: #3A1E9E; }
.tt.rose { background: #FDE8EC; color: #8E1630; }
.tt.mint { background: #E0FBF2; color: #0A5C45; }
.map-foot { margin: 10px 0 0; font-size: 13px; color: var(--amlb-ink-400); }
/* the graph legend's swatches (classes, not inline styles: the CSP allows none) */
.legend .lg-src { background: #060663; } .legend .lg-bad { background: #ED274B; } .legend .lg-svc { background: #0057FF; }
.legend .lg-wd { border: 1px dashed #77869E; background: #fff; } .legend .lg-late { background: #ED274B; border-radius: 0; height: 2px; vertical-align: 3px; }

/* the case's sources: a quiet disclosure under the hero that opens a compact table */
.seedbox { margin: 12px 0 0; border: 1px solid var(--amlb-ui-stroke); border-radius: 12px; background: #fff; }
.seedbox > summary { cursor: pointer; list-style: none; padding: 10px 14px; font-size: 13px; display: flex; align-items: baseline; gap: 8px; }
.seedbox > summary::-webkit-details-marker { display: none; }
.seedbox > summary::before { content: "›"; display: inline-block; width: 10px; color: var(--amlb-ink-400); transition: transform .15s ease; }
.seedbox[open] > summary::before { transform: rotate(90deg); }
.seedbox > summary .sk { font-weight: 600; color: var(--amlb-ui-ink-hard); }
.seedbox > summary:hover .sk { color: var(--amlb-blue-600); }
table.compact { font-size: 12px; }
table.compact th, table.compact td { padding: 5px 10px; }

/* a section folded by default (all addresses, transactions): the heading opens it */
details.fold > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 10px; }
details.fold > summary::-webkit-details-marker { display: none; }
details.fold > summary::before { content: "›"; color: var(--amlb-ink-400); font-size: 22px; transition: transform .15s ease; align-self: center; }
details.fold[open] > summary::before { transform: rotate(90deg); }
details.fold > summary:hover h2 { color: var(--amlb-blue-600); }
details.fold > summary .muted { font-size: 14px; }

.hopwarn { margin-top: 16px; }

/* a term with a definition: dotted underline; a click opens the popover */
.def { text-decoration: underline dotted var(--amlb-ink-400); text-decoration-thickness: 1.5px; text-underline-offset: 3px; cursor: help; }
.def:hover, .def[aria-expanded="true"] { text-decoration-color: var(--amlb-blue-500); color: var(--amlb-blue-600); }
.big .cap .def { color: inherit; }
/* the methodology page */
.method { max-width: 760px; }
.method h1 { font-size: 32px; letter-spacing: -.03em; margin: 8px 0 8px; }
.method h2 { font-size: 20px; letter-spacing: -.02em; margin: 28px 0 6px; scroll-margin-top: 16px; }
.method p { font-size: 15px; line-height: 1.6; color: var(--amlb-ui-body-text); margin: 0 0 8px; }
.method h2:target { color: var(--amlb-blue-600); }

.defpop { position: absolute; z-index: 20; max-width: 300px; background: #fff; border: 1px solid var(--amlb-ui-stroke); border-radius: 12px; box-shadow: var(--amlb-shadow-sm), 0 8px 24px rgba(10,20,40,.08); padding: 12px 14px; font-size: 13px; line-height: 1.5; text-transform: none; letter-spacing: 0; font-weight: 400; }
.defpop b { display: block; margin: 0 0 4px; }
.defpop p { margin: 0 0 8px; color: var(--amlb-ui-body-text); }
.defpop a { font-weight: 500; text-decoration: none; }

.pager button { font: 500 13px var(--amlb-font-sans); padding: 5px 12px; border: 1px solid var(--amlb-ui-stroke); border-radius: 8px; background: #fff; color: var(--amlb-blue-600); cursor: pointer; }
.pager button:disabled { color: var(--amlb-ink-100); cursor: default; }
.pager button:not(:disabled):hover { border-color: var(--amlb-blue-200); }

/* the home page's first lines: the figures, then what Polytrop does */
.figline { font-size: 18px; letter-spacing: -.01em; color: var(--amlb-ink-500); margin: 4px 0 2px; }
.figline b { color: #000; font-weight: 700; font-variant-numeric: tabular-nums; }
.figline .dot { color: var(--amlb-ink-100); margin: 0 4px; }
.tagline { font-size: 13px; color: var(--amlb-ink-400); margin: 0 0 18px; }
/* the graph's chips: which transfers to show */
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.panel > .ph .chips { align-self: center; }
.chip { font: 500 12px var(--amlb-font-sans); padding: 5px 10px; border-radius: 6px; border: 1px solid transparent; background: var(--amlb-blue-active-bg); color: var(--amlb-blue-600); cursor: pointer; }
.chip span { opacity: .7; margin-left: 2px; }
.chip.on { background: rgba(200,59,208,.10); color: var(--amlb-violet-700); }
.chip:hover { border-color: var(--amlb-blue-200); }
.graph .edge.off, .graph .node.off { display: none; }

details.fold[open] > summary { margin-bottom: 16px; }

.chips .sep { width: 1px; height: 18px; background: var(--amlb-ink-100); margin: 0 6px; align-self: center; }
.chip.clear { background: #fff; border-color: var(--amlb-ui-stroke); color: var(--amlb-ink-700); }
.chip.clear:disabled { color: var(--amlb-ink-100); cursor: default; border-color: var(--amlb-ui-stroke-soft); }

/* the case page's timeline: the incident's key moments in one row */
.tl { display: grid; padding: 22px 18px 18px; position: relative; gap: 0; }
.tl::before { content: ""; position: absolute; left: 30px; right: 30px; top: 31px; height: 2px; background: var(--amlb-ui-stroke-soft); }
.tl .ev { position: relative; padding-right: 12px; min-width: 0; }
.tl .ev i { display: block; width: 12px; height: 12px; border-radius: 50%; background: var(--amlb-navy-800); border: 2px solid #fff; box-shadow: 0 0 0 1px var(--amlb-ink-100); position: relative; z-index: 1; margin-bottom: 10px; }
.tl .ev.red i { background: var(--amlb-risk-risky); } .tl .ev.blue i { background: var(--amlb-blue-500); }
.tl .ev b { display: block; font-size: 13px; }
.tl .ev span { display: block; font: 12px var(--amlb-font-mono); color: var(--amlb-ink-500); }
.tl .ev small { display: block; font-size: 12px; color: var(--amlb-ink-400); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 700px) { .tl { grid-template-columns: 1fr !important; gap: 12px; } .tl::before { display: none; } }
/* the home page's recently flagged list */
.recent { margin-top: 28px; }

/* a frozen address: pale ice background, 4 + ".." + 5 characters and a snowflake after them */
a.addr.frozen { background: linear-gradient(90deg, #DCF1FE, #EEF8FF); border-radius: 5px; padding: 1px 4px; margin: 0 -4px; }
a.addr .flake { display: inline-block; width: 1.3ch; height: 1.3ch; margin-left: .7ch; vertical-align: -.12em; color: #00A1FB; }
.graph .node.frozen circle { fill: #00A1FB; stroke: #BFE6FE; stroke-width: 5; }
.graph .node.frozen text { fill: #0A6FA8; font-weight: 600; }
.graph .node.frozen .gflake { color: #00A1FB; }
.legend .lg-frozen { background: #00A1FB; box-shadow: 0 0 0 3px #BFE6FE; }

/* Home, top of the page: three text styles. Title 18/700 black · Body 14/400 ink · Meta 13/400 grey */
body[data-page="home"] .figline, body[data-page="home"] .figline b { font: 700 18px/1.3 var(--amlb-font-sans); color: #000; letter-spacing: -.01em; }
body[data-page="home"] .figline .dot { color: var(--amlb-ink-100); }
body[data-page="home"] .tagline { font: 400 13px/1.5 var(--amlb-font-sans); color: var(--amlb-ink-400); }
body[data-page="home"] .search input { font: 400 14px/1.5 var(--amlb-font-sans); color: var(--amlb-ui-ink-hard); }
body[data-page="home"] .search input::placeholder { color: var(--amlb-ink-400); }
body[data-page="home"] .search button { font: 400 14px/1.5 var(--amlb-font-sans); }
body[data-page="home"] #m-h { font: 700 18px/1.3 var(--amlb-font-sans); color: #000; }
body[data-page="home"] #mapNote, body[data-page="home"] #mapNote a { font: 400 14px/1.5 var(--amlb-font-sans); color: var(--amlb-ui-ink-hard); text-decoration-color: var(--amlb-ink-100); }
body[data-page="home"] #mapNote a:hover { color: var(--amlb-blue-500); text-decoration-color: var(--amlb-blue-200); }

/* Flow of funds: cut and fading out, opened by a half-disc hanging under a pale hairline: grey, blue on hover */
.gfold { position: relative; --fold-line: #D4DCEA; --fold-bg: #fff; }
.gfold-body { transition: max-height .7s cubic-bezier(.2,.8,.2,1); }
.gfold.is-folded .gfold-body { max-height: var(--fold-h, 900px); overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 56px), transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 56px), transparent 100%); }
.gfold.is-open .gfold-body { overflow: visible; }
.gfold-ctl { display: flex; align-items: flex-start; height: 30px; margin-top: 8px; }
.gfold-ctl::before, .gfold-ctl::after { content: ""; flex: 1; height: 1px; }
.gfold-ctl::before { background: linear-gradient(90deg, transparent 15%, rgba(212,220,234,.75)); }
.gfold-ctl::after { background: linear-gradient(90deg, rgba(212,220,234,.75), transparent 85%); }
.gfold-btn { flex: none; width: 44px; height: 22px; padding: 0 0 4px; border: 1px solid var(--fold-line); border-top: 0; border-radius: 0 0 44px 44px;
  background: var(--fold-bg); color: var(--amlb-ink-400); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color .2s, color .2s; }
.gfold-btn:hover { border-color: var(--amlb-blue-500); color: var(--amlb-blue-500); }
.gfold-btn:focus-visible { outline: 2px solid var(--amlb-blue-500); outline-offset: 3px; }
.gfold-chev { width: 14px; height: 14px; margin-top: -2px; transition: transform .35s cubic-bezier(.2,.8,.2,1); }
.gfold.is-open .gfold-chev { transform: rotate(180deg); }
.gfold.no-fold .gfold-ctl { display: none; }
@media (prefers-reduced-motion: reduce) { .gfold-body, .gfold-chev { transition: none; } }
@media print { .gfold-body { max-height: none !important; -webkit-mask-image: none !important; mask-image: none !important; } .gfold-ctl { display: none; } }

/* Flow of funds: faint AMLBot watermarks repeated down the graph (drawn in app.js); clicks pass through */
.graph .wm { opacity: .08; pointer-events: none; }
