/* ══════════════════════════════════════════════════════════════════════════
   FRONT GROUP FIELD GUIDE — cinematic layer
   (1) flips the whole guide to a dark, editorial theme
   (2) adds the scroll-driven "follow the money" story that assembles as you read
   Loaded AFTER frontgroup-guide.css. Self-contained, CSP-clean.
   ══════════════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────────
   1 · DARK RE-THEME  (override the field-guide light variables)
   ───────────────────────────────────────────────────────────────── */
.ffg{
	--paper:#0a1220; --paper2:#0e1a2b; --card:#0e1a2b; --card2:#132338;
	--ink:#eaf0f7; --ink2:#9fb0c3; --muted:#7f93a8;
	--rule:rgba(255,255,255,.12); --rule-dk:rgba(255,255,255,.22);
	--red:#ff6a5f; --gold:#f0a35e;
	background:#0a1220 !important; background-image:none !important; color:var(--ink);
}
.ffg ::selection{background:#26456a;}
.ffg-cover__inner{background:linear-gradient(#0e1a2b,#0a1220) !important;}
.ffg-cover,.ffg-cover__inner{border-color:rgba(255,255,255,.35) !important;}
.ffg-draft{color:#ffcaa0 !important;background:rgba(240,163,94,.12) !important;border-color:rgba(240,163,94,.4) !important;}
.ffg-side{background:rgba(255,255,255,.04) !important;}
#ffg-search{background:rgba(255,255,255,.06) !important;color:#fff !important;}
.ffg-viewtoggle{background:rgba(255,255,255,.06) !important;}
.ffg-viewtoggle button.on{background:var(--gold) !important;color:#0a1220 !important;}
.ffg-chip{background:rgba(255,255,255,.06) !important;color:var(--ink2);}
.ffg-plate{background:rgba(255,255,255,.05) !important;}
.ffg-st-draft{color:#ffcaa0 !important;background:rgba(240,163,94,.12) !important;border-color:rgba(240,163,94,.4) !important;}
.ffg-st-research{color:#9fb0c3 !important;background:rgba(255,255,255,.06) !important;border-color:var(--rule-dk) !important;}
.ffg-st-sourced{color:#7ee0a0 !important;background:rgba(74,222,128,.12) !important;border-color:rgba(74,222,128,.4) !important;}
.ffg-funding{background:rgba(240,163,94,.09) !important;border-color:rgba(240,163,94,.32) !important;}
.ffg-funding__l{color:var(--gold) !important;}
.ffg-funding li{color:var(--ink) !important;}
.ffg-arg__c{color:#fff !important;}
.ffg-arg__r::before{color:#4ade80 !important;}
.ffg-dossier h4 .num{background:rgba(255,90,95,.12) !important;}
.ffg-sk-gnode{fill:#43516a !important;} .ffg-sk-glab{fill:#cddae7 !important;}
.ffg-controls{background:rgba(10,18,32,.92) !important;}
.ffg-card:hover{box-shadow:0 10px 30px rgba(0,0,0,.5) !important;}

/* ─────────────────────────────────────────────────────────────────
   2 · THE STORY  (dark cinematic scrollytelling)
   ───────────────────────────────────────────────────────────────── */
.ffx{position:relative;color:var(--ink);font-family:'Open Sans',Arial,sans-serif;}
.ffx *{box-sizing:border-box;}

/* opening */
.ffx-hero{min-height:98vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
	padding:80px 24px;background:radial-gradient(120% 80% at 50% 12%,rgba(18,36,59,.86) 0,rgba(10,18,32,.94) 66%),url('../img/ffg-texture-v2.jpg') center/cover no-repeat #0a1220;}
.ffx-eyebrow{font-size:12px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin:0 0 22px;}
.ffx-title{font-family:Georgia,serif;font-size:clamp(40px,7.4vw,92px);line-height:1.01;font-weight:700;margin:0;max-width:15ch;letter-spacing:-.01em;
	background:linear-gradient(180deg,#fff,#c3d3e6);-webkit-background-clip:text;background-clip:text;color:transparent;}
.ffx-deck{font-family:Georgia,serif;font-style:italic;font-size:clamp(16px,2.2vw,23px);color:var(--gold);margin:20px auto 0;max-width:34ch;line-height:1.35;}
.ffx-sub{font-family:Georgia,serif;font-size:clamp(16px,2.1vw,20px);color:var(--ink2);margin:26px auto 0;max-width:52ch;line-height:1.58;}
.ffx-cue{margin-top:54px;font-size:11px;letter-spacing:3px;text-transform:uppercase;color:#6d8299;}
.ffx-cue span{display:block;font-size:22px;margin-top:8px;animation:ffxB 1.8s ease-in-out infinite;}
@keyframes ffxB{0%,100%{transform:translateY(0)}50%{transform:translateY(9px)}}

/* the sticky stage that holds the assembling diagram */
.ffx-scroll{position:relative;}
.ffx-stage{position:sticky;top:0;height:100vh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1;overflow:hidden;padding:90px 0 3vh;}
/* interactive network (Cytoscape) — fills the sticky stage */
#ffx-cy{flex:1 1 auto;min-height:0;width:100%;max-width:1240px;height:100%;}
#ffx-cy canvas{display:block;}
/* "drag to explore" hint, shown at the finale */
#ffx-cyhint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:4;font-family:'Open Sans',Arial,sans-serif;
	font-size:12px;letter-spacing:.4px;color:#8fa2ba;background:rgba(10,18,32,.72);border:1px solid rgba(255,255,255,.12);
	padding:6px 13px;border-radius:20px;opacity:0;visibility:hidden;transition:opacity .3s;pointer-events:none;}
#ffx-cyhint.show{opacity:1;visibility:visible;}
.ffx-stagelabel{position:absolute;top:62px;left:0;right:0;text-align:center;z-index:3;pointer-events:none;
	font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:#5f7690;}

/* narrative cards scrolling over the stage */
.ffx-steps{position:relative;z-index:2;margin-top:-100vh;pointer-events:none;}
.ffx-step{min-height:100vh;display:flex;align-items:center;padding:0 6vw;}
.ffx-card{pointer-events:auto;max-width:445px;background:rgba(8,14,25,.8);backdrop-filter:blur(11px);-webkit-backdrop-filter:blur(11px);
	border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:30px 34px;box-shadow:0 26px 64px rgba(0,0,0,.55);
	opacity:0;transform:translateY(26px) scale(.99);transition:opacity .55s ease,transform .55s ease;}
.ffx-step.on .ffx-card{opacity:1;transform:none;}
.ffx-step__k{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin:0 0 14px;}
.ffx-card h2{font-family:Georgia,serif;font-size:clamp(25px,3.6vw,35px);line-height:1.14;margin:0 0 14px;color:#fff;font-weight:700;}
.ffx-card p{font-size:17px;line-height:1.62;color:var(--ink2);margin:0;}
.ffx-card b{color:#fff;}

/* the count-up scoreboard, revealed at the tally */
.ffx-reach{flex:0 0 auto;width:100%;max-width:1160px;display:flex;gap:14px 26px;justify-content:center;flex-wrap:wrap;z-index:3;
	opacity:0;transform:translateY(10px);transition:opacity .6s ease,transform .6s ease;pointer-events:none;padding-top:12px;}
.ffx-reach.on{opacity:1;transform:none;}
.ffx-reach div{text-align:center;min-width:88px;}
.ffx-reach b{display:block;font-weight:800;font-size:clamp(30px,4.4vw,46px);line-height:1;font-variant-numeric:tabular-nums;}
.ffx-reach span{display:block;margin-top:7px;font-size:10.5px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);}

/* SVG pieces — animate in */
.ffx-rib{fill-opacity:0;transition:fill-opacity .7s ease;}
.ffx-rib.on{fill-opacity:.52;}
.ffx-snode,.ffx-slab{opacity:0;transition:opacity .55s ease;}
.ffx-snode.on,.ffx-slab.on{opacity:1;}
.ffx-gnode{fill:#43516a;}
.ffx-glab{font-family:Georgia,serif;font-size:13.5px;fill:#c3d1e0;}
.ffx-slab{font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.3px;}
.ffx-ct{font-weight:800;font-size:13px;}

/* progress rail */
.ffx-rail{position:fixed;right:22px;top:50%;transform:translateY(-50%);z-index:60;display:flex;flex-direction:column;gap:13px;
	opacity:0;visibility:hidden;transition:opacity .4s;}
.ffx-rail.show{opacity:1;visibility:visible;}
.ffx-rail button{width:22px;height:22px;padding:0;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.ffx-rail button span{width:9px;height:9px;border-radius:50%;border:1.5px solid rgba(255,255,255,.45);background:transparent;transition:all .25s;}
.ffx-rail button.on span{background:var(--gold);border-color:var(--gold);transform:scale(1.45);box-shadow:0 0 12px rgba(240,163,94,.7);}
.ffx-rail button:hover span{border-color:#fff;}

/* closing → hand off to the guide */
.ffx-end{text-align:center;padding:16vh 24px 9vh;position:relative;z-index:2;
	background:linear-gradient(rgba(10,18,32,0),#0a1220 42%);}
.ffx-end h2{font-family:Georgia,serif;font-size:clamp(27px,4.6vw,44px);color:#fff;margin:0 0 16px;}
.ffx-end p{color:var(--ink2);max-width:46ch;margin:0 auto;font-size:18px;line-height:1.5;}
.ffx-report-btn{display:inline-block;background:var(--gold);color:#0a1220;font-family:'Open Sans',Arial,sans-serif;font-weight:800;
	text-decoration:none;padding:15px 34px;border-radius:40px;font-size:16px;letter-spacing:.3px;
	box-shadow:0 10px 26px rgba(240,163,94,.28);transition:transform .15s,box-shadow .15s;}
.ffx-report-btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(240,163,94,.42);}
.ffx-end .cue{margin-top:34px;color:#6d8299;font-size:11px;letter-spacing:3px;text-transform:uppercase;}
.ffx-end .cue span{display:block;font-size:20px;margin-top:7px;animation:ffxB 1.8s ease-in-out infinite;}

/* the guide, reframed as the reference layer */
.ffg-guide-intro{text-align:center;padding:26px 24px 4px;}
.ffg-guide-intro .k{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin:0 0 10px;}
.ffg-guide-intro h2{font-family:Georgia,serif;font-size:clamp(26px,3.6vw,38px);color:#fff;margin:0 0 10px;}
.ffg-guide-intro p{color:var(--ink2);font-size:16.5px;margin:0 auto;max-width:52ch;line-height:1.5;}

@media (max-width:820px){
	.ffx-stage{height:72vh;padding:60px 0 1vh;}
	.ffx-steps{margin-top:-72vh;}
	.ffx-step{align-items:flex-end;padding:0 14px 7vh;}
	.ffx-card{max-width:100%;padding:22px 22px;}
	.ffx-card h2{font-size:clamp(22px,6vw,28px);}
	.ffx-card p{font-size:15.5px;}
	.ffx-glab{font-size:15px;}
	.ffx-slab{font-size:16px;font-weight:800;}
	.ffx-ct{font-size:16px;}
	.ffx-reach{gap:10px 16px;padding-top:8px;}
	.ffx-reach div{min-width:62px;}
	.ffx-reach b{font-size:clamp(22px,7vw,30px);}
	.ffx-reach span{font-size:8.5px;letter-spacing:.5px;}
	.ffx-rail{right:9px;gap:9px;}
}
@media (max-width:520px){
	.ffx-glab{display:none;}      /* names unreadable at phone scale — they live in the guide below */
	/* give the diagram more vertical room + a cropped canvas so it scales to WIDTH,
	   not height — that's what makes the labels legible instead of hair-thin */
	.ffx-stage{height:84vh;padding:44px 0 0;}
	.ffx-steps{margin-top:-84vh;}
	.ffx-stagelabel{font-size:13px;letter-spacing:1.5px;top:42px;}
	.ffx-slab{font-size:27px;font-weight:800;}
	.ffx-ct{font-size:27px;}
}
@media (prefers-reduced-motion:reduce){
	.ffx-cue span,.ffx-end .cue span{animation:none;}
	.ffx-rib{transition:none;} .ffx-card{transition:opacity .2s;}
}

/* ══════════════════════════════════════════════════════════════════════════
   THE CASE-FILE REFERENCE — 1930s dossier / detective selection UX
   Manila files on a dark desk; click one to pull the full case file.
   ══════════════════════════════════════════════════════════════════════════ */

/* stronger controls bar (the "case management" strip) */
.ffg-controls{background:rgba(9,15,26,.96) !important;border-top:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14);
	padding:16px 0 !important;box-shadow:0 10px 30px rgba(0,0,0,.35);}
#ffg-search{background:#0a1220 !important;border:1px solid rgba(255,255,255,.22) !important;color:#fff !important;
	font-family:'Courier New',Courier,monospace !important;letter-spacing:.3px;}
#ffg-search::placeholder{color:#6f8199 !important;}
.ffg-viewtoggle{background:#0a1220 !important;border-color:rgba(255,255,255,.22) !important;}
.ffg-viewtoggle button{font-family:'Courier New',Courier,monospace;letter-spacing:.4px;}
.ffg-count{font-family:'Courier New',Courier,monospace;color:#8fa2ba;letter-spacing:.4px;}
.ffg-chips__l{color:#8fa2ba;}
.ffg-chip{font-family:'Courier New',Courier,monospace !important;background:#0e1a2b !important;border-color:rgba(255,255,255,.22) !important;letter-spacing:.3px;}
.ffg-chip--clear{border-style:dashed !important;color:#8fa2ba;}
.ffg-activefilter{font-family:'Courier New',Courier,monospace;color:#9fb0c3;letter-spacing:.3px;}
.ffg-activefilter b{color:#fff;}

/* selection grid of case files */
.ffg-guide{padding:24px 0 110px;}
.dfiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:18px;margin:0 0 6px;}
.dsection{grid-column:1/-1;margin:26px 0 2px;}
.dsection h3{font-family:'Courier New',Courier,monospace;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#f0a35e;margin:0 0 6px;}
.dsection h3 span{color:#7f93a8;}
.dsection p{color:#8fa2ba;font-size:13.5px;font-style:italic;margin:0;max-width:70ch;line-height:1.45;}

.dfile{position:relative;display:block;width:100%;text-align:left;cursor:pointer;border:0;border-left:4px solid var(--fam,#7a5f34);
	padding:0;font:inherit;background:#e9ddc2;color:#241c12;border-radius:3px;overflow:hidden;
	box-shadow:0 10px 22px rgba(0,0,0,.42);transition:transform .16s ease,box-shadow .16s ease;}
.dfile::after{content:'';position:absolute;top:0;right:0;border-width:0 22px 22px 0;border-style:solid;border-color:transparent rgba(0,0,0,.14) transparent transparent;}
.dfile:hover{transform:translateY(-4px) rotate(-.35deg);box-shadow:0 18px 36px rgba(0,0,0,.6);}
.dfile__top{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 0;
	font-family:'Courier New',Courier,monospace;font-size:11px;font-weight:700;letter-spacing:1.2px;color:#7a5f34;text-transform:uppercase;}
.dfile__body{padding:5px 16px 16px;}
.dfile__name{font-family:Georgia,serif;font-size:19px;font-weight:700;margin:7px 0 2px;line-height:1.16;color:#241c12;}
.dfile__aka{font-family:'Courier New',Courier,monospace;font-size:11px;color:#8a7550;text-transform:uppercase;letter-spacing:.5px;}
.dfile__one{font-size:13.5px;line-height:1.46;color:#4a3f2c;margin:9px 0 12px;}
.dfile__marks{display:flex;gap:6px;flex-wrap:wrap;}
.dfile__marks .d{width:13px;height:13px;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.22);}
.dfile__stamp{font-family:'Courier New',Courier,monospace;font-size:9px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
	border:1.5px solid;border-radius:2px;padding:2px 6px;transform:rotate(3deg);}
.st-sourced{color:#2f6b3c;border-color:#7fae7f;}
.st-draft{color:#a02c1f;border-color:#cf9a86;}
.st-research{color:#6b5f4a;border-color:#b7a684;}

.dempty{text-align:center;color:#8fa2ba;padding:56px 20px;font-style:italic;font-size:15px;}
.dempty a{color:#f0a35e;font-weight:700;text-decoration:none;}

/* ── the pulled case file (slide-in drawer) ── */
.dview{position:fixed;inset:0;z-index:9999;display:none;}
.dview.open{display:block;}
.dview__scrim{position:absolute;inset:0;background:rgba(4,8,14,.82);}
.dcase{position:absolute;top:0;right:0;bottom:0;width:min(720px,100%);overflow:auto;
	background:#e9ddc2;color:#241c12;box-shadow:-24px 0 70px rgba(0,0,0,.7);
	transform:translateX(100%);transition:transform .38s cubic-bezier(.22,1,.36,1);
	padding:34px 40px 60px;font-family:Georgia,'Times New Roman',serif;}
.dview.open .dcase{transform:none;}
.dcase::before{content:'CONFIDENTIAL';position:absolute;top:26px;right:44px;font-family:'Courier New',Courier,monospace;
	font-size:13px;font-weight:800;letter-spacing:3px;color:rgba(160,44,31,.5);border:2px solid rgba(160,44,31,.4);
	padding:3px 9px;transform:rotate(7deg);pointer-events:none;}
.dcase__x{position:absolute;top:20px;left:20px;width:34px;height:34px;border:1px solid rgba(0,0,0,.3);background:rgba(0,0,0,.04);
	border-radius:3px;font-size:22px;line-height:1;color:#5a4d38;cursor:pointer;}
.dcase__x:hover{background:rgba(0,0,0,.09);}
.dcase__hd{display:flex;align-items:center;gap:12px;margin:24px 0 10px;padding-top:8px;}
.dcase__no{font-family:'Courier New',Courier,monospace;font-size:12px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:#7a5f34;
	border-bottom:2px solid #7a5f34;padding-bottom:2px;}
.dcase__name{font-size:clamp(26px,4vw,36px);line-height:1.1;font-weight:700;margin:0;color:#1c150c;}
.dcase__aka{font-family:'Courier New',Courier,monospace;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:#8a7550;margin:5px 0 0;}
.dcase__one{font-style:italic;font-size:17px;color:#4a3f2c;margin:14px 0 18px;line-height:1.5;border-left:3px solid #c9b787;padding-left:14px;}
.dmarks{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:14px 0;border-top:1px solid #cebf98;border-bottom:1px solid #cebf98;margin-bottom:18px;}
.dmarks__l{font-family:'Courier New',Courier,monospace;font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:#8a7550;}
.dmark{display:inline-flex;align-items:center;gap:6px;font-family:'Courier New',Courier,monospace;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#3f3524;}
.dmark .d{width:11px;height:11px;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.2);}
.dfacts{display:flex;flex-wrap:wrap;gap:14px 30px;margin:0 0 20px;}
.dfacts div{font-family:'Courier New',Courier,monospace;font-size:13px;color:#241c12;}
.dfacts b{display:block;font-size:9.5px;font-weight:800;letter-spacing:.9px;text-transform:uppercase;color:#8a7550;margin-bottom:3px;}
.dh{font-family:'Courier New',Courier,monospace;font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#a02c1f;margin:24px 0 9px;}
.dp{font-size:16px;line-height:1.68;color:#332a1c;margin:0;}
.dfund{background:#f0e4c6;border:1px solid #cdb583;border-radius:2px;padding:13px 16px;margin:12px 0 6px;}
.dfund__l{display:block;font-family:'Courier New',Courier,monospace;font-size:9.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#8a5a1a;margin-bottom:7px;}
.dfund ul{margin:0;padding-left:17px;}
.dfund li{font-size:14.5px;line-height:1.55;color:#241c12;margin:4px 0;}
.darg{border-left:3px solid #a02c1f;padding-left:15px;margin:13px 0;}
.darg__c{font-size:15px;font-style:italic;color:#1c150c;line-height:1.5;margin:0 0 6px;}
.darg__c::before{content:'“Cover story” ';font-family:'Courier New',monospace;font-style:normal;font-weight:800;color:#a02c1f;font-size:10px;letter-spacing:.5px;text-transform:uppercase;margin-right:5px;}
.darg__r{font-size:15px;color:#332a1c;line-height:1.6;margin:0;}
.darg__r::before{content:'The record ';font-family:'Courier New',monospace;font-weight:800;color:#2f6b3c;font-size:10px;letter-spacing:.5px;text-transform:uppercase;margin-right:5px;}
.dtodo{color:#8a7550;font-style:italic;font-size:15px;}
.dcite{font-family:'Courier New',monospace;font-size:9px;font-weight:800;color:#a02c1f;vertical-align:super;line-height:0;margin-left:1px;}
.dsources{margin-top:24px;padding-top:14px;border-top:1px solid #cebf98;}
.dsources h4{font-family:'Courier New',monospace;font-size:9.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#8a7550;margin:0 0 7px;}
.dsources ol{margin:0;padding-left:19px;}
.dsources li{font-family:'Courier New',monospace;font-size:11.5px;line-height:1.55;color:#4a3f2c;margin:5px 0;}
.dsources a{color:#a02c1f;text-decoration:none;}
.dsources a:hover{text-decoration:underline;}
.dcase__foot{margin-top:28px;padding-top:12px;border-top:1px dashed #c2b083;font-family:'Courier New',monospace;font-size:10.5px;letter-spacing:.4px;color:#8a7550;text-transform:uppercase;}

@media(max-width:520px){.dcase{padding:30px 22px 50px;}.dfiles{grid-template-columns:1fr;}}

/* "By backer" section headers */
.dsection h3 .dnet{display:inline-block;width:12px;height:12px;border-radius:50%;vertical-align:-1px;margin-right:5px;box-shadow:0 0 0 1px rgba(0,0,0,.3);}
.dsection h3 .dcnt{color:#7f93a8;font-weight:400;}

/* inline source links inside a case file (matches CW document's inline-link style) */
.dcase a{color:#a02c1f;text-decoration:underline;text-decoration-color:rgba(160,44,31,.4);text-underline-offset:2px;}
.dcase a:hover{text-decoration-color:#a02c1f;background:rgba(160,44,31,.06);}
.dp{margin:0 0 12px;}

/* ── mobile polish: comfortable tap targets, no iOS zoom, tidy control wrapping ── */
@media (max-width:680px){
	/* 16px stops iOS Safari auto-zooming when the search field gains focus */
	#ffg-search{font-size:16px !important;padding:13px 15px;min-width:0;max-width:none;flex:1 1 100%;}
	.ffg-controls__row{gap:10px;}
	.ffg-viewtoggle{flex:0 0 auto;}
	.ffg-viewtoggle button{padding:14px 18px;font-size:13px;line-height:1.1;}   /* ~44px tall */
	.ffg-count{margin-left:auto;}
	.ffg-chip{padding:9px 13px;font-size:12.5px;}               /* ~40px tap height */
	.ffg-chips{gap:8px;}
	.ffx-rail button{width:32px;height:32px;}                   /* bigger dot hit area */
	.dcase{width:100%;}                                          /* full-bleed case file */
	.dcase__x{width:40px;height:40px;font-size:24px;}           /* easier close */
}
/* one column on the smallest phones so case files never squeeze */
@media (max-width:400px){ .dfiles{grid-template-columns:1fr;} }

/* ── clickable diagram: pull any funder or group's case file ── */
.ffx-gnode,.ffx-glab,.ffx-snode,.ffx-slab{cursor:pointer;}
.ffx-snode:not(.on),.ffx-slab:not(.on){pointer-events:none;}  /* a funder isn't clickable until it's revealed */
.ffx-gnode{transition:fill .15s;}
.ffx-gnode:hover{fill:#5b6f92;}
.ffx-glab:hover{fill:#ffffff;}
.ffx-snode.on:hover{filter:brightness(1.25);}
.ffx-slab.on:hover{opacity:.82;}
.ffx-gnode:focus-visible,.ffx-glab:focus-visible,.ffx-snode:focus-visible,.ffx-slab:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

/* backer file → the groups it funds (cross-linked case files) */
.dxrefs{list-style:none;margin:6px 0 4px;padding:0;}
.dxrefs li{margin:0 0 8px;}
.dxref{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;text-align:left;cursor:pointer;font:inherit;
	background:#f0e4c6;border:1px solid #cdb583;border-left:4px solid #7a5f34;border-radius:2px;padding:11px 14px;color:#241c12;transition:background .12s,transform .12s;}
.dxref:hover{background:#e7d7b0;transform:translateX(2px);}
.dxref__n{font-family:Georgia,serif;font-weight:700;font-size:15px;line-height:1.2;}

/* ── funder categories: defendant-tied · fossil-fuel-funded · climate-denial ──
   colours mirror the funding-matrix spreadsheet: grey / blue / gold ── */
.ffg-chip[data-cat="defendant"]{background:rgba(148,161,184,.14) !important;border-color:rgba(148,161,184,.5) !important;}
.ffg-chip[data-cat="fossil"]{background:rgba(106,143,214,.16) !important;border-color:rgba(106,143,214,.55) !important;}
.ffg-chip[data-cat="denial"]{background:rgba(230,189,69,.16) !important;border-color:rgba(230,189,69,.55) !important;}
.dcat{border-radius:3px;padding:11px 14px !important;}
.ffg-chips__cat{flex:0 0 100%;display:inline-flex;align-items:center;font-family:'Courier New',Courier,monospace;font-size:10px;
	font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:5px 0 2px;margin:9px 0 2px;border:0;}
.ffg-chips__cat::before{content:'';width:14px;height:2px;background:currentColor;margin-right:8px;opacity:.8;}
.ffg-chips__l+.ffg-chips__cat{margin-top:4px;}
/* category header in the "By backer" view */
.dcat{margin:26px 0 4px;border-left:3px solid var(--catc,#f0a35e);padding:3px 0 3px 13px;}
.dcat h3{font-family:'Courier New',Courier,monospace;font-size:14px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--catc,#f0a35e);margin:0 0 4px;}
.dcat p{color:#8fa2ba;font-size:13px;font-style:italic;margin:0;max-width:76ch;line-height:1.46;}
/* category badge on a backer file */
.dcat-badge{display:inline-block;font-family:'Courier New',Courier,monospace;font-size:9px;font-weight:800;letter-spacing:.8px;
	text-transform:uppercase;border:1.5px solid;border-radius:2px;padding:2px 7px;margin-left:8px;transform:rotate(-1.5deg);}

/* backer-file cards in the guide (funding networks) */
.dfile__reach{display:inline-flex;align-items:center;gap:7px;font-family:'Courier New',Courier,monospace;font-size:11px;font-weight:700;
	color:#7a5f34;text-transform:uppercase;letter-spacing:.4px;}
.dfile__reach .d{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.22);}

/* field-mark dots in a case file open their backer's file */
.dmark--link{cursor:pointer;}
.dmark--link:hover{color:#a02c1f;}
.dmark--link:hover .d{box-shadow:0 0 0 2px rgba(160,44,31,.35);}

/* ── mobile readability: the case files are dense — bump the reading sizes + air on phones ── */
@media (max-width:640px){
	/* the case-file drawer, the main reading surface */
	.dcase{padding:30px 20px 56px;}
	.dcase__one{font-size:18.5px;line-height:1.55;}
	.dp{font-size:17.5px;line-height:1.75;margin:0 0 15px;}
	.dh{font-size:13px;letter-spacing:.8px;margin:26px 0 10px;}
	.darg{padding-left:14px;margin:15px 0;}
	.darg__c,.darg__r{font-size:16.5px;line-height:1.62;}
	.dfund li{font-size:15.5px;line-height:1.62;}
	.dfacts{gap:13px 26px;}
	.dfacts div{font-size:14.5px;}
	.dfacts b{font-size:10px;}
	.dmarks{gap:9px 15px;}
	.dmark{font-size:12.5px;}
	.dmarks__l{font-size:11px;}
	.dsources li{font-size:13px;line-height:1.6;}
	.dcase__aka{font-size:13px;}
	.dxref{padding:13px 15px;}
	.dxref__n{font-size:16.5px;}
	/* the selection cards */
	.dfile__name{font-size:20.5px;}
	.dfile__aka{font-size:12px;}
	.dfile__one{font-size:15.5px;line-height:1.52;}
	.dsection h3{font-size:14px;}
	.dsection p{font-size:14.5px;line-height:1.5;}
	/* the narrative cards over the diagram */
	.ffx-card p{font-size:16.5px;line-height:1.62;}
	.ffx-card h2{font-size:clamp(23px,6.6vw,30px);}
	.ffx-step__k{font-size:11.5px;}
	.ffg-guide-intro p{font-size:17px;line-height:1.55;}
	.ffg-cover__sub,.ffx-sub{line-height:1.55;}
}
/* respect the OS "increase contrast" / dark-preference already handled — keep motion sane */
@media (prefers-reduced-motion:reduce){ .dfile,.dcase{transition:none;} }

/* ─────────────────────────────────────────────────────────────────
   6 · CROSS-REFERENCE, ORGANISED
   Three labelled rows (defendants / fossil-fuel funded / climate-denial)
   instead of one long chip soup, plus a compact chip scale.
   ───────────────────────────────────────────────────────────────── */
.ffg-chips{display:flex !important;flex-direction:column;gap:8px !important;align-items:stretch !important;margin-top:12px !important;}
.ffg-chips__l{font-size:10px !important;letter-spacing:1.4px !important;color:#7f93a8 !important;margin:0 0 2px !important;}
.ffg-chiprow{display:flex;align-items:flex-start;gap:12px;flex-wrap:nowrap;
	padding:8px 12px;border:1px solid rgba(255,255,255,.10);border-left:3px solid var(--cat,rgba(255,255,255,.2));
	border-radius:9px;background:rgba(255,255,255,.028);}
.ffg-chips__cat{flex:0 0 140px !important;display:block !important;margin:5px 0 0 !important;padding:0 !important;border:0 !important;
	font-family:'Open Sans',Arial,sans-serif !important;font-size:9.5px !important;font-weight:800 !important;
	letter-spacing:1.1px !important;text-transform:uppercase;line-height:1.35;}
.ffg-chips__cat::before{display:none !important;}
.ffg-chiprow__set{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0;}
.ffg-chips .ffg-chip{font-family:'Open Sans',Arial,sans-serif !important;font-size:11.5px !important;font-weight:700 !important;
	padding:5px 10px !important;border-radius:7px !important;letter-spacing:0 !important;}
.ffg-chips .ffg-chip .d{width:7px;height:7px;}
.ffg-chip--clear{align-self:flex-start;margin-top:2px;}

@media(max-width:720px){
	.ffg-chiprow{flex-direction:column;gap:7px;}
	.ffg-chips__cat{flex:0 0 auto !important;margin:0 !important;}
	/* touch targets: WCAG 2.5.5 / HIG want ~44px — the compact desktop chip is too
	   small for a thumb, so restore a full-height tap area on small screens */
	.ffg-chips .ffg-chip{font-size:12.5px !important;padding:12px 14px !important;min-height:44px;}
	.ffg-viewtoggle button{min-height:44px;padding-left:16px;padding-right:16px;}
	#ffg-search{min-height:46px;}
	.ffg-chip--clear{min-height:44px;display:inline-flex;align-items:center;}
}

/* "Read the full report" CTA inside every case + backer file */
.dreport{display:inline-block;margin:26px 0 4px;background:var(--gold);color:#0a1220;
	font-family:'Open Sans',Arial,sans-serif;font-weight:800;font-size:13px;letter-spacing:.4px;
	text-decoration:none;padding:12px 22px;border-radius:9px;transition:transform .18s ease,box-shadow .18s ease;}
.dreport:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(240,163,94,.38);color:#0a1220;}

/* the finale card carries the report button, so give it room */
.ffx-step[data-step="7"] .ffx-report-btn{margin-top:20px;font-size:13.5px;padding:13px 24px;}
.ffx-end{padding-top:0;}

/* ─────────────────────────────────────────────────────────────────
   7 · FINALE FIT
   Ten backers (was eight) made the count-up scoreboard wrap into a
   second row that collided with the graph. Tighten it to one row on
   desktop and give the stage a fixed slot for it.
   ───────────────────────────────────────────────────────────────── */
.ffx-reach{gap:8px 14px !important;padding-top:6px !important;max-width:100% !important;}
.ffx-reach div{min-width:0 !important;flex:0 1 auto;padding:0 2px;}
.ffx-reach b{font-size:clamp(20px,2.5vw,30px) !important;}
.ffx-reach span{margin-top:5px !important;font-size:8.5px !important;letter-spacing:.6px !important;
	max-width:11ch;margin-left:auto;margin-right:auto;line-height:1.25;}

@media(min-width:1100px){
	.ffx-reach div{flex:0 0 9%;}
	.ffx-reach span{max-width:none;}
}
@media(max-width:820px){
	.ffx-reach{gap:6px 10px !important;}
	.ffx-reach b{font-size:clamp(16px,4.4vw,22px) !important;}
	.ffx-reach span{font-size:7.5px !important;max-width:9ch;}
}

/* ─────────────────────────────────────────────────────────────────
   8 · SERVER-RENDERED CASE FILES (progressive enhancement)
   The evidence ships in the HTML so it is indexable, citable and
   readable without JS. frontgroup-guide.js replaces this on boot.
   ───────────────────────────────────────────────────────────────── */
.ffg-ssr{max-width:760px;margin:0 auto;padding:8px 0 40px;font-family:'Open Sans',Arial,sans-serif;
	/* keep the pre-enhancement paint cheap on a 150KB document */
	content-visibility:auto;contain-intrinsic-size:auto 1200px;}
.ffg-ssr__note{font-size:12.5px;letter-spacing:.3px;color:var(--muted);border-left:3px solid var(--gold);
	padding:8px 0 8px 12px;margin:0 0 26px;}
.ffg-ssr__case{border-top:1px solid var(--rule);padding:26px 0 4px;}
.ffg-ssr__hd{font-family:Georgia,serif;font-size:26px;color:#fff;margin:44px 0 4px;}
.ffg-ssr__name{font-family:Georgia,serif;font-size:23px;line-height:1.2;color:#fff;margin:0 0 6px;font-weight:700;}
.ffg-ssr__aka{font-size:12.5px;letter-spacing:.4px;color:var(--muted);margin:0 0 10px;}
.ffg-ssr__one{font-family:Georgia,serif;font-size:17px;line-height:1.5;color:var(--ink);margin:0 0 12px;}
.ffg-ssr__backers{font-size:13.5px;line-height:1.55;color:var(--ink2);margin:0 0 16px;
	background:rgba(240,163,94,.09);border:1px solid rgba(240,163,94,.3);border-radius:8px;padding:9px 13px;}
.ffg-ssr__backers strong{color:var(--gold);}
.ffg-ssr h4{font-family:'Open Sans',Arial,sans-serif;font-size:11px;font-weight:800;letter-spacing:1.6px;
	text-transform:uppercase;color:var(--gold);margin:22px 0 8px;}
.ffg-ssr p{font-size:15.5px;line-height:1.68;color:var(--ink2);margin:0 0 13px;}
.ffg-ssr a{color:#9fc4f0;text-decoration:underline;text-underline-offset:2px;}
.ffg-ssr__arg{border-left:2px solid var(--rule-dk);padding-left:14px;margin:0 0 16px;}
.ffg-ssr__claim strong{color:#ff9a92;}
.ffg-ssr__fact strong{color:#7ee0a0;}
.ffg-ssr .dcite{font-size:10px;color:var(--gold);}
@media(max-width:720px){
	.ffg-ssr__name{font-size:20px;}
	.ffg-ssr p{font-size:15px;}
}

/* ─────────────────────────────────────────────────────────────────
   9 · PROGRESSIVE-ENHANCEMENT VISIBILITY
   The server-rendered files stay in the DOM permanently. They are the
   no-JS layer and the print layer; the interactive guide hides them.
   ───────────────────────────────────────────────────────────────── */
.ffg-js .ffg-ssr{display:none;}
/* without JS the search box and filters do nothing — don't offer them */
html:not(.ffg-js) .ffg-controls{display:none !important;}
html:not(.ffg-js) .ffg-guide-intro .k::after{content:' · full text below';}

/* ─────────────────────────────────────────────────────────────────
   10 · PRINT / PDF
   Reporters print investigations. Give them the whole evidence set as a
   clean document: light, serif, every case file expanded, sources shown
   as real URLs so a printed copy stays verifiable.
   ───────────────────────────────────────────────────────────────── */
@media print{
	@page{margin:16mm 14mm;}
	html,body,.ffg{background:#fff !important;color:#111 !important;}
	.ffg{--ink:#111;--ink2:#222;--muted:#555;--rule:#ccc;--rule-dk:#999;--gold:#8a5a12;}

	/* the interactive apparatus doesn't belong on paper */
	.ffx-scroll,.ffx-stage,.ffx-steps,.ffx-rail,.ffx-reach,#ffx-cy,
	.ffg-controls,.ffg-guide,.dview,.ffx-end,.ffx-cue,
	.site-header,.site-footer,header,footer,nav,.ffx-report-btn,
	/* theme chrome that the global print sheet leaves behind — and which the
	   sitewide a[href]::after rule turns into a row of raw social URLs */
	.cwd-utility-bar,.cwd-utility-inner,.cwd-utility-nav,.cwd-social-links,
	.cwd-logo-right-social,.cwd-social-link,.cwd-logo-spacer,
	.cwd-header-donate,.kindful-donate-btn,
	.ffg-guide-intro p{display:none !important;}

	/* the guide heading still titles the evidence section, but left-aligned */
	.ffg-guide-intro{text-align:left !important;max-width:none !important;margin:18pt 0 0 !important;}
	.ffg-guide-intro .k{color:#8a5a12 !important;font-size:8.5pt !important;letter-spacing:1.6pt;}
	.ffg-guide-intro h2{color:#111 !important;font-size:17pt !important;margin:2pt 0 0 !important;}

	/* …but the story's opening still frames the document */
	.ffx-hero{min-height:auto !important;background:#fff !important;padding:0 0 14pt !important;
		text-align:left !important;display:block !important;border-bottom:2pt solid #111;}
	.ffx-eyebrow{color:#8a5a12 !important;font-size:9pt !important;margin:0 0 6pt !important;}
	.ffx-title{font-size:26pt !important;max-width:none !important;color:#111 !important;
		-webkit-text-fill-color:#111 !important;background:none !important;}
	.ffx-deck{color:#333 !important;font-size:12pt !important;max-width:none !important;margin:6pt 0 0 !important;}
	.ffx-sub{color:#222 !important;font-size:10.5pt !important;max-width:none !important;margin:8pt 0 0 !important;}

	/* the evidence itself — always printed, even with JS running */
	.ffg-js .ffg-ssr,.ffg-ssr{display:block !important;max-width:none;padding:0;
		content-visibility:visible !important;font-family:Georgia,'Times New Roman',serif;}
	.ffg-ssr__note{display:none !important;}
	.ffg-ssr__case{break-inside:auto;page-break-inside:auto;border-top:1pt solid #bbb;padding:12pt 0 4pt;}
	.ffg-ssr__name{font-size:14pt !important;color:#111 !important;break-after:avoid;page-break-after:avoid;}
	.ffg-ssr__hd{font-size:18pt !important;color:#111 !important;margin-top:22pt !important;}
	.ffg-ssr__aka{color:#666 !important;font-size:8.5pt !important;}
	.ffg-ssr__one{color:#111 !important;font-size:11pt !important;font-style:italic;}
	.ffg-ssr__backers{background:#f2f2f2 !important;border:1pt solid #ccc !important;color:#111 !important;font-size:9.5pt !important;}
	.ffg-ssr__backers strong{color:#8a5a12 !important;}
	.ffg-ssr h4{color:#8a5a12 !important;font-size:8.5pt !important;margin:12pt 0 5pt !important;break-after:avoid;page-break-after:avoid;}
	.ffg-ssr p{color:#111 !important;font-size:10pt !important;line-height:1.45 !important;orphans:3;widows:3;}
	.ffg-ssr__arg{border-left:2pt solid #bbb !important;}
	.ffg-ssr__claim strong{color:#a01d13 !important;}
	.ffg-ssr__fact strong{color:#1d6b34 !important;}
	.cwd-logo-row a::after,.cwd-logo-inner a::after{content:'' !important;}

	/* a printed citation is worthless without its URL */
	.ffg-ssr a{color:#111 !important;text-decoration:underline;}
	.ffg-ssr a[href^="http"]::after{content:' <' attr(href) '>';font-size:7.5pt;color:#555;word-break:break-all;}
}

/* ─────────────────────────────────────────────────────────────────
   11 · SINGLE CASE FILE / FUNDING NETWORK  (/front-group/, /funder/)
   Each dossier as its own readable, citable document.
   ───────────────────────────────────────────────────────────────── */
.ffg-single{padding:0 22px 70px;}
.ffg-single__wrap{max-width:760px;margin:0 auto;}
.ffg-single__crumb{padding:26px 0 0;font-size:12.5px;letter-spacing:.3px;}
.ffg-single__crumb a{color:var(--ink2);text-decoration:none;}
.ffg-single__crumb a:hover{color:var(--gold);}
.ffg-single__hd{padding:26px 0 4px;border-bottom:1px solid var(--rule);margin-bottom:22px;}
.ffg-single__k{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin:0 0 12px;}
.ffg-single__name{font-family:Georgia,serif;font-size:clamp(28px,4.6vw,44px);line-height:1.12;color:#fff;margin:0 0 10px;font-weight:700;}
.ffg-single__aka{font-size:13px;letter-spacing:.4px;color:var(--muted);margin:0 0 12px;}
.ffg-single__one{font-family:Georgia,serif;font-size:clamp(17px,2.2vw,20px);line-height:1.5;color:var(--ink);margin:0 0 18px;}

.ffg-single__ties{background:rgba(240,163,94,.08);border:1px solid rgba(240,163,94,.3);border-radius:11px;padding:14px 16px;margin:0 0 30px;}
.ffg-single__ties-l{display:block;font-size:10.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--gold);margin:0 0 10px;}
.ffg-single__ties ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;}
.ffg-single__ties a{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.06);border:1px solid var(--rule-dk);
	border-radius:8px;padding:8px 12px;font-size:13px;font-weight:700;color:var(--ink);text-decoration:none;transition:border-color .18s,transform .18s;}
.ffg-single__ties a:hover{border-color:var(--fam,var(--gold));transform:translateY(-1px);}
.ffg-single__ties .d{width:8px;height:8px;border-radius:50%;flex:0 0 auto;}

.ffg-single__body h2{font-family:'Open Sans',Arial,sans-serif;font-size:11px;font-weight:800;letter-spacing:1.8px;
	text-transform:uppercase;color:var(--gold);margin:34px 0 12px;}
.ffg-single__body p{font-size:16.5px;line-height:1.72;color:var(--ink2);margin:0 0 16px;}
.ffg-single__body a{color:#9fc4f0;text-decoration:underline;text-underline-offset:2px;}
.ffg-single__body a:hover{color:#c9dcf6;}
.ffg-single__arg{border-left:2px solid var(--rule-dk);padding-left:16px;margin:0 0 20px;}
.ffg-single__claim strong{color:#ff9a92;}
.ffg-single__fact strong{color:#7ee0a0;}
.ffg-single .dcite{font-size:10px;color:var(--gold);}

.ffg-single__reach{list-style:none;margin:0;padding:0;}
.ffg-single__reach li{border-top:1px solid var(--rule);padding:14px 0;}
.ffg-single__reach a{font-family:Georgia,serif;font-size:18px;font-weight:700;color:#fff;text-decoration:none;}
.ffg-single__reach a:hover{color:var(--gold);}
.ffg-single__reach span{display:block;font-size:14px;line-height:1.5;color:var(--ink2);margin-top:4px;}

.ffg-single__foot{margin:44px 0 0;padding-top:26px;border-top:1px solid var(--rule);}
.ffg-single__cite{font-size:12px;letter-spacing:.4px;color:var(--muted);margin:16px 0 0;}
.ffg-single__rel{margin:44px 0 0;padding-top:24px;border-top:1px solid var(--rule);}
.ffg-single__rel h2{font-family:'Open Sans',Arial,sans-serif;font-size:11px;font-weight:800;letter-spacing:1.8px;
	text-transform:uppercase;color:var(--gold);margin:0 0 12px;}
.ffg-single__rel ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;}
.ffg-single__rel a{display:inline-block;background:rgba(255,255,255,.05);border:1px solid var(--rule-dk);border-radius:8px;
	padding:8px 12px;font-size:13.5px;color:var(--ink);text-decoration:none;}
.ffg-single__rel a:hover{border-color:var(--gold);color:#fff;}

@media print{
	.ffg-single__crumb,.ffg-single__foot,.ffg-single__rel{display:none !important;}
	.ffg-single__name,.ffg-single__body p{color:#111 !important;}
	.ffg-single__body h2{color:#8a5a12 !important;}
	.ffg-single__body a[href^="http"]::after{content:' <' attr(href) '>';font-size:7.5pt;color:#555;word-break:break-all;}
}

/* ─────────────────────────────────────────────────────────────────
   12 · THE CASE FILE, OUT OF THE MODAL
   .dcase is the canonical dossier. These modifiers place the very same
   file on its own page (--page) and in the print/no-JS stack (--flat),
   so the guide, the permalink and the printout are one design.
   ───────────────────────────────────────────────────────────────── */
.ffg-filepage{padding:0 20px 70px;}
.ffg-filepage__wrap{max-width:820px;margin:0 auto;}
.ffg-filepage__crumb{padding:24px 0 16px;font-size:12.5px;letter-spacing:.3px;}
.ffg-filepage__crumb a{color:var(--ink2);text-decoration:none;}
.ffg-filepage__crumb a:hover{color:var(--gold);}

.dcase--page,.dcase--flat{position:static !important;inset:auto !important;width:auto !important;
	max-width:none;overflow:visible !important;border-radius:14px;
	/* the modal slides in from the right — off the page context, that transform
	   would shove the file a full card-width sideways */
	transform:none !important;transition:none !important;box-shadow:0 24px 60px rgba(0,0,0,.45);}
.dcase--page{box-shadow:0 24px 60px rgba(0,0,0,.45);}
.dcase--flat{margin:0 0 26px;border-radius:12px;}
.dcase--page .dcase__hd,.dcase--flat .dcase__hd{margin-top:0;}

/* funder marks are real links on a page (buttons inside the modal) */
a.dmark--link{text-decoration:none;}
a.dmark--link:hover{border-color:currentColor;}
a.dxref{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-decoration:none;}

@media(max-width:720px){
	.ffg-filepage{padding:0 12px 50px;}
	.dcase--page,.dcase--flat{border-radius:10px;}
}

/* the case panel while its file is being fetched */
.dloading{display:flex;align-items:center;gap:11px;margin:64px 0 0;font-family:'Courier New',Courier,monospace;
	font-size:12.5px;letter-spacing:1px;text-transform:uppercase;color:#7a5f34;}
.dloading__s{width:14px;height:14px;border:2px solid rgba(122,95,52,.28);border-top-color:#7a5f34;border-radius:50%;
	animation:ffgSpin .7s linear infinite;}
@keyframes ffgSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.dloading__s{animation-duration:2.4s;}}
.dpermalink{display:inline-block;margin:22px 0 0;font-family:'Open Sans',Arial,sans-serif;font-size:13px;font-weight:700;
	color:#7a5f34;text-decoration:underline;text-underline-offset:3px;}
.dpermalink:hover{color:#a02c1f;}
a.dfile{text-decoration:none;display:block;}

/* the server-rendered index (no-JS + crawlers) */
.ffg-ssr__index{list-style:none;margin:0 0 26px;padding:0;}
.ffg-ssr__index li{border-top:1px solid var(--rule);padding:13px 0;}
.ffg-ssr__index > li > a{font-family:Georgia,serif;font-size:18px;font-weight:700;color:#fff;text-decoration:none;}
.ffg-ssr__index > li > a:hover{color:var(--gold);}
.ffg-ssr__index .ffg-ssr__one{display:block;font-size:14.5px;line-height:1.5;color:var(--ink2);margin:4px 0 0;}
.ffg-ssr__index .ffg-ssr__ties{display:block;font-size:12.5px;color:var(--muted);margin:5px 0 0;}
.ffg-ssr__index .ffg-ssr__ties strong{color:var(--gold);}

/* ─────────────────────────────────────────────────────────────────
   13 · THE SURVEILLANCE PLATE
   Every dossier opens on a "photograph" of its subject: registration
   crosshairs, sprocket edges, grain, frame number. Built entirely in
   CSS — the subject's name is the only content, so it stays real text.
   ───────────────────────────────────────────────────────────────── */
.dphoto{margin:0 0 18px;padding:0;}
.dphoto__frame{position:relative;overflow:hidden;border-radius:3px;
	min-height:186px;display:flex;flex-direction:column;align-items:center;justify-content:center;
	padding:38px 54px;text-align:center;
	background:
		radial-gradient(120% 130% at 50% 8%, rgba(58,78,104,.55) 0, rgba(10,16,26,.96) 62%),
		linear-gradient(0deg, rgba(0,0,0,.55), rgba(0,0,0,.55)),
		url('../img/ffg-texture-v2.jpg') center/cover no-repeat #070c15;
	box-shadow:inset 0 0 0 1px rgba(255,255,255,.10), inset 0 0 90px rgba(0,0,0,.85), 0 6px 22px rgba(0,0,0,.4);}
/* 35mm sprocket edges */
.dphoto__frame::before,.dphoto__frame::after{content:'';position:absolute;top:0;bottom:0;width:17px;z-index:2;
	background:
		repeating-linear-gradient(180deg, transparent 0 9px, rgba(232,236,242,.82) 9px 20px, transparent 20px 29px),
		linear-gradient(180deg,#0c1119,#0c1119);
	opacity:.5;}
.dphoto__frame::before{left:0;} .dphoto__frame::after{right:0;}
/* corner registration crosshairs */
.dphoto__reg{position:absolute;width:19px;height:19px;z-index:3;opacity:.62;}
.dphoto__reg::before,.dphoto__reg::after{content:'';position:absolute;background:rgba(255,255,255,.75);}
.dphoto__reg::before{left:0;right:0;height:1px;top:50%;}
.dphoto__reg::after{top:0;bottom:0;width:1px;left:50%;}
.dphoto__reg--tl{top:12px;left:26px;} .dphoto__reg--tr{top:12px;right:26px;}
.dphoto__reg--bl{bottom:12px;left:26px;} .dphoto__reg--br{bottom:12px;right:26px;}
/* film grain */
.dphoto__grain{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.19;mix-blend-mode:overlay;
	background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='0.55'/></svg>");}
.dphoto__name{position:relative;z-index:4;margin:0;font-family:'Open Sans',Arial,sans-serif;
	font-size:clamp(19px,3.1vw,30px);font-weight:800;line-height:1.16;letter-spacing:.055em;text-transform:uppercase;
	color:#f3f7fc;text-shadow:0 2px 18px rgba(0,0,0,.85),0 0 42px rgba(120,170,230,.24);max-width:19ch;}
.dphoto__sub{position:relative;z-index:4;margin-top:11px;font-family:'Courier New',Courier,monospace;
	font-size:9.5px;letter-spacing:3.2px;text-transform:uppercase;color:rgba(206,222,240,.62);}
.dphoto__cap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
	margin:9px 1px 0;font-family:'Courier New',Courier,monospace;}
.dphoto__no{font-size:11.5px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:#7a5f34;}

/* ── file actions: share · print · email ── */
.dacts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:30px 0 0;
	padding-top:18px;border-top:1px dashed rgba(122,95,52,.4);}
.dact{display:inline-flex;align-items:center;gap:7px;font-family:'Open Sans',Arial,sans-serif;
	font-size:12.5px;font-weight:700;color:#4a3f2c;text-decoration:none;cursor:pointer;
	background:rgba(122,95,52,.08);border:1px solid rgba(122,95,52,.34);border-radius:8px;
	padding:9px 14px;min-height:40px;transition:background .18s,border-color .18s,transform .18s;}
.dact:hover{background:rgba(122,95,52,.16);border-color:rgba(122,95,52,.6);transform:translateY(-1px);color:#1c150c;}
.dact__i{font-size:14px;line-height:1;}
.dact__done{font-family:'Courier New',Courier,monospace;font-size:11px;letter-spacing:1px;
	text-transform:uppercase;color:#2f7d4f;opacity:0;transition:opacity .2s;}
.dact__done.on{opacity:1;}

/* ── the graph stage, branded rather than flat black ── */
.ffx-stage{background:
	radial-gradient(120% 90% at 50% 40%, rgba(14,26,43,.55) 0, rgba(10,18,32,.92) 70%),
	url('../img/ffg-texture-v2.jpg') center/cover no-repeat #0a1220;}

@media(max-width:720px){
	.dphoto__frame{min-height:148px;padding:30px 40px;}
	.dphoto__frame::before,.dphoto__frame::after{width:12px;}
	.dphoto__reg{width:14px;height:14px;}
	.dphoto__reg--tl,.dphoto__reg--tr{top:9px;} .dphoto__reg--bl,.dphoto__reg--br{bottom:9px;}
	.dphoto__reg--tl,.dphoto__reg--bl{left:18px;} .dphoto__reg--tr,.dphoto__reg--br{right:18px;}
	.dact{min-height:44px;padding:11px 15px;}
}
@media print{
	.dphoto__frame{min-height:auto;padding:16pt 20pt;background:#f3f3f3 !important;box-shadow:none !important;border:1pt solid #999;}
	.dphoto__frame::before,.dphoto__frame::after,.dphoto__grain,.dphoto__reg{display:none !important;}
	.dphoto__name{color:#111 !important;text-shadow:none !important;font-size:16pt !important;}
	.dphoto__sub{color:#666 !important;}
	.dacts{display:none !important;}
}

/* ─────────────────────────────────────────────────────────────────
   14 · THE COVER MARK IN THE HERO
   The same ring that fronts the printed report, sitting behind the
   title so the page and the PDF read as one publication.
   ───────────────────────────────────────────────────────────────── */
.ffx-hero{position:relative;isolation:isolate;}
.ffx-hero::after{content:'';position:absolute;z-index:-1;pointer-events:none;
	top:50%;left:50%;transform:translate(-50%,-50%);
	width:min(78vw,760px);aspect-ratio:1100/1081;
	background:url('../img/ffg-ring.png') center/contain no-repeat;
	opacity:.16;filter:saturate(.85);}
@media(max-width:720px){ .ffx-hero::after{width:min(96vw,520px);opacity:.13;} }
@media print{ .ffx-hero::after{display:none !important;} }

/* ─────────────────────────────────────────────────────────────────
   15 · THE ANSWERS LAYER  (organic / long-tail search)
   Real content: case Q&A, "who funds X" for every group, glossary.
   ───────────────────────────────────────────────────────────────── */
.ffg-seo{border-top:1px solid var(--rule);margin-top:16px;padding:52px 22px 20px;}
.ffg-seo__wrap{max-width:820px;margin:0 auto;}
.ffg-seo__h{font-family:Georgia,serif;font-size:clamp(23px,3.2vw,32px);color:#fff;font-weight:700;
	margin:44px 0 6px;line-height:1.16;}
.ffg-seo__h:first-child{margin-top:0;}
.ffg-seo__lede{font-size:15px;line-height:1.6;color:var(--ink2);margin:0 0 18px;}
.ffg-qa{border-bottom:1px solid var(--rule);}
.ffg-qa summary{list-style:none;cursor:pointer;padding:15px 34px 15px 0;position:relative;}
.ffg-qa summary::-webkit-details-marker{display:none;}
.ffg-qa summary h3{font-family:'Open Sans',Arial,sans-serif;font-size:16px;font-weight:700;line-height:1.4;
	color:var(--ink);margin:0;}
.ffg-qa summary:hover h3{color:var(--gold);}
.ffg-qa summary::after{content:'+';position:absolute;right:6px;top:50%;transform:translateY(-50%);
	font-size:20px;font-weight:700;color:var(--gold);line-height:1;}
.ffg-qa[open] summary::after{content:'–';}
.ffg-qa p{font-size:15.5px;line-height:1.7;color:var(--ink2);margin:0 0 18px;padding-right:34px;}
.ffg-qa a{color:#9fc4f0;text-decoration:underline;text-underline-offset:2px;white-space:nowrap;}
.ffg-qa summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px;}
@media(max-width:720px){
	.ffg-seo{padding:40px 16px 12px;}
	.ffg-qa summary{padding:14px 30px 14px 0;min-height:44px;}
}
@media print{
	.ffg-seo{display:none !important;}
}
