/* Marvel — Apple-HIG / Liquid-Glass design system. Light default + dark, vanilla CSS.
   Tokens mirror redesign/marvel-redesign-mockup.html. */
/* upload modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:320;display:none;align-items:center;justify-content:center;padding:16px;}
.modal-bg.show{display:flex;}
.modal{background:var(--surface-solid);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:20px 22px;max-width:540px;width:100%;max-height:88vh;overflow:auto;}
.modal-head{display:flex;align-items:center;justify-content:space-between;}
.modal-head h3{margin:0;font-size:18px;}
.modal-foot{display:flex;align-items:center;gap:12px;margin-top:14px;}
.dropzone{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px;border:1.5px dashed var(--line);border-radius:16px;cursor:pointer;text-align:center;color:var(--muted);}
.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);}
.dropzone .ic-svg{width:30px;height:30px;color:var(--accent);}
#upload-result{margin-top:14px;}
.up-rec{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--hairline);align-items:flex-start;}
.up-rej{color:var(--muted);font-size:13px;padding:7px 0;border-top:1px solid var(--hairline);}
:root{
  --bg:#f5f5f7; --bg-grad-1:#eef1f6; --surface:rgba(255,255,255,.72); --surface-solid:#ffffff;
  --elevated:rgba(255,255,255,.85); --line:rgba(0,0,0,.08); --text:#1d1d1f; --muted:#6e6e73;
  --accent:#0a84ff; --green:#34c759; --amber:#ff9f0a; --red:#ff3b30; --hairline:rgba(0,0,0,.06);
  --shadow:0 8px 30px rgba(0,0,0,.08); --radius:20px; --radius-sm:14px;
  --blur:saturate(180%) blur(20px);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
.theme-dark{
  --bg:#000000; --bg-grad-1:#0a0a0c; --surface:rgba(28,28,30,.72); --surface-solid:#1c1c1e;
  --elevated:rgba(44,44,46,.85); --line:rgba(255,255,255,.10); --text:#f5f5f7; --muted:#98989d;
  --accent:#0a84ff; --green:#30d158; --amber:#ff9f0a; --red:#ff453a; --hairline:rgba(255,255,255,.08);
  --shadow:0 8px 30px rgba(0,0,0,.5);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;height:100%;}
body{font-family:var(--font);color:var(--text);
  background:radial-gradient(1200px 700px at 80% -10%, color-mix(in srgb,var(--accent) 9%,transparent), transparent),
   linear-gradient(180deg,var(--bg-grad-1),var(--bg));
  background-attachment:fixed;-webkit-font-smoothing:antialiased;letter-spacing:-.01em;}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit;}
a{color:var(--accent);text-decoration:none;}
.muted{color:var(--muted);}
.mono{font-variant-numeric:tabular-nums;}
/* Numeric alignment: right-align + tabular-nums for any cell/column holding a
   price, count, or percentage. Apply .num-cell to td/th/div wherever a number
   lives in a column that stacks vertically (markets list, driver board prices,
   watchlist, danger rows). */
.num-cell{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
/* Markets screener — price and YoY columns right-aligned */
.mkt-row .mono,.mkt-row .pos,.mkt-row .neg{font-variant-numeric:tabular-nums;}
.mkthead :nth-child(3),.mkthead :nth-child(4){text-align:right;}
.mkt-row>:nth-child(3),.mkt-row>:nth-child(4){text-align:right;font-variant-numeric:tabular-nums;}
/* Price + unit stacked in Markets screener (desktop .mkt-row and mobile .mcard) */
.price-val{display:block;line-height:1.15;}
.price-unit{display:block;font-size:0.67rem;color:var(--muted);font-weight:400;letter-spacing:.01em;line-height:1.2;font-variant-numeric:tabular-nums;}
/* Price-basis badge — says which series a price came from (spot/customs/USGS).
   Spot is the only basis that gets the live dot; the rest read as plainly
   assessed/derived, never as a live tick. Sits under the price it describes. */
.price-basis{margin-top:3px;}
.basis-chip{display:inline-flex;align-items:center;font-size:9.5px;font-weight:700;letter-spacing:.02em;
  text-transform:uppercase;padding:1.5px 5px;border-radius:5px;white-space:nowrap;line-height:1.5;font-variant-numeric:tabular-nums;}
.basis-chip.basis-spot{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green);}
.basis-chip.basis-customs,.basis-chip.basis-usgs,.basis-chip.basis-other{
  background:color-mix(in srgb,var(--muted) 16%,transparent);color:var(--muted);text-transform:none;}
.livedot.sm{width:5px;height:5px;margin-right:4px;box-shadow:none;animation:none;}
/* Board header price */
.board-head .price{font-variant-numeric:tabular-nums;}
/* form-desc price values */
.fd-price .fp-val{font-variant-numeric:tabular-nums;}
/* Supply metrics values */
.sup-m .sup-v{font-variant-numeric:tabular-nums;}
/* Trade-flow figures */
.tf-fig .tf-v{font-variant-numeric:tabular-nums;}
/* Trade partner metadata (shipment counts, values) */
.tr-edge .tr-meta{font-variant-numeric:tabular-nums;}
/* Macro strip FX numbers */
.macro-strip b{font-variant-numeric:tabular-nums;}
/* Mover cards on mobile */
.mcard .mono{font-variant-numeric:tabular-nums;}
.hidden{display:none!important;}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important;}}

/* ===== LOGIN ===== */
.login-view{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;padding:2rem;}
.login-card{background:var(--surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem;max-width:380px;width:100%;}
.login-card h1{font-size:1.5rem;letter-spacing:-.03em;margin:.6rem 0 .3rem;}
.login-card .sub{color:var(--muted);font-size:.92rem;margin:0 0 1.2rem;}
.login-card form{display:flex;flex-direction:column;gap:.7rem;}
.login-card label{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted);}
.login-card input{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);
  color:var(--text);border-radius:12px;padding:.6rem .7rem;font-size:1rem;}
.login-card button[type=submit]{background:var(--accent);color:#fff;border-radius:12px;padding:.7rem;font-weight:600;font-size:1rem;margin-top:.3rem;}
.login-card .error{color:var(--red);font-size:.85rem;min-height:1em;}
.login-card .hint,.login-foot{color:var(--muted);font-size:.8rem;}
.login-card .brand{margin-bottom:.4rem;}
.login-forgot{margin:.3rem 0 0;text-align:right;}
.login-forgot button{color:var(--accent);font-size:.85rem;background:none;border:0;cursor:pointer;padding:0;}
.login-forgot button:hover{text-decoration:underline;}
.login-back{margin:.8rem 0 0;text-align:center;}
.login-back button{color:var(--accent);font-size:.85rem;background:none;border:0;cursor:pointer;padding:0;}
.login-back button:hover{text-decoration:underline;}
.login-confirm{margin:.8rem 0 0;padding:.75rem 1rem;background:color-mix(in srgb,var(--green) 12%,transparent);border:1px solid color-mix(in srgb,var(--green) 30%,transparent);border-radius:12px;font-size:.9rem;line-height:1.5;color:var(--text);}
.login-invalid{margin:.8rem 0 0;padding:.75rem 1rem;background:color-mix(in srgb,var(--amber) 12%,transparent);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent);border-radius:12px;font-size:.9rem;line-height:1.5;color:var(--text);}
.login-invalid p{margin:.5rem 0 0;}
.login-inline-link{color:var(--accent);font-size:inherit;font-weight:600;background:none;border:0;cursor:pointer;padding:0;}
.login-inline-link:hover{text-decoration:underline;}
.pw-strength{min-height:1.2em;font-size:.8rem;margin:-.2rem 0 .1rem;}
.pw-strength.weak{color:var(--red);}
.pw-strength.fair{color:var(--amber);}
.pw-strength.strong{color:var(--green);}

/* ===== shell ===== */
.app-view{max-width:1180px;margin:0 auto;padding:0 20px 100px;}
.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:8px;padding:12px 12px;margin-bottom:8px;
  background:var(--surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-bottom:1px solid var(--hairline);}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;}
.brand .mark{width:28px;height:28px;display:block;flex:none;box-shadow:0 1px 3px rgba(0,0,0,.18);border-radius:8px;}
.wordmark{font-weight:700;letter-spacing:-.022em;font-size:19px;}
.nav .tab{padding:8px 14px;border-radius:999px;font-size:14px;font-weight:600;color:var(--muted);}
.nav .tab:hover{color:var(--text);}
.nav .tab:focus-visible{border-radius:999px;}
.nav .tab.active{color:var(--text);background:color-mix(in srgb,var(--text) 7%,transparent);}
.nav .grow{flex:1;}
.livedot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block;margin-right:5px;box-shadow:0 0 0 0 var(--green);animation:pulse 2.4s infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--green) 60%,transparent);}70%{box-shadow:0 0 0 7px transparent;}100%{box-shadow:0 0 0 0 transparent;}}
/* .icon-btn base defined later in the account-row block (single source of truth) */

/* mobile header + tab bar */
.mhead{display:none;}
.tabbar{display:none;}
.mobile-only{display:none;}
@media (max-width:680px){
  /* generic visibility toggles FIRST so component display rules below win */
  .mobile-only{display:block;}
  .desktop-only{display:none!important;}
  .app-view{padding:0 0 96px;}
  .nav{display:none;}
  .mhead{display:block;position:sticky;top:0;z-index:40;padding:42px 18px 12px;background:var(--surface);
    backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-bottom:1px solid var(--hairline);}
  .mhead .mtop{display:flex;align-items:center;justify-content:space-between;}
  .mbrand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;letter-spacing:-.022em;}
  .mbrand .mark{width:24px;height:24px;display:block;box-shadow:0 1px 3px rgba(0,0,0,.18);border-radius:7px;}
  .mhead .avatar-btn{width:24px;height:24px;border-radius:7px;font-size:.65rem;}
  .mhead .icon-btn{width:24px;height:24px;border-radius:7px;}
  .mhead .icon-btn .ic-svg{width:14px;height:14px;}
  .mhead h1{margin:8px 0 0;font-size:28px;font-weight:800;letter-spacing:-.03em;}
  .mhead .src-wrap{margin-top:6px;}
  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:55;justify-content:space-around;
    padding:9px 8px calc(18px + env(safe-area-inset-bottom));background:var(--surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-top:1px solid var(--hairline);}
  .tabbar button{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10px;font-weight:600;color:var(--muted);flex:1 1 0;min-height:44px;}
  .tabbar button.active{color:var(--accent);}
  .h-title,.h-sub{display:none;}
  .card{margin:0 14px 14px;border-radius:var(--radius-sm);}
  .mkthead{display:none;}
}
/* custom SVG chrome icons */
.tabbar .ic{width:24px;height:24px;display:block;}
.ic-svg{display:block;}
.icon-btn .ic-svg{width:16px;height:16px;}
.tabbar .ic-svg{width:24px;height:24px;}
.btn-ico{width:15px;height:15px;vertical-align:-2px;margin-right:2px;}
.search-wrap{position:relative;}
.search-wrap .search-ico{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none;}
.search-wrap .search{padding-left:38px;}

/* ===== sections / headers ===== */
.view{display:none;animation:fade .3s ease;}
.view.active{display:block;}
@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.h-title{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:18px 6px 4px;}
.h-sub{font-size:14px;color:var(--muted);margin:0 6px 18px;}

.card{background:var(--surface);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:16px;}
.card h3{margin:0 0 4px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.card h4{margin:0 0 6px;font-size:15px;}

/* confidence ring */
.ring{--p:.85;--c:var(--green);width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;
  background:conic-gradient(var(--c) calc(var(--p)*360deg), color-mix(in srgb,var(--muted) 22%,transparent) 0);}
.ring i{width:30px;height:30px;border-radius:50%;background:var(--surface-solid);display:grid;place-items:center;font-size:11px;font-weight:700;font-style:normal;font-variant-numeric:tabular-nums;}
.ring.sm{width:30px;height:30px;}.ring.sm i{width:23px;height:23px;font-size:10px;}
body.hide-confidence .ring{display:none;}

/* ===== global focus-visible (WCAG AA minimum — one canonical rule) ===== */
/* Component-specific border-radius overrides follow in each component block. */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}

/* tier chip */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);
  background:color-mix(in srgb,var(--muted) 10%,transparent);border-radius:999px;padding:4px 9px;cursor:pointer;border:0;}
.chip:focus-visible{border-radius:999px;}
.chip .tdot{width:7px;height:7px;border-radius:50%;}
.t5{background:var(--green);}.t4{background:#9ae6b4;}.t3{background:var(--amber);}.t2{background:#ffd479;}.t1{background:var(--muted);}.t0{background:var(--muted);}
.chip:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--text);}

/* Brief line -> News click-through chip (news-derived lines only, once the API
   attaches a country; renders nothing until then). */
.news-brief-country-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:999px;padding:4px 9px;cursor:pointer;border:0;}
.news-brief-country-chip:hover{background:color-mix(in srgb,var(--accent) 22%,transparent);}

/* danger pill */
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;border-radius:999px;padding:4px 10px;}
.pill.red{background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--red);}
.pill.amber{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber);}
.pill.green{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green);}
.badge-ch{font-size:11px;font-weight:700;color:var(--amber);background:color-mix(in srgb,var(--amber) 16%,transparent);border-radius:6px;padding:2px 7px;}
.tiny{font-size:11px;color:var(--muted);}

/* brief */
.brief-item{display:flex;gap:13px;padding:14px 4px;border-bottom:1px solid var(--hairline);cursor:pointer;}
.brief-item:last-child{border-bottom:0;}
.brief-item .body{flex:1;min-width:0;}
.brief-item .ln{font-size:15px;line-height:1.45;}
.brief-item .meta{display:flex;align-items:center;gap:8px;margin-top:7px;flex-wrap:wrap;}

/* markets */
.search{width:100%;background:color-mix(in srgb,var(--muted) 10%,transparent);border:1px solid var(--line);
  border-radius:12px;padding:11px 14px;font-size:15px;color:var(--text);margin-bottom:14px;}
.mkthead,.mkt-row{display:grid;grid-template-columns:50px 1.4fr 92px 70px 60px 78px;gap:10px;align-items:center;}
.mkthead{padding:0 8px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
/* Sortable column header buttons — reset button chrome, inherit header style. */
.mkt-sort-btn{background:none;border:none;padding:2px 4px;margin:-2px -4px;border-radius:6px;font:inherit;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:0;white-space:nowrap;transition:color .12s,background .12s;}
.mkt-sort-btn:hover{color:var(--text);background:color-mix(in srgb,var(--text) 7%,transparent);}
.mkt-sort-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.mkt-sort-btn.mkt-sort-active{color:var(--text);}
.mkt-sort-btn .sort-ind{font-size:10px;line-height:1;margin-left:1px;}
.mkt-row{padding:12px 8px;border-radius:14px;cursor:pointer;border-bottom:1px solid var(--hairline);}
.mkt-row:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}
.mkt-row .enm{font-size:13px;color:var(--muted);}
.pos{color:var(--green);font-weight:700;}.neg{color:var(--red);font-weight:700;}
.mcard{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--hairline);cursor:pointer;}
.mcard .grow{flex:1;}
.spark{display:block;}

/* driver board */
.back{font-size:14px;font-weight:600;color:var(--accent);margin:6px;display:inline-flex;gap:5px;align-items:center;border-radius:6px;padding:2px 4px;}
.back:focus-visible{border-radius:6px;}
.board-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px;}
.board-head .big{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1;}
.board-head .price{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;}
.bh-id{flex:0 1 auto;min-width:200px;display:flex;gap:14px;align-items:center;}
.bh-product{flex:1;display:flex;align-items:center;justify-content:center;min-width:0;}
.bh-product-img{height:84px;max-width:100%;object-fit:contain;border-radius:14px;border:1px solid var(--hairline);background:#fff;}
.bh-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end;}
.bh-price{text-align:right;margin-right:2px;line-height:1.1;}
.bh-yoy{font-weight:700;font-size:12px;}
.bh-ring{display:inline-flex;}
.icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;background:color-mix(in srgb,var(--muted) 10%,transparent);border:1px solid var(--line);color:var(--text);border-radius:8px;cursor:pointer;padding:0;}
.icon-btn:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);}
.icon-btn:focus-visible{border-radius:8px;}
.icon-btn.on{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 50%,transparent);background:color-mix(in srgb,var(--amber) 12%,transparent);}
.icon-btn .ic-svg{width:16px;height:16px;}
/* horizontal trade-form chip bar (under the board header) */
.forms-bar{margin:-4px 0 16px;}
.forms-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.fchip{display:inline-flex;align-items:center;gap:5px;background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:6px 13px;font-size:13px;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s;}
.fchip:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.fchip:focus-visible{border-radius:999px;}
.fchip.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.fchip-star{color:var(--amber);font-size:12px;}
.fchip.active .fchip-star{color:#fff;}
.fchip-sh{font-size:11px;font-weight:700;opacity:.7;padding-left:3px;border-left:1px solid color-mix(in srgb,var(--muted) 40%,transparent);}
.form-desc{margin-top:12px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:12px;padding:13px 15px;}
.form-desc{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap;}
.fd-main{flex:1;min-width:220px;}
.form-desc .fd-title{font-size:16px;font-weight:700;letter-spacing:-.01em;}
/* price boxes: small, stacked vertically, pinned to the right of the grey box */
.fd-prices{display:flex;flex-direction:column;gap:7px;flex:0 0 190px;width:190px;margin:0;}
.fd-price{display:flex;flex-direction:column;gap:1px;background:color-mix(in srgb,var(--muted) 7%,transparent);border:1px solid var(--hairline);border-radius:9px;padding:6px 10px;}
.fd-price .fp-lbl{font-size:11px;font-weight:600;color:var(--muted);}
.fd-price .fp-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-left:3px;}
.fd-price .fp-val{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;}
.fd-price .fp-u{font-size:11px;font-weight:600;color:var(--muted);}
.fd-price .fp-na{color:var(--muted);font-weight:800;}
.fd-price .pos{color:var(--green);font-size:11px;font-weight:700;}
.fd-price .neg{color:var(--red);font-size:11px;font-weight:700;}
.form-desc .fd-badges{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0;}
.fb-badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:color-mix(in srgb,var(--muted) 12%,transparent);border-radius:6px;padding:3px 8px;}
.fb-badge.bench{color:var(--amber);background:color-mix(in srgb,var(--amber) 16%,transparent);}
.form-desc .fd-text{font-size:14px;line-height:1.5;color:var(--text);margin:6px 0 0;}
.form-desc .fd-shared{margin-top:9px;font-size:13px;color:var(--muted);}
.form-desc .xel{font-weight:700;color:var(--accent);background:none;border:none;cursor:pointer;padding:0;}
.wl-form{font-size:11px;font-weight:700;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:6px;padding:2px 7px;margin-left:6px;vertical-align:middle;}
.tldr{font-size:17px;line-height:1.5;font-weight:600;letter-spacing:-.015em;margin:0 0 12px;}
.ai-bul{display:flex;gap:11px;padding:11px 0;border-top:1px solid var(--hairline);}
.ai-bul .mk{color:var(--accent);font-weight:800;flex:none;margin-top:1px;}
.ai-bul .txt{flex:1;font-size:14.5px;line-height:1.5;}
.ai-bul .meta{display:flex;align-items:center;gap:8px;margin-top:7px;flex-wrap:wrap;}
.ai-attrib{font-size:12px;color:var(--muted);margin-top:12px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.export-btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:999px;padding:8px 14px;}
.drivers{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
.dcard{background:color-mix(in srgb,var(--text) 3%,transparent);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;}
.dcard.danger{background:color-mix(in srgb,var(--red) 8%,transparent);border-color:color-mix(in srgb,var(--red) 30%,transparent);}
.dcard .dk{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.dcard.danger .dk{color:var(--red);}
.dcard .dl{font-size:14.5px;font-weight:600;line-height:1.4;margin:7px 0 10px;}
.dcard .df{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.dcard .upd{font-size:11px;color:var(--muted);}
.seg{display:inline-flex;background:color-mix(in srgb,var(--muted) 12%,transparent);border-radius:10px;padding:3px;gap:2px;}
.seg button{padding:5px 12px;border-radius:8px;font-size:13px;font-weight:600;color:var(--muted);}
.seg button.active{background:var(--surface-solid);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.12);}
.ev{display:flex;gap:12px;padding:13px 0;border-top:1px solid var(--hairline);}
.ev .etype{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);}
.ev .est{font-size:14px;line-height:1.45;margin:4px 0 8px;}
.ev .ef{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
@media (max-width:680px){.drivers{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding-bottom:6px;}.drivers .dcard{min-width:78%;scroll-snap-align:start;}}
.chart-wrap{position:relative;height:130px;}
/* locked-box: always INSIDE a .card, never the card itself */
.locked-box{background:color-mix(in srgb,var(--amber) 10%,transparent);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent);
  border-radius:12px;padding:14px;color:var(--text);font-size:14px;line-height:1.5;}

/* toast notification (transient status messages) */
#marvel-toast{position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(12px);
  background:var(--surface-solid);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);
  padding:10px 18px;font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;z-index:400;
  opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;}
#marvel-toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}
#marvel-toast.error{color:var(--red);}
#marvel-toast.warn{color:var(--amber);}
.icon-btn[data-loading]{opacity:.55;pointer-events:none;}
/* Impact Report labeled button — PDF icon + visible text on desktop, icon-only on narrow */
.report-btn-labeled{display:inline-flex;align-items:center;gap:5px;flex:none;background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent);border-radius:8px;cursor:pointer;padding:0 10px;height:28px;font-size:12px;font-weight:600;white-space:nowrap;}
.report-btn-labeled:hover{background:color-mix(in srgb,var(--accent) 22%,transparent);}
.report-btn-labeled .ic-svg{width:14px;height:14px;flex:none;}
.report-btn-labeled[data-loading]{opacity:.55;pointer-events:none;}
@media(max-width:540px){.report-btn-label{display:none;}.report-btn-labeled{width:28px;padding:0;justify-content:center;}}

/* danger center */
.danger-row{display:flex;gap:13px;padding:15px 4px;border-bottom:1px solid var(--hairline);align-items:flex-start;cursor:pointer;}

/* periodic-table tile */
.ptile{display:inline-flex;flex-direction:column;justify-content:center;align-items:center;position:relative;
  background:color-mix(in srgb,var(--cc) 16%,transparent);border:1px solid color-mix(in srgb,var(--cc) 55%,transparent);
  border-radius:11px;color:var(--text);line-height:1;flex:none;overflow:hidden;text-align:center;}
.ptile .pn{position:absolute;top:3px;left:5px;font-size:8px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums;}
.ptile .ps{font-weight:800;letter-spacing:-.02em;}
.ptile .pnm{font-size:7px;color:var(--muted);max-width:92%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}
.ptile.sm{width:38px;height:38px;border-radius:9px;}.ptile.sm .ps{font-size:15px;margin-top:3px;}.ptile.sm .pnm{display:none;}
.ptile.md{width:46px;height:46px;}.ptile.md .ps{font-size:18px;margin-top:3px;}
.ptile.lg{width:66px;height:66px;border-radius:15px;}.ptile.lg .pn{font-size:10px;top:5px;left:7px;}.ptile.lg .ps{font-size:27px;margin-top:4px;}.ptile.lg .pnm{font-size:8px;}

/* sources dropdown */
.src-wrap{position:relative;}
.src-btn{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:6px;font-weight:600;}
.src-btn:hover{color:var(--text);}
.src-menu{position:absolute;top:calc(100% + 10px);right:0;width:310px;z-index:120;background:var(--surface-solid);
  border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:8px;display:none;}
.src-wrap.open .src-menu{display:block;animation:fade .2s ease;}
.src-head{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;padding:9px 10px 4px;}
.src-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:11px;cursor:pointer;}
.src-row:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}
.src-row .tdot{width:9px;height:9px;border-radius:50%;flex:none;}
.src-row .nm{font-weight:600;font-size:13px;}
.src-row .st{font-size:11px;color:var(--muted);margin-top:1px;}
@media (max-width:680px){.src-menu{left:0;right:auto;width:86vw;max-width:340px;}}

/* account popover */
.acct-wrap{position:relative;margin-left:4px;}
.avatar-btn{width:28px;height:28px;border-radius:8px;flex:none;
  background:linear-gradient(135deg,var(--accent),#5e5ce6);box-shadow:0 1px 3px rgba(0,0,0,.18);
  color:#fff;font-weight:700;font-size:.72rem;line-height:1;
  display:flex;align-items:center;justify-content:center;}
.avatar-btn:hover{filter:brightness(1.08);}
.account-pop{position:absolute;right:0;top:42px;width:250px;z-index:130;background:var(--surface-solid);
  border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:.4rem;}
.ap-head{display:flex;gap:.6rem;align-items:center;padding:.6rem;border-bottom:1px solid var(--hairline);margin-bottom:.35rem;}
.ap-avatar{width:2.4rem;height:2.4rem;border-radius:50%;flex:none;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#5e5ce6);color:#fff;font-weight:700;}
.ap-id{min-width:0;}
.ap-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ap-email{font-size:.8rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ap-badges{margin-top:.3rem;display:flex;gap:.3rem;flex-wrap:wrap;}
.ap-badge{font-size:.62rem;text-transform:uppercase;letter-spacing:.03em;background:color-mix(in srgb,var(--muted) 12%,transparent);border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:.05rem .45rem;}
.ap-badge.alt{color:var(--green);}
.ap-menu{display:flex;flex-direction:column;}
.ap-item{display:flex;align-items:center;gap:.55rem;text-align:left;background:none;border:0;color:var(--text);padding:.5rem .6rem;border-radius:10px;font-size:14px;}
.ap-item:hover{background:color-mix(in srgb,var(--text) 5%,transparent);}
.ap-item.danger{color:var(--red);}
.ap-ico{width:1.1rem;text-align:center;opacity:.85;}
.ap-sep{height:1px;background:var(--hairline);margin:.3rem .2rem;}

/* provenance bottom sheet */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:300;display:none;}
.sheet-bg.show{display:block;}
.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--surface-solid);border-radius:22px 22px 0 0;
  padding:10px 20px 30px;box-shadow:0 -10px 40px rgba(0,0,0,.3);transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);max-width:560px;margin:0 auto;}
.sheet-bg.show .sheet{transform:none;}
.sheet .grab{width:38px;height:5px;border-radius:3px;background:var(--muted);opacity:.4;margin:8px auto 16px;}
.sheet .sh-pub{font-weight:700;font-size:16px;margin-bottom:4px;}
.sheet .sh-ex{font-size:14px;line-height:1.5;background:color-mix(in srgb,var(--muted) 8%,transparent);border-radius:12px;padding:13px;margin:12px 0;}
.sheet .sh-body{font-size:14px;line-height:1.55;margin:6px 0 12px;}
.sheet .sh-body p{margin:0 0 10px;}
.sheet .sh-body .sh-line{font-size:15px;font-weight:600;}
.sh-list{display:flex;flex-direction:column;gap:8px;margin:10px 0;}
.sh-item{background:color-mix(in srgb,var(--muted) 8%,transparent);border-radius:10px;padding:9px 12px;}
.sh-item .sh-it-t{font-size:13px;font-weight:600;line-height:1.4;}
.pill.clickable,.bh-ring{cursor:pointer;}

/* ===== settings & help (re-homed) ===== */
.sv-head{display:flex;align-items:baseline;gap:.6rem;margin:18px 6px 14px;}
.sv-head h2{margin:0;font-size:24px;letter-spacing:-.02em;}
.sv-body{display:grid;grid-template-columns:210px 1fr;gap:1.2rem;align-items:start;padding:0 6px;}
.sv-nav{display:flex;flex-direction:column;gap:.15rem;position:sticky;top:80px;}
.sv-link{text-align:left;background:none;border:0;color:var(--muted);padding:.5rem .7rem;border-radius:10px;font-size:14px;}
.sv-link:hover{background:color-mix(in srgb,var(--text) 5%,transparent);color:var(--text);}
.sv-link.active{background:color-mix(in srgb,var(--text) 7%,transparent);color:var(--text);font-weight:600;}
.sv-pane h3{margin:1.1rem 0 .5rem;font-size:1rem;}.sv-pane h3:first-child{margin-top:0;}
.fld{display:grid;gap:.25rem;padding:.55rem 0;border-bottom:1px solid var(--hairline);}
.fld:last-child{border-bottom:0;}
.fld>label{font-size:.85rem;color:var(--muted);}
.fld input:not([type=checkbox]),.fld select{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.4rem .55rem;max-width:320px;}
.fld textarea{width:100%;max-width:520px;background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.5rem .6rem;font:inherit;resize:vertical;}
.fhint{color:var(--muted);font-size:.75rem;}
.mini-btn{background:color-mix(in srgb,var(--muted) 10%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.35rem .7rem;}
.mini-btn:hover:not(:disabled){border-color:var(--accent);}
.mini-btn:disabled{opacity:.5;cursor:not-allowed;}
.mini-btn.danger{color:var(--red);}
.roadmap{font-size:.66rem;text-transform:uppercase;letter-spacing:.03em;color:var(--amber);border:1px solid color-mix(in srgb,var(--amber) 40%,transparent);border-radius:20px;padding:.02rem .4rem;margin-left:.3rem;}
.phase2{font-size:.62rem;text-transform:uppercase;background:var(--accent);color:#fff;border-radius:20px;padding:.05rem .45rem;margin-left:.4rem;font-weight:700;}
.sw{width:38px;height:22px;border-radius:20px;border:1px solid var(--line);background:color-mix(in srgb,var(--muted) 12%,transparent);position:relative;padding:0;}
.sw span{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:.15s;}
.sw.on{background:color-mix(in srgb,var(--accent) 25%,transparent);border-color:var(--accent);}
.sw.on span{left:18px;background:var(--accent);}
.ent-table,.kbd-table{width:100%;border-collapse:collapse;font-size:.9rem;}
.ent-table th,.ent-table td,.kbd-table td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--hairline);}
.provider-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;margin:.6rem 0;}
.provider-card{display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);border-radius:10px;padding:.5rem .7rem;font-size:.85rem;}
.help-pane{line-height:1.65;}.help-pane p{margin:.5rem 0;}.help-ol{padding-left:1.2rem;}
.formula{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;font-family:ui-monospace,monospace;font-size:.85rem;}
.gloss dt{font-weight:700;margin-top:.7rem;}.gloss dd{margin:.15rem 0;color:var(--muted);}
.faq{border:1px solid var(--line);border-radius:10px;padding:.5rem .7rem;margin:.4rem 0;}
.faq summary{cursor:pointer;font-weight:600;}
kbd{background:color-mix(in srgb,var(--muted) 12%,transparent);border:1px solid var(--line);border-radius:5px;padding:.05rem .4rem;font-family:ui-monospace,monospace;font-size:.8rem;}
@media (max-width:680px){.sv-body{grid-template-columns:1fr;}.sv-nav{flex-direction:row;flex-wrap:wrap;position:static;}.sv-head,.sv-body{padding:0 14px;}}

/* admin (kept) */
.admin-msg{font-size:.85rem;color:var(--muted);}
.form-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;}
.form-row input,.form-row select{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.45rem .6rem;}
.users-table,.access-matrix{width:100%;border-collapse:collapse;font-size:.9rem;}
.users-table th,.users-table td,.access-matrix th,.access-matrix td{padding:.45rem .5rem;border-bottom:1px solid var(--hairline);text-align:left;}
.link{background:none;border:0;color:var(--accent);cursor:pointer;}.link.danger{color:var(--red);}
.tag-you{font-size:.7rem;color:var(--accent);}
.matrix-wrap{overflow-x:auto;}
.mini{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:.2rem;}
@media (max-width:680px){.users-table{display:block;overflow-x:auto;white-space:nowrap;}}

/* ===== trade-form images, converter, customs, brief selector (0016+) ===== */
.bh-img{width:64px;height:64px;border-radius:14px;object-fit:cover;border:1px solid var(--hairline);flex:none;}
.fd-thumb{width:26px;height:26px;border-radius:7px;object-fit:cover;vertical-align:middle;margin-right:8px;border:1px solid var(--hairline);}
.fp-val.fp-same{font-size:13px;font-weight:700;color:var(--muted);}
/* customs codes */
.fd-customs{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.hs-code{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:7px;padding:3px 8px;text-decoration:none;}
.hs-code:hover{background:color-mix(in srgb,var(--accent) 18%,transparent);}
.hs-list{display:flex;flex-direction:column;gap:6px;}
.hs-row{display:flex;align-items:center;gap:12px;padding:9px 12px;border:1px solid var(--hairline);border-radius:10px;text-decoration:none;color:var(--text);}
.hs-row:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.hs-row .hs-c{font-weight:800;font-variant-numeric:tabular-nums;color:var(--accent);flex:none;min-width:120px;}
.hs-row .hs-d{flex:1;font-size:13px;color:var(--muted);}
.hs-row .hs-go{color:var(--muted);}
/* form converter */
.conv-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.conv-row input,.conv-row select{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.5rem .6rem;font-size:14px;font-weight:600;}
.conv-row #conv-amt{width:110px;}
.conv-arrow{font-weight:800;color:var(--muted);}
.conv-out{margin-top:14px;}
.conv-result{display:flex;flex-wrap:wrap;align-items:center;gap:14px;}
.conv-side{display:flex;flex-direction:column;gap:1px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:11px;padding:10px 14px;min-width:150px;}
.conv-side .cl{font-size:12px;font-weight:600;color:var(--muted);}
.conv-side b{font-size:19px;font-variant-numeric:tabular-nums;}
.conv-side .cv{font-size:13px;font-weight:700;color:var(--green);}
.conv-eq{font-size:13px;color:var(--muted);font-weight:600;}
/* brief time selector + NEW badge */
.brief-seg{margin-bottom:14px;}
.new-dot{font-size:10px;font-weight:800;letter-spacing:.04em;color:#fff;background:var(--accent);border-radius:5px;padding:1px 6px;vertical-align:middle;}
.src-tool{display:flex;flex-direction:column;gap:1px;padding:9px 10px;border-radius:11px;text-decoration:none;color:var(--accent);font-weight:700;font-size:13px;}
.src-tool:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);}
.src-tool .st{font-size:11px;color:var(--muted);font-weight:500;}

/* ===== space optimization: inline view headers, tighter rhythm ===== */
/* General rule: a view's title row and its controls share ONE row, no empty band. */
.view-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px;}
.view-head .vh-titles{flex:1;min-width:220px;}
.view-head .h-title{margin:0;}
.view-head .h-sub{margin:4px 0 0;}
.view-head .brief-seg{margin:2px 0 0;flex:none;}
.fd-title{display:flex;align-items:center;gap:8px;}
.fd-title .fd-name{font-weight:700;}
/* HS code rendered as a clickable badge among the others (concentrate, % contained…) */
.fb-badge.hs{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);text-decoration:none;text-transform:none;letter-spacing:0;}
.fb-badge.hs:hover{background:color-mix(in srgb,var(--accent) 20%,transparent);}

/* price display-unit selector on the board */
.unit-sel{background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:.3rem .5rem;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;}

/* element world map (Leaflet) */
.elmap{height:380px;border-radius:14px;overflow:hidden;border:1px solid var(--hairline);}
.elmap .leaflet-container{background:transparent;font-family:var(--font);}
.map-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted);}
.map-legend span{display:inline-flex;align-items:center;gap:6px;}
.mk-dot{width:11px;height:11px;border-radius:50%;display:inline-block;border:1.5px solid #fff;box-shadow:0 0 0 1px var(--hairline);}
.mk-dot.mine{background:#f0894a;}.mk-dot.refinery{background:#0a84ff;}.mk-dot.port{background:#30d158;}
.map-lvl{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--muted);background:color-mix(in srgb,var(--muted) 14%,transparent);border-radius:5px;padding:1px 6px;}
.alert-pin{font-size:18px;line-height:24px;text-align:center;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));}
.tf-figs{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 14px;}
.tf-fig{flex:1;min-width:130px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:10px;padding:9px 12px;}
.tf-fig .tf-k{font-size:11px;font-weight:600;color:var(--muted);}
.tf-fig .tf-v{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;}
.mk-sq{width:12px;height:12px;border-radius:3px;display:inline-block;opacity:.55;}
.mk-sq.mine{background:#f0894a;}.mk-sq.refi{background:#0a84ff;}.mk-sq.both{background:#8e6fd6;}
/* News-coverage map legend swatches (Brief → "Where the news is today") */
.nm-sq{width:12px;height:12px;border-radius:3px;display:inline-block;}
.nm-sq.nm-cov{background:#0a84ff;opacity:.45;}
.nm-sq.nm-today{background:#f0b429;opacity:.9;box-shadow:0 0 0 1.5px #f0b429;}
/* trade-partners (customs shipper graph) */
.tr-list{display:flex;flex-direction:column;gap:6px;}
.tr-edge{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 11px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:9px;font-size:13px;}
.tr-edge .tr-co{font-weight:600;}
.tr-edge .tr-arrow{color:var(--muted);font-weight:800;}
.tr-edge .tr-meta{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.tr-events{display:flex;flex-wrap:wrap;gap:6px;}
.tr-ev{font-size:11px;background:color-mix(in srgb,var(--green) 12%,transparent);color:var(--text);border-radius:6px;padding:2px 7px;}
.fp-meas{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:color-mix(in srgb,var(--muted) 12%,transparent);border-radius:5px;padding:1px 5px;margin-left:3px;}
.beta{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--amber);background:color-mix(in srgb,var(--amber) 16%,transparent);border-radius:5px;padding:1px 6px;vertical-align:middle;margin-left:6px;}
/* supply & policy flags */
.flag-row{display:flex;gap:11px;padding:10px 0;border-top:1px solid var(--hairline);}
.flag-row:first-of-type{border-top:0;}
.flag-cat{flex:none;font-size:10px;font-weight:800;letter-spacing:.04em;border-radius:6px;padding:3px 8px;height:fit-content;background:color-mix(in srgb,var(--muted) 14%,transparent);color:var(--muted);}
.flag-cat.policy{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);}
.flag-cat.supply{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber);}
.flag-body .flag-t{font-size:14px;font-weight:600;line-height:1.4;}
/* USD macro backdrop strip */
.macro-strip{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 14px;padding:9px 13px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:11px;font-size:13px;}
.macro-strip .mac-lbl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.macro-strip .mac-cell{display:inline-flex;align-items:center;gap:6px;}
.macro-strip .mac-k{font-size:12px;color:var(--muted);}
.macro-strip b{font-variant-numeric:tabular-nums;}
/* supply network intelligence card */
.sup-summary{font-size:14px;line-height:1.55;font-weight:500;margin:0 0 12px;}
.sup-metrics{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:12px;}
.sup-m{flex:1;min-width:130px;}
.sup-m .sup-k{font-size:11px;font-weight:600;color:var(--muted);margin-bottom:3px;}
.sup-m .sup-v{font-size:15px;font-weight:700;}
.sup-bar{display:flex;height:16px;border-radius:8px;overflow:hidden;border:1px solid var(--hairline);}
.sup-seg{display:block;height:100%;}
.sup-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:12px;color:var(--muted);}
.sup-leg{display:inline-flex;align-items:center;gap:5px;}
.sup-leg i{width:10px;height:10px;border-radius:3px;display:inline-block;}
/* supply anomaly flags */
.anom-list{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;}
.anom{font-size:13px;font-weight:600;padding:8px 12px;border-radius:9px;background:color-mix(in srgb,var(--amber) 14%,transparent);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent);}
.anom.concentration,.anom.volume_drop,.anom.price_divergence{background:color-mix(in srgb,var(--red) 12%,transparent);border-color:color-mix(in srgb,var(--red) 28%,transparent);}
/* collapsible card groups */
.grp{margin:0 0 10px;}
.grp > summary{cursor:pointer;list-style:none;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:9px 4px;display:flex;align-items:center;gap:8px;user-select:none;border-top:1px solid var(--hairline);}
.grp > summary::-webkit-details-marker{display:none;}
.grp > summary::before{content:"▸";font-size:11px;transition:transform .15s ease;}
.grp[open] > summary::before{transform:rotate(90deg);}
.grp > summary:hover{color:var(--text);}
.grp[open] > summary{color:var(--text);}
@media (max-width:680px){.grp > summary{padding-left:16px;}}
/* clickable company chips + company info sheet */
.sup-sup{margin-top:10px;}
.co-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;}
.co-chip{font:inherit;font-size:12px;font-weight:600;color:var(--text);background:var(--chip-bg,#f2f4f7);border:1px solid var(--hairline);border-radius:14px;padding:4px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,border-color .12s;}
.co-chip:hover{background:var(--accent,#0a84ff);border-color:var(--accent,#0a84ff);color:#fff;}
.co-chip:focus-visible{border-radius:14px;}
.co-chip:hover .tiny,.co-chip:hover .co-share{color:#fff;opacity:.85;}
.co-chip.sm{font-size:11px;padding:3px 8px;}
.co-chip.muted-co{opacity:.6;border-style:dashed;}
.co-share{font-size:11px;color:var(--muted);font-weight:700;}
.co-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:8px 0;}
.co-f{background:var(--chip-bg,#f7f8fa);border-radius:8px;padding:7px 9px;}
.co-fk{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;}
.co-fv{font-size:13px;margin-top:2px;word-break:break-word;}
.co-sec{margin-top:10px;}
.co-els{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;}
.co-el{font-size:12px;font-weight:700;background:var(--chip-bg,#f2f4f7);border-radius:8px;padding:4px 8px;}

/* ===== country flag spans (Sankey + supplier chips) ===== */
.ctry-flag{font-style:normal;font-size:1.1em;line-height:1;margin-right:2px;display:inline-block;}

/* ===== flow click → trade summary panel ===== */
.flow-stats{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 14px;}
.flow-stat{flex:1;min-width:120px;background:color-mix(in srgb,var(--muted) 6%,transparent);border:1px solid var(--hairline);border-radius:9px;padding:8px 11px;}
.flow-sk{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:3px;}
.flow-sv{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;}
.flow-mini-wrap{height:90px;margin:0 0 12px;}
.flow-section{margin:8px 0;}
.flow-desc-list{display:flex;flex-direction:column;gap:4px;margin-top:5px;}
.flow-desc-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;padding:4px 8px;background:color-mix(in srgb,var(--muted) 5%,transparent);border-radius:7px;}
.flow-desc-lbl{flex:1;font-weight:500;}
.flow-desc-cnt{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);}
.flow-hs-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;}

/* ===== forecast: methodology label row ===== */
.fc-method-row{margin:0 0 6px;}
.fc-method-label{font-size:12px;font-weight:700;color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent);border:1px solid color-mix(in srgb,var(--amber) 28%,transparent);border-radius:7px;padding:3px 9px;cursor:help;display:inline-block;}

/* ===== NEWS TAB ===== */
/* Country grid */
.news-country-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;}
.news-country-chip{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);border-radius:14px;cursor:pointer;font-size:14px;font-weight:600;transition:background .12s,border-color .12s;}
.news-country-chip:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent);}
.news-country-chip:focus-visible{border-radius:14px;}
.news-country-chip.muted-country{opacity:.55;}
.ncc-flag{font-size:18px;line-height:1;}
.ncc-name{font-weight:600;}
.ncc-count{font-size:12px;font-weight:800;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);border-radius:20px;padding:1px 7px;font-variant-numeric:tabular-nums;}
.ncc-count.zero{background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted);}
.ncc-recency{font-size:11px;color:var(--muted);}
/* .ncc-m23 and .ncc-m23-badge share one definition; badge adds margin-left for header use */
.ncc-m23,.ncc-m23-badge{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--red);border-radius:6px;padding:2px 7px;}
.ncc-m23-badge{margin-left:8px;}

/* Country view header */
.news-ch-header{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap;}
.news-ch-title{display:flex;align-items:center;gap:9px;font-size:22px;font-weight:800;letter-spacing:-.02em;}
.news-ch-flag{font-size:26px;line-height:1;}
.news-ch-name{}

/* Date navigation */
.news-date-nav{display:inline-flex;align-items:center;gap:10px;margin-bottom:12px;background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);border-radius:12px;padding:6px 12px;}
.news-date-label{font-size:14px;font-weight:700;min-width:90px;text-align:center;}
/* Scoped date input — do NOT use .unit-sel here; that class is for price/unit selects */
.news-date-input{font-size:13px;font-weight:600;padding:.25rem .4rem;border-radius:8px;border:1px solid var(--line);background:var(--surface-solid);color:var(--text);}
/* Keep backward-compat alias in case old markup remains during deploy */
#news-date-pick{font-size:13px;font-weight:600;padding:.25rem .4rem;border-radius:8px;border:1px solid var(--line);background:var(--surface-solid);color:var(--text);}

/* Topic filter bar */
.news-topic-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.news-topic-btn{padding:7px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);background:color-mix(in srgb,var(--muted) 8%,transparent);border:1px solid var(--line);cursor:pointer;transition:background .12s,color .12s,border-color .12s;}
.news-topic-btn:hover{color:var(--text);background:color-mix(in srgb,var(--text) 7%,transparent);}
.news-topic-btn:focus-visible{border-radius:999px;}
.news-topic-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;}

/* Summary card */
.news-summary-card{}
.news-summary-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.news-summary-asof{color:var(--muted);font-size:11px;}
.news-summary-topics{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
.news-summary-body{font-size:14px;line-height:1.6;margin:0 0 12px;color:var(--text);}
.news-summary-empty{padding-top:2px;padding-bottom:2px;}
/* Cited articles inside the summary card */
.news-summary-cites{border-top:1px solid var(--hairline);padding-top:10px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px;}
.news-cite-row{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;font-size:12px;}
.news-cite-stance{font-size:10px;font-weight:800;border-radius:5px;padding:1px 6px;text-transform:lowercase;flex:none;}
.news-cite-stance-leads{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);}
.news-cite-stance-supports{background:color-mix(in srgb,var(--green) 12%,transparent);color:var(--green);}
.news-cite-stance-contextual{background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted);}
.news-cite-headline{color:var(--muted);flex:1;min-width:0;}
.news-cite-link{color:inherit;text-decoration:none;}
.news-cite-link:hover{color:var(--accent);text-decoration:underline;}
/* Provenance footer: chips + ring */
.news-summary-provenance{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;}
/* Agent attribution line below provenance */
.news-summary-footer{margin-top:8px;border-top:1px solid var(--hairline);padding-top:8px;}
.news-summary-attr{font-size:11px;color:var(--muted);}
/* Country card summary freshness dot */
.ncc-summary{font-size:10px;font-weight:700;color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:5px;padding:1px 6px;}

/* Article list */
.news-article-list{}
.news-article{padding:14px 4px;border-bottom:1px solid var(--hairline);}
.news-article:last-of-type{border-bottom:0;}
.news-art-head{margin-bottom:5px;}
/* Truncate very long headlines at 3 lines (real-data safety net — most headlines fit 1–2 lines) */
.news-headline{font-size:15px;font-weight:600;line-height:1.4;color:var(--text);text-decoration:none;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.news-headline:hover{color:var(--accent);}
/* Cap snippets at 3 lines; real article snippets vary widely in length */
.news-snippet{font-size:13px;color:var(--muted);line-height:1.5;margin:5px 0 7px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.news-art-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;}
.news-outlet{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--muted);}
.news-outlet-name{}
.news-time{color:var(--muted);}

/* Topic tags */
.news-topic-tag{font-size:11px;font-weight:700;border-radius:6px;padding:2px 7px;text-transform:capitalize;}
.news-topic-tag.elements{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);}
.news-topic-tag.trade{background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber);}
.news-topic-tag.politics{background:color-mix(in srgb,#bf5af2 14%,transparent);color:#bf5af2;}
.news-topic-tag.conflict{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red);}

/* Element chips in article rows */
.news-el-chip{font-size:11px;font-weight:800;background:color-mix(in srgb,var(--text) 8%,transparent);border:1px solid var(--hairline);border-radius:7px;padding:2px 7px;color:var(--text);cursor:pointer;font-variant-numeric:tabular-nums;}
.news-el-chip:hover{background:var(--accent);border-color:var(--accent);color:#fff;}
.news-el-chip:focus-visible{border-radius:7px;}

/* Pagination */
.news-pager{display:flex;align-items:center;gap:10px;padding-top:14px;border-top:1px solid var(--hairline);margin-top:4px;flex-wrap:wrap;}

/* Skeleton loader */
.news-skel{padding:10px 0;border-bottom:1px solid var(--hairline);}
.news-skel-line{height:13px;border-radius:7px;background:color-mix(in srgb,var(--muted) 14%,transparent);margin-bottom:7px;animation:skel-pulse 1.4s ease-in-out infinite alternate;}
.news-skel-line.long{width:75%;}
.news-skel-line.short{width:40%;}
@keyframes skel-pulse{from{opacity:.55;}to{opacity:.9;}}

/* Mobile */
@media (max-width:680px){
  .news-country-grid{gap:8px;}
  .news-country-chip{padding:8px 11px;font-size:13px;}
  .ncc-summary{display:none;}
  .news-date-nav{gap:7px;padding:5px 9px;}
  .news-date-label{min-width:70px;font-size:13px;}
  .news-topic-bar{gap:6px;}
  .news-topic-btn{padding:6px 11px;font-size:12px;}
  .news-headline{font-size:14px;}
  .news-summary-body{font-size:13px;}
  .news-cite-row{gap:5px;}
}
