:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#182c37;background:#f3f6f8;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,.button{cursor:pointer;border:0;border-radius:7px;background:#087d79;color:white;padding:11px 16px;text-decoration:none;font-size:14px}button:hover,.button:hover{filter:brightness(.93)}input,select{border:1px solid #cbd6dc;border-radius:7px;padding:12px;background:white;color:#182c37}h1{font-size:30px;letter-spacing:-1px;margin:10px 0}h2{font-size:18px;margin:0 0 16px}small,.muted{color:#687f8c;font-size:14px}p{line-height:1.7}aside{position:fixed;width:240px;background:#122935;color:#dce8ed;inset:0 auto 0 0;padding:32px 24px}.brand{font-size:23px;white-space:nowrap}.brand span,.mark span{color:#5ed2bb}.brand b{font-size:18px;margin-left:8px}aside>small{display:block;margin:16px 0 40px}nav{display:grid;gap:8px}nav button{background:transparent;text-align:left;color:#bdcdd5}nav button.active{background:#234552;color:#8ee2cc}.aside-bottom{position:absolute;bottom:32px;line-height:2}.aside-bottom button{display:block;margin-top:20px;background:#234552}main{margin-left:240px;padding:38px 44px;max-width:1600px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:20px}.secondary{background:white;color:#294957;border:1px solid #cedae0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.metric,.panel,.codecard{background:white;border:1px solid #dce4e8;border-radius:10px;padding:24px}.metric strong{display:block;font-size:36px;font-weight:600;margin:16px 0 5px}.panel{margin-bottom:22px}.panelhead{display:flex;justify-content:space-between}.pill{font-size:13px;background:#dff5ee;color:#19765d;padding:6px 10px;border-radius:20px;height:fit-content}.progress{height:9px;background:#edf2f4;border-radius:8px;margin-top:18px;overflow:hidden}.progress div{height:100%;background:#149b89}.notice{background:#fff7df;border:1px solid #ecdca3;border-radius:8px;padding:16px;margin-bottom:22px;line-height:1.6}.toolbar{display:flex;gap:12px;margin-bottom:20px}.toolbar input{flex:1}.tablewrap{padding:0;overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th{background:#f8fafb;color:#687f8c;padding:16px;white-space:nowrap}td{padding:18px 16px;border-top:1px solid #edf1f3;max-width:330px;overflow-wrap:anywhere}td small{display:block;margin-top:7px;font-size:12px}.codegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.codecard strong{font-size:22px;display:block;margin:12px 0}.auth{max-width:390px;margin:12vh auto;padding:20px}.mark{font-size:42px;font-weight:bold}.auth label{display:block;font-size:14px;margin:18px 0}.auth input{display:block;width:100%;margin-top:8px}.auth button{width:100%}#error{color:#a33232;font-size:14px}footer{font-size:12px;color:#81939d;margin-top:28px}dialog{border:1px solid #dce4e8;border-radius:12px;max-width:850px;width:90vw;max-height:85vh;padding:25px}dialog::backdrop{background:#102a3d88}dialog img{max-width:100%;border:1px solid #dde5e9;margin:10px 0}dialog pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f7f8;padding:16px;font-size:12px}dialog a{color:#087d79;overflow-wrap:anywhere}[hidden]{display:none!important}@media(max-width:900px){aside{position:static;width:auto;padding:20px}aside>small,.aside-bottom{display:none}nav{display:flex;margin-top:18px}main{margin:0;padding:24px 18px}.metrics,.codegrid{grid-template-columns:repeat(2,1fr)}header{align-items:flex-start;flex-direction:column}}@media(max-width:480px){.metrics{gap:10px}.metric{padding:17px}.metric strong{font-size:28px}.codegrid{grid-template-columns:1fr}.toolbar{flex-direction:column}}
.metric{text-align:left;color:#182c37;transition:border-color .15s}.metric:hover{filter:none;border-color:#149b89}.metric span{font-size:12px;color:#087d79}.metric strong{font-size:30px;margin:10px 0}.metrics{gap:16px}.metric{padding:20px}main{padding-top:28px}header{margin-bottom:22px}summary{cursor:pointer;font-weight:600;font-size:15px}details.panel{padding:18px 24px}details[open] summary{margin-bottom:16px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #39a99c;outline-offset:3px}
.reviewgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.reviewitem{text-align:left;padding:18px}.reviewitem strong{display:block;font-size:28px;color:#966327;margin-bottom:10px}.reviewitem b,.reviewitem small{display:block;line-height:1.6}.recentitem{display:flex;width:100%;justify-content:space-between;gap:16px;border:0;border-top:1px solid #edf1f3;border-radius:0;text-align:left;padding:16px 0}.recentitem span{color:#687f8c;font-size:13px}.filters{align-items:end;flex-wrap:wrap}.filters label{display:grid;gap:7px;font-size:13px;color:#526b78}.filters label select,.filters label input{font-size:14px}#resultcount{font-size:13px}nav{gap:5px}nav button{padding:12px}@media(max-width:700px){.reviewgrid{grid-template-columns:1fr}.recentitem{flex-direction:column;gap:7px}nav{flex-wrap:wrap}.filters{align-items:stretch}}
#detail{padding:0;width:min(1000px,94vw);max-width:1000px;max-height:90vh;color:#182c37;box-shadow:0 24px 90px #102a3d44} .dialogbar{position:sticky;top:0;z-index:2;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 26px;border-bottom:1px solid #dce4e8;font-size:14px;color:#687f8c}#detailbody{padding:24px 28px}.detailheading h2{font-size:23px;line-height:1.4;margin:8px 0 14px}.eyebrow{font-size:11px;letter-spacing:1.3px;color:#687f8c}.detailfacts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:22px;background:#f5f8fa;border-radius:9px;margin:24px 0}.detailfacts dt{font-size:12px;color:#687f8c;margin-bottom:7px}.detailfacts dd{margin:0;font-size:14px;overflow-wrap:anywhere}.detailsection{border-top:1px solid #e2e9ed;padding:20px 0}.detailsection h3{font-size:16px;margin:0 0 14px}.detailsection h3 small{font-weight:400;margin-left:10px;font-size:12px}.urlbox{font-size:13px;overflow-wrap:anywhere;line-height:1.6;background:#f5f8fa;padding:12px;border-radius:6px}.emptystate{padding:16px;background:#f7f9fa;border-radius:7px;font-size:14px}.emptystate small{display:block;font-size:12px;margin-top:8px;line-height:1.6}.evidencegrid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.evidencegrid a{border:1px solid #dce4e8;border-radius:8px;overflow:hidden;text-decoration:none;color:#294957}.evidencegrid img{width:100%;height:190px;object-fit:contain;background:#edf1f3;margin:0;border:0}.evidencegrid b,.evidencegrid small{display:block;padding:10px 12px 0;font-size:13px}.evidencegrid small{padding-bottom:12px;font-size:11px}.journey{padding-left:24px}.journey li{padding:6px}.journey .pill{display:inline-block;margin-bottom:8px}@media(max-width:600px){.detailfacts{grid-template-columns:repeat(2,1fr)}.evidencegrid{grid-template-columns:1fr}#detailbody{padding:18px}.dialogbar{padding:12px 18px}}

/* ---- Investigation workspace ---------------------------------------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:20px}
.card{background:#fff;border:1px solid #dce4e8;border-radius:10px;padding:16px 18px;text-align:left;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;gap:3px}
.card:hover{border-color:#9bb3c1;box-shadow:0 1px 6px rgba(24,44,55,.09)}
.card:focus-visible{outline:2px solid #1d6fa5;outline-offset:2px}
.card b{font-size:29px;line-height:1.1}
.card span{font-weight:600;font-size:14px}
.card small{color:#687f8c;font-size:12px;line-height:1.45}
.panelhead{margin-bottom:14px}
.panelhead h2{margin-bottom:4px}
.invfilters{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:12px}
.invfilters input[type=search]{flex:1 1 270px;min-width:0}
.invfilters input,.invfilters select{padding:8px 10px;border:1px solid #dce4e8;border-radius:7px;font:inherit;font-size:14px;background:#fff}
.invrow{display:flex;gap:20px;justify-content:space-between;padding:15px 4px;border-top:1px solid #eef2f4;cursor:pointer}
.invrow:first-child{border-top:none}
.invrow:hover{background:#f8fafb}
.invrow:focus-visible{outline:2px solid #1d6fa5;outline-offset:-2px}
.invmain{min-width:0;flex:1 1 auto}
.invmain h3{font-size:16px;margin:0 0 3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.invmeta{flex:0 0 300px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.invmeta .codes{display:flex;flex-wrap:wrap;gap:5px}
.small{font-size:12px}
.prov{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:#8a6100;background:#fff4d9;border:1px solid #f0dca8;border-radius:5px;padding:2px 6px}
.reasons{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.reason{font-size:12px;background:#eef4f8;border:1px solid #d5e2ea;color:#2b5c77;border-radius:5px;padding:2px 8px}
.chip{font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;border-radius:5px;padding:2px 7px;border:1px solid #d5e2ea;background:#eef4f8}
.chip.ok{background:#e6f6ec;border-color:#b8e2c6;color:#1c6b38}
.chip.warn{background:#fff4d9;border-color:#f0dca8;color:#8a6100}
.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{font-size:12px;border-radius:20px;padding:2px 10px;border:1px solid #dce4e8;background:#f4f7f9}
.pill.state-ready_for_action{background:#e8f0fb;border-color:#c2d6f2;color:#1b4b8f}
.pill.state-resolved{background:#eef1f3;color:#5a6b76}
.pill.auth-not_authorized{background:#fdeaea;border-color:#f3c6c6;color:#9a2222}
.pill.auth-restricted{background:#fff4d9;border-color:#f0dca8;color:#8a6100}
.pill.auth-authorized{background:#e6f6ec;border-color:#b8e2c6;color:#1c6b38}
.empty{padding:18px;background:#f7f9fa;border-radius:7px;font-size:14px;color:#687f8c}
.grid{width:100%;border-collapse:collapse;font-size:13.5px;margin:8px 0 4px}
.grid th,.grid td{border:1px solid #e4eaee;padding:6px 9px;text-align:left;vertical-align:top}
.grid th{background:#f4f7f9;font-weight:600}
.tablescroll{max-height:340px;overflow:auto;border-radius:7px}
.tiny{font-size:11.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}
.drawerwrap h3{margin:22px 0 7px;font-size:15px;border-bottom:1px solid #eef2f4;padding-bottom:5px}
.facts{margin:0;padding-left:20px;font-size:14px;line-height:1.65}
.facts.unknown{color:#6b5a33}
.warnbox{background:#fff8e8;border-left:3px solid #d99100;padding:10px 14px;font-size:13.5px;border-radius:0 7px 7px 0;margin:10px 0}
.warn-text{color:#9a2222}
.ok-text{color:#1c6b38}
.next{background:#eef4f8;border:1px solid #d5e2ea;border-radius:7px;padding:11px 14px;font-size:14px}
.thumbs{display:flex;flex-wrap:wrap;gap:12px}
.thumb{margin:0;width:190px}
.thumb img{width:100%;border:1px solid #dce4e8;border-radius:6px;cursor:zoom-in;background:#f7f9fa}
.thumb figcaption{font-size:11.5px;color:#687f8c;margin-top:4px;line-height:1.4}
.reviewform{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.reviewform label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}
.reviewform label.wide,.reviewform .formrow,.reviewform p{grid-column:1/-1}
.reviewform input,.reviewform select,.reviewform textarea{padding:8px 10px;border:1px solid #dce4e8;border-radius:7px;font:inherit;font-size:14px;font-weight:400}
.reviewform textarea{resize:vertical}
.formrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn{display:inline-block;padding:9px 15px;border-radius:7px;text-decoration:none;font-size:14px;border:1px solid #dce4e8;background:#f4f7f9;color:#182c37}
.btn:hover{border-color:#9bb3c1}
@media(max-width:820px){
 .invrow{flex-direction:column;gap:10px}
 .invmeta{flex:1 1 auto}
 .reviewform{grid-template-columns:1fr}
 .cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
 .thumb{width:100%}
}
/* Provisional subject labels embed a full display URL; without this a long
   domain pushes the page wider than the viewport on a phone. */
.invmain h3,.invmain h3 b,.invrow .tiny,.invmeta{overflow-wrap:anywhere;min-width:0}

/* Long destination URLs are also rendered outside the investigation rows --
   the coupons panel prints them inside a plain <p><b>. Unbreakable URL text
   escaped the container and pushed the document 82px wider than a 390px
   viewport on every view. Wrap anywhere a long URL can legitimately appear. */
main p,main h3,main li,main td,main dd,main summary{overflow-wrap:anywhere;min-width:0}
main p b,main li b{overflow-wrap:anywhere}

/* The view switcher must wrap instead of forcing a horizontal scrollbar on a
   phone; a single long row of buttons cannot fit at 390px. */
nav{display:flex;flex-wrap:wrap;gap:6px}

/* Wide multi-column tables (regional coverage, observations) cannot shrink to
   a phone width. Scroll them inside their own container, the same treatment
   .codetable already gets, so the document itself never widens. */
#coverage,.tablescroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
#coverage table,.tablescroll table{min-width:560px}

.evidencezoom{padding:0;background:#f0f5f7;border:1px solid #ccd9df;border-radius:8px;overflow:hidden;display:block;width:100%;cursor:zoom-in;color:#196d69}.evidencezoom span{display:block;padding:7px;font-size:12px}.evidencezoom img{display:block;width:100%}.evidencezoom:hover{filter:none;border-color:#149b89}#evidenceviewer{padding:0;width:96vw;max-width:1600px;height:92vh;max-height:92vh;overflow:hidden;background:#14232e;border:1px solid #546572;color:white}#evidenceviewer::backdrop{background:#081521bb}.viewerbar{height:62px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;background:#203540}.viewerbar span{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewerbar>div{display:flex;gap:16px;align-items:center;flex-shrink:0}.viewerbar a{color:#a4e8db;font-size:13px}.viewerimage{height:calc(100% - 62px);overflow:auto;text-align:center;padding:16px}#viewerimage{margin:0;border:0;max-width:100%;height:auto;background:white}@media(max-width:600px){.viewerbar{padding:8px}.viewerbar span{max-width:100px}.viewerbar>div{gap:8px}}

.galleryarrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:56px;padding:0;font-size:24px;background:#183e4ee6;color:white;border:1px solid #79909c;border-radius:8px;box-shadow:0 2px 12px #0004}.galleryarrow.prev{left:18px}.galleryarrow.next{right:18px}.galleryarrow:disabled{opacity:.25;cursor:default}#viewercount{font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;color:#d5e7ef;font-size:13px}@media(max-width:600px){.galleryarrow.prev{left:6px}.galleryarrow.next{right:6px}.galleryarrow{width:36px;height:48px}.viewerbar #viewerlabel{max-width:75px}.viewerbar #viewercount{max-width:none}}

.codehealth{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:10px}.codehelp{font-size:13px;line-height:1.6;margin-bottom:22px}#advertisers td{max-width:none;vertical-align:top}#advertisers td:first-child{min-width:200px}#advertisers td:last-child{min-width:170px}#advertisers button{white-space:nowrap;margin-top:8px}#advertisers .chip{display:inline-block;margin:2px}#advertisers table{min-width:960px}#advertisers .toolbar{flex-wrap:wrap}#advertisers .toolbar input{min-width:240px}@media(max-width:650px){.codehealth{grid-template-columns:1fr}}

/* ---- Investigation detail dialog -------------------------------------
   The dialog was its own scroll container with a sticky bar inside it.
   A dialog's default 1em padding sits above the sticky element, so body
   text scrolled up into that gap and appeared above the header, and long
   headings were clipped behind it. Make the dialog a flex column: the bar
   is a real non-scrolling header and #invbody is the only scrolling
   region. min-height:0 is required or the body refuses to shrink and the
   dialog grows instead of scrolling.
   A <dialog> is display:none until opened, so setting display:flex here
   unconditionally made the closed drawer render as a visible block. Only the
   open state gets the flex column; the closed state keeps the UA default. */
#invdetail{padding:0;width:min(1000px,94vw);max-width:1000px;height:min(90vh,900px);max-height:90vh;color:#182c37;box-shadow:0 24px 90px #102a3d44;overflow:hidden}
#invdetail[open]{display:flex;flex-direction:column}
#invdetail:not([open]){display:none}
#invdetail .dialogbar{position:static;flex:0 0 auto}
#invbody{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 28px 26px}

/* Identifiers and status badges must never break mid-token: "Anderson938"
   split into "Anderson93 / 8" and "confirmed" into "confirme / d". */
.codetable{overflow-x:auto;-webkit-overflow-scrolling:touch}
.codetable table{min-width:640px}
.codecell{white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;word-break:normal;overflow-wrap:normal}
.codetable .basis{white-space:normal;min-width:220px}
.badge{display:inline-block;white-space:nowrap;word-break:normal;overflow-wrap:normal;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;line-height:1.7}
.badge-confirmed{background:#e6f4ec;color:#1c6b38}
.badge-candidate{background:#fdf0e2;color:#8a5a12}

/* One visible qualification; the rest folded away. */
.caveat{margin:14px 0 0;border-top:1px solid #eef2f4;padding-top:10px}
.caveat summary{cursor:pointer;font-size:13px;color:#456;font-weight:600}
.caveat .facts{margin-top:9px}

/* Findings summary: one coherent block, not another row of metric tiles. */
.findings{background:#f5f8fa;border:1px solid #e2eaee;border-radius:10px;padding:20px 22px;margin-bottom:18px}
.findings .lede{font-size:14.5px;line-height:1.65;margin:0 0 16px;max-width:76ch}
.findings .sum{font-size:14px;line-height:1.7;margin:14px 0 0;color:#33505e}
.popcards{display:flex;flex-wrap:wrap;gap:12px}
.popcard{flex:1 1 200px;text-align:left;background:#fff;border:1px solid #dbe4e9;border-radius:9px;padding:14px 16px;cursor:pointer}
.popcard:hover{border-color:#087d79}
.popcard[aria-pressed=true]{border-color:#087d79;box-shadow:inset 0 0 0 1px #087d79}
.popcard strong{display:block;font-size:27px;color:#0f5f5c;line-height:1.2}
.popcard b{display:block;font-size:13.5px;margin:3px 0 2px}
.popcard small{display:block;color:#687f8c;font-size:12px;line-height:1.5}
.subsplit{display:flex;gap:10px;margin-top:9px}
.subsplit button{flex:1;background:#f3f7f9;border:1px solid #dbe4e9;border-radius:7px;padding:7px 9px;font-size:12px;text-align:left;cursor:pointer;color:#33505e}
.subsplit button:hover{border-color:#087d79}
.subsplit button b{display:block;font-size:16px;color:#0f5f5c}
.unknownbox{border:1px solid #e2eaee;border-radius:10px;padding:0 18px;margin-bottom:18px;background:#fff}
.unknownbox summary{cursor:pointer;padding:14px 0;font-size:14px;font-weight:600}
.unknownbox .muted{font-size:13px;line-height:1.6}
.checknote{display:block;font-size:11.5px;margin-top:5px;line-height:1.5}
.linkish{background:none;border:0;color:#0f5f5c;text-decoration:underline;cursor:pointer;font-size:13px;padding:0}
.workflowrow{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}
.workflowrow button{background:#fff;border:1px solid #dbe4e9;border-radius:8px;padding:9px 13px;font-size:13px;cursor:pointer;color:#33505e}
.workflowrow button:hover{border-color:#087d79}
.workflowrow button b{color:#0f5f5c}

/* Regions */
.regionactions{display:flex;flex-wrap:wrap;gap:6px}
.regionactions button{padding:7px 11px;font-size:13px}
.runrow{border-top:1px solid #edf1f3;padding:12px 0;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.runrow p{flex:1 1 100%;margin:6px 0 0}
.auth-ok{background:#e7f6ee;color:#1c6b43}
.auth-warn{background:#fdf3e0;color:#8a5a12}
.auth-bad{background:#fdeaea;color:#96231f}
