/* Bridge Wizard styles (v3.0). Every color is a design token below: a
   light and a dark set, chosen by the viewer (System, Light or Dark; see
   assets/theme.js, which sets data-theme on <html> before the first paint).
   Each text color passes WCAG AA (4.5:1) on every surface it is used on, in
   both themes (test/ui.test.mjs checks it). Kept in files rather than
   <style> blocks so the CSP can be style-src 'self'. */

@font-face{font-family:"BW Display";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/im-fell-english-sc-ascii.woff2") format("woff2");unicode-range:U+0020-007E}
@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}

/* Tokens both themes share: protocol badges and chain icons (dark text on
   a light fill, legible on either background), and the brand mark. */
:root{
  --on-badge:#0F1923;
  --pb-harbor:#C9A84C; --pb-thor:#33FF99; --pb-maya:#4A8FE0; --pb-near:#C8B8FF; --pb-relay:#FF9F5A; --pb-lifi:#F5B5FF;
  --pb-layerzero:#D9DEE5; --pb-wormhole:#9D8CFF; --pb-chainflip:#FF7AAB; --pb-garden:#F4A7C0; --pb-symbiosis:#7CE0C3;
  --pb-bridgers:#9FD3FF; --pb-allbridge:#B8E986; --pb-hyperliquid:#97FCE4; --pb-across:#6CF9D8; --pb-cctp:#A9C6FF;
  --pb-debridge:#E0C3FF; --pb-mayan:#FFD08A; --pb-axelar:#C9F2A6; --pb-teleswap:#F7B267; --pb-meson:#B9A7FF;
  --pb-omnibridge:#8FD3C7; --pb-hifiswap:#F2A6A6; --pb-refund:#F0A060; --pb-pending:#FFD166;
  --ci-default:#9FB3C8; --ci-btc:#F7931A; --ci-eth:#8FA4F5; --ci-sol:#B28CFF; --ci-bsc:#F3BA2F; --ci-arb:#5FA8F5;
  --ci-base:#4C82FB; --ci-tron:#FF4F58; --ci-avax:#F26B6B; --ci-pol:#A57BF2; --ci-op:#FF5A6E; --ci-thor:#33FF99;
  --ci-maya:#4A8FE0; --ci-near:#E2E8F0; --ci-doge:#D8C074; --ci-ltc:#BFC7D5; --ci-bch:#8DC351; --ci-xrp:#C7CFD9;
  --ci-zec:#F4B728; --ci-dash:#3D8FE0;
  --mark-bg:#0F1923; --mark-gold:#C9A84C; --mark-gold-2:#DEC06A; --mark-blue:#4A8FE0; --mark-star:#EDF2F7;
  --font:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}

/* Light. */
:root{
  --scheme:light;
  --bg:#F4F6F9; --surface:#FFFFFF; --inset:#EEF2F6; --hover:#E4EAF1; --header-bg:#FFFFFF; --console:#F7F9FB;
  --border:#D5DCE4; --border-strong:#B7C2CE; --separator:#E3E8EE;
  --text:#3A4854; --text-strong:#1B2631; --text-max:#0B1520; --text-muted:#5A6A77;
  --accent:#7D5F10; --accent-hover:#634B0B; --accent-line:#C9A84C; --on-accent:#FFFFFF; --link:#1D5DAA;
  --success:#067550; --danger:#B42F22; --warning:#9C4F00; --pending:#7F5F00; --sent:#A34A00;
  --success-bg:#E6F4EE; --success-bg-strong:#D2EDE1; --success-line:#8CC9AF; --danger-bg:#FBEAE8; --warning-bg:#FDF0E2;
  --pending-bg:#FBF3DA; --accent-bg:#FAF5E6; --accent-bg-top:#F6EDD2; --accent-bg-bottom:#FBF8EF;
  --shadow:0 1px 2px rgba(16,24,40,.06);
}

/* Dark: the system preference, unless Light was chosen; or Dark chosen. */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --scheme:dark;
    --bg:#0F1923; --surface:#162030; --inset:#0D1826; --hover:#1E2F45; --header-bg:#080F18; --console:#060D14;
    --border:#1E3048; --border-strong:#2A4565; --separator:#1A2E42;
    --text:#B8C5CC; --text-strong:#E2E8F0; --text-max:#EDF2F7; --text-muted:#8A9BA6;
    --accent:#C9A84C; --accent-hover:#DEC06A; --accent-line:#8B6E2A; --on-accent:#080F18; --link:#6AA6EC;
    --success:#00C48C; --danger:#F0685A; --warning:#EE8A36; --pending:#FFD166; --sent:#FF9F5A;
    --success-bg:#10302E; --success-bg-strong:#12403A; --success-line:#2E6B5A; --danger-bg:#34202A; --warning-bg:#30261F;
    --pending-bg:#2C2A22; --accent-bg:#1B2229; --accent-bg-top:#2A2A26; --accent-bg-bottom:#182129;
    --shadow:none;
  }
}
:root[data-theme="dark"]{
  --scheme:dark;
  --bg:#0F1923; --surface:#162030; --inset:#0D1826; --hover:#1E2F45; --header-bg:#080F18; --console:#060D14;
  --border:#1E3048; --border-strong:#2A4565; --separator:#1A2E42;
  --text:#B8C5CC; --text-strong:#E2E8F0; --text-max:#EDF2F7; --text-muted:#8A9BA6;
  --accent:#C9A84C; --accent-hover:#DEC06A; --accent-line:#8B6E2A; --on-accent:#080F18; --link:#6AA6EC;
  --success:#00C48C; --danger:#F0685A; --warning:#EE8A36; --pending:#FFD166; --sent:#FF9F5A;
  --success-bg:#10302E; --success-bg-strong:#12403A; --success-line:#2E6B5A; --danger-bg:#34202A; --warning-bg:#30261F;
  --pending-bg:#2C2A22; --accent-bg:#1B2229; --accent-bg-top:#2A2A26; --accent-bg-bottom:#182129;
  --shadow:none;
}
:root{color-scheme:var(--scheme)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 var(--font);-webkit-text-size-adjust:100%}
/* Site chrome shared by every page: compact header, main column, footer. */
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:8px;top:-40px;z-index:10;background:var(--surface);color:var(--link);padding:6px 10px;border-radius:4px;border:1px solid var(--border-strong)}
.skip:focus{top:8px}
a{color:var(--link)}
.site-hdr{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;background:var(--header-bg);border-bottom:1px solid var(--border);padding:8px 20px;min-height:52px}
.brand{display:flex;align-items:center;gap:10px;color:var(--text-max);text-decoration:none;min-width:0;margin-right:auto}
.brand .mark{flex:none;display:inline-flex}
.brand .mark img{width:40px;height:40px;display:block}
/* The mark and the theme icon follow the theme: the light-mode mark, or on
   dark the variant with its light disc; a moon offers dark, a sun light. */
.mk-dark,.ic-sun{display:none!important}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .mk-light,:root:not([data-theme="light"]) .ic-moon{display:none!important}
  :root:not([data-theme="light"]) .mk-dark,:root:not([data-theme="light"]) .ic-sun{display:inline-flex!important}
}
:root[data-theme="dark"] .mk-light,:root[data-theme="dark"] .ic-moon{display:none!important}
:root[data-theme="dark"] .mk-dark,:root[data-theme="dark"] .ic-sun{display:inline-flex!important}
.sitenav{order:1}.themebtn{order:2}.menubtn{order:3}
.themebtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;border-radius:8px;background:transparent;color:var(--text-strong);border:1px solid var(--border-strong);letter-spacing:0}
.themebtn svg{fill:none;stroke:currentColor}
.themebtn:hover{background:var(--hover);color:var(--accent);border-color:var(--accent-line)}
.bname{font-weight:700;font-size:16px;letter-spacing:.01em;color:var(--text-max)}
.bby{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.mark .m-bg{fill:var(--mark-bg)}.mark .m-gold{stroke:var(--mark-gold);fill:none}.mark .m-blue{stroke:var(--mark-blue);fill:none}.mark .m-star{fill:var(--mark-star)}.mark .m-dot{fill:var(--mark-gold-2)}
.sitenav{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap}
.sitenav a{color:var(--text-strong);text-decoration:none;font-size:13.5px;font-weight:600;padding:6px 2px}
.sitenav a:hover{color:var(--accent)}
.sitenav a.portal{color:var(--text-muted);font-weight:500}
.menubtn{display:none;align-items:center;gap:6px;background:transparent;color:var(--text-strong);border:1px solid var(--border-strong);padding:6px 10px;font-weight:600;letter-spacing:0;min-height:36px}
.menubtn svg path{stroke:currentColor}
@media (max-width:760px){
  .menubtn{display:inline-flex}
  .bby{display:none}
  .sitenav{order:4;display:none;flex-basis:100%;flex-direction:column;align-items:stretch;gap:4px;padding:8px 0 4px;border-top:1px solid var(--separator)}
  .sitenav.open{display:flex}
  .sitenav a{padding:10px 4px;font-size:15px}
}
main.page{max-width:1060px;margin:0 auto;padding:16px 20px 40px;display:grid;gap:18px}
.hero h1{margin:0 0 4px;font-size:clamp(22px,4.2vw,34px);line-height:1.15;letter-spacing:-.01em;color:var(--text-max);font-weight:800}
/* v3.6.7: the one line above the search box is the page's heading, in the
   subhead's look: 32px below the header border (16px of main's padding and
   16px here) and 16px above the search box. The tagline is now the quote
   at the foot of the page (.quote). */
.hero h1.subhead{margin:16px 0 16px;font-size:clamp(15px,2vw,18px);line-height:1.3;color:var(--text);font-weight:500;letter-spacing:0}
.subhead{margin:0 0 12px;font-size:clamp(15px,2vw,18px);color:var(--text);font-weight:500}
.search{display:flex;gap:8px;align-items:stretch}
.sbox{position:relative;flex:1 1 auto;min-width:0;display:flex}
.sbox input[type="text"]{flex:1;min-width:0;height:48px;padding:0 70px 0 14px;font-size:14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-max);box-shadow:var(--shadow)}
.sbox input[type="text"]:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent-line)}
.sbox input::placeholder{color:var(--text-muted);opacity:1}
.xbtn{position:absolute;right:36px;top:50%;transform:translateY(-50%);width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted)}
.xbtn svg path{stroke:currentColor}
.xbtn:hover{background:var(--hover);color:var(--text-strong)}
.slashkey{position:absolute;right:10px;top:50%;transform:translateY(-50%);font:600 11px var(--mono);color:var(--text-muted);border:1px solid var(--border-strong);border-radius:4px;padding:1px 6px;background:var(--inset)}
.gobtn{height:48px;padding:0 22px;border-radius:8px;font-size:14px}
.sopts{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;justify-content:space-between;margin-top:8px}
.muted{color:var(--text-muted);font-size:12.5px;margin:0}
.sopt-r{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
button.quiet{background:transparent;border-color:var(--border-strong);color:var(--text);font-weight:600;letter-spacing:0}
button.quiet:hover{color:var(--text-strong);border-color:var(--accent-line)}
@media (max-width:560px){
  .search{flex-direction:column}
  .gobtn{width:100%}
  .slashkey{display:none}
  .sbox input{padding-right:44px}
  .xbtn{right:8px}
}
@media (hover:none){.slashkey{display:none}.sbox input{padding-right:44px}.xbtn{right:8px}}
.results:empty,.results>#result:empty{display:none}
.reportbar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-top:12px}
.highlights{display:flex;gap:12px;align-items:flex-start;border-top:1px solid var(--separator);padding-top:16px}
.highlights ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;flex:1;min-width:0}
.highlights li{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;font-size:13px;color:var(--text);box-shadow:var(--shadow)}
.highlights li b{display:block;color:var(--text-strong);font-size:13.5px;margin-bottom:2px}
.hidehl{flex:none;font-size:12px;padding:4px 10px}
/* v3.6.7: once a visitor has searched or pressed Hide, the cards fold behind
   a small "Tips" button in the same place, which opens them again. */
.tipsbtn{display:none}
.hl-hidden .highlights ul,.hl-hidden .hidehl{display:none}
.hl-hidden .highlights{border-top:0;padding-top:0}
.hl-hidden .tipsbtn{display:inline}
.drt-howto{margin-bottom:8px;font-size:12.5px}
@media (max-width:760px){.highlights{flex-direction:column}.highlights ul{grid-template-columns:minmax(0,1fr)}.hidehl{align-self:flex-end}}
.site-foot{color:var(--text-muted);font-size:12px;border-top:1px solid var(--border);padding:14px 20px;text-align:center}
.site-foot a{color:var(--text-muted)}
.site-foot a:hover{color:var(--link)}
.site-foot .count{color:var(--accent)}
/* v3.6.2: the dashboard's entry point, small and muted, last in the footer. */
.site-foot .adminlink{font-size:11px;text-decoration:none}
.site-foot .adminlink:hover{text-decoration:underline}
.tnum,.amt,.usd,.adate,.atotals,td,dd,.adm-v{font-variant-numeric:tabular-nums}
.card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px 16px;min-width:0}
.card h2{margin:0 0 8px;font-size:12px;letter-spacing:.08em;color:var(--accent);text-transform:uppercase}
.grid{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.grid>div{display:grid;gap:4px;align-content:start;min-width:0}
.grid .grow{flex:1 1 420px}
label{font-size:11px;letter-spacing:.06em;color:var(--text-muted);text-transform:uppercase}
select,input[type="text"],input[type="date"]{background:var(--inset);color:var(--text-max);border:1px solid var(--border-strong);border-radius:4px;padding:7px 9px;font:inherit;min-width:0;max-width:100%}
input[type="date"]{color-scheme:var(--scheme)}
.mono-in{width:100%;font-family:var(--mono);font-size:12.5px}
button{background:var(--surface);color:var(--accent);border:1px solid var(--accent-line);border-radius:4px;padding:5px 11px;font:inherit;font-size:13px;font-weight:700;letter-spacing:.04em;line-height:1.2;cursor:pointer}
button:hover{background:var(--hover);color:var(--accent-hover);border-color:var(--accent)}
button.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
button.primary:hover{background:var(--accent-hover)}
button.danger{color:var(--danger);border-color:var(--danger)}
button:disabled,button:disabled:hover{opacity:.45;cursor:not-allowed;background:var(--surface);color:var(--text-muted);border-color:var(--border-strong)}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
.covers{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.covers .pbadge{margin-bottom:0}
.covers-label{font-size:11px;letter-spacing:.06em;color:var(--text-muted);text-transform:uppercase;margin-right:2px}
.lanes{margin-top:10px;display:grid;gap:6px;font-size:12.5px;color:var(--text-strong)}
.lanes .dim{color:var(--text-muted)}
.lane{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;padding:5px 10px;border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:4px;background:var(--inset)}
.lane b{min-width:84px;color:var(--text-strong)}
.lane span{color:var(--text)}
.lane.ls-pending,.lane.ls-searching{border-left-color:var(--accent-line)}
.lane.ls-pending span,.lane.ls-searching span{color:var(--accent)}
.lane.ls-found{border-left-color:var(--success)}
.lane.ls-found span{color:var(--success)}
.lane.ls-notfound span,.lane.ls-cancelled span{color:var(--text-muted)}
.lane.ls-unreachable,.lane.ls-timelimit,.lane.ls-needdate{border-left-color:var(--warning)}
.lane.ls-unreachable span,.lane.ls-timelimit span,.lane.ls-needdate span{color:var(--warning)}
.err{color:var(--danger);font-weight:700;margin-top:8px}
.warn{color:var(--warning);font-size:12.5px;margin-top:8px}
.empty{color:var(--text-muted);font-size:12.5px;margin-top:6px}
.note{border:1px solid var(--accent-line);background:var(--inset);color:var(--text);font-size:12.5px;padding:8px 12px;border-radius:4px;margin:10px 0 0}
.note.orange{border-color:var(--warning);color:var(--text-strong)}
.note b{color:var(--accent)}
.manual{margin-top:12px;padding:10px 12px;border:1px solid var(--warning);border-radius:6px;background:var(--warning-bg)}
.manual p{margin:0 0 8px;font-size:12.5px;color:var(--text-strong)}

.progress{margin-top:10px;height:6px;border-radius:3px;background:var(--inset);border:1px solid var(--border);overflow:hidden}
.progress>div{height:100%;width:0;background:var(--accent);transition:width .15s}

.notfound{border:1px solid var(--warning);background:var(--warning-bg);border-radius:6px;padding:10px 14px}
.notfound .lead{font-size:14px;font-weight:700;color:var(--warning)}
.notfound .sub{font-size:12px;color:var(--text-muted);margin-top:4px}
.chooser{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:10px 14px}
.chooser .lead{font-size:14px;font-weight:700;color:var(--text-strong)}
.chooser .choices{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.chooser .choice{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;text-align:left;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer;min-height:44px}
.chooser .choice:hover,.chooser .choice:focus-visible{border-color:var(--accent);background:var(--hover)}
.chooser .choice .sub-dim{flex-basis:100%}

.headline{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--accent-line);border-radius:6px;background:linear-gradient(180deg,var(--accent-bg-top),var(--accent-bg-bottom))}
.headline .dir{font-size:15px;font-weight:700;color:var(--text-strong)}
.headline .dir .arrow{color:var(--accent);margin:0 8px}
.headline .meta{font-size:12px;color:var(--text-muted)}
.headline .via{font-size:13px;color:var(--accent-hover);margin:2px 0}
.headline .via b{color:var(--accent)}
.pbadge.relay{background:var(--pb-relay)}
.pbadge.lifi{background:var(--pb-lifi)}
.headline .badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.pbadge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-radius:3px;padding:1px 7px;margin-bottom:4px;color:var(--on-badge);background:var(--pb-harbor)}
.pbadge.thor{background:var(--pb-thor)}
.pbadge.maya{background:var(--pb-maya)}
.pbadge.harbor{background:var(--pb-harbor)}
.pbadge.near{background:var(--pb-near)}
.pbadge.refund{background:var(--pb-refund)}
.pbadge.pending{background:var(--pb-pending)}
.pbadge.layerzero{background:var(--pb-layerzero)}
.pbadge.wormhole{background:var(--pb-wormhole)}
.pbadge.chainflip{background:var(--pb-chainflip)}
.pbadge.garden{background:var(--pb-garden)}
.pbadge.symbiosis{background:var(--pb-symbiosis)}
.pbadge.bridgers{background:var(--pb-bridgers)}
.pbadge.allbridge{background:var(--pb-allbridge)}
.pbadge.hyperliquid{background:var(--pb-hyperliquid)}
.pbadge.across{background:var(--pb-across)}
.pbadge.cctp{background:var(--pb-cctp)}
.pbadge.debridge{background:var(--pb-debridge)}
.pbadge.mayan{background:var(--pb-mayan)}
.pbadge.axelar{background:var(--pb-axelar)}
.pbadge.teleswap{background:var(--pb-teleswap)}
.pbadge.meson{background:var(--pb-meson)}
.pbadge.omnibridge{background:var(--pb-omnibridge)}
.pbadge.hifiswap{background:var(--pb-hifiswap)}
.hsent{margin:0 0 10px;font-size:14.5px;line-height:1.5;color:var(--text-strong);font-weight:600}
.flow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;margin-top:10px;align-items:stretch}
.flow .side{border:1px solid var(--border-strong);border-radius:6px;padding:8px 10px;background:var(--inset);min-width:0}
.flow .side.searched{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-line) inset}
.flow .side-h{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--accent);margin-bottom:4px}
.flow .side table.kv td:first-child{width:110px}
.flow .side .badges{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}
.flow .mid{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:0 4px;font-size:12px;color:var(--text-strong);max-width:150px}
.flow .mid .arrow{font-size:22px;color:var(--accent)}
.status{font-weight:700;color:var(--success)}
.status.pending{color:var(--pending)}
.youtag{display:inline-block;margin:2px 0 2px 6px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--on-accent);background:var(--accent);border-radius:3px;padding:1px 6px}
.vside{margin-top:10px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
table.kv.details{margin-top:12px}
@media (max-width:720px){
  .flow{grid-template-columns:minmax(0,1fr)}
  .flow .mid{flex-direction:row;flex-wrap:wrap;max-width:none;justify-content:flex-start}
  .flow .mid .arrow{transform:rotate(90deg);font-size:18px}
}
.rcard+.rcard{margin-top:22px;padding-top:16px;border-top:2px solid var(--border-strong)}
tr.matched td{background:var(--success-bg)}
.alert{border:2px solid var(--warning);background:var(--warning-bg);border-radius:6px;padding:10px 14px;margin:12px 0 0}
.alert-h{font-size:14px;font-weight:700;color:var(--warning)}
.alert .sub{font-size:12.5px;color:var(--text-strong);margin-top:6px}
.batch th:first-child,.batch td:first-child{width:28px}
.batch tr.matched td{background:var(--success-bg-strong)}

.vbadge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:4px 10px;border:1px solid}
.vbadge.ok{color:var(--success);border-color:var(--success);background:var(--success-bg)}
.vbadge.bad{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}
.vbadge.na{color:var(--text);border-color:var(--border-strong);background:var(--inset)}
.vbadge.pending{color:var(--accent);border-color:var(--accent-line);background:var(--inset)}
.vbadge.warn{color:var(--warning);border-color:var(--warning);background:var(--warning-bg)}

.sec{margin-top:14px;border-top:1px solid var(--separator);padding-top:8px}
.sec-h{font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--accent)}

table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px;table-layout:fixed}
th{color:var(--accent);font-size:11px;letter-spacing:.06em;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border-strong);padding:5px 8px 5px 0}
td{border-bottom:1px solid var(--separator);padding:6px 8px 6px 0;vertical-align:top;color:var(--text-strong);overflow-wrap:anywhere}
table.kv td:first-child{width:190px;color:var(--text-muted);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding-top:8px}
tr.key td:first-child{color:var(--accent)}
tr.key td{font-weight:700}
.mono{font-family:var(--mono);font-size:12px;overflow-wrap:anywhere}
.val{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.val .mono{overflow-wrap:anywhere;min-width:0}
.val .acts{display:inline-flex;gap:6px;flex:none}
.mini{font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:3px;color:var(--link);border:1px solid var(--border-strong);background:var(--inset);text-decoration:none;cursor:pointer;line-height:1.3}
.mini:hover{color:var(--text-max);border-color:var(--link);background:var(--hover)}
.sub-dim{color:var(--text-muted);font-size:11.5px;font-weight:400}
.fromnote{color:var(--text-muted);font-size:11.5px;font-weight:400;font-family:inherit;margin-top:2px;overflow-wrap:anywhere;white-space:normal}

details.how summary{cursor:pointer;color:var(--accent);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:700}
details.how p,details.how li{font-size:12.5px;color:var(--text)}
details.how ol{padding-left:20px;margin:8px 0}
details.how h3.covh{margin:14px 0 4px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
details.how ul.cov{padding-left:18px;margin:6px 0 10px}
details.how ul.cov li{margin:3px 0;overflow-wrap:anywhere}
details.how ul.cov .covref{display:block;color:var(--text)}
.privacy{margin:12px 0 4px;font-size:12px;color:var(--success)}

@media (max-width:640px){
  .site-hdr,main.page{padding-left:16px;padding-right:16px}
  table.kv td:first-child{width:112px}
}

/* v2.0: the answer card. One card per swap: bridge, what went in, what came
   out, one verification line, any answer-changing condition, and the
   forensic detail collapsed under it. */
.rcard{border:1px solid var(--border-strong);border-radius:8px;padding:14px 16px;background:var(--bg);min-width:0;overflow-wrap:anywhere}
/* (v3.8.12) A card never widens the page: any long value (an address, a hash, a raw code) breaks inside it rather than pushing the column past a phone's width; the TeleSwap card's "Updated by the deeper search" line did, 6 px at 390 px. */
.rcard+.rcard{margin-top:16px;padding-top:14px;border-top:1px solid var(--border-strong)}
.ahead{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;justify-content:space-between}
.ahead .bridge{margin:0;font-size:20px;line-height:1.2;color:var(--text-max);letter-spacing:.01em}
.ameta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ameta .pbadge{margin:0}
.pill{display:inline-flex;gap:5px;align-items:center;font-size:12px;font-weight:700;border-radius:999px;padding:2px 10px;border:1px solid}
.pill.st-completed{color:var(--success);border-color:var(--success);background:var(--success-bg)}
.pill.st-pending,.pill.st-unredeemed{color:var(--pending);border-color:var(--pending);background:var(--pending-bg)}
.pill.st-refunded{color:var(--warning);border-color:var(--warning);background:var(--warning-bg)}
.pill.st-failed{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}
.when{font-size:12px;color:var(--text-muted)}
.panels{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:stretch;margin-top:12px}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;min-width:0}
.panel.searched{border-color:var(--accent-line)}
.ph{display:flex;gap:8px;align-items:center;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-weight:700}
.stag{font-size:10px;letter-spacing:.06em;color:var(--on-accent);background:var(--accent);border-radius:3px;padding:0 6px}
.chainl{display:flex;gap:8px;align-items:center;margin-top:8px;color:var(--text-strong);font-size:13px}
.cicon{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:50%;font-size:9px;font-weight:800;letter-spacing:.02em;color:var(--on-badge);background:var(--ci-default);padding:0 3px}
.ci-BTC{background:var(--ci-btc)}.ci-ETH{background:var(--ci-eth)}.ci-SOL{background:var(--ci-sol)}.ci-BSC{background:var(--ci-bsc)}.ci-ARB{background:var(--ci-arb)}
.ci-BASE{background:var(--ci-base)}.ci-TRON{background:var(--ci-tron)}.ci-AVAX{background:var(--ci-avax)}.ci-POL{background:var(--ci-pol)}.ci-OP{background:var(--ci-op)}
.ci-THOR{background:var(--ci-thor)}.ci-MAYA{background:var(--ci-maya)}.ci-NEAR{background:var(--ci-near)}.ci-DOGE{background:var(--ci-doge)}.ci-LTC{background:var(--ci-ltc)}
.ci-BCH{background:var(--ci-bch)}.ci-XRP{background:var(--ci-xrp)}.ci-ZEC{background:var(--ci-zec)}.ci-DASH{background:var(--ci-dash)}
.amt{margin-top:8px;font-size:22px;font-weight:700;color:var(--text-max);line-height:1.2;overflow-wrap:anywhere}
.usd{font-size:12px;color:var(--text-muted)}
.marker{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--pending);border:1px solid var(--pending);border-radius:3px;padding:0 6px;vertical-align:middle}
dl.pf{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 10px;margin:10px 0 0;font-size:13px}
dl.pf dt{color:var(--text-muted);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding-top:3px}
dl.pf dd{margin:0;min-width:0}
.sv{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:100%}
.svt{background:none;border:0;padding:0;color:var(--text-strong);font:12.5px var(--mono);letter-spacing:0;cursor:pointer;text-align:left;overflow-wrap:anywhere;max-width:100%}
.svt:hover,.svt:focus-visible{background:none;color:var(--text-max);text-decoration:underline}
.ico{font-size:10px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:3px;color:var(--link);border:1px solid var(--border-strong);background:var(--inset);text-decoration:none;cursor:pointer;line-height:1.3}
.ico:hover,.ico:focus-visible{color:var(--text-max);border-color:var(--link);background:var(--hover)}
details.more summary{cursor:pointer;color:var(--link);font-size:12px;margin-top:4px}
.using{display:flex;gap:6px;align-items:center;margin-top:10px;font-size:13px;color:var(--text-strong)}
.using b{overflow-wrap:anywhere;min-width:0}
.using{min-width:0;max-width:100%}
.using img{border-radius:3px;flex:none}
.parrow{display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:24px}
.parrow .ar-v{display:none}
.vline{margin-top:12px;font-size:13px;font-weight:700;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vline .vlinked,.vline .vonward{flex-basis:100%;font-weight:400;color:var(--text);overflow-wrap:anywhere}
.vline.v-ok{color:var(--success)}.vline.v-partial{color:var(--warning)}.vline.v-bad{color:var(--danger)}.vline.v-pending,.vline.v-none{color:var(--text-muted)}
.when{margin-top:10px;border-left:3px solid var(--accent);padding:6px 12px;background:var(--accent-bg);border-radius:0 4px 4px 0}
.when-h{font-weight:700;font-size:13px}
.when .nudge{margin:4px 0 6px;font-size:13px}
.when .grid{align-items:end}
.whenbtn{padding-bottom:2px}
.wline{margin-top:8px;font-size:13px;border-left:3px solid var(--warning);padding:4px 10px;background:var(--warning-bg);border-radius:0 4px 4px 0;overflow-wrap:anywhere}
.wline .mini{margin-left:6px}
.cond{margin-top:8px;font-size:13px;font-weight:600;border-left:3px solid;padding:4px 10px;border-radius:0 4px 4px 0;overflow-wrap:anywhere}
.cond.orange{color:var(--text-strong);border-color:var(--warning);background:var(--warning-bg)}
.cond.red{color:var(--text-strong);border-color:var(--danger);background:var(--danger-bg)}
.aactions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.detailbtn[aria-expanded="true"]{border-color:var(--accent)}
.fd{margin-top:12px;border-top:1px dashed var(--border-strong);padding-top:4px}
.fd .hsent{font-size:14px;color:var(--text-max);font-weight:600;margin:10px 0 4px}
details.raw summary{cursor:pointer;font-size:12px;color:var(--text);margin-top:6px}
details.raw pre{max-height:320px;overflow:auto;background:var(--console);border:1px solid var(--border);border-radius:4px;padding:8px;font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere}
.lanelist summary{cursor:pointer;list-style-position:inside}
.sline{font-size:13px;font-weight:700;color:var(--text-strong)}
.sline.warnline{color:var(--warning)}
.lanelist[open] summary{margin-bottom:6px}
details.nfmore summary{cursor:pointer;color:var(--accent);font-size:12px;margin-top:8px}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (max-width:720px){
  .panels{grid-template-columns:minmax(0,1fr)}
  .parrow .ar-h{display:none}
  .parrow .ar-v{display:inline}
  .ahead .bridge{font-size:18px}
  .amt{font-size:20px}
}

/* v2.1: address search. A summary, totals, filters and a compact list; a
   row opens into the answer card. */
.asum{font-size:14px;color:var(--text-strong)}
.asum b{color:var(--text-max)}
.atotals{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:4px;font-size:12.5px;color:var(--text)}
.afilters{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:10px}
.afl{display:flex;gap:6px;align-items:center;font-size:11px}
.afl select{padding:4px 6px;font-size:12px;max-width:180px}
.alist{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.arow{border:1px solid var(--border);border-radius:6px;background:var(--bg);min-width:0}
.arow.open{border-color:var(--accent-line)}
.arow-h{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:8px 10px;cursor:pointer;min-width:0}
.arow-h:hover{background:var(--hover)}
.adate{font-size:12px;color:var(--text-muted);font-family:var(--mono)}
.abridge{font-weight:700;color:var(--text-max);font-size:13px}
.dir{font-size:11px;font-weight:700;letter-spacing:.04em;border-radius:3px;padding:1px 7px;border:1px solid}
.dir-sent{color:var(--sent);border-color:var(--sent)}.dir-received{color:var(--success);border-color:var(--success)}
.dir-refunded{color:var(--warning);border-color:var(--warning)}.dir-both{color:var(--link);border-color:var(--link)}.dir-linked{color:var(--text);border-color:var(--border-strong)}
.alegs{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-size:12.5px;color:var(--text-strong);min-width:0}
.aleg{display:inline-flex;gap:6px;align-items:center;min-width:0;overflow-wrap:anywhere}
.aleg .cicon{min-width:20px;height:20px;font-size:8px}
.alegs .arrow{color:var(--accent)}
.acp{font-size:12px;display:inline-flex;gap:6px;align-items:center;min-width:0}
.aapp{display:inline-flex;gap:5px;align-items:center;font-size:12px;color:var(--text-strong)}
.aapp img{border-radius:3px}
.rowbtn{margin-left:auto;padding:3px 10px;font-size:11px}
.arow-card{padding:0 8px 8px}
.arow-card .rcard{border:0;padding:6px 4px 0}
.cov{font-size:11.5px;color:var(--text-muted);margin-top:2px}
.asaddr{margin-top:6px;font-size:12px}
.linkbtn{background:none;border:0;padding:0;color:var(--link);text-decoration:underline;font-size:12px;letter-spacing:0;font-weight:600;cursor:pointer}
@media (max-width:720px){
  .arow-h{gap:4px 8px}
  .rowbtn{margin-left:0}
}
.usingrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:10px}
.usingrow .using{margin-top:0}
.drtbtn{font-size:11.5px;color:var(--link);background:none;border:1px solid var(--border-strong);border-radius:3px;padding:2px 7px;cursor:pointer;line-height:1.4}
.drtbtn:hover{color:var(--text-max);border-color:var(--link)}
.drtbtn[aria-expanded="true"]{border-color:var(--accent);color:var(--accent)}
.drt{margin-top:10px;border:1px solid var(--border-strong);border-radius:6px;padding:10px 12px;background:var(--inset);font-size:12.5px;color:var(--text);min-width:0;overflow-wrap:anywhere}
.drt-sub{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:4px}
.drt-dl{display:grid;grid-template-columns:minmax(0,170px) minmax(0,1fr);gap:2px 10px;margin:0 0 6px}
.drt-dl dt{color:var(--text-muted)}
.drt-dl dd{margin:0;color:var(--text-strong);font-family:var(--mono);font-size:11.5px}
.drt-t{border-top:1px solid var(--separator);padding-top:8px;margin-top:8px}
.drt-freeze{border:1px solid var(--accent-line);border-radius:5px;padding:8px 10px;background:var(--accent-bg)}
.drt-h{color:var(--text-strong);font-size:13px}
.drt-role{font-size:11px;color:var(--accent);margin-left:6px}
.drt-legal,.drt-note{color:var(--text-muted);font-size:11.5px;margin-top:2px}
.drt-fz{color:var(--accent-hover);margin:4px 0}
.drt-mono{font-family:var(--mono);font-size:11.5px;color:var(--text-strong)}
.drt-rec{margin:4px 0;padding-left:18px}
.drt-rec li{margin:2px 0}
.drt-basis{font-size:10.5px;padding:0 4px;border-radius:3px;border:1px solid var(--border-strong);color:var(--text-muted)}
.drt-basis.documented{color:var(--success);border-color:var(--success-line)}
.drt-to{margin:4px 0;color:var(--text-strong)}
.drt a{color:var(--link)}
.drt-copy{margin-top:6px}
.drt-disc{margin-top:10px;color:var(--text-muted);font-size:11px;border-top:1px solid var(--separator);padding-top:6px}
@media (max-width:520px){.drt-dl{grid-template-columns:minmax(0,1fr)}.drt-dl dd{margin-bottom:4px}}

/* v3.0: the Guide (/guide). */
main.doc{max-width:860px;gap:10px}
.doc h1{margin:4px 0 4px;font-size:clamp(24px,4vw,32px);color:var(--text-max);letter-spacing:-.01em}
.doc h2{margin:26px 0 8px;font-size:20px;color:var(--text-max);letter-spacing:-.005em;scroll-margin-top:12px}
.doc h3{margin:18px 0 6px;font-size:15.5px;color:var(--text-strong);scroll-margin-top:12px}
.doc section{scroll-margin-top:12px}
.doc p,.doc li{font-size:14.5px;line-height:1.65;color:var(--text)}
.doc b{color:var(--text-strong)}
.doc .lede{font-size:16px;color:var(--text)}
.doc ol,.doc ul{padding-left:22px}
.doc li{margin:6px 0}
.toc{display:flex;flex-wrap:wrap;gap:6px 8px;margin:6px 0 4px}
.toc a{font-size:13px;text-decoration:none;color:var(--text-strong);border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:4px 11px}
.toc a:hover{border-color:var(--accent-line);color:var(--accent)}
.diagram{margin:14px 0;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.diagram svg{display:block;width:100%;height:auto}
.diagram figcaption{font-size:12.5px;color:var(--text-muted);margin-top:6px;text-align:center}
.dg-box{fill:var(--inset);stroke:var(--border-strong);stroke-width:1.5}
.dg-mid{stroke:var(--accent-line)}
.dg-h{fill:var(--accent);font:700 15px var(--font)}
.dg-t{fill:var(--text-strong);font:600 14px var(--font)}
.dg-m{fill:var(--text-muted);font:500 12.5px var(--font)}
.dg-line{stroke:var(--accent);stroke-width:2.5;fill:none}
.dg-link{stroke:var(--link);stroke-width:1.5;stroke-dasharray:5 5;fill:none}
.dg-arrowhead{fill:var(--accent)}
details.notes{margin-top:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:10px 14px}
details.notes summary,details.qa summary{cursor:pointer;font-weight:700;color:var(--text-strong)}
details.qa{border-bottom:1px solid var(--separator);padding:10px 2px}
details.qa p{margin:8px 0 2px}
.covfilters{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:10px 0 12px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.covfl{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-weight:700}
label.chk{display:inline-flex;gap:6px;align-items:center;font-size:13px;letter-spacing:0;text-transform:none;color:var(--text-strong);min-height:32px}
label.chk input{width:16px;height:16px;accent-color:var(--accent)}
.covfilters input[type="search"]{flex:1 1 180px;min-width:0;background:var(--inset);color:var(--text-max);border:1px solid var(--border-strong);border-radius:6px;padding:6px 9px;font:inherit}
.covgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.covcard{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:10px 12px;min-width:0;overflow-wrap:anywhere}
.covcard h3{margin:0}
.covcard .pbadge{font-size:11px;margin:0}
.covcard p{font-size:13px;line-height:1.5;margin:6px 0 0}
.covsub{color:var(--text-muted)}
.covgap{color:var(--text)}
.cvs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:8px}
.cv{display:flex;justify-content:space-between;gap:6px;border-radius:5px;padding:3px 8px;font-size:12px;border:1px solid var(--border)}
.cvk{color:var(--text-muted);letter-spacing:.02em}
.cvv{font-weight:700}
.cv-yes{background:var(--success-bg)}.cv-yes .cvv{color:var(--success)}
.cv-partial{background:var(--pending-bg)}.cv-partial .cvv{color:var(--pending)}
.cv-no{background:var(--inset)}.cv-no .cvv{color:var(--text-muted)}
.whofor li{margin:8px 0}

/* v3.2 */
.doc .subtitle{margin:0 0 6px;font-size:16px;color:var(--text-muted);font-weight:600}
.chainprompt{flex-basis:100%;margin-top:4px;font-size:12.5px;color:var(--text-strong)}
.chainprompt .linkbtn{font-size:12.5px}
.notfound .chainprompt{margin-top:8px}

/* v3.6: the address tip, automatic resolution and one-hop leads. */
.addrtip{margin-top:6px;font-size:12.5px}
.autoline{margin-top:10px;font-size:13px;color:var(--text);border-left:3px solid var(--accent-line);padding:4px 10px;background:var(--accent-bg);border-radius:0 4px 4px 0}
.automore{margin-top:10px;border:1px solid var(--border);border-radius:6px;padding:8px 12px;background:var(--surface)}
.automore-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.automore ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.samekey{margin-top:12px;border:1px solid var(--border);border-radius:6px;padding:8px 12px;background:var(--surface)}
.samekey-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.samekey .sub{margin-top:6px;font-size:13px}
.samekey-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.samekey-list li{font-size:13px;overflow-wrap:anywhere}
.samekey .sk-chain{font-weight:600;margin-right:4px}
.automore li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:12.5px;min-width:0;overflow-wrap:anywhere}
.nf-addr .sub{font-size:12.5px;color:var(--text);margin-top:6px}
.hops{margin-top:16px}
.hop-h{font-size:15px;color:var(--text-strong);margin:0 0 8px}
.hop-card{border:1px dashed var(--warning);border-radius:8px;padding:8px;margin-top:10px}
.hop-caution{font-size:12.5px;font-weight:700;color:var(--warning);margin:0 4px 8px}

/* v3.6.6: the Guide page's watermark. The mark sits fixed and centred behind
   the content, very faint, in the version made for the theme; a background
   layer on a pseudo-element, so it takes no space, is never read out, and
   passes clicks and selection through. Not printed. The WebP files are
   used where image-set() with type() is supported; the PNGs otherwise. */
body.guide::before{content:"";position:fixed;left:50%;top:50%;width:min(60vmin,640px);height:min(60vmin,640px);transform:translate(-50%,-50%);pointer-events:none;z-index:-1;opacity:.03;
  background:url("/assets/brand/v2/bw-watermark-light-800.v1.png") center/contain no-repeat;
  background-image:image-set(url("/assets/brand/v2/bw-watermark-light-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-light-800.v1.png") type("image/png"))}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) body.guide::before{opacity:.035;
    background-image:url("/assets/brand/v2/bw-watermark-dark-800.v1.png");
    background-image:image-set(url("/assets/brand/v2/bw-watermark-dark-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-dark-800.v1.png") type("image/png"))}
}
:root[data-theme="dark"] body.guide::before{opacity:.035;
  background-image:url("/assets/brand/v2/bw-watermark-dark-800.v1.png");
  background-image:image-set(url("/assets/brand/v2/bw-watermark-dark-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-dark-800.v1.png") type("image/png"))}
@media (max-width:599px){body.guide::before{width:80vw;height:80vw}}
@media print{body.guide::before{display:none}}

/* v3.6.7: the tagline as a closing quote, centred between the hint cards and
   the footer (after the results when there are any), in the display face and
   the gold, over the faint wizard of the Guide page (the same files, theme
   variants and opacity). The wizard is this section's own background layer,
   so it moves with the quote, is clipped to the section, and never sits
   behind the search box, the cards or a result; the section is at least as
   tall as the wizard. Not printed (the report is built from data, not the
   page). */
.quote{position:relative;overflow:hidden;margin:0;padding:64px 16px;min-height:clamp(260px,46vw,440px);display:grid;place-items:center;text-align:center}
.quote::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.03;
  background:url("/assets/brand/v2/bw-watermark-light-800.v1.png") center/contain no-repeat;
  background-image:image-set(url("/assets/brand/v2/bw-watermark-light-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-light-800.v1.png") type("image/png"))}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .quote::before{opacity:.035;
    background-image:url("/assets/brand/v2/bw-watermark-dark-800.v1.png");
    background-image:image-set(url("/assets/brand/v2/bw-watermark-dark-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-dark-800.v1.png") type("image/png"))}
}
:root[data-theme="dark"] .quote::before{opacity:.035;
  background-image:url("/assets/brand/v2/bw-watermark-dark-800.v1.png");
  background-image:image-set(url("/assets/brand/v2/bw-watermark-dark-800.v1.webp") type("image/webp"),url("/assets/brand/v2/bw-watermark-dark-800.v1.png") type("image/png"))}
.quote p{position:relative;margin:0;max-width:52em;font-family:"BW Display",Georgia,"Times New Roman",serif;font-weight:400;font-synthesis:none;color:var(--accent);font-size:clamp(1.1rem,.85rem + 1.2vw,1.6rem);line-height:1.6;letter-spacing:.005em}
.quote p::before{content:"";display:block;width:56px;height:1px;margin:0 auto 22px;background:var(--accent);opacity:.6}
@media (min-width:800px){.quote p{white-space:nowrap}}
@media (max-width:599px){.quote{padding:40px 12px;min-height:clamp(220px,70vw,300px)}}
@media print{.quote{display:none}}

/* v3.6.8: the environment banner (assets/theme.js), shown anywhere but the
   production domain: fixed at the top, amber on dark text in both themes
   (about 9:1), the page moved down by its height. Not printed. */
.envbanner{position:fixed;top:0;left:0;right:0;z-index:1000;height:32px;display:flex;align-items:center;justify-content:center;padding:0 12px;background:#F5B301;color:#1A1300;font:700 13px/1.2 var(--font);letter-spacing:.03em;text-align:center;border-bottom:2px solid #8A5A00;box-sizing:border-box}
html.env-test body{padding-top:32px}
@media (max-width:420px){.envbanner{font-size:11.5px}}
@media print{.envbanner{display:none}html.env-test body{padding-top:0}}

/* (v3.7.7.6) The loading panel: the orb from the top of the wizard's staff
   rises, orbits and turns while a search runs. It appears after 400 ms, so a
   fast search never shows it; with reduced motion the coin pulses instead. */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.casting{display:flex;flex-direction:column;align-items:center;gap:4px;margin:12px 0;padding:18px 16px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface);text-align:center;opacity:0;animation:cast-in .2s ease-out .4s forwards}
.casting[hidden]{display:none}
@keyframes cast-in{to{opacity:1}}
.coin-stage{width:104px;height:96px;display:flex;align-items:center;justify-content:center;perspective:400px}
.coin-rise{animation:coin-rise .6s ease-out .4s both}
.coin-orbit{animation:coin-orbit 1.6s linear 1s infinite}
.coin{display:block;width:64px;height:64px;animation:coin-flip 1.6s linear 1s infinite;filter:drop-shadow(0 0 6px rgba(201,168,76,.35))}
@keyframes coin-rise{from{transform:translateY(28px)}to{transform:translateY(0)}}
@keyframes coin-orbit{from{transform:rotate(0deg) translateX(12px) rotate(0deg)}to{transform:rotate(360deg) translateX(12px) rotate(-360deg)}}
@keyframes coin-flip{from{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}
.casting.settle .coin-rise{animation:coin-settle .3s ease-in forwards}
.casting.settle .coin-orbit,.casting.settle .coin{animation:none}
@keyframes coin-settle{from{transform:translateY(0)}to{transform:translateY(28px)}}
.cast-main{margin:4px 0 0;font-weight:600;color:var(--text-strong)}
.cast-stage,.cast-time,.cast-long{margin:0;font-size:.85rem;color:var(--text-muted)}
.cast-stage:empty,.cast-time:empty{display:none}
.results.is-casting{opacity:.35;pointer-events:none}
/* (Reduced motion: the site turns every animation off; the panel still
   appears after 400 ms, in one step, and the raised coin pulses in opacity,
   with no orbit and no flip.) */
@media (prefers-reduced-motion: reduce){
  .casting{animation:cast-in .01s linear .4s forwards!important}
  .coin{animation:coin-pulse 1.6s ease-in-out infinite!important}
}
@keyframes coin-pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* (v3.7.7.13) The address screen: the swaps and nothing else. */
.asum .mono{overflow-wrap:anywhere;font-weight:600}
.aone .arow-card{margin-top:0}
.moreline{margin-top:8px;font-size:13px;color:var(--text)}
.moreline .mini{margin-left:6px}
.covline{margin-top:10px;font-size:13px;color:var(--text);border-left:3px solid var(--warning);padding:4px 10px;background:var(--warning-bg);border-radius:0 4px 4px 0;overflow-wrap:anywhere}
.covline .linkbtn{margin-left:4px}
.sdetail{margin-top:12px;border:1px solid var(--border);border-radius:6px;padding:8px 12px;background:var(--surface)}
.sdetail>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--text-strong)}
.sdetail[open]>summary{margin-bottom:8px}
.sdetail .lane{font-size:13px}
.skhit li{font-size:13px;overflow-wrap:anywhere}
.rowcast{display:flex;align-items:center;gap:8px;padding:8px 0;font-size:13px;color:var(--text)}
.rowcoin{animation:rowspin 1.6s linear infinite}
@keyframes rowspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.rowcoin{animation:none!important}}
/* (v3.7.7.14) Search detail is always there, quiet and collapsed. */
.sdetail{border-color:var(--border);background:transparent;padding:6px 10px}
.sdetail>summary{font-weight:500;color:var(--text);font-size:12.5px}
.sd-h{margin-top:10px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text)}
.asum.nf-addr .mini{margin-left:6px}
.sec.unread .sub{font-size:13px;overflow-wrap:anywhere}
/* (v3.7.9) Journeys: the summary line, each leg, how it is linked, where it stops, and leads. */
.jsum{margin:4px 0 12px;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.jleg{margin:0 0 14px}
.jleg-h{font-size:12px;font-weight:700;color:var(--text-muted);margin:0 0 4px;text-transform:uppercase;letter-spacing:.04em}
.jlinked{font-size:13px;margin:6px 0 0;color:var(--text);overflow-wrap:anywhere}
.jstop{font-size:13px;margin:6px 0 12px;color:var(--text-muted);overflow-wrap:anywhere}
.jleads{font-size:13px;margin:6px 0 12px;overflow-wrap:anywhere}
.jleads ul{margin:4px 0 0;padding-left:18px}
.jswap{padding:12px}
.jswap-h{margin:0 0 8px}
/* (v3.7.10.2) A received Bridgers transfer whose source is not looked up yet. */
.aleg.asrc-unknown{color:var(--text-muted);font-style:italic}
/* (v3.7.10.3) A raw LI.FI integrator tag: text a third party set, shown as data. */
.using code.tagraw{font-family:var(--mono, ui-monospace, monospace);font-weight:400;overflow-wrap:anywhere;word-break:break-all}
.placed{font-size:13px;margin-top:4px;color:var(--text)}

/* v3.8.7: a found swap is usable at once. The status line above the results
   while a deeper search runs (the loading coin and stage text move here);
   the line a card carries when the deeper search changed it. */
.deeper{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 10px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-size:13px;color:var(--text)}
.deeper[hidden]{display:none}
.deeper .dstage{color:var(--text-muted);font-size:12px}
.updated{margin:6px 0 0;padding:4px 8px;border-left:3px solid var(--warning);font-size:12.5px;color:var(--text);overflow-wrap:anywhere}

/* v3.8.15: searches still running are unmistakable. While any source is
   being checked the bar is pinned to the top of the screen, in the accent
   colour with its border, the loading coin turning, the words bold and a
   bar of sources done out of the total. When the search ends it turns to
   the finished style (or to the warning style, which stays, when a source
   could not be checked or was cut). Reduced motion: nothing moves; the
   colour and the words stay. */
.deeper.running{position:sticky;top:0;z-index:30;border:2px solid var(--accent-line);border-left-width:6px;background:var(--surface);box-shadow:0 2px 10px rgba(0,0,0,.18);font-size:14px;align-items:flex-start}
.deeper .dcoin{width:22px;height:22px;flex:0 0 auto;animation:dspin 1.4s linear infinite}
@keyframes dspin{to{transform:rotate(360deg)}}
.deeper .dbody{flex:1 1 220px;min-width:0}
.deeper .dtext b{color:var(--accent)}
.deeper .dbar{height:6px;margin-top:6px;border-radius:3px;background:var(--border);overflow:hidden}
.deeper .dbar span{display:block;height:100%;background:var(--accent);transition:width .4s ease}
.deeper .dlistbtn{margin-top:6px;padding:2px 8px;font-size:12px;border:1px solid var(--accent-line);border-radius:999px;background:transparent;color:var(--text);cursor:pointer}
.deeper .dlist{margin-top:4px;font-size:12.5px;color:var(--text);overflow-wrap:anywhere}
.deeper.running:hover .dlist{display:block}
.deeper .dlist[hidden]{display:none}
.deeper.running:hover .dlist[hidden]{display:block}
.deeper.done{border:2px solid var(--accent-line);font-weight:600}
.deeper.partial{border:2px solid var(--warning);border-left-width:6px;font-weight:600}
@media (prefers-reduced-motion: reduce){.deeper .dcoin{animation:none}.deeper .dbar span{transition:none}}
/* The pinned bar never hides a card's buttons when one is brought into view. */
.aactions button,.btnrow button{scroll-margin-top:96px}
/* v3.8.15: the card's small Updated tag, and the short count of a cut search. */
.updtag{display:inline-block;margin-left:4px;padding:1px 7px;border:1px solid var(--warning);border-radius:999px;font-size:11px;color:var(--text);vertical-align:middle}
.cutline{margin:8px 0 0;font-size:13px;color:var(--text)}
/* v3.8.17.0: the card's message tag, and the Message blocks in forensic detail (raw content in full, scrolling). */
.msgtag{display:inline-block;margin-left:4px;padding:1px 7px;border:1px solid var(--accent);border-radius:999px;font-size:11px;color:var(--text);vertical-align:middle}
.msgraw-h{margin-top:8px;font-size:12px;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.msgraw{max-height:320px;overflow:auto;background:var(--console);border:1px solid var(--border);border-radius:4px;padding:8px;font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;margin:4px 0 0}
.msgsub{margin-top:8px;font-size:12px;font-weight:600;color:var(--text)}
.msgclues ul,.msgdecoded ul{margin:4px 0 0;padding-left:18px;font-size:12px;overflow-wrap:anywhere}

/* (v3.8.16) The CONTINUE pop-up: a panel over a dimmed screen. */
.popwrap{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}
.popdim{position:absolute;inset:0;background:rgba(8,15,24,.55)}
.pop{position:relative;box-sizing:border-box;width:100%;max-width:460px;max-height:calc(100vh - 32px);overflow-y:auto;background:var(--surface);color:var(--text);border:1px solid var(--accent-line);border-radius:10px;padding:20px;box-shadow:0 12px 40px rgba(0,0,0,.35);animation:popin .16s ease-out;overflow-wrap:anywhere}
.pop h2{margin:0 0 10px;font-size:1.05rem;color:var(--text-strong)}
.pop p{margin:0 0 10px;line-height:1.45}
.pop .popwhere{font-weight:600;color:var(--text-strong);margin-top:4px}
.popbtns{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.popbtns button{flex:1 1 140px;min-height:40px;border-radius:6px;border:1px solid var(--accent-line);background:var(--inset);color:var(--text-strong);font:inherit;cursor:pointer}
.popbtns button.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.popbtns button:disabled{opacity:.75;cursor:default}
.popbtns button:focus-visible{outline:3px solid var(--link);outline-offset:2px}
.panel .srcnr{color:var(--text-muted)}
@keyframes popin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pop{animation:none}}
