/* Brand tokens: Weirding brand pack v1.0 (see /brand/README.md). Ion is reserved for the logo. */
:root{--navy:#0A1424;--slate:#33415A;--fog:#9AA6B8;--ice:#EDF1F6;--surface:#fff;--line:#CBD3DE;--sans:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;--max:1260px;--focus:var(--navy)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--ice);color:var(--navy);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:underline;text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}button{font:inherit}a,button{touch-action:manipulation}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:var(--slate);color:var(--ice)}.wrap{max-width:var(--max);margin-inline:auto;padding-inline:52px}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{font-weight:560;font-stretch:106%;letter-spacing:-.015em;line-height:1.15}h1{font-size:clamp(42px,4.8vw,64px);max-width:1000px;letter-spacing:-.025em}h2{font-size:29px;line-height:1.25}h3{font-size:24px;line-height:1.3}p+p{margin-top:19px}.eyebrow{font-family:var(--mono);font-size:13px;font-weight:500;line-height:1.6;letter-spacing:.18em;text-transform:uppercase;color:var(--slate);margin-bottom:24px}
.site-header,footer,.page-index,.bf,.tl-pop{--focus:var(--ice)}
.site-header{background:var(--navy);color:var(--ice);border-bottom:1px solid var(--slate);position:sticky;top:0;z-index:20}.header-inner{min-height:94px;display:flex;justify-content:space-between;align-items:baseline;gap:35px}.site-logo{--logo-w:206px;display:block;flex-shrink:0;margin-left:-12px;padding:12px 12px 0}.site-logo img,.footer-logo img{display:block;height:auto}.site-logo img{width:var(--logo-w);margin-bottom:calc(var(--logo-w) * -.035)}.site-logo svg{display:block;width:var(--logo-w);height:auto;margin-bottom:calc(var(--logo-w) * -.035)}nav{display:flex;align-items:center;gap:26px;font-size:15px}nav a{text-decoration:none;white-space:nowrap;padding-block:34px 21px;border-bottom:2px solid transparent}nav a:hover{border-bottom-color:var(--fog)}nav a[aria-current=page]{border-bottom-color:var(--ice)}.menu-toggle{display:none}.skip{position:fixed;z-index:100;left:20px;top:-80px;padding:10px 18px;background:var(--ice);color:var(--navy)}.skip:focus{top:10px}.page-heading{padding-block:58px 48px}.page-heading .standfirst{font-size:22px;line-height:1.55;max-width:900px;margin-top:26px;color:var(--slate)}.article-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:70px;padding-bottom:80px;align-items:start}.prose{min-width:0}.prose>section>p,.prose>section>ul,.prose>section>ol{max-width:72ch}.prose section{padding-top:32px;border-top:1px solid var(--line);margin-top:37px}.prose section:first-child{margin-top:0}.prose h2{margin-bottom:23px}.prose p,.prose li{color:var(--navy)}.prose ul{padding-left:22px;margin:20px 0}.prose li+li{margin-top:12px}.sidebar{font-size:15px;line-height:1.6;border:1px solid var(--line);border-top:2px solid var(--navy);background:var(--surface);padding:25px}.sidebar h2{font-size:22px;margin-bottom:23px}.sidebar h3{font-size:20px;margin-bottom:14px}.sidebar p{color:var(--slate)}.sidebar .eyebrow{font-size:12px}.side-block+.side-block{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.side-block .text-link{display:inline-block;margin-top:18px}.person img{display:block;object-fit:cover;filter:grayscale(1);margin-bottom:20px}.person h3{margin-bottom:6px}.person p{font-size:14px}.person .role{font-family:var(--mono);font-size:12px;line-height:1.5;letter-spacing:.06em;text-transform:uppercase;color:var(--slate);margin:0}.person p+p{margin-top:14px}.person+.person{border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.text-link{font-size:16px;text-decoration:underline}.prose section>.text-link{display:inline-block;margin-top:20px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 24px;background:var(--navy);color:var(--ice);text-decoration:none;font-size:16px;font-weight:500;line-height:1.2;border:0;border-radius:0}.button:hover{color:var(--ice);background:var(--slate)}.article-cta .button{margin-top:25px}.article-image{margin:28px 0 38px}.article-image img{display:block;width:100%;height:auto;max-height:390px;object-fit:cover;background:var(--surface)}.article-image figcaption,figcaption{font-size:13px;line-height:1.55;color:var(--slate);margin-top:11px}.sensor-figure{margin-top:0}.sensor-figure img{object-fit:contain;max-height:460px}.source-quote{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--navy);padding:27px 30px;margin:27px 0}.source-quote>p:first-child{font-size:16px;line-height:1.6}.source-quote blockquote{font-size:28px;font-weight:500;font-stretch:106%;line-height:1.35;letter-spacing:-.01em;color:var(--navy);margin:18px 0 24px}.prose .citation{font-size:13px;line-height:1.6;color:var(--slate)}.citation cite{font-style:normal}.prose .source-quote .citation{margin-top:0}.toc{padding-left:18px;margin:0 0 20px}.toc li+li{margin-top:13px}.toc a{font-size:14px}.ivan-quote blockquote{font-size:42px;font-weight:500;font-stretch:112%;color:var(--navy);line-height:1.2;letter-spacing:-.02em}.ivan-quote .citation{margin-top:20px;margin-bottom:26px}.project-status dl{margin:0}.project-status dt{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-top:20px}.project-status dd{font-size:15px;margin:6px 0 0}.table-scroll{overflow-x:auto;margin-top:27px;max-width:100%}table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.55;min-width:510px}caption{text-align:left;font-size:14px;color:var(--slate);padding-bottom:12px}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:16px 18px 16px 0}thead th{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;background:var(--surface);padding-left:12px;color:var(--slate)}tbody th{font-weight:560;width:31%;padding-left:12px}td{color:var(--navy)}.directions-list{margin:25px 0 0}.directions-list dt{font-size:21px;font-weight:560;font-stretch:106%;letter-spacing:-.01em;border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.directions-list dd{margin:10px 0 0}.home-intro{padding-block:58px 52px}.page-index{background:var(--navy);color:var(--ice)}.page-index .eyebrow{color:var(--fog)}.home-intro h1{max-width:960px;font-size:clamp(46px,5.2vw,72px);line-height:1.08}.home-lead{max-width:920px;display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-top:33px}.home-lead p{font-size:19px;line-height:1.6;color:var(--ice)}.home-lead p+p{margin:0}.home-intro .button{margin-top:29px;background:var(--ice);color:var(--navy)}.home-intro .button:hover{background:var(--surface);color:var(--navy)}.home-project{display:grid;grid-template-columns:1fr 1fr;gap:55px;padding-block:38px 45px;border-top:1px solid var(--slate)}.project-copy h2{font-size:34px;max-width:500px;margin-bottom:24px}.project-copy p:not(.eyebrow){color:var(--ice);font-size:17px;line-height:1.6}.project-copy .text-link{display:inline-block;margin-top:25px}.home-project figure{background:var(--surface);align-self:start}.home-project img{display:block;width:100%;height:285px;object-fit:contain}.home-project figcaption{margin:0;padding:12px 17px;background:var(--slate);color:var(--ice)}.home-reading{display:grid;grid-template-columns:1fr 1fr;gap:55px;padding-block:35px 52px;border-top:1px solid var(--slate)}.home-reading h3{font-size:26px;margin-bottom:18px}.home-reading p:not(.eyebrow){font-size:16px;color:var(--fog)}.home-reading .eyebrow{margin-bottom:16px}.home-reading .text-link{display:inline-block;margin-top:23px}.large-email{font-size:clamp(24px,3vw,37px);font-weight:500;font-stretch:106%;letter-spacing:-.015em;display:inline-block;margin-top:30px}.contact-list{padding-bottom:75px;display:grid;grid-template-columns:1fr;max-width:1040px}.contact-list article{border-top:1px solid var(--line);padding-block:30px}.contact-list h2{font-size:28px;margin-bottom:18px}.contact-list p{color:var(--slate);max-width:800px}.contact-list a{display:inline-block;margin-top:20px}footer{background:var(--navy);color:var(--fog);border-top:1px solid var(--slate)}.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:25px;padding-block:24px;font-size:14px}.footer-logo{display:block;flex-shrink:0;margin-left:-22px;padding:22px}.footer-logo svg{display:block;width:360px;height:auto}.footer-logo .footer-logo-sm{display:none}.footer-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px 40px}.footer-meta a{color:var(--ice)}
@media(max-width:1100px){.wrap{padding-inline:34px}nav{gap:19px}.header-inner{gap:25px}.site-logo{--logo-w:186px}nav a{padding-bottom:26px}.article-layout{grid-template-columns:minmax(0,1fr) 240px;gap:40px}.sidebar{padding:23px}.page-heading h1{font-size:54px}.home-project,.home-reading{gap:36px}.footer-meta{flex-direction:column;align-items:flex-end;gap:6px}}
@media(max-width:950px){.header-inner{min-height:80px}.menu-toggle{display:flex;align-items:center;gap:15px;color:var(--ice);background:none;border:0;padding:10px 0;font-size:15px}.menu-toggle span{font-size:24px}nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--navy);padding:15px 34px 22px;border-bottom:1px solid var(--slate);flex-direction:column;align-items:stretch;gap:0}nav.open{display:flex}nav a{padding:13px 0;border-bottom:1px solid var(--slate);font-size:17px}nav a:hover{border-bottom-color:var(--slate);text-decoration:underline}nav a[aria-current=page]{border-bottom:1px solid var(--slate);text-decoration:underline;text-decoration-thickness:2px}.article-layout{grid-template-columns:minmax(0,1fr) 220px;gap:30px}.sidebar{padding:21px}.home-lead{gap:30px}.source-quote{padding:24px}.source-quote blockquote{font-size:25px}.footer-inner{flex-wrap:wrap}.footer-meta{flex-direction:row;align-items:center;justify-content:flex-start;flex-basis:100%;gap:12px 32px}}
@media(max-width:740px){body{font-size:17px}.wrap{padding-inline:24px}nav{padding-inline:24px}.page-heading{padding-block:36px 33px}.page-heading h1{font-size:43px}.page-heading .standfirst{font-size:20px;line-height:1.55;margin-top:23px}.eyebrow{font-size:12px;margin-bottom:18px}.article-layout{grid-template-columns:1fr;gap:36px;padding-bottom:45px}.prose h2{font-size:27px}.prose section{padding-top:25px;margin-top:30px}.sidebar{padding:25px}.person{min-height:92px}.person img{float:left;margin:0 20px 15px 0}.person+.person{clear:both;display:flow-root}.side-block{display:flow-root}.source-quote{padding:22px;margin:24px 0}.source-quote blockquote{font-size:23px}.source-quote .citation{font-size:12px}.ivan-quote blockquote{font-size:34px}.article-image img{max-height:340px}.sensor-figure img{max-height:380px}.home-intro{padding-block:38px}.home-intro h1{font-size:44px}.home-lead{grid-template-columns:1fr;gap:20px;margin-top:27px}.home-lead p{font-size:18px}.home-project{grid-template-columns:1fr;gap:30px;padding-block:33px}.project-copy h2{font-size:30px}.home-project img{height:270px}.home-reading{grid-template-columns:1fr;gap:30px;padding-block:30px 40px}.home-reading>div+div{padding-top:28px;border-top:1px solid var(--slate)}.home-reading .text-link{margin-top:17px}.contact-list{padding-bottom:30px}.contact-list h2{font-size:26px}.contact-list article{padding-block:25px}.large-email{font-size:27px;overflow-wrap:anywhere}.footer-inner{gap:8px;padding-block:20px 28px}.footer-meta a{flex-basis:100%}.site-logo{--logo-w:160px}.table-scroll{margin-top:22px}.footer-meta span:last-child{margin-left:auto}}
@media(max-width:520px){.footer-logo{margin-left:-11px;padding:11px}.footer-logo svg{display:none}.footer-logo .footer-logo-sm{display:block;width:180px}}
@media(max-width:390px){.wrap{padding-inline:20px}.home-intro h1{font-size:38px}.page-heading h1{font-size:36px}.home-project img{height:230px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.project-subtitle{font-size:26px;font-weight:500;font-stretch:106%;line-height:1.35;color:var(--slate);margin-top:16px;letter-spacing:-.01em}.page-heading .scope-line{max-width:900px;margin-top:20px;font-size:16px;color:var(--slate)}.scope-line+.standfirst{margin-top:25px}
@media(max-width:740px){.project-subtitle{font-size:23px}.page-heading .scope-line{font-size:15px}}

/* Leipzig/Halle case study */
.case-layout{padding-bottom:50px}.case-layout .prose{max-width:860px}.case-layout .prose section:first-child{margin-top:0}.case-layout .prose section+section{margin-top:37px}.case-layout .prose strong{color:var(--navy);font-weight:600}.case-layout .prose .article-cta .button{margin-top:25px}.case-layout .eyebrow{margin-bottom:16px}.source-list ul{font-size:15px}.source-list li{overflow-wrap:anywhere}
.case-map{padding-block:24px 56px;border-top:1px solid var(--line)}.case-map-intro{max-width:860px;margin-bottom:30px}.case-map-intro h2{margin-bottom:23px}.case-map-intro p{color:var(--navy)}
.map-shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;border:1px solid var(--line);background:var(--surface)}
#lej-map{height:100%;min-height:680px;background:var(--ice)}.map-fallback{padding:20px;font-size:15px}
.map-panel{padding:22px 22px 26px;border-left:1px solid var(--line);font-size:14px;line-height:1.55}
.map-heading{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--slate);margin:0 0 12px;line-height:1.6;padding:0}
.map-panel .map-heading:not(:first-child){margin-top:26px}
/* Map data colours (incident red and layer swatches) are unchanged pending brand review. */
.ev{border-left:3px solid #c4291c;padding:2px 0 2px 12px;margin-bottom:16px}.ev p{font-size:14px;color:var(--slate);margin:0}.ev p+p{margin-top:4px}.ev p:first-child{color:var(--navy)}
.ev-go{margin-top:6px;padding:0;border:0;background:none;color:var(--navy);font-size:14px;text-decoration:underline;text-underline-offset:.18em;cursor:pointer}.ev-go:hover{text-decoration-thickness:2px}
.map-note{font-size:13px;color:var(--slate)}
.map-stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)}.map-stat{background:var(--surface);padding:9px 10px;display:grid;gap:1px;min-width:0}
.map-stat-label{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate);display:flex;align-items:center;gap:6px}.map-stat-value{font-family:var(--mono);font-size:24px;line-height:1.2}.map-stat-detail{font-size:12px;line-height:1.4;color:var(--slate)}
.sw{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}.sw-perimeter{background:#b36b00}.sw-rf{background:#286295}.sw-ptz{background:#0f8a7e}.sw-cov{background:#fff;border:1.5px solid #286295}.sw-public{background:#6b4fd8;opacity:.5;border-radius:0}.sw-zone{background:#8a2f6b;border-radius:0;opacity:.7}.sw-hit{background:#c4291c}
.map-ranges{font-size:12px;line-height:1.5;color:var(--slate);margin-top:10px}
.map-layers{border:0;padding:0;margin:0;min-width:0}.map-layers label{display:flex;align-items:center;gap:8px;font-size:14px;padding:3px 0;cursor:pointer}.map-layers input{accent-color:var(--navy);margin:0}
.map-credit{font-size:12px;line-height:1.6;color:var(--slate);margin-top:11px;max-width:860px}
.leaflet-container{font-family:var(--sans)}.leaflet-popup-content{font-size:14px;line-height:1.5}.leaflet-control-layers{font-size:13px}.leaflet-container .leaflet-popup-content-wrapper,.leaflet-container .leaflet-bar,.leaflet-container .leaflet-bar a{border-radius:0}
.lbl-hit{font-weight:700;font-size:13px;color:#c4291c;white-space:nowrap;text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 3px #fff}
@media(max-width:950px){.map-shell{grid-template-columns:1fr}#lej-map{height:70vh;min-height:420px}.map-panel{border-left:0;border-top:1px solid var(--line)}}

.map-controls{display:grid;grid-template-columns:minmax(0,1fr) 340px;border:1px solid var(--line);border-top:0;background:var(--surface);padding:22px;gap:30px;font-size:14px}.map-controls .map-heading{margin-top:0}.map-controls .map-layers{columns:2;column-gap:20px}.map-controls .map-layers legend{column-span:all}.map-controls .map-stats{grid-template-columns:repeat(4,1fr)}@media(max-width:950px){.map-controls{grid-template-columns:1fr;gap:24px}.map-controls .map-stats{grid-template-columns:1fr 1fr}}

.photo-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-bottom:40px}.photo-row figure{min-width:0}.photo-row img{display:block;width:100%;height:240px;object-fit:cover;background:var(--surface)}.photo-row figure:last-child img{object-position:center bottom}@media(max-width:740px){.photo-row{gap:12px;padding-bottom:28px}.photo-row img{height:150px}}

/* Battlefield timeline and Europe graph: dark panels on brand Navy. Series colours (.ua, .ru, graph fills) are unchanged pending brand review. */
.bf{background:var(--navy);color:var(--ice);font-size:16px;line-height:1.6}
.prose .bf a,.bf a{color:var(--ice)}
.bf .graph{margin:0;overflow-x:auto}
.bf .graph svg{display:block;width:100%;min-width:920px;height:auto}
.bf #china-graph svg,#china-graph svg{min-width:850px}
.bf .graph a{cursor:pointer}
.bf .small{font-size:13px;color:var(--fog);margin:0;padding:14px 20px}
.bf .caveat{color:var(--fog);font-size:14px}
.bf .basis{font-size:14px;color:var(--fog)}
.bf .tag{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-right:10px;color:#dfc27a}
.bf .date{font-family:var(--mono);font-size:13px;color:var(--fog)}
.bf .ua{color:#87bfff}.bf .ru{color:#e3ae83}
.bf .sources{margin:12px 0 0;padding-left:19px;font-size:14px}
.bf .sources li{margin-bottom:5px;color:var(--fog)}
.tl-fold{margin-top:30px;border:1px solid var(--fog)}
.tl-toggle{cursor:pointer;list-style:none;padding:16px 22px;font-size:18px;font-weight:500;display:flex;justify-content:space-between;gap:20px;align-items:baseline}
.tl-toggle::-webkit-details-marker{display:none}
.tl-toggle::after{content:'+';font-size:24px;line-height:1}
.tl-fold[open]>.tl-toggle::after{content:'−'}
.tl-fold[open]>.tl-toggle{border-bottom:1px solid var(--slate)}
.tl-pop{position:fixed;inset:auto;margin:0;width:min(440px,calc(100vw - 24px));max-height:min(70vh,560px);overflow:auto;background:var(--navy);color:var(--ice);border:1px solid var(--fog);padding:18px 20px 14px;font-size:15px;line-height:1.6}
.tl-pop h3{font-size:18px;line-height:1.35;letter-spacing:0;margin:2px 0 10px;color:var(--ice)}
.tl-pop p{color:var(--ice);margin:0 0 10px}
.tl-pop p+p{margin-top:0}
.tl-pop p.date,.tl-pop p.caveat,.tl-pop p.basis{color:var(--fog)}
.tl-pop ul{margin:12px 0 0}
.bf details:not(.tl-fold){border-top:1px solid var(--slate);padding:15px 20px}
.bf details:not(.tl-fold) summary{cursor:pointer;list-style:none;display:block}
.bf details:not(.tl-fold) summary::-webkit-details-marker{display:none}
.bf details:not(.tl-fold) summary::after{content:'+';float:right;font-size:22px;line-height:1.2}
.bf details[open]:not(.tl-fold) summary::after{content:'−'}
.bf details:not(.tl-fold)>div{max-width:790px}
.bf details:not(.tl-fold) p{color:var(--ice)}
#europe .bf{margin-top:28px}
@media(max-width:650px){.tl-pop{left:12px!important;right:12px;top:auto!important;bottom:12px;width:auto;max-height:75vh}.tl-toggle{font-size:17px;padding:14px 16px}}

.tl-fold{position:relative;z-index:5;background:var(--navy)}
@media(min-width:741px){.tl-fold[open]{margin-right:-340px;animation:tl-expand .45s ease-out}.tl-fold[open]>.tl-panel{animation:tl-fade .45s ease-out}}
@media(min-width:741px) and (max-width:1100px){.tl-fold[open]{margin-right:-280px}}
@keyframes tl-expand{from{margin-right:0}}
@keyframes tl-fade{from{opacity:0}}
@media(prefers-reduced-motion:reduce){.tl-fold[open],.tl-fold[open]>.tl-panel{animation:none}}
