/* Inter used to arrive as four files. They were byte-identical - the same weight-400 subset under
   four names - so the browser downloaded 100 KB to draw one face and faked every bold from it.
   One variable file carries the real 400 to 700 in 48 KB, and the headings are drawn, not slanted
   and thickened by the renderer. */
@font-face{font-family:'Inter';font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/inter-var-latin.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/plexmono-400-latin.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/plexmono-500-latin.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/plexmono-600-latin.woff2) format('woff2')}
:root{--navy:#0a2540;--navy-mid:#143659;--navy-light:#1a4775;--orange:#fd7e14;--orange-soft:#fff5e9;--text:#243240;--muted:#6c757d;--line:#e9ecef;--line-soft:#f1f3f5;--bg:#f7f8fa;--ground:#e7ecf2;--white:#fff;--green:#1e7a3a;--red:#b04632;--grad:linear-gradient(180deg,#0a2540 0%,#143659 60%,#1a4775 100%);--shadow:0 6px 18px rgba(10,37,64,.10);--r-sm:6px;--r-md:10px;--r-lg:14px;--header:60px;--side:220px}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:15.2px;line-height:1.45;-webkit-font-smoothing:antialiased}
a{color:var(--navy);text-decoration:none}a:hover{color:var(--orange)}
.mono{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
.b{font-weight:600}.muted{color:var(--muted)}.small{font-size:12.5px}.na{color:#adb5bd}.na.big{font-size:28px}
.top{position:sticky;top:0;z-index:20;height:var(--header);background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px 0 18px}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;letter-spacing:-.02em;color:var(--navy);width:calc(var(--side) - 18px)}.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--orange)}.brand-accent{color:var(--orange)}
.built{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);white-space:nowrap}
.crumb{display:flex;align-items:center;gap:10px;flex:1}.crumb-app{font-weight:600;font-size:16px}.crumb-sep{color:var(--line)}.crumb-page{color:var(--muted)}
.top-right{display:flex;align-items:center;gap:12px}
.beta{font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#b35900;background:var(--orange-soft);border:1px solid #ffd9b3;border-radius:999px;padding:4px 10px}
.frame{display:flex;min-height:calc(100vh - var(--header))}
.main{flex:1;min-width:0;padding:22px 28px 40px;display:flex;flex-direction:column;gap:18px}
.foot{padding:16px 28px 28px;font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);background:var(--white)}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}h1{margin:0 0 4px;font-size:22.4px;font-weight:600;letter-spacing:-.01em}h2{font-size:17px;font-weight:600;margin:22px 0 8px}h3{font-size:14.5px;font-weight:600;margin:16px 0 8px}.lede{font-size:14px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ident{display:flex;gap:14px;align-items:flex-start}.avatar{width:44px;height:44px;border-radius:10px;background:var(--navy);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}
.actions{display:flex;align-items:center;gap:10px}.btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:8px;background:var(--white);border:1px solid var(--line);font:inherit;font-size:14px;font-weight:500;color:var(--text);cursor:pointer}.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}.btn.on{background:var(--orange-soft);border-color:#ffd9b3}
.search{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--white);width:260px}.search input{border:0;outline:0;font:inherit;font-size:14px;width:100%;background:transparent}
.filters{display:flex;gap:8px;flex-wrap:wrap}.filter{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 13px;border-radius:999px;font:inherit;font-size:13px;font-weight:500;background:var(--white);color:var(--text);border:1px solid var(--line);cursor:pointer}.filter.active{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:600}
.card{background:var(--white);border:1px solid #dde4ec;border-radius:12px;box-shadow:0 1px 2px rgba(10,37,64,.05),0 8px 22px rgba(10,37,64,.07);overflow:hidden}.card.pad{padding:18px 20px}.table-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;padding:9px 8px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.board thead{background:var(--grad);position:sticky;top:0}.board th{color:var(--orange)}.board th[data-sort]{cursor:pointer}.board th.num,.board td.num{text-align:right}
.board tbody tr{border-bottom:1px solid var(--line-soft)}.board tbody tr:nth-child(even){background:#fbfcfd}.board tbody tr:hover{background:var(--orange-soft)}.board td{padding:8px;vertical-align:middle}
.col-name{padding-left:10px;min-width:200px}.col-name a{display:inline-flex;flex-direction:column;vertical-align:middle}.col-name .nm{font-weight:600}.col-name .sub{font-size:12px;color:var(--muted)}
.watch{background:none;border:0;padding:4px;margin-right:6px;cursor:pointer;vertical-align:middle}.watch.on svg{stroke:var(--orange);fill:var(--orange)}
.col-score{white-space:nowrap}.col-score .score{font-weight:600;font-size:15px;display:inline-block;width:24px;text-align:right;margin-right:8px}.ribbon{vertical-align:middle}
.band{display:inline-flex;align-items:center;justify-content:center;width:26px;height:22px;border-radius:6px;font-weight:600;font-size:12.5px}
.agencies{display:flex;gap:4px;flex-wrap:wrap;max-width:250px}.agency{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 6px 0 4px;border-radius:6px;background:var(--white);border:1px solid var(--line);font-size:11.5px;white-space:nowrap}.agency-letter{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:3px;background:var(--navy);color:#fff;font-size:10px;font-weight:700}
.mkt{display:inline-flex;width:26px;height:22px;align-items:center;justify-content:center;border-radius:6px;background:var(--line-soft);color:#adb5bd;font-size:12px}.mkt-up{background:#e7f5ec}.mkt-down{background:#f8e8e5}
.age{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--muted);white-space:nowrap}.age-late{color:#b35900;background:var(--orange-soft);padding:2px 6px;border-radius:4px}.age-none{color:#adb5bd}
.table-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);flex-wrap:wrap}.legend{display:inline-flex;align-items:center;gap:6px}
.chip{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--white);color:var(--muted);border:1px solid var(--line)}.chip-orange{background:var(--orange);color:#fff;border-color:var(--orange)}.chip-warn{background:var(--orange-soft);color:#b35900;border-color:#ffd9b3}.chip-good{background:#e7f5ec;color:var(--green);border-color:#cfe9d8}.chip-bad{background:#f8e8e5;color:var(--red);border-color:#f0cfc8}.chip-navy{background:var(--navy);color:#fff;border-color:var(--navy)}
.grid-12{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;align-items:stretch}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.score-card{background:var(--grad);border-radius:12px;box-shadow:var(--shadow);color:#fff;padding:18px 20px;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:12px}.score-card::after{content:"";position:absolute;top:-40%;right:-25%;width:75%;height:160%;background:radial-gradient(closest-side,rgba(253,126,20,.18) 0%,transparent 100%);pointer-events:none}.score-card>*{position:relative;z-index:1}
.score-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.score-band{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto}.tile-label{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--navy)}.tile-label.light{color:rgba(255,255,255,.72)}
.score-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:center}
.score-fig{min-width:0}
.score-row{display:flex;align-items:flex-end;gap:14px}.huge{font-size:56px;font-weight:700;line-height:.95;color:var(--orange);letter-spacing:-.02em}.huge.muted{color:rgba(255,255,255,.5)}.score-meta{padding-bottom:6px;font-size:13px;color:rgba(255,255,255,.78);line-height:1.4}
.pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px 12px;border-left:1px solid rgba(255,255,255,.14);padding-left:16px}.pillar{display:flex;flex-direction:column;font-size:11px;color:rgba(255,255,255,.7)}.pillar .mono{font-size:15px;color:#fff;font-weight:600}.pillar .pw{font-size:10.5px;color:rgba(255,255,255,.5)}.pillar i{display:block;height:3px;background:rgba(255,255,255,.14);border-radius:2px;margin:3px 0 2px}.pillar i b{display:block;height:3px;background:var(--orange);border-radius:2px}.pillar-na .mono{color:rgba(255,255,255,.35)}.pillar .pl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.score-note{font-size:12.5px;color:rgba(255,255,255,.8)}.score-note a{color:#fff;text-decoration:underline}
.tiles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.tiles .tile{padding:12px 13px 10px;gap:6px}
.tiles .tile-head{align-items:flex-start;min-height:2.3em}
.tiles .tile-label{line-height:1.2}
.tiles .big{font-size:26px}
.tiles .tile-body svg{flex:0 1 auto;min-width:0}
.tiles .tile-foot{font-size:11px;gap:6px;white-space:nowrap}
@media(max-width:1250px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.tile{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:14px 16px 12px;display:flex;flex-direction:column;gap:8px;min-width:0}.tile-empty{justify-content:center;color:var(--muted)}.tile-head{display:flex;justify-content:space-between;align-items:center}.tile-flags{display:inline-flex;align-items:center;gap:6px}.tile-flags .chip{height:18px;font-size:10px;padding:0 6px}.tile-body{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.big{font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1}.unit{font-size:14px;color:var(--muted);margin-left:2px}.tile-foot{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}
.tabs-card{margin-top:0}.tabs{display:flex;padding:0 18px;border-bottom:1px solid var(--line);overflow-x:auto}.tab{padding:12px 4px;margin-right:22px;font:inherit;font-size:14px;font-weight:500;color:var(--muted);background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}.tab.active{color:var(--navy);font-weight:600;border-bottom-color:var(--orange)}
.panel{display:none;padding:18px}.panel.active{display:block}.chart-block{min-width:0}.chart-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:13.5px;font-weight:600}.chart-head .muted{font-weight:400;font-size:12px}.chart .axis{font-family:"IBM Plex Mono",monospace;font-size:11px;fill:var(--muted)}
.empty{padding:22px;color:var(--muted);font-size:14px;text-align:center;background:var(--line-soft);border-radius:8px}
table.plain th{color:var(--muted);border-bottom:1px solid var(--line)}table.plain td{padding:8px 10px;border-bottom:1px solid var(--line-soft);vertical-align:top}.note{font-size:12px;color:var(--muted);margin-top:8px}
.kv{display:flex;flex-direction:column;gap:10px}.kv>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:14px}.kv>div>span:first-child{color:var(--muted)}
.doc,.event{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.doc>div,.event>div{flex:1;min-width:0}.event>.mono{width:100px;flex:0 0 100px}
.bank-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;background:var(--white);border:1px solid var(--line);border-radius:12px;color:var(--text)}.bank-card:hover{box-shadow:var(--shadow);color:var(--text)}.bank-card .nm{font-weight:600}.bank-card .sub{font-size:12px;color:var(--muted)}.bank-card .row{display:flex;align-items:center;gap:8px;margin-top:4px}
.prose p,.prose li{max-width:76ch}.group{margin-bottom:8px}
@media(max-width:1000px){.brand{width:auto}.built{display:none}.grid-12,.grid-2{grid-template-columns:1fr}.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.main{padding:16px}.pillars{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.tile{padding:10px 12px 10px}.big{font-size:22px}.pillars{grid-template-columns:repeat(3,minmax(0,1fr))}.sm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.crumb-app{display:none}.search{width:100%}}
@media print{.top,.foot,.actions,.filters,.tabs{display:none!important}.frame{display:block}.main{padding:0}.panel{display:block!important;page-break-inside:avoid}.card{box-shadow:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.bm-strip{margin-bottom:14px}.bm-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.bm-head h3{margin:0}.bm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:10px}.bm{border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0}.bm-label{font-size:12px;color:var(--muted);font-weight:600}.bm-val{display:flex;align-items:baseline;gap:6px;margin:4px 0}.big-sm{font-size:22px;font-weight:600;letter-spacing:-.02em}
.event .chip{margin-left:4px}

td.num sup{font-size:9px;margin-left:2px}
/* My policy */
.pol-form{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin:10px 0 16px}.pol-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.pol-form input,.pol-form select{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:14px;background:var(--white);color:var(--text)}.pol-form input{min-width:320px}.pol-form input.err{border-color:var(--red)}
.pol-summary{margin:6px 0 12px;font-size:13px}table.pol td{font-size:13px}table.pol td:nth-child(9){min-width:280px}table.pol td:nth-child(1){min-width:150px}table.pol th{white-space:nowrap}
.band-A,.band-B,.band-C{color:#fff}.band-A{background:#0a2540}.band-B{background:#3f5f85}.band-C{background:#7d93ad}.band-D{background:#a9b8c9}.band-E{background:#c9d3de}
.ll-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin:8px 0 14px}.ll{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--white);display:flex;flex-direction:column;gap:4px}
.pol-share{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:14px}.pol-share input{flex:1;min-width:240px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:12px;color:var(--muted)}
.pol-shared[hidden]{display:none}.pol-shared{background:var(--orange-soft);border:1px solid #ffd9b3;border-radius:8px;padding:10px 12px;font-size:13px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
/* Ratings */
.rtiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 16px}.rtile{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}.rtile-n{font-size:26px;font-weight:600;line-height:1.1}.rtile-l{font-size:12px;color:var(--muted);margin-top:4px}
.racts{display:flex;flex-direction:column;gap:6px}.ract{display:grid;grid-template-columns:90px 160px 1fr auto;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
table.ratings td{font-size:13px;vertical-align:top}table.ratings .band{display:inline-block;min-width:46px;text-align:center;padding:2px 8px;border-radius:999px;font-weight:600;font-size:12px}
@media (max-width:800px){.ract{grid-template-columns:74px 1fr;grid-auto-rows:auto;gap:2px 8px;font-size:12.5px;padding:7px 0}.ract .chip{justify-self:start}}
.rgrid{margin-bottom:16px;grid-template-columns:3fr 2fr}.ladder{display:flex;flex-direction:column;gap:5px}.lrow{display:grid;grid-template-columns:52px 90px 28px 1fr;align-items:center;gap:8px;min-height:24px}
.lgrade{color:#fff;font-size:11px;font-weight:600;text-align:center;border-radius:6px;padding:3px 0}.lbar{height:8px;border-radius:4px;opacity:.85}.lcount{font-size:11px;text-align:right}
.lchips{display:flex;flex-wrap:wrap;gap:4px}.lchip{font-size:11px;font-weight:500;border:1px solid;border-radius:999px;padding:1px 7px;background:var(--white);white-space:nowrap}.lchip:hover{background:var(--line-soft)}
.dist{display:flex;flex-direction:column;gap:10px;margin:6px 0 10px}.drow{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:center}.dlabel{font-size:13px;font-weight:600}.dbar{display:flex;height:18px;border-radius:6px;overflow:hidden;background:var(--line-soft)}.dseg{height:100%}
.dlegend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.dlegend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:middle}
@media (max-width:900px){.rgrid{grid-template-columns:1fr}}
.tile-ratings{justify-content:space-between}
.tile-ratings .tile-foot{flex-wrap:wrap}
.tile-ratings .rcells{flex:1 1 auto;align-content:center}
.rcells{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.rcell{border-left:3px solid var(--line);padding-left:10px}.ragency{font-size:11.5px;font-weight:600;color:var(--muted);letter-spacing:.04em}.rlt .big{font-size:24px}.tile-ratings .band{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600}
table.coverage td.cov{text-align:center;white-space:nowrap;padding:6px 6px}table.coverage td.cov b{display:block;font-family:var(--mono,ui-monospace,monospace);font-size:12px}table.coverage td.cov span{font-size:11px;color:var(--muted)}
table.coverage td.cov0{color:#c4ccd6}table.coverage td.cov1{background:#f3f6fa}table.coverage td.cov2{background:#dfe7f1}table.coverage td.cov3{background:#c3d2e4}
table.coverage th{white-space:nowrap}table.coverage td{vertical-align:middle}

.band-A{background:#0a2540;color:#fff}.band-B{background:#3f5f85;color:#fff}.band-C{background:#7d93ad;color:#fff}.band-D{background:#a9b8c9;color:#243240}.band-E{background:#c9d3de;color:#243240}.band-x{background:#dfe5eb;color:#243240}
.nv-card{padding:14px 16px}.nv-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.nv-tools .search{width:320px}.nv-sort select{font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--white);margin-left:4px}.nv-count{margin-left:auto}
.nv-facets{display:flex;flex-direction:column;gap:6px;padding-bottom:10px;border-bottom:1px solid var(--line)}.nv-facets .filter{height:28px;padding:0 10px;font-size:12px}.nv-facets .filter .cnt{margin-left:6px;opacity:.6;font-weight:400;font-variant-numeric:tabular-nums}.nv-facets .filter:disabled{opacity:.35;cursor:default}
.nv-head,.nv-row{display:grid;grid-template-columns:28px minmax(200px,1fr) 44px 52px 110px 40px 44px 96px;align-items:center;gap:8px}
.nv-head{padding:8px 6px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.nv-row{padding:7px 6px;border-top:1px solid var(--line-soft)}.nv-row:hover{background:var(--bg)}.nv-row .nm{font-weight:600;display:block}.nv-row .sub{font-size:12px;color:var(--muted)}.nv-name{color:var(--text)}
.nv-child .nv-name{padding-left:18px;position:relative}.nv-child .nv-name:before{content:"";position:absolute;left:6px;top:4px;bottom:4px;border-left:2px solid var(--line)}.nv-flat .nv-child .nv-name,.nv-orphan .nv-name{padding-left:0}.nv-flat .nv-child .nv-name:before,.nv-orphan .nv-name:before{display:none}
.nv-score{text-align:right}.nv-news{text-align:right;color:var(--muted)}.nv-row .watch{background:none;border:0;cursor:pointer;padding:2px}
@media(max-width:800px){.nv-head{display:none}.nv-row{grid-template-columns:24px 1fr 40px 44px;grid-auto-rows:auto}.nv-rating,.nv-mkt,.nv-news,.nv-asof{display:none}.nv-tools .search{width:100%}}
.cp-card{padding:14px 16px}.cp-tools{display:flex;flex-direction:column;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line)}.cp-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.cp-row select{font:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--white);margin-left:4px}
.cp-views{margin:0;border:0;gap:2px}.cp-views .tab{padding:6px 10px;font-size:13px}.cp-add{position:relative;width:240px}.cp-sugg{position:absolute;top:38px;left:0;right:0;background:var(--white);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:5;padding:4px}.cp-sugg button{display:block;width:100%;text-align:left;background:none;border:0;padding:6px 8px;font:inherit;cursor:pointer;border-radius:6px}.cp-sugg button:hover{background:var(--bg)}
.cp-body{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;padding-top:14px}.cp-chart{overflow-x:auto}.cp-chart svg text{pointer-events:none}.cp-chart svg a text{pointer-events:auto}.cp-side{display:flex;flex-direction:column;gap:10px}.cp-side .rtile{padding:10px 12px}.cp-side .rtile-n{font-size:20px}
.cp-mine h4{margin:0 0 8px;font-size:13px}.cp-mine>div{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:baseline;padding:4px 0;border-top:1px solid var(--line-soft);font-size:13px}.cp-mine .good{color:var(--green)}.cp-mine .bad{color:var(--red)}
.cp-line:hover{stroke:#0a2540!important;stroke-width:2.6!important;opacity:1!important}
@media(max-width:900px){.cp-body{grid-template-columns:1fr}}
.filter .cnt{margin-left:6px;opacity:.6;font-weight:400;font-variant-numeric:tabular-nums}

.sm-intro{padding:0 0 10px}
/* A section heading is a cell in the same flow as the charts, so a group of two does not cost a
   whole row of white space. */
/* The section label sits beside its charts, not above them: no group costs a whole row to name
   itself, and no heading floats loose in the middle of one. */
.sm-flow{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:start}
.sm-block{display:grid;grid-template-columns:104px minmax(0,1fr);gap:0 12px;align-items:start;
          flex:0 1 calc(var(--n,1) * 236px + 116px);min-width:min(100%,340px);max-width:100%}
.sm-sec{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text);
        padding:2px 0 4px 9px;border-left:2px solid var(--orange);align-self:start;line-height:1.35}
.sm-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:10px}
@media(max-width:760px){
  .sm-block{grid-template-columns:1fr;gap:0;min-width:100%}
  .sm-sec{padding:0 0 6px 8px}
  .sm-cards{padding-bottom:6px}
}
.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.sm{display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--white);border:1px solid var(--line);border-radius:10px;padding:10px 12px 6px;font:inherit;color:var(--text);cursor:pointer;min-width:0;transition:box-shadow .15s,border-color .15s}
.sm:hover,.sm:focus-visible{box-shadow:var(--shadow);border-color:#b9c6d6;outline:none}.sm-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.sm-label{font-size:12.5px;font-weight:600}.sm-val{font-size:18px;font-weight:600}.sm-val small{font-size:11px;font-weight:400;color:var(--muted);margin-left:1px}
.sm-sub{display:flex;flex-wrap:wrap;gap:3px 6px;align-items:baseline;font-size:11px;min-height:2.1em}.delta{font-family:var(--mono,ui-monospace,monospace);font-weight:600;padding:1px 6px;border-radius:999px;font-size:11px}.delta.up{background:#e6f4ea;color:var(--green)}.delta.down{background:#fbe9e7;color:var(--red)}.delta.flat{background:var(--line-soft);color:var(--muted)}
.chart-sm{height:78px;width:100%;margin-top:4px}.chart-sm .axis{font-size:10px;fill:var(--muted)}
dialog.chart-dialog{border:0;border-radius:14px;padding:0;width:min(820px,94vw);max-height:88vh;overflow:auto;box-shadow:0 24px 60px rgba(10,37,64,.28)}dialog.chart-dialog::backdrop{background:rgba(10,37,64,.45)}
.cd-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px 6px}.cd-head h3{margin:0;font-size:17px}.cd-head .small{margin-top:2px}.cd-close{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--muted);padding:4px 8px}.cd-body{padding:6px 20px 18px}.cd-body svg{width:100%;height:auto}

.score-note{margin-top:auto}
.pol-row{display:grid;grid-template-columns:minmax(150px,1.4fr) 92px 84px minmax(150px,1.3fr) 190px 120px minmax(140px,1fr) 28px;gap:10px;align-items:start}
.pol-row{padding:12px 8px;border-bottom:1px solid var(--line-soft);font-size:13px}.pol-row:hover{background:var(--bg)}.pr-kpi{display:flex;gap:12px;flex-wrap:wrap}.pr-kpi>span{display:flex;flex-direction:column}.pr-kpi i{font-style:normal;font-size:10.5px;color:var(--muted)}.pr-kpi .small{flex-basis:100%}
.pr-flags .chip{margin:0 4px 4px 0}.pol-rm{background:none;border:0;font-size:18px;color:var(--muted);cursor:pointer;line-height:1}.pol-rm:hover{color:var(--red)}
.pr-recent{grid-column:1/-1;padding:6px 0 0 0;display:flex;flex-wrap:wrap;gap:4px 18px;color:var(--text)}.pr-recent>div{display:flex;gap:6px;align-items:center}
@media(max-width:1100px){.pol-row{grid-template-columns:1fr 1fr 1fr;grid-auto-rows:auto}.pr-name{grid-column:1/3}.pol-row .pol-rm{grid-column:3;justify-self:end}.pr-recent{grid-column:1/-1}}
.ev-toolbar{align-items:center;margin-bottom:12px}.ev-toolbar .small{margin-left:auto}
.lead{font-size:16px;font-weight:600;line-height:1.45;margin:0 0 12px}.brief-bm{margin:0}.brief-bm .rtile-n small{font-size:12px;font-weight:400;color:var(--muted);margin-left:2px}.brief-grid{margin-top:16px}.brief-grid .card h3{margin-top:0}.brief-grid .event{padding:8px 0}
.bad{color:var(--red)}.good{color:var(--green)}
table.board thead th,table.coverage thead th,table.ratings thead th{position:sticky;top:0;background:var(--navy);z-index:2}
.crumb-page{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw}
@media(max-width:700px){table.board .col-lcr,table.board th:nth-child(6),table.board td:nth-child(6),table.board th:nth-child(7),table.board td:nth-child(7){display:none}}
.pr-flags{min-width:0}.pr-flags .chip{white-space:normal;height:auto;line-height:1.3;padding:3px 8px}
@media(max-width:700px){.bm-grid{display:flex;overflow-x:auto;gap:10px;padding-bottom:6px;scroll-snap-type:x mandatory}.bm-grid>*{flex:0 0 150px;scroll-snap-align:start}}
:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.lede{max-width:80ch}
.card h3{font-size:15px}.card h3 .muted{font-weight:400}

.today{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:14px}.tcard{display:flex;flex-direction:column;gap:4px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:var(--text);box-shadow:var(--shadow);min-width:0}.tcard:hover{border-color:#b9c6d6;color:var(--text)}
.tcard .tl{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.tcard .tv{font-size:26px;font-weight:600;line-height:1.1}.tcard .tv small{font-size:12px;font-weight:400;color:var(--muted)}
.tbar{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:1px;margin-top:4px}.tbar i{display:block}.tlegend{display:flex;gap:10px;flex-wrap:wrap;color:var(--muted)}.tlegend b{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle}
.score-prov{color:var(--muted);font-weight:500}
@media(max-width:1100px){.today{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:700px){.today{display:flex;overflow-x:auto;gap:10px;scroll-snap-type:x mandatory}.tcard{flex:0 0 200px;scroll-snap-align:start}}

.wbar{display:flex;height:34px;border-radius:8px;overflow:hidden;margin:10px 0 8px;font-size:12px;font-weight:600;color:#fff}.wbar span{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;padding:0 4px}.w-rating{background:var(--orange)}.w-capital{background:#0a2540}.w-liquidity{background:#1a4775}.w-stability{background:#3f5f85}.w-asset_quality{background:#7d93ad}.w-profitability{background:#a9b8c9;color:#243240}
.bandscale{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:0 0 14px;font-size:11px;font-weight:600}.bandscale span{display:flex;align-items:center;justify-content:center;white-space:nowrap}
.ev-day{padding:14px 0 4px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.ev-day[hidden]{display:none}.ev-toolbar .search{width:240px}

.ev-toolbar{flex-wrap:wrap;gap:10px}.ev-toolbar .small{flex-basis:100%;margin-left:0}.wbar span{font-size:11px}
.event[hidden],.doc[hidden],.nv-row[hidden],.pol-row[hidden]{display:none!important}.ev-toolbar .small{width:100%}

.cp-chart{position:relative}.cp-tip{position:absolute;background:#0a2540;color:#fff;font-size:12px;padding:4px 8px;border-radius:6px;pointer-events:none;white-space:nowrap;box-shadow:var(--shadow);z-index:3}.cp-tip .muted{color:rgba(255,255,255,.7)}
.cp-line.hot{stroke:#0a2540!important;stroke-width:2.8!important;opacity:1!important}.cp-mine>div.hot{background:var(--orange-soft)}.cp-line{cursor:pointer;stroke-linecap:round}

.main>*{width:100%;max-width:1520px;margin-left:auto;margin-right:auto}
.cp-body{grid-template-columns:minmax(0,1fr) 300px}.cp-chart{overflow:visible}.cp-chart svg text{pointer-events:none}.cp-chart .cp-line{cursor:pointer}.cp-line.hot{stroke:#0a2540!important;stroke-width:2.2!important}
.cp-tip{position:absolute;background:#0a2540;color:#fff;font-size:12px;padding:6px 10px;border-radius:8px;pointer-events:none;box-shadow:var(--shadow);z-index:3;min-width:150px}.cp-tip>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:1px 0}.cp-tip .tt-h{font-weight:600;border-bottom:1px solid rgba(255,255,255,.2);margin-bottom:3px;padding-bottom:3px}.cp-tip .tt-med{color:rgba(255,255,255,.75);border-top:1px solid rgba(255,255,255,.2);margin-top:3px;padding-top:3px}.cp-tip .muted{color:rgba(255,255,255,.7)}.cp-tip .sw{margin-right:6px}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:middle;flex:none}
.cp-legend h4{margin:0 0 6px;font-size:13px}.cp-legend .lg{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 8px;align-items:center;padding:4px 0;border-top:1px solid var(--line-soft);font-size:13px}.cp-legend .lg .small{grid-column:2/4;padding-left:0}.cp-legend .lg.on .nm a{font-weight:600}.cp-legend .pin{background:none;border:0;padding:2px;cursor:pointer;line-height:0}.cp-legend .good{color:var(--green)}.cp-legend .bad{color:var(--red)}
.cp-hint{margin:0 0 8px}
@media(max-width:1000px){.cp-body{grid-template-columns:1fr}}
.dash{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.panel-c{background:var(--white);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);min-width:0;display:flex;flex-direction:column}.panel-c.wide{grid-column:1/-1}
.pc-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 6px}.pc-head h3{margin:0;font-size:14px}.pc-x{background:none;border:1px solid var(--line);border-radius:6px;width:26px;height:26px;cursor:pointer;color:var(--muted);font-size:13px}.pc-x:hover{color:var(--text);border-color:#b9c6d6}
.pc-body{padding:4px 12px 12px;position:relative;min-height:220px}#c-rank{max-height:520px;overflow-y:auto}.panel-c.wide #c-rank{max-height:none}
.cp-pins{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:10px;border-top:1px solid var(--line-soft);font-size:13px}.pinchip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--white)}.pinchip.hot,.pinchip:hover{border-color:var(--c,#b9c6d6);box-shadow:0 0 0 2px color-mix(in srgb,var(--c,#0a2540) 18%,transparent)}.pinchip .pin{background:none;border:0;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.pinchip .pin:hover{color:var(--red)}
.cp-table td,.cp-table th{font-size:13px;padding:6px 8px;white-space:nowrap}.cp-table th{cursor:pointer;user-select:none}.cp-table th.sorted{color:var(--text)}.cp-table tr.on td:first-child{box-shadow:inset 3px 0 0 var(--c)}.cp-table tr.hot td{background:var(--orange-soft)}.cp-table .pin{background:none;border:0;padding:2px;cursor:pointer;line-height:0;vertical-align:middle}
.cp-line.hot{stroke:#0a2540!important;stroke-width:2.6!important;opacity:1!important}.cp-bar.hot{fill-opacity:1!important;stroke:#0a2540;stroke-width:1.5}.cp-dot.hot{fill-opacity:1!important;stroke:#0a2540!important;stroke-width:2!important}.cp-lbl.hot{fill:#0a2540!important;font-weight:700}
@media(max-width:1100px){.dash{grid-template-columns:1fr}}

.rtiles-f .rtile{text-align:left;font:inherit;cursor:pointer;border:1px solid var(--line)}.rtiles-f .rtile.active{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}a.rtile{color:var(--text)}
.rgrid-card{padding:14px 16px;margin-top:2px}.rg-tools{margin-bottom:8px}.rg-tools .search{width:220px;margin-left:auto}
.rg-hist{display:flex;align-items:flex-end;gap:6px;padding:8px 0 12px;border-bottom:1px solid var(--line);margin-bottom:6px;flex-wrap:wrap}.rg-hist>.small{align-self:center;margin-right:6px}
.gbar{display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:0;padding:2px 3px;cursor:pointer;font:inherit;border-radius:6px;min-width:34px}.gbar i{display:block;width:26px;border-radius:3px 3px 0 0}.gbar .glabel{font-size:10.5px;color:var(--muted)}.gbar .gcount{font-size:11px;color:var(--text)}.gbar:hover,.gbar.active{background:var(--bg)}.gbar.active .glabel{color:var(--text);font-weight:700}.gbar:disabled{opacity:.35;cursor:default}
table.rgrid td,table.rgrid th{padding:7px 8px}table.rgrid td.rc{background:color-mix(in srgb,var(--g) 17%,#fff);border-left:3px solid var(--g);min-width:88px}table.rgrid td.rc-na{color:#c4ccd6;background:none;border-left:3px solid transparent;text-align:center}
.rc-lt{font-weight:700;font-size:14px}.rc-sub{display:block;font-size:11px;line-height:1.3;margin-top:1px}.rc-typ{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 3px;margin-left:3px;vertical-align:middle}.rc-comp .band{font-size:12px}
.chip-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--orange);vertical-align:middle;margin-right:4px}
.rgrid2{margin-top:16px}.rgrid2 .card h3{margin-top:0}

.unscored{display:inline-block;line-height:1.25;color:var(--muted);font-size:11.5px}

.digest{margin-bottom:14px}.digest .brief-grid{margin-top:12px}

/* Cross-document view transitions: navigation cross-fades instead of flashing white (Chrome/Edge; others navigate as before) */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.16s}
.top{view-transition-name:chrome}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}}
/* Long tables: the browser skips layout and paint for rows that are off screen */
table.board tbody tr,table.coverage tbody tr,table.rgrid tbody tr,.nv-row,#events .event{content-visibility:auto}
table.board tbody tr{contain-intrinsic-size:auto 53px}table.coverage tbody tr{contain-intrinsic-size:auto 46px}
table.rgrid tbody tr{contain-intrinsic-size:auto 62px}.nv-row{contain-intrinsic-size:auto 46px}#events .event{contain-intrinsic-size:auto 74px}

.ribbon{display:inline-block;vertical-align:middle;border-radius:2px;background:
 radial-gradient(circle 4.5px at var(--s) 50%,#fff 0 2.6px,#0a2540 2.6px 4.4px,transparent 4.5px) 0 0/100% 100% no-repeat,
 linear-gradient(90deg,#c9d3de 0 35%,#a9b8c9 35% 50%,#7d93ad 50% 65%,#3f5f85 65% 80%,#0a2540 80% 100%) 0 50%/100% 40% no-repeat}
.ribbon.rb-band{background:
 radial-gradient(circle 4.5px at var(--s) 50%,#fff 0 2.6px,#0a2540 2.6px 4.4px,transparent 4.5px) 0 0/100% 100% no-repeat,
 linear-gradient(90deg,transparent var(--a),rgba(253,126,20,.20) var(--a) var(--b),transparent var(--b)) 0 0/100% 100% no-repeat,
 linear-gradient(90deg,#c9d3de 0 35%,#a9b8c9 35% 50%,#7d93ad 50% 65%,#3f5f85 65% 80%,#0a2540 80% 100%) 0 50%/100% 40% no-repeat}
.ribbon.rb-med{box-shadow:inset 0 0 0 0 transparent}
.ribbon.rb-med::after{content:"";position:absolute;left:var(--m);top:0;bottom:0;width:1px;background:rgba(253,126,20,.9)}
.ribbon.rb-med{position:relative}

.np-note{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:9px 11px;font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.86)}.np-note b{color:#fff}.np-note a{color:#ffd9b3;text-decoration:underline}

/* ---- My policy: a card per counterparty, and the like-for-like grid ------------------- */
/* The score is a ratio against a scale, so it is a meter on the band ramp rather than a
   chart; the three ratios are a KPI row of stat tiles. Both read at a glance and neither
   invents a colour: the band ramp is one hue light to dark, and status keeps its own. */
/* A policy of forty names is a page of scrolling, and half of every row is white. Above 1240px
   the names run in two columns; each card then sizes its own contents against its own width
   rather than the window's, so a 540px card folds the same way whether that is half of a wide
   screen or the whole of a narrow one. */
.pol-card{border:1px solid var(--line);border-radius:var(--r-md);background:var(--white);margin-bottom:10px;
          overflow:hidden;container-type:inline-size}
.pol-card:hover{box-shadow:var(--shadow)}
.cp-top{display:flex;align-items:flex-start;gap:12px;padding:12px 14px 10px;border-bottom:1px solid var(--line-soft)}
.cp-id{flex:1 1 auto;min-width:0}
.cp-id .cp-nm{font-size:16px;font-weight:600;letter-spacing:-.01em}
.cp-id .cp-sub{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-tenor{text-align:right;flex:0 0 auto}
.cp-tenor .cp-t{font-weight:600;font-size:13.5px}
.cp-tenor .small{color:var(--muted)}
.pol-card .pol-rm{flex:0 0 auto;font-size:20px;padding:0 2px}
/* An open card is five panels on a tinted ground: white boxes with a ruled heading, so a section
   ends where its box does rather than wherever the eye decides. Each carries its own mark - a
   distribution, three gauges, the rating scale, a diverging bar - because a bare 14.3 says nothing
   about whether 14.3 is a lot. Colour is spent on three things only: the band ramp (score and
   rating, one hue), the orange that means "this bank, here", and green or red for a move that
   went the reader's way or against it. */
.cp-cell{background:var(--white);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 11px 10px;min-width:0;display:flex;flex-direction:column}
.cp-cell>h5{display:flex;align-items:baseline;gap:8px;margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line-soft);
            font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--navy-mid)}
.cp-cell>h5 em{margin-left:auto;font-style:normal;font-weight:500;font-size:10.5px;letter-spacing:0;text-transform:none;
               color:var(--muted);white-space:nowrap}
.cp-cell>h5 em .dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin:0 3px 0 7px}

/* score: hero figure, band, a meter on the same ramp, and every scored name behind it */
.cp-score-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.cp-score{font-size:30px;font-weight:600;line-height:1;letter-spacing:-.02em}
.cp-score-row .small{flex:1 0 100%;margin-top:2px}
.meter{position:relative;height:7px;border-radius:4px;background:var(--line-soft);margin:8px 0 5px;overflow:hidden}
.meter>i{position:absolute;inset:0 auto 0 0;border-radius:4px;display:block}
.meter.sm,.meter-sm{height:5px;margin:6px 0 4px}
.cs-dist{margin-top:auto;padding-top:9px;border-top:1px solid var(--line-soft)}
.cs-dist .pv-svg{display:block}



/* ratings: the composite, the agencies on the scale so disagreement shows, then a line each */
.cr-top{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.cr-comp{font-size:22px;font-weight:600;line-height:1;letter-spacing:-.01em}
.cr-scale{position:relative;margin:10px 6px 4px}
.cr-ax{position:absolute;left:0;right:0;height:4px;border-radius:2px;background:#e3e8ee}
.cr-ig{position:absolute;height:12px;width:1px;background:#adb5bd}
.cr-dot{position:absolute;width:10px;height:10px;margin-left:-5px;border-radius:50%;box-shadow:0 0 0 1.5px var(--white)}
.cr-c{position:absolute;top:0;width:2px;margin-left:-1px;border-radius:1px;background:var(--orange)}
.cr-e{position:absolute;bottom:0;font-size:10px;color:var(--muted)}
.cr-e1{left:-4px}.cr-e2{right:-4px}
.cr{display:grid;grid-template-columns:1fr auto 9px auto;gap:0 7px;align-items:baseline;font-size:12.5px;padding:3px 0;
    border-top:1px solid var(--line-soft)}
.cr-a{color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cr-g{font-weight:600}
.cr-o{font-size:8px;line-height:1}
.cr-o.up{color:var(--green)}.cr-o.dn{color:var(--red)}.cr-o.lv{color:#c3ced9}
.cr-s{color:var(--muted);font-size:11px;text-align:right}
.cp-rt-none{font-size:12.5px;color:var(--muted)}

/* market: the signal, the bonds against their own currency peers, then what has moved since */
.cb-t{position:relative;height:8px;border-radius:4px;background:var(--line-soft);margin:0 2px}
.cb-z{position:absolute;left:50%;top:-3px;bottom:-3px;width:1.5px;margin-left:-.75px;background:#adb5bd}
.cb-b{position:absolute;top:0;bottom:0;border-radius:3px;min-width:2px}
.cb-b.up{background:var(--green)}.cb-b.dn{background:var(--red)}.cb-b.lv{background:#8fa3b8}
.cb-l{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin-top:5px;font-size:10px;color:#adb5bd}
.cb-l b{font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--text)}
.cb-l b.up{color:var(--green)}.cb-l b.dn{color:var(--red)}
.cc{margin-top:auto;padding-top:9px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.cc-h{display:flex;align-items:baseline;gap:8px;width:100%;font-size:11px;color:var(--muted)}
.cc-h b{margin-left:auto;font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.cc-h b.up{color:var(--green)}.cc-h b.dn{color:var(--red)}.cc-h b.lv{color:var(--muted)}
.cc .chip{white-space:normal;height:auto;line-height:1.35;padding:3px 8px}

/* the headlines, their own panel under the four */
.cp-news{display:flex;flex-direction:column;gap:3px;font-size:12.5px}
.cp-news>div{display:flex;gap:8px;align-items:baseline}
.cp-news .dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;margin-top:5px}
.cp-news .mono{flex:0 0 auto}
.dot-bad{background:var(--red)}.dot-warn{background:var(--orange)}.dot-good{background:var(--green)}
.cp-news .hd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@container (max-width:900px){.cp-body{grid-template-columns:1fr 1fr}}
@container (max-width:440px){.cp-body{grid-template-columns:1fr}}

/* like-for-like: equal cards, the button always on the same line at the foot */
/* A shortlist is scanned, so each card carries the same marks the rest of the site uses: the band
   on its edge and under its score, the score and the composite rating in the ramp's colour, and
   the four ratios one name is chosen over another on. */
.ll-grid{grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:10px}
.ll{padding:9px 12px 10px;gap:0;justify-content:flex-start;border-left:3px solid var(--band,#c9d3de)}
.ll:hover{box-shadow:var(--shadow)}
     .ll-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:9px;padding-bottom:8px;
         border-bottom:1px solid var(--line-soft)}
.ll-k.ll-low b,.ll-k.ll-low{color:#b35900}
.ll-k{display:flex;flex-direction:column;line-height:1.1;font-size:9px;letter-spacing:.05em;
      text-transform:uppercase;color:var(--muted);min-width:0}
.ll-k b{font-size:13px;font-weight:600;letter-spacing:-.01em;color:var(--text);font-variant-numeric:tabular-nums}
.ll-ag{font-size:10px;font-weight:600;letter-spacing:.04em;color:var(--muted);margin-right:3px}
.ll-rt .mono{margin-right:9px;font-size:11.5px;font-weight:600}
/* one tenor at a time: the chips choose the list, the bar states what it is measured against */
.ll-tenors{margin:14px 0 0;padding-bottom:10px;border-bottom:1px solid var(--line)}
.ll-t .cnt{margin-left:7px;font-weight:600;font-size:11px;opacity:.55;font-variant-numeric:tabular-nums}
.ll-t.active .cnt{opacity:.75}
.ll-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:12px 0 10px}
.ll-head h4{margin:0;font-size:14px}
.ll-n{font-size:11px;font-weight:600;color:var(--muted);background:var(--line-soft);border-radius:999px;padding:1px 8px}
.ll-bar{display:inline-flex;align-items:center;gap:7px;margin-left:auto;font-size:11px;color:var(--muted)}
.ll-bar b{font-size:12.5px;font-variant-numeric:tabular-nums}
.ll-bar .band{font-size:11px;padding:0 7px;min-width:0}
.ll:hover{box-shadow:var(--shadow)}
.ll-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ll .ll-nm{font-size:13.5px;font-weight:600;letter-spacing:-.01em;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ll-act{display:flex;align-items:center;gap:6px;flex:0 1 auto;min-width:0}
/* the market chip gives way before the Add button does, and ends in an ellipsis, not mid-word */
.ll-act .chip{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
.ll-act .ll-add{flex:0 0 auto}
/* a flex box does not ellipsis its own text, and a clipped label reads as a typo */
.ll-act .chip{display:inline-block;min-width:0;max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;padding:1px 7px;line-height:18px}
.ll .ll-add{flex:0 0 auto;padding:2px 9px;font-size:11.5px;line-height:1.5}
.ll .ll-co{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ll .ll-score{display:flex;align-items:baseline;gap:7px;margin-top:5px}
.ll .ll-score .ll-cp{font-size:13px;font-weight:600;line-height:1.1;letter-spacing:-.01em}
.ll .ll-vs{margin-left:auto;font-size:10.5px;color:var(--green);font-weight:600;white-space:nowrap}
.ll .ll-rt{display:flex;flex-wrap:wrap;align-items:baseline;margin-top:7px;min-height:15px}

/* ---- policy overview: dense small multiples, one question each ----------------------- */
.pv{border:1px solid var(--line);border-radius:var(--r-md);background:var(--white);padding:12px 14px;margin-bottom:12px}
.pv-tiles{display:flex;flex-wrap:wrap;gap:10px 26px;padding-bottom:11px;border-bottom:1px solid var(--line-soft)}
.pv-tile{display:flex;flex-direction:column;gap:1px}
.pv-tile b{font-size:22px;font-weight:600;line-height:1.05;letter-spacing:-.02em}
.pv-tile span{font-size:10.5px;color:var(--muted);letter-spacing:.03em;text-transform:uppercase}
.pv-tile.pv-warn b{color:var(--orange)}
.pv-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 0;padding-top:11px}
.pv-charts figure{margin:0;min-width:0;padding:0 18px;border-left:1px solid var(--line-soft)}
.pv-charts figure:first-child{padding-left:0;border-left:0}
.pv-charts figure:last-child{padding-right:0}
.pv-charts figcaption{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;
                      padding-left:7px;border-left:2px solid var(--orange)}
.pv-svg{display:block;overflow:visible}
.pv-ax{font-size:10px;fill:var(--muted);font-family:"IBM Plex Mono",ui-monospace,monospace}
.pv-keys{display:flex;flex-wrap:wrap;gap:3px 10px;margin-top:5px}
.pv-key{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.pv-key i{width:8px;height:8px;border-radius:2px;display:inline-block}
.pv-key b{color:var(--text)}

/* ---- the detail dialog ---------------------------------------------------------------- */
.pol-modal{border:0;border-radius:var(--r-lg);padding:0;width:min(980px,94vw);max-height:88vh;box-shadow:0 20px 60px rgba(10,37,64,.28);color:var(--text)}
.pol-modal::backdrop{background:rgba(10,37,64,.42)}
/* The head is one line of identity, one stat and the actions, all on the same centre line, and
   the body is the same four panels an open card uses - a ruled heading on a white box, on a
   tinted ground - so a dialog is not a second thing to learn. */
.md-head{display:flex;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid #dde5ee;
         position:sticky;top:0;z-index:2;flex-wrap:wrap;
         background:linear-gradient(180deg,#e8eff8 0%,#f1f6fb 100%)}   /* a tint of the page's own blue */
.md-id{flex:1 1 240px;min-width:0}
.md-head .md-nm{display:flex;align-items:baseline;gap:8px;font-size:19px;font-weight:600;letter-spacing:-.01em}
.md-head .md-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-head .md-sc{display:flex;flex-direction:column;align-items:flex-end;gap:2px;line-height:1;
                padding-right:14px;border-right:1px solid #d7e0ea}
.md-scn{display:flex;align-items:center;gap:7px}
.md-sc .cp-score{font-size:28px}
.md-scl{font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.md-mkt .chip{white-space:nowrap}
.md-act{display:flex;align-items:center;gap:8px}
#md-body{padding:11px;overflow:auto;background:var(--bg)}
.md-grid{display:grid;grid-template-columns:minmax(310px,1.5fr) minmax(240px,.95fr) minmax(230px,.95fr);gap:9px;align-items:start}
.md-col{display:flex;flex-direction:column;gap:9px;min-width:0}
.md-trends{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 12px}
.md-trends figure{margin:0;min-width:0}
.md-trends figcaption{display:flex;align-items:baseline;gap:6px;justify-content:space-between}
.md-trends figcaption .mt-l{font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-trends figcaption b{font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.mt-sub{font-size:10.5px;line-height:1.3;min-height:14px}
.mt-legend{margin:auto 0 0;padding-top:8px;font-size:11px;color:var(--muted);line-height:1.35}
.md-foot{margin:8px 0 0;font-size:11.5px;color:var(--muted);line-height:1.4}
.md-foot b{color:var(--text)}
.md-pills{display:flex;flex-direction:column;gap:6px}
.md-pill{display:grid;grid-template-columns:78px minmax(0,1fr) 26px 22px;align-items:center;gap:8px;font-size:11.5px;color:var(--muted)}
.md-pill>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-pill b{text-align:right;font-variant-numeric:tabular-nums;font-size:12.5px}
.md-news{background:none;border:0;padding:0}
@media(max-width:900px){.md-grid{grid-template-columns:1fr}.md-head .md-sc{border-right:0;padding-right:0}}
.pol-card,.ll{cursor:pointer}
.pol-card:focus-visible,.ll:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* fixes found by rendering the page: cells sized by content, the dialog scrolls its body,
   and nothing in a grid cell is allowed to overflow into its neighbour */
.cp-body{align-items:start}
/* A dialog is display:none until it is open; setting display on the element itself overrides that
   and leaves a dead copy of the last bank sitting in the page after you close it. */
.pol-modal{flex-direction:column}
.pol-modal[open]{display:flex}
.pol-modal:not([open]){display:none}
#md-body{flex:1 1 auto;min-height:0}
.md-grid>section{min-width:0}
.md-news>div{min-width:0}
.md-news .hd{min-width:0;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.md-news .mono{flex:0 0 auto}
.md-pill i{font-style:normal;font-size:10px;color:var(--muted);text-align:right}
/* the legal name runs to one line or two, so it is given both and the scores line up across a row */
.ll .ll-co{line-height:1.25}
.mt-vs{font-size:10.5px;font-weight:600}.mt-vs.up{color:var(--green)}.mt-vs.dn{color:var(--red)}
.mt-key{display:inline-block;width:18px;height:8px;background:rgba(173,181,189,.32);border-radius:2px;vertical-align:-1px;margin-right:5px}
.mt-vs.lv{color:var(--muted)}
.md-trends .mt-vs{white-space:nowrap}
.sm-peer{font-size:10.5px;font-weight:600;margin-left:auto}
.sm-peer.up{color:var(--green)}.sm-peer.down{color:var(--red)}.sm-peer.flat{color:var(--muted)}
/* the trends arrive a moment after the rest; their space is held rather than jumping */
.md-wait{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px 12px}
/* One skeleton for everything that is on its way: the shape of what is coming, in the place it
   will land, so a click is answered in the same frame it was made. */
.sk{display:block;border-radius:6px;background:linear-gradient(90deg,var(--line-soft) 25%,#e4e7ea 37%,var(--line-soft) 63%);
    background-size:400% 100%;animation:sk 1.2s ease-in-out infinite}
.sk-rows{display:flex;flex-direction:column;gap:9px;padding:2px 0}
.sk-rows .sk{height:36px}
.sk-rows .sk:first-child{height:22px;max-width:200px;margin-bottom:4px}
.sk-cards{display:grid;grid-template-columns:1fr;gap:10px}     /* the shape the cards will take */
.sk-cards .sk{height:84px}
@media(min-width:1240px){.sk-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sk-tr .sk{height:15px;margin:5px 0}
.md-sk{height:58px;border-radius:6px;background:linear-gradient(90deg,var(--line-soft) 25%,#e4e7ea 37%,var(--line-soft) 63%);background-size:400% 100%;animation:sk 1.2s ease-in-out infinite}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media(prefers-reduced-motion:reduce){.md-sk,.sk{animation:none}}
/* a holding company is not the entity a deposit is placed with, and its ratios are the group's */
.tag-hold{display:inline-block;margin-left:7px;padding:1px 6px;border:1px solid var(--line);border-radius:4px;
  background:var(--line-soft);color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.03em;
  text-transform:uppercase;vertical-align:1px;white-space:nowrap}

/* ---- the universe, on the same page ---------------------------------------------------- */
.uni-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}
.uni-bar input[type=search]{flex:1 1 220px;min-width:180px}
.uni-bar select{max-width:190px}
.uni-chk{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.uni-count{margin-left:auto}
table.uni{font-size:13px}
table.uni th{cursor:pointer;user-select:none;white-space:nowrap}
table.uni th[data-sort]:hover{color:var(--orange)}
table.uni th[aria-sort]::after{content:"▾";margin-left:4px;font-size:9px}
table.uni th[aria-sort=ascending]::after{content:"▴"}
table.uni td{vertical-align:top;padding-top:9px;padding-bottom:9px}
table.uni td.num,table.uni th.num{text-align:right}
table.uni tbody tr{cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto 44px}
table.uni tbody tr:hover{background:var(--bg)}
table.uni .tag-hold{margin-left:6px}

/* Definitions --------------------------------------------------------------------------------
   A marker sits after the thing it explains, quiet until asked. It is a character rather than an
   icon because a table of 152 rows carries a lot of them. */
.i{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;padding:0;
   margin-left:5px;border:0;border-radius:50%;background:#e9ecef;color:#6c757d;cursor:pointer;
   font:700 9px/1 "IBM Plex Mono",monospace;vertical-align:middle;flex:none;
   transition:background .12s,color .12s}
.i:hover,.i[aria-expanded="true"]{background:#0a2540;color:#fff}
.i:focus-visible{outline:2px solid #fd7e14;outline-offset:2px}
th .i,.uni th .i{margin-left:4px}
.tip{position:fixed;z-index:200;box-sizing:border-box;background:#fff;border:1px solid #e9ecef;
     border-radius:12px;box-shadow:0 12px 34px rgba(10,37,64,.18);padding:13px 15px;
     font-size:12.5px;line-height:1.55;color:#243240;text-align:left;font-weight:400}
.tip h4{margin:0;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:#6c757d}
.tip .lead{margin:5px 0 0;font-size:13.5px;font-weight:600;color:#0a2540;line-height:1.45}
.tip p+p{margin:7px 0 0;color:#4a5764}
@media (max-width:640px){.tip{font-size:13px}}
.cd-def{margin:0 20px 20px;padding-top:14px;border-top:1px solid var(--line-soft);font-size:13px;
        line-height:1.6;color:#4a5764;max-width:70ch}
.cd-def:empty{display:none}
.cd-def b{color:#0a2540}
.score-card .i,.tile-label.light .i{background:rgba(255,255,255,.2);color:#fff}
.score-card .i:hover,.score-card .i[aria-expanded="true"]{background:#fd7e14;color:#fff}
.i-static{cursor:default;pointer-events:none}
.glink{background:none;border:0;padding:0;margin-right:8px;font:inherit;color:#0a2540;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.glink:hover{color:#fd7e14}
.gloss-dlg{border:0;border-radius:16px;padding:0;max-width:720px;width:calc(100% - 32px);max-height:82vh;box-shadow:0 24px 60px rgba(10,37,64,.28)}
.gloss-dlg::backdrop{background:rgba(10,37,64,.4)}
.gd-head{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;gap:12px;
         padding:16px 20px;background:#fff;border-bottom:1px solid var(--line-soft);z-index:1}
.gd-head h3{margin:0;font-size:16px}
.gd{margin:0;padding:4px 20px 22px;overflow:auto}
.gd h4{margin:22px 0 2px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#0a2540;
       padding-bottom:6px;border-bottom:1px solid var(--line-soft)}
.gd h4:first-child{margin-top:10px}
.gd-t{margin-top:14px}
.gd dt{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:#6c757d;font-weight:600}
#gd-q{flex:1;max-width:220px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px}
.gd dd{margin:4px 0 0;font-size:13.5px;line-height:1.6;color:#4a5764;max-width:70ch}
.gd dd b{color:#0a2540}

/* The front door ------------------------------------------------------------------------------
   An empty list is a bad first impression, so the opening carries the scale and the sources. */
.page-head.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;flex-wrap:wrap}
.hero-strip{display:flex;gap:26px;flex-wrap:wrap;border-radius:12px;padding:13px 20px;
            background:linear-gradient(100deg,#0a2540 0%,#143659 55%,#1a4775 100%);
            box-shadow:0 6px 20px rgba(10,37,64,.16)}
.hs{display:flex;flex-direction:column;line-height:1.2}
.hs b{font-size:22px;font-weight:700;color:#fff;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.hs span{font-size:11px;color:rgba(255,255,255,.62);max-width:13ch}
.pol-empty{padding:24px 4px 8px;max-width:52ch}
.pol-empty h4{margin:0 0 6px;font-size:16px;color:#0a2540}
.pol-empty p{margin:0 0 14px;font-size:13.5px;line-height:1.6;color:var(--muted)}
@media (max-width:900px){.hero-strip{gap:18px}.hs b{font-size:19px}}
.pol-share[hidden]{display:none}
.pol-empty{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:36px;padding:18px 4px 4px;max-width:none;align-items:start}
.pe-top h5{margin:0 0 8px;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.pe-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line-soft)}
.pe-nm{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:#0a2540;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-sc{font-size:13px}
.pe-row .filter{padding:3px 10px;font-size:12px}
@media (max-width:820px){.pol-empty{grid-template-columns:1fr;gap:20px}}
.pe-fig{margin:22px 0 0;max-width:300px}
.pe-fig figcaption{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.chart-dark .axis{fill:rgba(255,255,255,.55)}
.hs{min-width:84px}
@media (max-width:700px){
  .page-head.hero{gap:16px}
  .hero-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px;width:100%}
  .hs b{font-size:18px}.hs span{max-width:none}
}
.grid-2{align-items:start}
.ev-shown{flex-basis:100%}
.brief-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
@media(max-width:900px){.brief-grid{grid-template-columns:1fr}}
.pol-topbar{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;margin-bottom:10px}
/* a tab carries its own count, so the click is worth making or worth skipping */
.tab-n{display:inline-block;margin-left:6px;padding:0 5px;border-radius:999px;background:var(--line);
       color:var(--muted);font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums;line-height:16px;vertical-align:1px}
.tab-n:empty{display:none}
.tab.active .tab-n{background:var(--orange-soft);color:#b35900}
.pol-topbar h3{margin:0}
.pol-topbar .pol-form{margin:0}
@media(max-width:820px){.pol-topbar{align-items:stretch}.pol-topbar .pol-form{width:100%}}
.pol-card-flag{box-shadow:inset 3px 0 0 var(--orange)}
.sm-dark{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.16);color:#fff;margin-top:16px}
.sm-dark:hover,.sm-dark:focus-visible{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.3);box-shadow:none}
.sm-dark .sm-label{color:rgba(255,255,255,.62);font-weight:500}
.sm-dark .sm-val{color:#fff}

/* A counterparty is one line -------------------------------------------------------------------
   The name, what it is worth, what it is rated and how long you accept it for. Everything else is
   in the dialog a click opens, so twenty approved names are twenty lines rather than a scroll. */
.cp-top{display:grid;grid-template-columns:minmax(120px,1.6fr) auto auto minmax(80px,1fr) 20px;
        align-items:center;gap:14px;padding:8px 12px;border-bottom:0}
.cp-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(52px,auto);gap:14px;align-items:center}
.cp-id{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;min-width:0}
.cp-id .cp-nm{font-size:14px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}
.cp-id .cp-sub{flex:1 0 100%;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-id .cp-sov{display:none;font-size:11px;color:var(--muted)}
/* The score and the rating read as one long number with nothing between them, so a hairline
   stands before the pair. Every value line is the same height, the taller band pill and the larger
   score included, so the labels beneath them share one baseline across the row. */
.ck{display:flex;flex-direction:column;line-height:1.15;white-space:nowrap}
.ck-sep{border-left:1px solid var(--line-soft);padding-left:13px}
.ck b{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:5px;
      height:20px;line-height:20px}
.ck span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ck-score b{font-size:17px}
/* the one field on the row that is your decision rather than the bank's figure */
.cp-ten{display:flex;flex-direction:column;line-height:1.15;gap:1px}
.cp-ten>span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);order:2}
.cp-ten select{height:20px;padding:0 18px 0 6px;margin-left:-6px;border:1px solid transparent;border-radius:6px;
  background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236c757d' stroke-width='1.6'/%3E%3C/svg%3E") right 5px center/8px no-repeat;
  font:inherit;font-size:12.5px;font-weight:600;color:var(--text);cursor:pointer;appearance:none}
.cp-ten select:hover{border-color:var(--line);background-color:var(--white)}
.cp-ten select:focus-visible{outline:2px solid var(--navy);outline-offset:1px}
.cp-tags{display:flex;align-items:center;gap:6px;justify-content:flex-end;min-width:0;overflow:hidden}
.cp-tags .chip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;flex:0 1 auto}
.pol-card .pol-rm{font-size:17px;justify-self:end}
/* Too narrow for a name and six figures on one line: the figures take the line beneath, indented
   to the name, and nothing is dropped. Placement is spelled out because auto-placement would put
   the block that spans the row ahead of the tag and the remove button. */
@container (max-width:780px){
  .cp-top{grid-template-columns:minmax(0,1fr) auto 20px;gap:12px;row-gap:6px;padding:8px 12px}
  /* the legal name is the line that goes: the short name, what kind of entity it is and the
     country are all still here, and the card opens on the rest */
  .cp-id .cp-sub{display:none}
  .cp-id .cp-sov{display:inline}
  .cp-id{grid-area:1/1}
  .cp-tags{grid-area:1/2;justify-content:flex-end}
  .cp-top .pol-rm{grid-area:1/3}
  .cp-stats{grid-area:2/1;justify-content:start}
  .cp-ten{grid-area:2/2/auto/-1;align-items:flex-end}
}
@container (max-width:430px){
  .cp-stats{gap:12px}
}
.ck .band{width:22px;height:19px;font-size:11.5px;border-radius:5px}

/* Separation ------------------------------------------------------------------------------------
   One white box held the portfolio summary, the approved names and the shortlist, so the eye had
   nothing to divide them by. The summary is a tinted band, each chart on it is a tile of its own,
   and the shortlist sits below a rule with its own heading. */
.pv{background:var(--bg);border-color:#dde4ec;padding:12px 14px 14px}
.pv-tiles{border-bottom:0;padding-bottom:12px}
.pv-charts{gap:12px;padding-top:0}
.pv-charts figure{background:var(--white);border:1px solid #e2e8ef;border-radius:10px;padding:9px 11px 7px}
.pv-charts figure:first-child,.pv-charts figure:last-child{padding:9px 11px 7px}
/* A row is a name, a score, a rating and a tenor, so it needs about 300px and no more. Councils
   hold plenty of names: four abreast on a desk, two on a laptop, one on a phone, and the card's
   own container query lays each one out for the width it actually gets. */
.pol-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:9px;
  margin-top:14px;align-items:stretch}
/* a holding company's tag wraps its name onto a second line, so a row of cards would otherwise
   step up and down across the page */
.pol-list .pol-card{display:flex;flex-direction:column}
.pol-list .cp-top{flex:1}
.pol-list .pol-card{margin-bottom:0}
.pol-card{border-color:#dde4ec}
.ll-sec{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.ll-sec>h3{margin:0 0 2px}
/* The container is the ground and the names are the objects on it, so a row of figures reads as
   a thing you can open rather than as another band of text in one long white box. */
.pol-wrap{display:block;margin-top:2px}
.pol-wrap .pv{background:var(--white);border:1px solid #dde4ec;box-shadow:0 1px 2px rgba(10,37,64,.05),0 8px 22px rgba(10,37,64,.07)}
.pol-wrap .pv-charts figure{background:#f7f9fc;border-color:#e4e9ef}
.pol-wrap .pol-topbar{padding:0 2px 4px}
.pol-wrap .pol-share{margin-top:14px;padding:0 2px;justify-content:flex-end;gap:8px}
.pol-wrap .pol-share input{flex:0 1 300px;font-size:11.5px;color:var(--muted);background:transparent;border-color:#dde4ec}
.pol-wrap .empty,.pol-wrap .pol-empty{background:var(--white);border:1px solid #dde4ec;border-radius:12px;
  box-shadow:0 1px 2px rgba(10,37,64,.05),0 8px 22px rgba(10,37,64,.07);padding:18px 20px}

/* One accent, one meaning: an orange tick marks the head of a chart section, on the policy
   overview, the profile's trends and the analysis panels alike. */
.chart-head,.pc-head h3{padding-left:8px;border-left:2px solid var(--orange)}
.pc-head h3{line-height:1.25}

/* The score is its own scale ---------------------------------------------------------------- */
.sc-n{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums;font-weight:600}
.sc-b{margin-left:5px;font-size:10.5px;font-weight:600;letter-spacing:.04em;color:var(--muted)}
.ck-score .sc-n{font-size:19px;letter-spacing:-.02em}
.ck-score .sc-b{font-size:11px}
table.uni .sc-n{font-size:14px}
.ll-score .sc-n{font-size:18px;letter-spacing:-.02em}
.pe-sc .sc-n{font-size:14px}
.dtip{position:fixed;z-index:210;pointer-events:none;max-width:280px;background:#0a2540;color:#fff;
      border-radius:9px;padding:9px 11px;font-size:12px;line-height:1.5;box-shadow:0 10px 28px rgba(10,37,64,.3)}
.dtip b{display:block;font-size:12.5px;letter-spacing:-.01em}
.dtip b span{float:right;margin-left:12px;font-weight:400;color:rgba(255,255,255,.62)}
.dtip i{display:block;font-style:normal;color:rgba(255,255,255,.72);margin-top:3px}
.dtip em{font-style:normal;color:#fd7e14;font-weight:600}
.pv-charts [data-tip]{cursor:default}

/* A small multiple opens full size, which nothing on the card said. */
.sm{position:relative}
.sm::after{content:"\2922";position:absolute;top:8px;right:9px;font-size:12px;line-height:1;color:#c2ccd8;
           transition:color .15s}
.sm:hover::after,.sm:focus-visible::after{color:var(--orange)}
.sm{cursor:zoom-in}
.sm .sm-head{padding-right:16px}
/* The country, with the state's own rating beside it. */
.sov{display:inline-flex;align-items:baseline;gap:5px}
.sov b{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--muted);background:var(--line-soft);
       border-radius:5px;padding:1px 5px;cursor:help}
.md-nm .sov b,.md-sub .sov b,.cp-sub .sov b{font-size:10.5px}

/* ---- rating history: the ladder, what it adds up to, and the moves behind it ---- */
.rh{margin:0 0 26px}
.rh-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:12px}
.rh-head h3{margin:0 0 3px}
.rh-tally{display:flex;gap:8px;flex:0 0 auto}
.rh-n{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:74px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--white)}
.rh-n b{font-size:19px;font-weight:600;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}
.rh-n span{font-size:10.5px;color:var(--muted);letter-spacing:.02em;white-space:nowrap}
/* the chart is the point of this panel, so it gets the width and the moves run under it */
.rh-body{display:block}
.rh-chart{min-width:0}
.ladder{display:block;width:100%;height:auto;margin:2px 0 6px}
.rl-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 15px;padding:9px 0 2px;margin-bottom:14px;border-top:1px solid var(--line)}
.rl-k{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted)}
.rl-k i{width:15px;height:9px;border-radius:2px;background:var(--muted);flex:0 0 auto}
.rl-k b{font-weight:600;color:var(--text)}
.rl-o i{height:3.5px;border-radius:2px}
.rl-w i{width:0;height:0;background:none;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid var(--muted)}
.rl-sep{width:1px;height:14px;background:var(--line)}
.rh-mh{margin:16px 0 6px;font-size:13px}
.rh-mh:first-child{margin-top:2px}
.rh-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 26px}
.rh-list li{display:flex;align-items:baseline;gap:9px;padding:5px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}
.rh-d{color:var(--muted);font-size:11.5px;flex:0 0 auto;font-variant-numeric:tabular-nums}
.rh-a{font-size:14px;font-weight:700;line-height:1;flex:0 0 auto;width:11px;text-align:center}
.rh-w{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rh-w b{font-weight:600}
@media (max-width:820px){.rh-list{grid-template-columns:1fr}}

/* the composite's path through the register's action log, in a card or a dialog */
.rp{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line-soft)}
.rp-svg{width:100%;height:34px;display:block;overflow:visible}
.rp-e{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:-.01em}
.rp-t{grid-column:1/-1;font-size:11px;color:var(--muted);letter-spacing:.01em}
.rp-t b{font-weight:600;font-variant-numeric:tabular-nums}
.rp-u{color:#1e7a3a}
.rp-d{color:#b04632}
.gpath{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}

/* ---- the shortlist: one row a name, so the columns do the comparing ---- */
.ll-t2{font-size:12.5px}
.ll-t2 thead th{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;white-space:nowrap}
.ll-t2 th:nth-child(n+5):nth-child(-n+8),.ll-t2 .ll-v{text-align:right}
.ll-t2 tbody tr{cursor:pointer}
.ll-t2 tbody tr:hover{background:var(--line-soft)}
.ll-t2 td{padding:7px 9px;vertical-align:middle}
.ll-rank{width:22px;color:var(--muted);font-size:11px;text-align:right;border-left:3px solid var(--band);padding-left:7px!important}
.ll-name{min-width:0;max-width:280px}
.ll-t2 .ll-nm{display:block;font-size:13px;font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ll-t2 .ll-co{display:block;font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ll-sc{width:132px;white-space:nowrap}
.ll-track{display:block;height:3px;border-radius:2px;background:var(--line);margin-top:4px}
.ll-bar2{display:block;height:3px;border-radius:2px}
.ll-cpc{white-space:nowrap}
.ll-cpc b{font-family:var(--mono);font-size:12.5px;font-weight:600}
.ll-ags{margin-left:7px;font-size:10.5px;font-weight:600;letter-spacing:.1em;color:var(--muted)}
.ll-v{font-variant-numeric:tabular-nums;white-space:nowrap}
.ll-t2 .sc-n{font-size:15px;letter-spacing:-.02em}
.ll-t2 .ll-low{color:#b26a00;font-weight:600}
.ll-mkt{white-space:nowrap}
.ll-addc{text-align:right}
.ll-t2 .ll-add{height:26px;padding:0 11px;font-size:12px}
@media (max-width:900px){.ll-t2 .ll-co{display:none}}
/* the scale itself, rather than five named buckets, because the ramp is continuous */
.rl-ramp{gap:5px;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--muted)}
.rl-scale{display:inline-flex;height:9px;border-radius:2px;overflow:hidden}
.rl-scale i{width:7px;height:9px;border-radius:0;flex:0 0 auto}

/* ---- your weightings: the one judgement on this site that is the reader's ---- */
.wt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:16px}
.wt-head h3{margin:0 0 3px}
.wt-head p{margin:0;max-width:62ch}
.wt-grid{display:grid;gap:2px;max-width:820px}
.wt-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,2fr) 46px;align-items:center;gap:16px;
  padding:9px 10px;border-radius:8px}
.wt-row:hover{background:var(--line-soft)}
.wt-row label{display:flex;flex-direction:column;gap:1px;min-width:0;cursor:pointer}
.wt-row label b{font-size:13px;font-weight:600}
.wt-row label span{font-size:11.5px;color:var(--muted);line-height:1.35}
.wt-s{width:100%;accent-color:var(--navy);cursor:pointer}
.wt-o{font-family:var(--mono);font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
/* The sliders and what they are allowed to mean, side by side: the disclosure is not a footnote
   under a long page, it is beside the control it qualifies. */
.wt-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:28px;align-items:start}
@media (max-width:1000px){.wt-body{grid-template-columns:1fr;gap:18px}}
.wt-foot{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
@media (max-width:1000px){.wt-foot{margin-top:4px}}
.wt-foot p{margin:0 0 9px;font-size:12.5px;line-height:1.55;color:var(--text)}
.wt-foot p.muted{color:var(--muted)}
.wt-foot b{font-weight:600}
@media (max-width:640px){.wt-row{grid-template-columns:1fr 40px;gap:6px 12px}.wt-s{grid-column:1/-1}}
.score-yours{margin-left:8px;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.04em;
  text-transform:uppercase;background:rgba(253,126,20,.22);color:#ffd9b3}

/* the example a first visit opens on, and the way out of it */
.pol-demo{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0 0;padding:10px 13px;
  border:1px solid #dbe3ec;border-left:3px solid var(--orange);border-radius:10px;background:var(--bg);
  font-size:12.5px;line-height:1.5;color:var(--muted)}
.pol-demo b{color:var(--text);font-weight:600}
.pol-demo .filter{margin-left:auto;flex:0 0 auto;height:28px;font-size:12px}

/* Long lists stand a page at a time. The control that reveals the rest sits where the list stops,
   with the count beside it, so the reader always knows how much of the list they are looking at. */
.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0 4px}
.pager .more{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 20px;
  border-radius:999px;font:inherit;font-size:13.5px;font-weight:600;background:var(--white);
  color:var(--navy);border:1px solid var(--line);cursor:pointer;box-shadow:var(--shadow)}
.pager .more:hover{border-color:var(--navy);background:var(--navy);color:#fff}
.pager .more:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.pager .pg-of{font-variant-numeric:tabular-nums}

/* A reference document stands beside its own contents. The rail is sticky, the reading column keeps
   a measure, and on a phone the rail becomes a strip of chips above the text. */
.docpage{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;align-items:start;max-width:1140px}
.doc-nav{position:sticky;top:16px;display:flex;flex-direction:column;gap:1px;
  border-left:2px solid var(--line);padding-left:2px}
.doc-nav-head{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);padding:2px 10px 8px}
.doc-nav a{display:block;padding:6px 10px;font-size:13px;color:var(--muted);text-decoration:none;
  border-left:2px solid transparent;margin-left:-4px;border-radius:0 6px 6px 0}
.doc-nav a:hover{color:var(--text);background:var(--line-soft)}
.doc-nav a.on{color:var(--navy);font-weight:600;border-left-color:var(--orange);background:var(--white)}
.prose h2{scroll-margin-top:16px}
@media(max-width:900px){
  .docpage{grid-template-columns:1fr;gap:10px}
  .doc-nav{position:static;flex-direction:row;flex-wrap:wrap;gap:6px;border-left:0;padding:0}
  .doc-nav-head{width:100%;padding:0 0 2px}
  .doc-nav a{border:1px solid var(--line);border-radius:999px;background:var(--white);padding:4px 11px;
    margin-left:0;font-size:12.5px}
  .doc-nav a.on{border-color:var(--navy);border-left-color:var(--navy)}
}

/* An empty result says what would not be empty, and the way there is a word in the sentence. */
.ll-none{font-size:13px;color:var(--muted);margin:14px 2px;max-width:70ch}
.linky{background:none;border:0;padding:0;font:inherit;color:var(--navy);font-weight:600;
  text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.linky:hover{color:var(--orange)}

/* What a slider actually did. Abstract weights, concrete names. */
.wt-effect{margin-top:16px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--orange);
  border-radius:10px;background:var(--white)}
.wt-effect.wt-flat{border-left-color:var(--line);color:var(--muted);font-size:12.5px}
.wt-eh{font-size:13px;line-height:1.55}
.wt-eh b{font-weight:600;font-variant-numeric:tabular-nums}
.wt-movers{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.wt-mv{display:inline-flex;align-items:baseline;gap:7px;padding:3px 9px;border-radius:999px;
  border:1px solid var(--line);background:var(--white);font-size:12px;white-space:nowrap}
.wt-mv b{font-weight:600}
.wt-mv i{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--muted);
  font-variant-numeric:tabular-nums}
.wt-mv em{font-style:normal;font-family:var(--mono);font-size:11.5px;font-weight:600;
  font-variant-numeric:tabular-nums}
.wt-mv.up{border-color:#bfe3cc}.wt-mv.up em{color:var(--green)}
.wt-mv.down{border-color:#f3ccc6}.wt-mv.down em{color:var(--red)}

/* What a severity chip means, said once above the feed rather than left to be inferred. */
.sev-key{margin-top:8px;max-width:96ch;color:var(--muted);line-height:1.9}
.sev-key .chip{margin:0 1px}

/* The bar that adds a name used to float on the page ground with no edge and no explanation of
   what it did. It is a panel now, sitting on the card it feeds, and it says where the list goes. */
.pol-wrap .pol-topbar{padding:14px 16px 12px;background:var(--white);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow);margin-bottom:14px}
.pol-hint{align-self:center;max-width:44ch;line-height:1.45;padding-bottom:2px}
@media(max-width:820px){.pol-hint{max-width:none}}

/* A strip that scrolls sideways says so. On a phone the tab row and the wide tables run past the
   screen with nothing at the edge to suggest it, so a reader stops at whatever the screen ends on.
   An inset shadow on the side that still holds content is the whole affordance. */
.sc-r{box-shadow:inset -22px 0 14px -14px rgba(10,37,64,.28)}
.sc-l{box-shadow:inset 22px 0 14px -14px rgba(10,37,64,.28)}
.sc-l.sc-r{box-shadow:inset 22px 0 14px -14px rgba(10,37,64,.28),inset -22px 0 14px -14px rgba(10,37,64,.28)}

/* The definition marker is a 14px dot on a phone, where a finger is nearer 40. The dot stays the
   size it is; what a thumb has to hit grows around it, without moving anything beside it. */
.i{position:relative}
.i::after{content:"";position:absolute;top:50%;left:50%;width:34px;height:34px;
  transform:translate(-50%,-50%)}
@media (hover:hover){.i::after{width:22px;height:22px}}

/* A row hidden by a filter or a pager must actually go. .ract and .event set display themselves,
   which outranks the user agent's [hidden] rule and left them on the page taking their full height. */
[hidden]{display:none!important}

/* The brief's second column carried one short card and a quarter of the page in white under it. */
.brief-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.brief-side .card h3{margin-top:0}
.brief-side .kv{margin-bottom:12px}


/* A chart that has had to simplify itself says so, under the drawing rather than over it. */
.pc-note{padding:2px 4px 0;line-height:1.45}

/* A long table scrolls inside a window rather than growing the page under it. Paging a sorted
   list meant clicking through sixteen pages to read it, and the column headings left the screen
   on the way; here they stay put and the whole list is one scroll. Sized against the viewport, so
   the page still fits a laptop and a phone still shows the filters above the table. */
.scrollbox{max-height:min(560px,62vh);overflow:auto;overscroll-behavior:contain;
  border-bottom:1px solid var(--line)}
.scrollbox thead th{position:sticky;top:0;z-index:2;background:var(--white);
  box-shadow:inset 0 -1px 0 var(--line)}
.scrollbox table{border-collapse:separate;border-spacing:0}
@media(max-width:760px){.scrollbox{max-height:min(460px,68vh)}}
/* what the window is holding, said under it where the scrollbar ends */
.tfoot{padding:9px 2px 2px;text-align:right;font-variant-numeric:tabular-nums}

/* Whether the day's collection arrived, and how late. A line on the page rather than a sentence in
   a chat reply nobody reads. */
.punct{margin:2px 0 14px;padding:10px 13px;border-radius:10px;font-size:13px;line-height:1.55;
  border:1px solid var(--line);border-left:3px solid var(--line)}
.punct.good{background:var(--bg);border-left-color:var(--green);color:var(--muted)}
.punct.warn{background:var(--orange-soft);border-left-color:var(--orange);color:var(--text)}
.punct.bad{background:#fbe9e7;border-left-color:var(--red);color:var(--text)}
.punct b{font-weight:600;color:var(--text)}
