/* CTI Report — September 2026 · loads AFTER site.css / dimensional.css / structure.css
   All chart colours come from CSS variables, so every figure is legible in light AND dark mode. */

.page-report-tokens-unused{}
:root{
  --k-red:#b3261e; --k-orange:#b45309; --k-blue:#1f5fae; --k-green:#3d6a1f; --k-violet:#6a45b8; --k-grey:#6b7566; --k-teal:#0f766e;
  --ink-on-k:#ffffff;
}
:root[data-theme=dark]{
  --k-red:#ff8a7e; --k-orange:#f0a640; --k-blue:#8ec2f5; --k-green:#c1ed83; --k-violet:#c3a6ff; --k-grey:#7f8a80; --k-teal:#7fd8c8;
  --ink-on-k:#101312;
}

/* ---------- cover / banner ---------- */
.page-report{overflow-x:clip}
.page-report .article-head.cover{position:relative;isolation:isolate;overflow:hidden;padding:0;border-bottom:1px solid var(--line);margin-inline:calc(50% - 50vw);width:100vw;max-width:100vw}
.cover-bg{position:absolute;inset:0;z-index:-2;background:
  radial-gradient(90% 120% at 82% 8%,color-mix(in srgb,var(--accent) 24%,transparent),transparent 62%),
  radial-gradient(70% 90% at 6% 100%,color-mix(in srgb,var(--k-blue) 16%,transparent),transparent 60%),
  linear-gradient(180deg,var(--card),var(--bg))}
.cover-grid{position:absolute;inset:0;z-index:-1;opacity:.5;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(80% 90% at 75% 20%,#000,transparent 75%);mask-image:radial-gradient(80% 90% at 75% 20%,#000,transparent 75%)}
.cover-art{position:absolute;right:max(0px,calc(50vw - 780px));top:30px;width:min(680px,50vw);aspect-ratio:1;z-index:-1;pointer-events:none}
.cover-art svg,.cover-art canvas{width:100%;height:100%;display:block}
.cover-art canvas{position:absolute;inset:0}
.cover-art.globe-on svg{display:none}
.cover-art{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 22%);mask-image:linear-gradient(90deg,transparent 0,#000 22%)}
.cover-inner{width:min(1120px,calc(100% - 96px));margin:0 auto;padding:58px 0 34px;position:relative}
.cover-issue{position:absolute;right:0;top:34px;font:700 clamp(90px,17vw,220px)/.8 var(--sans);letter-spacing:-8px;color:transparent;-webkit-text-stroke:1px color-mix(in srgb,var(--fg) 16%,transparent);user-select:none;pointer-events:none}
.cover-issue span{font-size:.45em;letter-spacing:-2px}
.cover .back{display:inline-flex;margin-bottom:26px}
.cover-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:22px}
.cover-kicker .badge{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700;letter-spacing:.8px;text-transform:uppercase}
.cover-kicker .m{font:12px var(--mono);color:var(--muted)}
.page-report .cover h1.title{font:600 clamp(36px,5.6vw,74px)/1.04 var(--sans);letter-spacing:-2.6px;max-width:16ch;text-wrap:balance}
.cover h1.title em{font-style:normal;color:var(--accent)}
.page-report .cover .dek{max-width:60ch;font-size:clamp(16px,1.5vw,19px);line-height:1.75;color:var(--muted);margin-top:22px}
.cover-by{display:flex;align-items:center;gap:14px;margin-top:30px;font:12.5px var(--mono);color:var(--muted);flex-wrap:wrap}
.cover-by img{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--card)}
.cover-by b{color:var(--fg);font-weight:600}
.cover-by .sep{opacity:.4}
.cover-strip{margin-top:34px;max-width:660px}
.cover-strip .cap{font:10.5px var(--mono);letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);margin-bottom:8px;display:flex;justify-content:space-between;gap:12px}
.cover-strip svg{width:100%;height:auto;display:block}
.cover-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:34px;border-top:1px solid var(--line)}
.cover-kpis>div{padding:20px 22px 4px 0;border-right:1px solid var(--line);margin-right:22px}
.cover-kpis>div:last-child{border-right:0;margin-right:0}
.cover-kpis b{display:block;font:600 clamp(28px,3.4vw,46px)/1 var(--sans);letter-spacing:-1.5px;color:var(--fg)}
.cover-kpis span{display:block;margin-top:8px;font:11px/1.5 var(--mono);color:var(--muted)}
.page-report .cover .toc{margin-top:34px}
.cover-toc{width:min(1120px,calc(100% - 96px));margin:0 auto;padding:0 0 46px}

/* radar animation */
@keyframes sweep{to{transform:rotate(360deg)}}
@keyframes ping{0%{opacity:.95;r:4}80%,100%{opacity:0;r:16}}
.radar-sweep{transform-origin:300px 300px;animation:sweep 14s linear infinite}
.ping{animation:ping 3.2s ease-out infinite}
@media (prefers-reduced-motion:reduce){.radar-sweep,.ping{animation:none}}

/* ---------- key judgments & KPI tiles ---------- */
.page-report .article-body{max-width:940px;padding-bottom:8px}
.kj{list-style:none;margin:22px 0 8px;padding:0;display:grid;gap:12px}
.kj li{display:grid;grid-template-columns:44px 1fr;gap:16px;padding:18px 20px;background:var(--card);border:1px solid var(--line);border-radius:8px;margin:0}
.kj .n{font:700 22px/1 var(--mono);color:var(--accent)}
.kj b{display:block;font-size:15.5px;margin-bottom:4px;color:var(--fg)}
.kj p{font-size:14.5px!important;line-height:1.75!important;margin:0!important;color:var(--muted)}
.kj .pill{margin-top:10px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:26px 0}
.kpi{padding:18px 18px 16px;background:var(--card);border:1px solid var(--line);border-radius:8px;position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--kc,var(--accent))}
.kpi b{display:block;font:600 clamp(26px,3vw,36px)/1 var(--sans);letter-spacing:-1px;color:var(--fg)}
.kpi span{display:block;margin-top:9px;font:11.5px/1.55 var(--mono);color:var(--muted)}
.kpi sup{font-size:9px}

/* ---------- figures (SVG charts) ---------- */
.page-report .fig{margin:30px 0;padding:22px 22px 16px;background:var(--card);border:1px solid var(--line);border-radius:8px}
.fig .fig-title{font:600 15px/1.4 var(--sans);margin:0 0 4px;color:var(--fg)}
.fig .fig-sub{font:12px/1.6 var(--mono);color:var(--muted);margin-bottom:14px}
.fig .svg-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.fig svg{display:block;width:100%;height:auto;min-width:640px;font-family:var(--mono)}
.fig .cap{font:11.5px/1.7 var(--mono);color:var(--muted);margin-top:12px}
.fig .cap a{color:var(--fg)}
.fig .hint{display:none;font:11px var(--mono);color:var(--muted);margin-bottom:8px}
@media (max-width:700px){.fig .hint{display:block}.fig{padding:16px 14px 12px}}
/* svg text + shapes: variables only, never hard-coded colours */
.s-t{fill:var(--fg)} .s-m{fill:var(--muted)} .s-b{font-weight:700}
.s-grid{stroke:var(--line);fill:none} .s-axis{stroke:var(--muted);fill:none}
.s-line{stroke:var(--muted);fill:none;stroke-width:1.5}
.b-red{fill:var(--k-red)} .b-orange{fill:var(--k-orange)} .b-blue{fill:var(--k-blue)} .b-green{fill:var(--k-green)} .b-violet{fill:var(--k-violet)} .b-grey{fill:var(--k-grey)} .b-teal{fill:var(--k-teal)}
.tx-on-k{fill:var(--ink-on-k)}
.bx{fill:var(--bg-2);stroke:var(--line)}
.bx-red{fill:color-mix(in srgb,var(--k-red) 15%,var(--card));stroke:var(--k-red)}
.bx-orange{fill:color-mix(in srgb,var(--k-orange) 15%,var(--card));stroke:var(--k-orange)}
.bx-blue{fill:color-mix(in srgb,var(--k-blue) 15%,var(--card));stroke:var(--k-blue)}
.bx-green{fill:color-mix(in srgb,var(--k-green) 15%,var(--card));stroke:var(--k-green)}
.bx-violet{fill:color-mix(in srgb,var(--k-violet) 15%,var(--card));stroke:var(--k-violet)}
.bx-grey{fill:color-mix(in srgb,var(--k-grey) 14%,var(--card));stroke:var(--k-grey)}
.st-red{stroke:var(--k-red);fill:none} .st-orange{stroke:var(--k-orange);fill:none} .st-blue{stroke:var(--k-blue);fill:none} .st-green{stroke:var(--k-green);fill:none}
.arrow{stroke:var(--muted);fill:none;stroke-width:1.6}
.arw-fill{fill:var(--muted)}
.hatch{fill:url(#hatch)}
.hatch-line{stroke:var(--card);stroke-width:2.4}
.dot-num{font:700 10.5px var(--mono);fill:var(--ink-on-k);text-anchor:middle;dominant-baseline:central}

/* event key list under timeline */
.evkey{columns:2;column-gap:32px;margin:18px 0 0!important;padding:0!important;list-style:none;font-size:12.5px;line-height:1.55}
.evkey li{break-inside:avoid;display:grid;grid-template-columns:26px 1fr;gap:8px;margin:0 0 7px!important;font-size:12.5px!important;line-height:1.55!important;color:var(--muted)}
.evkey li i{font:700 10px var(--mono);font-style:normal;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:var(--ink-on-k);margin-top:1px}
.evkey li b{color:var(--fg);font-weight:600}
@media (max-width:700px){.evkey{columns:1}}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 12px;font:11.5px var(--mono);color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:7px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block}

/* ---------- source image figures ---------- */
.shotfig{margin:28px 0!important}
.shotfig img{width:100%;height:auto;max-height:420px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--card)}
.shotfig figcaption{font:11.5px/1.7 var(--mono);color:var(--muted);margin-top:10px}
.shotfig figcaption a{color:var(--fg)}
.shotpair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:28px 0}
.shotpair .shotfig{margin:0!important}
.shotpair .shotfig img{height:230px}
@media (max-width:700px){.shotpair{grid-template-columns:1fr}.shotpair .shotfig img{height:auto;max-height:260px}}

/* ---------- tables ---------- */
.page-report .tbl table{min-width:680px}
.page-report .tbl td,.page-report .tbl th{font-size:13px;vertical-align:top}
.page-report .tbl th{font:700 10.5px var(--mono);letter-spacing:.7px;text-transform:uppercase;color:var(--muted)}
.page-report .tbl td code{white-space:nowrap}
.tbl td sup a,.tbl td sup{white-space:nowrap}

/* ---------- three-column risk cards ---------- */
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:26px 0}
.trio>div{padding:20px;background:var(--card);border:1px solid var(--line);border-top:3px solid var(--kc,var(--accent));border-radius:8px}
.trio h4{font:600 15px/1.35 var(--sans)!important;margin:0 0 8px!important}
.trio .tag{font:10.5px var(--mono);letter-spacing:1.2px;text-transform:uppercase;color:var(--kc,var(--accent));margin-bottom:8px;display:block}
.trio p{font-size:13.5px!important;line-height:1.7!important;color:var(--muted);margin:0 0 8px!important}
.trio ul{margin:6px 0 0 18px!important;font-size:13px}
.trio li{font-size:13px!important;line-height:1.6!important;margin-bottom:5px!important;color:var(--muted)}
@media (max-width:900px){.trio{grid-template-columns:1fr}}

/* ---------- misc ---------- */
.page-report .callout.red{border-left-color:var(--k-red)}
.page-report .callout.blue{border-left-color:var(--k-blue)}
.page-report .callout .lbl{font:700 10.5px var(--mono);letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.page-report .callout.red .lbl{color:var(--k-red)} .page-report .callout.blue .lbl{color:var(--k-blue)}
.page-report .callout p{font-size:14.5px;line-height:1.8;margin:0}
.page-report .callout p+p{margin-top:10px}
.pill{font:700 9.5px var(--mono);letter-spacing:.8px;text-transform:uppercase;display:inline-block;padding:4px 9px;border:1px solid currentColor;border-radius:3px;margin-right:6px}
.pill.cf-high{color:var(--k-green);background:transparent} .pill.cf-mod{color:var(--k-orange);background:transparent} .pill.cf-low{color:var(--k-red);background:transparent} .pill.cf-unv{color:var(--muted);background:transparent}
.page-report .article-body h2 .sn{font:700 11px var(--mono);letter-spacing:1.4px;color:var(--accent);display:block;margin-bottom:8px}
.page-report .article-body .h2-sub{font:13px/1.7 var(--mono);color:var(--muted);margin:-6px 0 22px}
.page-report .article-body h3{font-size:20px}
.h2-sub{max-width:74ch}
.attck{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:20px 0}
.attck .r{background:var(--card);padding:14px 18px;display:grid;grid-template-columns:110px 1fr;gap:16px;align-items:baseline}
.attck .tid{font:700 12px var(--mono);color:var(--accent)}
.attck .tn{font-size:13.5px;line-height:1.65}.attck .tn b{display:block;color:var(--fg);margin-bottom:2px}.attck .tn span{color:var(--muted);font-size:12.5px}
@media (max-width:640px){.attck .r{grid-template-columns:1fr;gap:4px}}
.chk-h{font:700 10.5px var(--mono);letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);margin:26px 0 4px}
.page-report .chk{list-style:none;margin:6px 0 4px!important;padding:0}
.page-report .chk li{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14.5px!important;line-height:1.75!important;margin:0!important}
.page-report .chk .n{font:700 12px var(--mono);color:var(--accent);flex-shrink:0;padding-top:3px;min-width:22px}
.src{list-style:none;margin:0!important;padding:0!important;max-width:none}
.src li{display:grid;grid-template-columns:54px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12.5px!important;line-height:1.55!important;margin:0!important;color:var(--muted)}
.src .id{font:700 10.5px var(--mono);color:var(--accent);padding-top:2px}
.src a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--line);overflow-wrap:anywhere}
.src a:hover{text-decoration-color:var(--accent)}
.src .rd{font:10px var(--mono);color:var(--muted);margin-left:6px;white-space:nowrap}
.src-cat{font:600 16px var(--sans)!important;margin:34px 0 4px!important;color:var(--fg)}
.src-note{font:11.5px/1.7 var(--mono);color:var(--muted);margin:0 0 6px}
.src-count{display:inline-block;font:700 11px var(--mono);color:var(--accent);margin-left:8px}
sup.cite{font-size:9.5px;line-height:0;margin-left:1px}
sup.cite a{color:var(--accent);text-decoration:none;font-weight:700;padding:0 1px}
sup.cite a:hover{text-decoration:underline}
:target{scroll-margin-top:96px}

@media (max-width:900px){
  .cover-art{opacity:.2;right:-22vw;width:92vw;top:120px}
  .cover-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cover-kpis>div:nth-child(2){border-right:0;margin-right:0}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:680px){
  .page-report .article-head.cover{margin-inline:calc(50% - 50vw)}
  .cover-inner,.cover-toc{width:calc(100% - 40px)}
  .cover-inner{padding:34px 0 26px}
  .cover-issue{display:none}
  .page-report .cover h1.title{letter-spacing:-1.4px}
  .kj li{grid-template-columns:1fr;gap:6px}
}
@media print{.cover-art,.cover-grid,.cover-bg{display:none}.page-report .article-head.cover{width:auto;margin:0}}
