/* ============================================================
   THE FOREIGN HAND — Dossier on the US opposition to India's
   FCRA Amendment Bill, 2026.  Declassified-investigative aesthetic.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..900;1,9..144,300..900&family=Newsreader:ital,opsz,wght@0,6..72,300..700;1,6..72,300..600&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root{
  --ink:        #0a0b0d;
  --ink-2:      #101216;
  --ink-3:      #171a20;
  --panel:      #13161c;
  --paper:      #e7e1d3;
  --bone:       #c9c2b1;
  --fog:        #8b909b;
  --fog-2:      #5d626c;
  --signal:     #f08a3c;   /* amber — the through-line */
  --signal-dim: #b9692c;
  --alert:      #d8453e;   /* seized / cancelled */
  --frozen:     #5aa6d8;   /* frozen / suspended */
  --jade:       #6fae84;   /* active / clean */
  --gold:       #d9b25a;
  --line:       rgba(231,225,211,0.12);
  --line-soft:  rgba(231,225,211,0.06);

  --serif:  'Newsreader', Georgia, serif;
  --disp:   'Fraunces', Georgia, serif;
  --mono:   'JetBrains Mono', ui-monospace, monospace;

  --maxw: 1280px;
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  background:var(--ink);
  color:var(--bone);
  font-family:var(--serif);
  font-size:18px;
  line-height:1.6;
  font-optical-sizing:auto;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

/* paper grain + vignette atmosphere */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(240,138,60,0.10), transparent 60%),
    radial-gradient(100% 60% at 100% 100%, rgba(90,166,216,0.05), transparent 60%);
}
body::after{
  content:""; position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.5;
  mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.45'/%3E%3C/svg%3E");
}
main, header, footer, nav{ position:relative; z-index:2; }

::selection{ background:var(--signal); color:var(--ink); }

a{ color:inherit; text-decoration:none; }

/* ---------- scroll progress + grid lines ---------- */
.scroll-rail{ position:fixed; top:0; left:0; right:0; height:3px; z-index:60; background:transparent; }
.scroll-rail i{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--signal-dim),var(--signal)); box-shadow:0 0 16px var(--signal); }

.edge-grid{ position:fixed; inset:0; z-index:3; pointer-events:none;
  background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);
  background-size:100% 100px, 25vw 100%;
  mask:linear-gradient(180deg,transparent,#000 8%,#000 92%,transparent);
}

/* ---------- top bar ---------- */
.topbar{ position:fixed; top:0; left:0; right:0; z-index:55;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px clamp(16px,4vw,42px);
  font-family:var(--mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--fog);
  backdrop-filter:blur(4px);
  mix-blend-mode:difference;
}
.topbar a:hover{ color:var(--signal); }
.topbar .dot{ color:var(--signal); }
.topbar nav{ display:flex; gap:22px; }
@media(max-width:720px){ .topbar nav{ display:none; } }

/* ---------- layout primitives ---------- */
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 clamp(16px,4vw,42px); }
.screen{ min-height:100vh; display:flex; flex-direction:column; justify-content:center; padding:96px 0; }
.screen--tall{ min-height:140vh; }

.kicker{ font-family:var(--mono); font-size:12px; letter-spacing:.32em; text-transform:uppercase; color:var(--signal); display:inline-flex; gap:12px; align-items:center; }
.kicker::before{ content:""; width:34px; height:1px; background:var(--signal); display:inline-block; }

.eyebrow{ font-family:var(--mono); font-size:11px; letter-spacing:.28em; text-transform:uppercase; color:var(--fog); }

h1,h2,h3{ font-family:var(--disp); font-weight:500; line-height:.98; color:var(--paper); letter-spacing:-.01em; }
h1{ font-size:clamp(46px,9vw,148px); }
h2{ font-size:clamp(34px,5.5vw,82px); }
h3{ font-size:clamp(24px,3vw,40px); }
.lead{ font-size:clamp(20px,2.4vw,30px); line-height:1.45; color:var(--bone); font-weight:300; max-width:24ch; }
.serif-italic{ font-style:italic; font-family:var(--disp); color:var(--signal); }
p.body{ max-width:62ch; color:var(--bone); }
p.body + p.body{ margin-top:1em; }
.muted{ color:var(--fog); }
.tnum{ font-variant-numeric:tabular-nums; }

/* ---------- HERO ---------- */
.hero{ min-height:100vh; display:grid; grid-template-rows:1fr auto; padding-top:120px; }
.hero__main{ display:flex; flex-direction:column; justify-content:center; }
.hero h1{ position:relative; }
.hero h1 .ln{ display:block; overflow:hidden; }
.hero h1 .ln > span{ display:block; transform:translateY(110%); }
.hero__meta{ display:flex; flex-wrap:wrap; gap:32px 60px; padding:26px 0; border-top:1px solid var(--line); margin-top:30px; }
.hero__meta div{ }
.hero__meta dt{ font-family:var(--mono); font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:var(--fog-2); }
.hero__meta dd{ font-family:var(--mono); font-size:13px; color:var(--bone); margin-top:6px; }
.hero__cue{ font-family:var(--mono); font-size:11px; letter-spacing:.24em; text-transform:uppercase; color:var(--fog); display:flex; align-items:center; gap:12px; padding-bottom:30px; }
.hero__cue .arrow{ animation:bob 1.8s ease-in-out infinite; }
@keyframes bob{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(6px)} }

.classified{ font-family:var(--mono); font-size:11px; letter-spacing:.3em; color:var(--alert); border:1px solid var(--alert); padding:4px 10px; display:inline-block; text-transform:uppercase; }

/* redaction bar */
.redact{ background:var(--paper); color:transparent; padding:0 .25em; border-radius:1px; position:relative; }
.redact.peek:hover{ background:transparent; color:var(--signal); }

/* ---------- reveal system ---------- */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); }
.reveal.in{ opacity:1; transform:none; }
.reveal[data-d="1"]{ transition-delay:.08s } .reveal[data-d="2"]{ transition-delay:.16s }
.reveal[data-d="3"]{ transition-delay:.24s } .reveal[data-d="4"]{ transition-delay:.32s }
.reveal[data-d="5"]{ transition-delay:.40s } .reveal[data-d="6"]{ transition-delay:.48s }
@media(prefers-reduced-motion:reduce){ .reveal{opacity:1;transform:none;transition:none} .hero h1 .ln>span{transform:none} }

/* line-wipe heading */
.wipe span{ display:inline-block; overflow:hidden; }

/* ---------- the bill / premise cards ---------- */
.premise-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:42px; }
.premise-grid .cell{ background:var(--ink-2); padding:30px 26px; min-height:230px; display:flex; flex-direction:column; justify-content:space-between; transition:background .4s; }
.premise-grid .cell:hover{ background:var(--ink-3); }
.premise-grid .cell .n{ font-family:var(--mono); font-size:11px; color:var(--signal); letter-spacing:.2em; }
.premise-grid .cell h3{ font-size:26px; color:var(--paper); }
.premise-grid .cell p{ font-size:15px; color:var(--fog); }
@media(max-width:840px){ .premise-grid{ grid-template-columns:1fr; } }

/* ---------- quote block ---------- */
.bigquote{ font-family:var(--disp); font-weight:400; font-style:italic; font-size:clamp(26px,4vw,52px); line-height:1.2; color:var(--paper); max-width:20ch; }
.bigquote .src{ display:block; font-style:normal; font-family:var(--mono); font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--signal); margin-top:24px; }

/* ---------- subject roster ---------- */
.roster{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media(max-width:900px){ .roster{ grid-template-columns:1fr; } }
.subject{ background:var(--ink-2); padding:30px; display:block; position:relative; overflow:hidden; transition:background .4s; }
.subject:hover{ background:var(--ink-3); }
.subject::after{ content:"→"; position:absolute; right:26px; bottom:24px; color:var(--signal); opacity:0; transform:translateX(-8px); transition:.4s; font-family:var(--mono); }
.subject:hover::after{ opacity:1; transform:none; }
.subject .av{ width:62px; height:62px; border-radius:50%; display:grid; place-items:center; font-family:var(--disp); font-size:24px; color:var(--ink); margin-bottom:20px; }
.subject .nm{ font-family:var(--disp); font-size:30px; color:var(--paper); line-height:1; }
.subject .rl{ font-size:14px; color:var(--fog); margin-top:8px; max-width:30ch; }
.subject .tags{ display:flex; gap:8px; margin-top:18px; flex-wrap:wrap; }
.pill{ font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; padding:3px 9px; border:1px solid var(--line); color:var(--fog); border-radius:100px; }
.pill--r{ color:#e98c6b; border-color:rgba(233,140,107,.4); }
.pill--d{ color:#6ba3e9; border-color:rgba(107,163,233,.4); }
.pill--cath{ color:var(--gold); border-color:rgba(217,178,90,.4); }
.pill--evan{ color:var(--jade); border-color:rgba(111,174,132,.4); }

/* ---------- pinned subject sequence ---------- */
.subject-pin{ display:grid; grid-template-columns:1.1fr 1fr; gap:60px; align-items:center; }
@media(max-width:900px){ .subject-pin{ grid-template-columns:1fr; gap:32px; } }
.subject-pin .idx{ font-family:var(--mono); font-size:13px; color:var(--signal); letter-spacing:.2em; }
.subject-pin h2{ margin:14px 0 6px; }
.subject-pin .role{ font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--fog); }
.subject-pin .said{ font-family:var(--disp); font-style:italic; font-size:clamp(20px,2.4vw,30px); line-height:1.3; color:var(--bone); margin-top:30px; padding-left:24px; border-left:2px solid var(--signal); }
.subject-pin .org{ margin-top:26px; font-size:15px; color:var(--fog); }
.subject-pin .org b{ color:var(--paper); font-weight:500; }
.portrait{ aspect-ratio:3/4; border:1px solid var(--line); position:relative; overflow:hidden; background:
   repeating-linear-gradient(0deg,transparent 0 6px, rgba(255,255,255,.015) 6px 7px); }
.portrait .mono-av{ position:absolute; inset:0; display:grid; place-items:center; font-family:var(--disp); font-size:clamp(80px,16vw,190px); color:var(--ink-3); }
.portrait .ring{ position:absolute; inset:18px; border:1px solid var(--line); }
.portrait .tag{ position:absolute; left:16px; bottom:16px; font-family:var(--mono); font-size:10px; letter-spacing:.2em; color:var(--fog); text-transform:uppercase; }
.portrait .tag.r{ left:auto; right:16px; color:var(--signal); }

/* ---------- network / svg ---------- */
.net-stage{ position:relative; }
.net-svg{ width:100%; height:auto; overflow:visible; }
.net-svg .edge{ fill:none; stroke:var(--line); stroke-width:1.2; }
.net-svg .edge.draw{ stroke:rgba(240,138,60,.45); stroke-dasharray:1; stroke-dashoffset:1; }
.net-svg .node circle{ transition:r .3s, fill .3s; }
.net-svg .node text{ font-family:var(--mono); font-size:11px; fill:var(--bone); letter-spacing:.04em; }
.net-svg .node .sub{ font-size:9px; fill:var(--fog-2); }
.net-svg .node.person circle{ fill:var(--ink-3); stroke:var(--signal); stroke-width:1.5; }
.net-svg .node.org circle{ fill:var(--ink-2); stroke:var(--line); stroke-width:1; }
.net-svg .node.hot circle{ stroke:var(--alert); }
.net-svg .node:hover{ cursor:pointer; }
.net-svg .node.dim{ opacity:.18; }
.net-svg .edge.dim{ opacity:.05; }
.net-svg .edge.hl{ stroke:var(--signal); stroke-width:1.8; opacity:1; }
.net-legend{ display:flex; gap:24px; flex-wrap:wrap; font-family:var(--mono); font-size:11px; color:var(--fog); margin-top:24px; letter-spacing:.08em; }
.net-legend i{ width:10px; height:10px; display:inline-block; border-radius:50%; margin-right:7px; vertical-align:middle; }

/* sticky scene */
.sticky-scene{ position:relative; }
.sticky-scene .pin{ position:sticky; top:0; height:100vh; display:flex; align-items:center; }
.sticky-scene .steps{ position:relative; }
.step{ min-height:90vh; display:flex; align-items:center; }
.step .card{ background:rgba(16,18,22,.86); border:1px solid var(--line); padding:28px 30px; max-width:440px; backdrop-filter:blur(6px); }
.step .card .n{ font-family:var(--mono); color:var(--signal); font-size:12px; letter-spacing:.2em; }
.step .card h3{ margin:10px 0 12px; font-size:30px; }
.step .card p{ font-size:16px; color:var(--bone); }

/* ---------- two wings ---------- */
.wings{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); margin-top:40px; }
@media(max-width:840px){ .wings{ grid-template-columns:1fr; } }
.wing{ background:var(--ink-2); padding:36px 32px; }
.wing h3{ display:flex; align-items:center; gap:12px; }
.wing.cath h3{ color:var(--gold); } .wing.evan h3{ color:var(--jade); }
.wing ul{ list-style:none; margin-top:22px; }
.wing li{ padding:13px 0; border-top:1px solid var(--line-soft); font-size:16px; color:var(--bone); display:flex; justify-content:space-between; gap:18px; }
.wing li span{ font-family:var(--mono); font-size:11px; color:var(--fog); }

/* ---------- case files ---------- */
.case{ border:1px solid var(--line); background:var(--ink-2); padding:34px clamp(22px,4vw,46px); display:grid; grid-template-columns:auto 1fr; gap:34px; align-items:start; position:relative; }
@media(max-width:760px){ .case{ grid-template-columns:1fr; gap:18px; } }
.case + .case{ margin-top:18px; }
.case__no{ font-family:var(--mono); font-size:13px; color:var(--signal); writing-mode:vertical-rl; text-orientation:mixed; letter-spacing:.3em; }
@media(max-width:760px){ .case__no{ writing-mode:horizontal-tb; } }
.case h3{ font-size:clamp(26px,3.4vw,42px); }
.case .where{ font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--fog); margin:8px 0 18px; }
.case p{ font-size:16px; color:var(--bone); max-width:64ch; }
.case .ledger{ display:flex; gap:30px; flex-wrap:wrap; margin-top:22px; padding-top:20px; border-top:1px solid var(--line); }
.case .ledger div .k{ font-family:var(--mono); font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--fog-2); }
.case .ledger div .v{ font-family:var(--disp); font-size:26px; color:var(--paper); margin-top:4px; }
.case .ledger div .v.alert{ color:var(--alert); }

/* status badge */
.badge{ font-family:var(--mono); font-size:10px; letter-spacing:.16em; text-transform:uppercase; padding:4px 10px; border-radius:3px; display:inline-flex; gap:7px; align-items:center; border:1px solid; }
.badge::before{ content:""; width:7px; height:7px; border-radius:50%; background:currentColor; }
.badge--cancelled,.badge--seized,.badge--terminated{ color:var(--alert); border-color:rgba(216,69,62,.4); background:rgba(216,69,62,.06); }
.badge--frozen,.badge--suspended,.badge--investigation{ color:var(--frozen); border-color:rgba(90,166,216,.4); background:rgba(90,166,216,.06); }
.badge--active,.badge--clean,.badge--restored{ color:var(--jade); border-color:rgba(111,174,132,.4); background:rgba(111,174,132,.06); }
.badge--donor,.badge--unverified{ color:var(--fog); border-color:var(--line); }

/* ---------- exposure ranking ---------- */
.rank{ border-top:1px solid var(--line); }
.rank-row{ display:grid; grid-template-columns:46px 1fr auto; gap:20px; align-items:center; padding:20px 0; border-bottom:1px solid var(--line); transition:padding-left .4s,background .4s; }
.rank-row:hover{ padding-left:14px; }
.rank-row .r{ font-family:var(--mono); font-size:13px; color:var(--signal); }
.rank-row .nm{ font-family:var(--disp); font-size:clamp(20px,2.6vw,32px); color:var(--paper); }
.rank-row .meter{ height:6px; background:var(--ink-3); position:relative; margin-top:8px; max-width:520px; }
.rank-row .meter i{ position:absolute; left:0; top:0; bottom:0; width:0; background:linear-gradient(90deg,var(--signal-dim),var(--alert)); transition:width 1.2s cubic-bezier(.2,.7,.2,1); }

/* ---------- caveats ---------- */
.caveat-list{ counter-reset:c; max-width:78ch; }
.caveat-list li{ list-style:none; padding:22px 0 22px 56px; border-top:1px solid var(--line); position:relative; font-size:17px; color:var(--bone); }
.caveat-list li::before{ counter-increment:c; content:"0" counter(c); position:absolute; left:0; top:22px; font-family:var(--mono); font-size:12px; color:var(--signal); letter-spacing:.1em; }

/* ---------- explore cards ---------- */
.explore{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media(max-width:900px){ .explore{ grid-template-columns:1fr; } }

/* ---------- big stat band ---------- */
.statband{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border-block:1px solid var(--line); }
@media(max-width:760px){ .statband{ grid-template-columns:repeat(2,1fr); } }
.statband .s{ background:var(--ink); padding:40px 26px; }
.statband .s .v{ font-family:var(--disp); font-size:clamp(40px,5vw,72px); color:var(--paper); line-height:1; }
.statband .s .v.signal{ color:var(--signal); }
.statband .s .v.alert{ color:var(--alert); }
.statband .s .k{ font-family:var(--mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--fog); margin-top:14px; }

/* ---------- footer ---------- */
.colophon{ border-top:1px solid var(--line); padding:70px 0 60px; }
.colophon .grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; }
@media(max-width:820px){ .colophon .grid{ grid-template-columns:1fr; gap:28px; } }
.colophon h4{ font-family:var(--mono); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--signal); margin-bottom:16px; }
.colophon p, .colophon li{ font-size:14px; color:var(--fog); list-style:none; line-height:1.7; }
.colophon a:hover{ color:var(--signal); }

/* ---------- person page header ---------- */
.person-hero{ min-height:88vh; display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:center; padding-top:130px; }
@media(max-width:900px){ .person-hero{ grid-template-columns:1fr; } }
.person-hero .big{ font-size:clamp(50px,10vw,140px); }
.backlink{ font-family:var(--mono); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--fog); display:inline-flex; gap:10px; align-items:center; margin-bottom:20px; }
.backlink:hover{ color:var(--signal); }

/* org cards on person pages */
.org-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media(max-width:760px){ .org-grid{ grid-template-columns:1fr; } }
.org-card{ background:var(--ink-2); padding:26px; }
.org-card .hd{ display:flex; justify-content:space-between; gap:14px; align-items:start; }
.org-card h4{ font-family:var(--disp); font-size:24px; color:var(--paper); line-height:1.05; }
.org-card .ty{ font-family:var(--mono); font-size:11px; color:var(--fog); letter-spacing:.1em; text-transform:uppercase; margin-top:8px; }
.org-card p{ font-size:14.5px; color:var(--bone); margin-top:14px; }
.org-card .india{ font-size:13px; color:var(--fog); margin-top:14px; padding-top:14px; border-top:1px solid var(--line-soft); }
.org-card .india b{ color:var(--signal); font-weight:500; }

.divider{ height:1px; background:var(--line); margin:0; }
.spacer{ height:clamp(60px,12vh,140px); }

/* generic two-col text */
.two-col{ display:grid; grid-template-columns:1fr 1fr; gap:60px; }
@media(max-width:820px){ .two-col{ grid-template-columns:1fr; gap:30px; } }
