/* SIR analyses: one stylesheet for every page, Bihar and Hyderabad.
   The look is the Bihar dashboard's: a folk-art band across the top
   (Madhubani for Bihar, Pochampally ikat for Hyderabad, five regions together for All India), a card header with
   the controls, a tab bar, summary cards, key-finding banners and chart
   cards. Every ink is measured against every surface it is painted on, in
   both themes, by scripts/check_contrast.py. */
:root{
  --ink:#16130f;--muted:#5e574b;--navy:#1d5a8a;--red:#b3261e;--amber:#8a6100;
  --line:#d9d1c2;--bg:#f6f2ea;--soft:#efe8da;--card:#fffdf8;
  --nda:#b85a10;--india:#1e7a45;--other:#6b5b95;--female:#8e3b6d;--male:#1f618d;
  --tab:#5e574b;--tab-on:#b3261e;--grad-a:#b3261e;--grad-b:#a24d10;
  --shadow:rgba(40,30,10,.08);
  --fill-nda:#e67e22;--fill-india:#1e8449;--fill-other:#8e7cc3;--fill-red:#c0392b;--fill-navy:#1f618d;--fill-amber:#d4ac0d;--fill-grey:#95a5a6;--fill-teal:#17a589;--fill-pink:#af3b6e;--fill-purple:#8e44ad;
  --on-fill:#ffffff;
  --s-yellow:#f4d03f;--s-mint:#a9dfbf;--s-orange:#e67e22;--s-green:#27ae60;--s-purple:#8e44ad;--s-blue:#85c1e9;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ink:#f1ece2;--muted:#bdb4a4;--navy:#9cc7ea;--red:#f2a49b;--amber:#e7c35a;
  --line:#3b352c;--bg:#15120e;--soft:#1e1a15;--card:#221e18;
  --nda:#f4a45c;--india:#6fcf97;--other:#b7a8e0;--female:#e59bc8;--male:#8ec1e6;
  --tab:#bdb4a4;--tab-on:#f2a49b;--grad-a:#f2a49b;--grad-b:#f8c471;
  --shadow:rgba(0,0,0,.4);
}}
:root[data-theme="dark"]{
  --ink:#f1ece2;--muted:#bdb4a4;--navy:#9cc7ea;--red:#f2a49b;--amber:#e7c35a;
  --line:#3b352c;--bg:#15120e;--soft:#1e1a15;--card:#221e18;
  --nda:#f4a45c;--india:#6fcf97;--other:#b7a8e0;--female:#e59bc8;--male:#8ec1e6;
  --tab:#bdb4a4;--tab-on:#f2a49b;--grad-a:#f2a49b;--grad-b:#f8c471;
  --shadow:rgba(0,0,0,.4);
}
*{box-sizing:border-box}
html{overflow-x:clip}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,"Noto Sans",sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.6}
h1,h2,h3{margin:0;line-height:1.3}
a{color:var(--navy)}
p a,li a,td a,.note a,.takeaway a,.research-a a{text-decoration:underline}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip:focus{width:auto;height:auto;clip:auto;overflow:visible;inset-inline-start:12px;top:8px;background:var(--card);padding:6px 10px;z-index:200}
.icon{width:18px;height:18px;display:inline-block;vertical-align:middle;flex:none}

/* ------------------------------------------------------------ the bands */
.band{height:6px}
.madhubani{background:repeating-linear-gradient(90deg,var(--fill-red) 0 20px,var(--s-orange) 20px 40px,var(--s-green) 40px 60px,var(--fill-navy) 60px 80px,var(--s-purple) 80px 100px);animation:scroll 8s linear infinite}
/* All India: one strip of five regions' motifs, so no state stands for the country.
   Madhubani (Bihar), Pochampally ikat (Telangana), Warli (Maharashtra),
   Ajrakh (Kutch and Sindh), Kantha (Bengal and Odisha). */
.motifs{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='12'><rect width='24' height='12' fill='%23b3261e'/><rect width='24' height='1.5' fill='%231c1c1c'/><path d='M0 12L4 5L8 12ZM8 12L12 5L16 12ZM16 12L20 5L24 12Z' fill='%23f2c14e'/><path d='M4 8.5v2M12 8.5v2M20 8.5v2' stroke='%231c1c1c' stroke-width='1'/><rect x='24' width='24' height='12' fill='%238b1e3f'/><path d='M36 0L44 6L36 12L28 6Z' fill='%230e5e6f'/><path d='M36 3L40 6L36 9L32 6Z' fill='%23e0a526'/><rect x='48' width='24' height='12' fill='%239a4a2a'/><g fill='%23f5efe6'><circle cx='60' cy='2' r='1.4'/><path d='M57.4 3.8H62.6L60 6.6ZM60 6.6L57.4 9.4H62.6Z'/></g><path d='M56 5.4L58.4 4.6M64 5.4L61.6 4.6M58.4 9.4L57.4 12M61.6 9.4L62.6 12' stroke='%23f5efe6' stroke-width='.8'/><circle cx='51.5' cy='6' r='1' fill='%23f5efe6'/><circle cx='68.5' cy='6' r='1' fill='%23f5efe6'/><rect x='72' width='24' height='12' fill='%231f3a68'/><path d='M84 1.5L85.6 4.4L88.5 6L85.6 7.6L84 10.5L82.4 7.6L79.5 6L82.4 4.4Z' fill='%23a4262c'/><circle cx='84' cy='6' r='1.1' fill='%23f5efe6'/><g fill='%23f5efe6'><circle cx='75' cy='2.5' r='.7'/><circle cx='93' cy='2.5' r='.7'/><circle cx='75' cy='9.5' r='.7'/><circle cx='93' cy='9.5' r='.7'/></g><rect x='96' width='24' height='12' fill='%23f3e3c3'/><path d='M97 3H120M97 6H120M97 9H120' stroke='%23b4441c' stroke-width='1' stroke-dasharray='2 1.5'/></svg>") repeat-x;background-size:120px 12px;animation:scroll 8s linear infinite}
/* Kolam: rice-flour dots and the loops drawn round them, white on the
   red-oxide threshold of a Tamil home. */
.kolam{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%238a2a1b'/><path d='M6 1.5C9.5 1.5 10.5 6 6 6S2.5 10.5 6 10.5M18 1.5C14.5 1.5 13.5 6 18 6S21.5 10.5 18 10.5' fill='none' stroke='%23f6efe3' stroke-width='1.1'/><circle cx='6' cy='6' r='1.2' fill='%23f6efe3'/><circle cx='18' cy='6' r='1.2' fill='%23f6efe3'/><circle cx='0' cy='1.5' r='.9' fill='%23e8b04a'/><circle cx='12' cy='1.5' r='.9' fill='%23e8b04a'/><circle cx='0' cy='10.5' r='.9' fill='%23e8b04a'/><circle cx='12' cy='10.5' r='.9' fill='%23e8b04a'/><circle cx='24' cy='1.5' r='.9' fill='%23e8b04a'/><circle cx='24' cy='10.5' r='.9' fill='%23e8b04a'/></svg>") repeat-x}
.kasuti{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12' shape-rendering='crispEdges'><rect width='24' height='12' fill='%231f5c3a'/><rect y='0' width='24' height='2' fill='%239b1b30'/><rect y='10' width='24' height='2' fill='%239b1b30'/><path d='M4 4h2v1h1v2H6v1H4V7H3V5h1zM16 4h2v1h1v2h-1v1h-2V7h-1V5h1z' fill='%23f6efe3'/><rect x='10' y='5' width='4' height='2' fill='%23e8b04a'/><rect x='22' y='5' width='2' height='2' fill='%23e8b04a'/><rect x='0' y='5' width='2' height='2' fill='%23e8b04a'/></svg>") repeat-x}
.alpana{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%237a1f1f'/><path d='M12 1.5c2 2.2 2 6.8 0 9-2-2.2-2-6.8 0-9zM1.5 6c2.2-2 6.8-2 9 0-2.2 2-6.8 2-9 0zM13.5 6c2.2-2 6.8-2 9 0-2.2 2-6.8 2-9 0z' fill='%23f6efe3'/><circle cx='12' cy='6' r='1.1' fill='%23e8b04a'/><circle cx='0' cy='6' r='.9' fill='%23e8b04a'/><circle cx='24' cy='6' r='.9' fill='%23e8b04a'/></svg>") repeat-x}
.bandhani{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%239b2d20'/><g fill='%23f6d36b'><circle cx='3' cy='3' r='1.1'/><circle cx='9' cy='3' r='1.1'/><circle cx='15' cy='3' r='1.1'/><circle cx='21' cy='3' r='1.1'/><circle cx='6' cy='9' r='1.1'/><circle cx='18' cy='9' r='1.1'/></g><g fill='%23f6efe3'><circle cx='12' cy='9' r='1.6'/><circle cx='0' cy='9' r='1.6'/><circle cx='24' cy='9' r='1.6'/></g></svg>") repeat-x}
.chikan{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%231d5b57'/><g fill='%23f4f1ea'><circle cx='6' cy='6' r='1.3'/><ellipse cx='6' cy='2.6' rx='0.9' ry='1.5'/><ellipse cx='6' cy='9.4' rx='0.9' ry='1.5'/><ellipse cx='2.6' cy='6' rx='1.5' ry='0.9'/><ellipse cx='9.4' cy='6' rx='1.5' ry='0.9'/><circle cx='18' cy='3' r='0.8'/><circle cx='18' cy='9' r='0.8'/><circle cx='15' cy='6' r='0.8'/><circle cx='21' cy='6' r='0.8'/></g></svg>") repeat-x}
.jaali{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12'><rect width='12' height='12' fill='%238a4b2a'/><path d='M6 1 L11 6 L6 11 L1 6 Z' fill='none' stroke='%23f1dcc0' stroke-width='1.2'/><circle cx='6' cy='6' r='1.2' fill='%23f1dcc0'/></svg>") repeat-x}
/* Paithani: the gold zari border of Maharashtra's silk sari, with its lotus
   and a parrot-green diamond, on aubergine. */
.paithani{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%235e1546'/><g fill='%23d9a83a'><rect width='24' height='1.4'/><rect y='10.6' width='24' height='1.4'/><path d='M0 1.4h3L1.5 3zM6 1.4h3L7.5 3zM12 1.4h3L13.5 3zM18 1.4h3L19.5 3zM3 10.6h3L4.5 9zM9 10.6h3L10.5 9zM15 10.6h3L16.5 9zM21 10.6h3L22.5 9z'/><path d='M6 3.6c1.3 1.3 1.3 3 0 4.4c-1.3-1.4-1.3-3.1 0-4.4zM6 8c-1.7 0-3-.8-3.4-2.2c1.5 0 2.8.7 3.4 2.2zM6 8c1.7 0 3-.8 3.4-2.2c-1.5 0-2.8.7-3.4 2.2z'/></g><path d='M18 4.2l1.8 1.8-1.8 1.8-1.8-1.8z' fill='%2342a05f'/><circle cx='18' cy='6' r='.6' fill='%23d9a83a'/></svg>") repeat-x}
/* Bandhani: tie-dye dots, white and yellow on red, the resist-dyed cloth of Rajasthan and Gujarat. */
.kasavu{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12' shape-rendering='crispEdges'><rect width='24' height='12' fill='%23f3ead6'/><rect y='1' width='24' height='3' fill='%23b8862b'/><rect y='5' width='24' height='1' fill='%23b8862b'/><rect y='8' width='24' height='1' fill='%237a1f1f'/><rect x='3' y='9' width='2' height='2' fill='%23b8862b'/><rect x='15' y='9' width='2' height='2' fill='%23b8862b'/></svg>") repeat-x}
/* Kantha: the running stitch of Bengal's quilts, red and indigo on cream. */
.kantha{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%23f3e7cf'/><path d='M1 3h4M9 3h4M17 3h4' stroke='%23b3261e' stroke-width='1.4' stroke-linecap='round'/><path d='M5 9h4M13 9h4M21 9h2' stroke='%231f3a6b' stroke-width='1.4' stroke-linecap='round'/><path d='M12 4.5l1.5 1.5L12 7.5 10.5 6z' fill='%23b3261e'/></svg>") repeat-x}
/* Pochampally ikat: rows of diamonds in maroon and gold on indigo-teal, the
   double-ikat weave of the Telangana handloom town (GI tag, 2004). */
.ikat{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12' shape-rendering='crispEdges'><rect width='24' height='12' fill='%238b1e3f'/><path d='M12 0h2v2h2v2h2v2h2v2h-2v2h-2v2h-2v-0h-4v0h-2v-2h-2v-2h-2v-2h2v-2h2v-2h2v-2z' fill='%230e5e6f'/><path d='M11 3h2v2h2v2h-2v2h-2v-2h-2v-2h2z' fill='%23e0a526'/><rect x='0' y='5' width='2' height='2' fill='%23e0a526'/><rect x='22' y='5' width='2' height='2' fill='%23e0a526'/></svg>") repeat-x;background-size:24px 12px;animation:scroll 8s linear infinite}
/* Patola: the double-ikat silk of Patan, stepped diamonds in black, white,
   green and yellow on red, their edges stepped as the dyed threads leave them. */
.patola{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12' shape-rendering='crispEdges'><rect width='24' height='12' fill='%23a3192e'/><rect width='24' height='1' fill='%231b1b1b'/><rect y='11' width='24' height='1' fill='%231b1b1b'/><rect x='11' y='1' width='2' height='1' fill='%231b1b1b'/><rect x='10' y='2' width='4' height='1' fill='%231b1b1b'/><rect x='9' y='3' width='6' height='1' fill='%231b1b1b'/><rect x='8' y='4' width='8' height='1' fill='%231b1b1b'/><rect x='7' y='5' width='10' height='1' fill='%231b1b1b'/><rect x='7' y='6' width='10' height='1' fill='%231b1b1b'/><rect x='8' y='7' width='8' height='1' fill='%231b1b1b'/><rect x='9' y='8' width='6' height='1' fill='%231b1b1b'/><rect x='10' y='9' width='4' height='1' fill='%231b1b1b'/><rect x='11' y='10' width='2' height='1' fill='%231b1b1b'/><rect x='11' y='2' width='2' height='1' fill='%23f6efe3'/><rect x='10' y='3' width='4' height='1' fill='%23f6efe3'/><rect x='9' y='4' width='6' height='1' fill='%23f6efe3'/><rect x='8' y='5' width='8' height='1' fill='%23f6efe3'/><rect x='8' y='6' width='8' height='1' fill='%23f6efe3'/><rect x='9' y='7' width='6' height='1' fill='%23f6efe3'/><rect x='10' y='8' width='4' height='1' fill='%23f6efe3'/><rect x='11' y='9' width='2' height='1' fill='%23f6efe3'/><rect x='11' y='4' width='2' height='1' fill='%231f7a4a'/><rect x='10' y='5' width='4' height='1' fill='%231f7a4a'/><rect x='10' y='6' width='4' height='1' fill='%231f7a4a'/><rect x='11' y='7' width='2' height='1' fill='%231f7a4a'/><rect x='11' y='5' width='2' height='1' fill='%23f2c14e'/><rect x='11' y='6' width='2' height='1' fill='%23f2c14e'/><rect x='0' y='3' width='1' height='1' fill='%231b1b1b'/><rect x='0' y='4' width='2' height='1' fill='%231b1b1b'/><rect x='0' y='5' width='3' height='1' fill='%231b1b1b'/><rect x='0' y='6' width='3' height='1' fill='%231b1b1b'/><rect x='0' y='7' width='2' height='1' fill='%231b1b1b'/><rect x='0' y='8' width='1' height='1' fill='%231b1b1b'/><rect x='23' y='3' width='1' height='1' fill='%231b1b1b'/><rect x='22' y='4' width='2' height='1' fill='%231b1b1b'/><rect x='21' y='5' width='3' height='1' fill='%231b1b1b'/><rect x='21' y='6' width='3' height='1' fill='%231b1b1b'/><rect x='22' y='7' width='2' height='1' fill='%231b1b1b'/><rect x='23' y='8' width='1' height='1' fill='%231b1b1b'/><rect x='0' y='4' width='1' height='1' fill='%23f2c14e'/><rect x='0' y='5' width='2' height='1' fill='%23f2c14e'/><rect x='0' y='6' width='2' height='1' fill='%23f2c14e'/><rect x='0' y='7' width='1' height='1' fill='%23f2c14e'/><rect x='23' y='4' width='1' height='1' fill='%23f2c14e'/><rect x='22' y='5' width='2' height='1' fill='%23f2c14e'/><rect x='22' y='6' width='2' height='1' fill='%23f2c14e'/><rect x='23' y='7' width='1' height='1' fill='%23f2c14e'/><rect x='5' y='2' width='1' height='1' fill='%23f2c14e'/><rect x='18' y='2' width='1' height='1' fill='%23f2c14e'/><rect x='5' y='9' width='1' height='1' fill='%23f2c14e'/><rect x='18' y='9' width='1' height='1' fill='%23f2c14e'/></svg>") repeat-x}
.aipan{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%238a2c1d'/><g fill='%23fbf6ee'><rect y='1' width='24' height='0.8'/><rect y='10.2' width='24' height='0.8'/><circle cx='3' cy='6' r='1.1'/><circle cx='9' cy='6' r='1.1'/><circle cx='15' cy='6' r='1.1'/><circle cx='21' cy='6' r='1.1'/><circle cx='6' cy='3.6' r='0.6'/><circle cx='6' cy='8.4' r='0.6'/><circle cx='18' cy='3.6' r='0.6'/><circle cx='18' cy='8.4' r='0.6'/></g><path d='M12 3l3 3-3 3-3-3z' fill='none' stroke='%23fbf6ee' stroke-width='0.8'/></svg>") repeat-x}
.gamosa{height:12px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12'><rect width='24' height='12' fill='%23fbf6ee'/><g fill='%239b1c1c'><rect width='24' height='2'/><rect y='10' width='24' height='2'/><path d='M12 3.4l2.6 2.6-2.6 2.6-2.6-2.6z'/><rect x='2' y='5.4' width='5' height='1.2'/><rect x='17' y='5.4' width='5' height='1.2'/></g></svg>") repeat-x}
@keyframes scroll{to{background-position:96px 0}}

/* ----------------------------------------------------------- the header */
header.top{background:var(--card);padding:1rem 1.25rem;box-shadow:0 2px 10px var(--shadow);position:sticky;top:0;z-index:100}
/* One centred column for every page: header, tab row and content share its
   edges. Reading pages are narrower; dashboards and explorers, which carry
   grids of charts, are wider. */
:root{--page:1160px}
body.wide{--page:1480px;--head:1480px}
.header-content{max-width:var(--head,1160px);margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.logo{display:flex;align-items:center;gap:1rem;color:var(--ink);text-decoration:none}
.logo-icon{width:50px;height:50px;background:linear-gradient(135deg,var(--fill-red),var(--s-orange));border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;animation:glow 3s infinite;flex:none}
.hyd .logo-icon{background:linear-gradient(135deg,#8b1e3f,#0e5e6f);animation-name:glow-hyd}
@keyframes glow{0%,100%{box-shadow:0 0 10px var(--s-orange)}50%{box-shadow:0 0 25px var(--fill-red)}}
@keyframes glow-hyd{0%,100%{box-shadow:0 0 10px #e0a526}50%{box-shadow:0 0 25px #8b1e3f}}
.titles{display:block;margin:0;font-size:inherit;font-weight:inherit;min-width:0}
.h-title{display:block;font-size:1.4rem;font-weight:700;line-height:1.25}
.subtitle{display:block;font-size:.85rem;color:var(--muted);font-weight:400}
/* Bihar or Hyderabad: a two-way switch beside the title. */
.switch{display:flex;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.switch a{padding:.4rem .9rem;border-radius:7px;color:var(--tab);text-decoration:none;font-weight:600;font-size:.9rem;white-space:nowrap;text-align:center}
.switch a:hover{color:var(--ink);background:var(--card)}
.switch a[aria-current]{background:var(--card);color:var(--tab-on);box-shadow:0 1px 4px var(--shadow)}
/* Downloads: the report in PDF and Word, and the slides. */
.dl{position:relative}
.dl summary{list-style:none}
.places summary{gap:.4rem}
.places .menu a.sub{padding-inline-start:1.6rem;font-size:.85rem}
.places .menu a[aria-current]{font-weight:700;background:var(--soft)}
.dl summary::-webkit-details-marker{display:none}
.dl .menu{position:absolute;inset-inline-end:0;top:calc(100% + 6px);z-index:120;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px var(--shadow);padding:.35rem;min-width:13rem;display:flex;flex-direction:column}
.dl .menu a{padding:.6rem .75rem;border-radius:7px;color:var(--ink);text-decoration:none;font-size:.9rem;white-space:nowrap}
.dl .menu a:hover,.dl .menu a:focus-visible{background:var(--soft)}
.controls{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
button,select,.btn{font:inherit;font-size:.9rem;padding:.5rem 1rem;border:1px solid var(--line);border-radius:8px;background:var(--soft);color:var(--ink);cursor:pointer;transition:all .3s;display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}
button:hover,.btn:hover{background:var(--s-blue);color:#1c2833;transform:translateY(-2px)}
button:focus-visible,select:focus-visible,.btn:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.btn-primary{background:linear-gradient(135deg,var(--s-yellow),var(--s-orange));color:#1c2833;border:none;font-weight:600}

/* ------------------------------------------------------------- the tabs */
.nav-tabs{display:flex;gap:.25rem;padding:.5rem .75rem 0;background:var(--soft);overflow-x:auto;border-bottom:2px solid var(--line);position:sticky;top:var(--hh,0px);z-index:90;scrollbar-width:none;scroll-snap-type:x proximity}
.nav-tabs::-webkit-scrollbar{display:none}
.nav-tab{scroll-snap-align:start}
/* A fade at whichever edge has more tabs beyond it, set by sir.js. */
.nav-tabs.more-end{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent)}
.nav-tabs.more-start{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 48px),transparent)}
.nav-tabs.more-start.more-end{-webkit-mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent)}
.nav-tab{padding:.6rem 1rem;border:none;background:transparent;color:var(--tab);white-space:nowrap;border-radius:8px 8px 0 0;font-weight:600;position:relative;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem}
.nav-tab::after{content:'';position:absolute;bottom:-2px;left:0;width:100%;height:3px;background:var(--fill-red);transform:scaleX(0);transition:.3s}
.nav-tab[aria-selected="true"]::after,.nav-tab[aria-current="page"]::after{transform:scaleX(1)}
.nav-tab[aria-selected="true"],.nav-tab[aria-current="page"]{color:var(--tab-on);background:var(--card)}
.nav-tab:hover{color:var(--ink);background:var(--card);transform:none}

/* ------------------------------------------------------------- the page */
main{max-width:var(--page);margin:0 auto;padding:1.5rem 1.25rem 2.5rem}
/* On a wide screen every tab is visible: the row is centred on the wide
   column and wraps to a second line rather than hiding tabs off the right
   edge behind a sideways scroll. Phones keep the section bar. */
@media (min-width:901px){.nav-tabs{padding-inline:max(.75rem,calc((100% - 1480px)/2 + .75rem));justify-content:center;flex-wrap:wrap;overflow-x:visible;row-gap:.15rem;column-gap:0}.nav-tab{padding:.55rem .6rem;font-size:.86rem;gap:.3rem}}
@media (min-width:901px) and (max-width:1400px){.nav-tab .icon{display:none}}
.page-head h1{font-size:1.5rem;margin:0 0 .5rem}
main h2{font-size:1.2rem;margin:2rem 0 .35rem;padding-inline-start:.7rem;border-inline-start:4px solid var(--fill-red)}
main h2:first-child{margin-top:0}
.sub{color:var(--muted);margin:0 0 1rem;max-width:90ch}
.tab-content{display:none;animation:fadeIn .4s}
.tab-content.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* summary cards: .summary-grid on the dashboards, .kpis on the other pages */
.summary-grid,.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin:0 0 1.25rem}
.summary-card,.kpis>div{background:var(--card);padding:1rem;border-radius:12px;border-inline-start:4px solid var(--fill-red);box-shadow:0 4px 15px var(--shadow);transition:.3s}
.summary-card:hover,.kpis>div:hover{transform:translateY(-3px)}
.summary-card.y,.kpis>div:nth-child(6n+2){border-color:var(--s-yellow)}
.summary-card.b,.kpis>div:nth-child(6n+3){border-color:var(--fill-navy)}
.summary-card.g,.kpis>div:nth-child(6n+4){border-color:var(--s-green)}
.summary-card.o,.kpis>div:nth-child(6n+5){border-color:var(--s-orange)}
.summary-card.p,.kpis>div:nth-child(6n+6){border-color:var(--s-purple)}
.summary-value,.kpis b{display:block;font-size:1.6rem;font-weight:700;line-height:1.3;color:var(--grad-a);background:linear-gradient(135deg,var(--grad-a),var(--grad-b));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.summary-label,.kpis span{font-size:.8rem;color:var(--muted)}

/* key-finding banners: .takeaway on the dashboards, .finding and .caveat elsewhere */
.takeaway,.finding,.caveat{background:linear-gradient(135deg,var(--s-yellow),var(--s-mint));color:#1c2833;padding:1rem 1.1rem;border-radius:10px;margin:.5rem 0 1.25rem;border-inline-start:4px solid var(--s-green);max-width:none}
.takeaway{display:flex;align-items:flex-start;gap:.75rem}
.caveat{border-left-color:var(--fill-amber)}
.finding:empty{display:none}
.takeaway a,.finding a,.caveat a{color:#14405f}
:root[data-theme="dark"] .takeaway,:root[data-theme="dark"] .finding,:root[data-theme="dark"] .caveat{background:linear-gradient(135deg,rgba(244,208,63,.18),rgba(169,223,191,.18));color:var(--ink)}
:root[data-theme="dark"] .takeaway a,:root[data-theme="dark"] .finding a,:root[data-theme="dark"] .caveat a{color:var(--navy)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .takeaway,:root:not([data-theme="light"]) .finding,:root:not([data-theme="light"]) .caveat{background:linear-gradient(135deg,rgba(244,208,63,.18),rgba(169,223,191,.18));color:var(--ink)}:root:not([data-theme="light"]) .takeaway a,:root:not([data-theme="light"]) .finding a,:root:not([data-theme="light"]) .caveat a{color:var(--navy)}}
.takeaway-title{font-weight:700}
.takeaway ol.short{margin:.4rem 0 .5rem;padding-inline-start:1.2rem}.takeaway ol.short li{margin:.3rem 0;line-height:1.45}.takeaway .short-note{margin:.4rem 0 0;font-size:.88rem}
.page-faq{margin-top:2.5rem}.page-faq .note{margin-top:.5rem}
/* The opening findings: a plain numbered list under the heading, no banner. */
ol.summary{margin:.6rem 0 1.5rem;padding-inline-start:1.3rem;max-width:95ch;font-size:1.02rem}ol.summary li{margin:.35rem 0;line-height:1.5}ol.summary:empty{display:none}
.page-head ol.summary{margin-bottom:.5rem}
/* One line on the page's limits, at the foot, before its questions. */
.note.limits{margin-top:2rem;padding-top:.75rem;border-top:1px solid var(--line)}
/* At most one highlighted finding in a run: the next ones read as plain text,
   and caveats sit as a quiet note. Same specificity as the dark-theme rules
   above and later in the file, so these win in every theme. */
:root .finding+.finding,:root:root .caveat{background:none;color:var(--ink);border-inline-start:0;padding:0;margin:.25rem 0 1rem;border-radius:0}
:root:root .caveat{color:var(--muted);font-size:.92rem;border-inline-start:2px solid var(--line);padding-inline-start:.75rem}
.finding b{font-weight:700}

/* chart cards: .card on the dashboards, .panel elsewhere */
.charts-grid,.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin-bottom:1.5rem}
.grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:1400px){.charts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.card,.panel{background:var(--card);border-radius:12px;padding:1.25rem;box-shadow:0 4px 20px var(--shadow);border:1px solid var(--line);min-width:0}
.card.wide,.panel.wide,.wide{grid-column:1/-1}
.card-title,.panel h3{font-size:.95rem;font-weight:600;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.5rem;border-bottom:2px solid var(--line)}
.card-actions button{padding:.2rem .55rem;font-size:.7rem}
.chart-container{position:relative;height:300px;width:100%}
.chart-container.tall{height:380px}
.chart-container.rows{height:760px}
/* A panel's note sits under its chart, as a card's key insight does. */
.panel{display:flex;flex-direction:column}
.panel>h3{order:1}.panel>.chart,.panel>.twrap,.panel>.controls,.panel>.legend{order:2}.panel>p{order:3}
.panel>p,.chart-takeaway{background:var(--soft);padding:.75rem;border-radius:8px;margin:.75rem 0 0;font-size:.85rem;border-inline-start:3px solid var(--fill-teal);color:var(--ink)}
.chart-takeaway strong{color:var(--navy)}
.panel .chart{position:relative;height:300px}
.panel .chart.tall{height:380px}
.panel .chart.xtall{height:760px}
.muted{color:var(--muted)}
.tilemap{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px;max-width:640px;margin:1rem 0 .5rem}
.tile{aspect-ratio:1;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.8rem;line-height:1.15;min-width:0}
.tile b{font-size:.85rem}
.tile.off{background:var(--soft);color:var(--muted);border:1px dashed var(--muted)}
.tilekey{display:flex;flex-wrap:wrap;gap:.4rem 1rem;font-size:.85rem;color:var(--ink);margin-bottom:1rem}
.tilekey i{display:inline-block;width:14px;height:14px;border-radius:3px;margin-inline-end:.35rem;vertical-align:-2px}
.tilekey i.off{background:var(--soft);border:1px dashed var(--muted)}
@media(max-width:480px){.tile{font-size:.62rem}.tile b{font-size:.68rem}.tilemap{gap:2px}}
.panel .chart.short{height:220px}
.panel .chart.rows{height:820px}

/* hub links, questions and answers, methods */
.hubs,.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:0 0 1.25rem}
.hub,.cards .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;text-decoration:none;color:var(--ink);box-shadow:0 4px 15px var(--shadow);display:block}
.hub:hover,.cards .card:hover{border-color:var(--fill-red)}
.docard{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem 1.2rem;background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--fill-red);border-radius:12px;padding:.9rem 1.1rem;margin:.6rem 0 1rem}
.docard b{display:block}.docard span{font-size:.9rem;color:var(--muted)}.docard>div{flex:1 1 22rem}
.hub b,.cards .card h3{display:block;font-size:1rem;font-weight:700}
.hub span,.cards .card p{font-size:.85rem;color:var(--muted)}
.hub .dl{display:block;margin-top:.35rem;font-weight:600}
.hub .dl a{color:var(--navy);text-decoration:underline}
.btn.report{background:var(--card)}
.research-section,.qa{background:var(--card);padding:1.25rem 1.5rem;border-radius:12px;margin-bottom:1rem;border:1px solid var(--line)}
.research-q,.qa h3{font-weight:700;color:var(--navy);margin-bottom:.5rem;font-size:1rem}
.research-a,.qa p{color:var(--ink);padding:.75rem;background:var(--soft);border-radius:8px;border-inline-start:4px solid var(--s-green);margin:0}
.methodology{background:var(--soft);padding:1.25rem;border-radius:10px;margin:1rem 0}
.methodology h2{color:var(--navy);margin:0 0 .5rem;font-size:1.05rem;border:0;padding:0}
.methodology ul{margin:0;margin-inline-start:1.25rem;padding:0;font-size:.92rem}
.methodology p{font-size:.92rem;margin:0 0 .5rem}
.claims{list-style:none;padding:0;margin:.5rem 0 1.5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}
.claims li{background:var(--card);border-radius:12px;border-inline-start:4px solid var(--fill-red);box-shadow:0 4px 15px var(--shadow);padding:1rem}
.claims b{display:block;font-size:1.4rem;font-weight:700;color:var(--grad-a);line-height:1.3}
.claims span{font-size:.9rem}
.lead{font-size:1.05rem;max-width:90ch;margin:.25rem 0 1rem}
.home p,.home ul.plain{max-width:90ch}
.home ul.plain{padding-inline-start:1.2rem}
.home ul.plain li{margin:.4rem 0}
.home h2{margin-top:1.75rem}
.note{font-size:.85rem;color:var(--muted);border-top:1px solid var(--line);margin-top:2rem;padding-top:.75rem;max-width:100ch}
.pill{font-size:.8rem;color:var(--muted)}

/* tables */
.twrap{overflow-x:auto;max-width:100%}
.twrap.scroll{max-height:560px;overflow-y:auto}
table{border-collapse:collapse;width:100%;font-size:.85rem;margin-top:.5rem}
th,td{padding:.45rem .6rem;border-bottom:1px solid var(--line);text-align:end;font-variant-numeric:tabular-nums}
th.l,td.l{text-align:start}
th{background:var(--soft);font-weight:600;position:sticky;top:0;z-index:1}
th button{all:unset;cursor:pointer;font-weight:600}
th button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
th[aria-sort="descending"] button::after{content:" \25BE";color:var(--navy)}
th[aria-sort="ascending"] button::after{content:" \25B4";color:var(--navy)}
tbody tr.link{cursor:pointer}
tbody tr.link:hover,tbody tr.link:focus-within{background:var(--soft)}
tr button.open{all:unset;cursor:pointer;color:var(--navy);text-decoration:underline}
tr button.open:focus-visible{outline:2px solid var(--ink)}
.tag{display:inline-block;font-size:.72rem;font-weight:700;padding:0 6px;border-radius:4px}
.tag.NDA{background:#f5b041;color:#1c2833}.tag.INDIA{background:#1e8449;color:#fff}.tag.Other{background:#bb8fce;color:#1c2833}
.search{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}
.search input,.tools select,.tools input{font:inherit;padding:.45rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);min-width:240px}
.tools{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin:8px 0}
.tools label{font-size:.85rem;color:var(--muted)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{border:0;border-radius:0;background:var(--soft);color:var(--ink);padding:6px 12px;font-size:.85rem}
.seg button:hover{transform:none}
.seg button[aria-pressed="true"]{background:var(--fill-navy);color:#fff}
.drill{margin-top:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.drill[hidden]{display:none}
.legend{font-size:.8rem;color:var(--muted);display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:4px 0}
.legend i{display:inline-block;width:14px;height:10px;vertical-align:middle;margin-right:4px;border-radius:2px}
footer{background:var(--card);padding:1.5rem;text-align:center;border-top:1px solid var(--line);margin-top:1rem;font-size:.85rem;color:var(--muted)}

/* ------------------------------------------ explorers: rail and detail pane */
.xp{display:grid;grid-template-columns:300px minmax(0,1fr);max-width:var(--page);margin:0 auto;min-height:calc(100vh - 160px)}
.xp>*{min-width:0}
.xp aside{background:var(--card);border-inline-end:1px solid var(--line);padding:18px 16px;overflow:auto;max-height:calc(100vh - 150px);position:sticky;top:150px}
.xp aside input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:14px;background:var(--bg);color:var(--ink)}
.xp .legend{margin:10px 0 0}
.xstrip{display:grid;grid-template-columns:repeat(18,minmax(0,1fr));gap:2px;margin:12px 0}
.xstrip button{aspect-ratio:1;border:0;padding:0;cursor:pointer;border-radius:2px;min-width:0}
.xstrip button:hover{transform:none}
.xstrip button.sel,.xstrip button:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.xstrip button.dim{opacity:.18}
.xlist{list-style:none;padding:0;margin:10px 0 0}
.xlist li button{width:100%;text-align:start;background:none;border:0;border-radius:0;border-top:1px solid var(--line);padding:7px 4px;font:inherit;font-size:13px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;color:var(--ink)}
.xlist li button:hover,.xlist li button.sel{background:var(--soft);transform:none;color:var(--ink)}
.xlist li button:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.xlist .rate{color:var(--red);font-variant-numeric:tabular-nums}
.xp main{max-width:none;margin:0}
.xp .kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.xp .kpis b{font-size:1.35rem}
.xhead-wrap{max-width:var(--page);margin:0 auto;padding:1.25rem 1.25rem 0}
.xhead-wrap .takeaway{margin-bottom:.75rem}
.crumb{font-size:13px;color:var(--muted);margin-bottom:6px}
.crumb button{background:none;border:0;color:var(--navy);text-decoration:underline;cursor:pointer;font:inherit;font-size:13px;padding:0}
.crumb button:hover{transform:none;background:none}
.xp main h2{font-size:1.5rem;margin:0 0 .25rem;border:0;padding:0}
.fate{display:flex;height:44px;border-radius:8px;overflow:hidden;margin:8px 0 6px}
.fate div{display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden}
.fatekey{display:flex;gap:18px;font-size:13px;color:var(--muted);margin-bottom:22px;flex-wrap:wrap}
.fatekey i{display:inline-block;width:12px;height:12px;vertical-align:-1px;margin-right:5px;border-radius:2px}

/* ------------------------------------------------------ the full report
   bihar/report/ and hyderabad/report/: the report as a page, in the site's
   palette so both themes work. Figures are drawn on white and sit on a white
   card in either theme. */
.report-page{max-width:880px}
.report-lang{display:none;background:var(--soft);border-inline-start:4px solid var(--fill-amber);padding:.55rem .9rem;font-size:.9rem}
html:not([data-lang="en"]) .report-lang{display:block}
.report-actions{margin:0 0 1rem}
.report{line-height:1.65;font-size:1rem}
.report .cover{background:var(--card);border-radius:14px;padding:1.5rem 1.4rem;box-shadow:0 2px 10px var(--shadow);margin-bottom:1.5rem}
.report .kicker{margin:0;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--red)}
.report .title{font-size:1.9rem;line-height:1.2;margin:.3rem 0 .4rem}
.report .subtitle{color:var(--muted);margin:0 0 1rem}
.report .cover dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin:0 0 1rem}
.report .cover dl div{background:var(--soft);border-radius:10px;padding:.7rem .8rem}
.report .cover dt{font-size:1.35rem;font-weight:700;color:var(--red)}
.report .cover dd{margin:0;font-size:.85rem;color:var(--muted)}
.report .by{color:var(--muted);font-size:.9rem;margin:0}
.report .toc{background:var(--card);border-radius:14px;padding:1rem 1.3rem;margin-bottom:1.5rem;box-shadow:0 2px 10px var(--shadow)}
.report .toc ol{list-style:none;margin:0;padding:0;columns:2;column-gap:2rem}
.report .toc li{break-inside:avoid;margin:.2rem 0}
.report .toc li.l1{font-weight:700;margin-top:.5rem}
.report .toc li.l2{padding-inline-start:.9rem;font-size:.92rem}
.report .toc a{color:var(--navy)}
.report h2{font-size:1.45rem;margin:2.2rem 0 .6rem;padding-top:.3rem;border-top:2px solid var(--line);scroll-margin-top:calc(var(--hh,0px) + 70px)}
.report h3{font-size:1.12rem;margin:1.5rem 0 .4rem;scroll-margin-top:calc(var(--hh,0px) + 70px)}
.report h4{font-size:1rem;margin:1.2rem 0 .3rem}
.report p{margin:0 0 .8rem}
.report .note{font-size:.85rem;color:var(--muted);font-style:italic}
.report ul,.report ol{padding-inline-start:1.3rem;margin:0 0 .9rem}
.report li{margin-bottom:.3rem}
.report .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin:.8rem 0 1.1rem}
.report .stats div{background:var(--card);border-inline-start:4px solid var(--fill-red);border-radius:8px;padding:.6rem .8rem;box-shadow:0 1px 4px var(--shadow)}
.report .stats b{display:block;font-size:1.3rem;color:var(--red)}
.report .stats span{font-size:.82rem;color:var(--muted)}
.report .callout{background:var(--soft);border-inline-start:4px solid var(--fill-amber);border-radius:8px;padding:.7rem .9rem;margin:.9rem 0}
.report .twrap{overflow-x:auto;margin:.6rem 0 1.1rem;background:var(--card);border-radius:10px;box-shadow:0 1px 4px var(--shadow)}
.report table{border-collapse:collapse;width:100%;font-size:.88rem}
.report th{background:var(--soft);color:var(--ink);text-align:start;padding:.45rem .6rem;border-bottom:2px solid var(--line);white-space:nowrap}
.report td{padding:.4rem .6rem;border-bottom:1px solid var(--line)}
.report td.r,.report th.r{text-align:end;font-variant-numeric:tabular-nums}
.report figure{margin:1rem 0 1.3rem;background:#fff;border-radius:10px;padding:.6rem;box-shadow:0 1px 4px var(--shadow)}
.report figure img{display:block;width:100%;height:auto}
.report figcaption{font-size:.84rem;color:#4d5b69;margin-top:.4rem}
@media (max-width:700px){.report .toc ol{columns:1}.report .title{font-size:1.5rem}.report .cover{padding:1.1rem}}

@media (max-width:900px){
  .charts-grid,.grid{grid-template-columns:minmax(0,1fr)}
  .summary-grid,.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
  .summary-card,.kpis>div{padding:.75rem}
  .summary-value,.kpis b{font-size:1.2rem}
  .h-title{font-size:1.1rem}.logo-icon{width:40px;height:40px}
  header.top{position:static;padding:.75rem 1rem}
  .nav-tabs{--hh:0px}
  .controls{gap:.35rem}.controls .btn,.controls button,.controls summary{padding:.35rem .7rem;font-size:.8rem}
  .logo{gap:.6rem}
  .xp{grid-template-columns:minmax(0,1fr)}
  .xp aside{position:static;max-height:none;border-inline-end:0;border-bottom:1px solid var(--line)}
  .xlist{max-height:260px;overflow:auto}
  .search input{min-width:0;width:100%}
}
/* A phone: title and three icon buttons on one line, the switch on the next,
   and a tab bar that stays at the top of the screen as the page scrolls. */
@media (max-width:700px){
  header.top{padding:.55rem .75rem .6rem}
  .header-content{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem .5rem}
  .logo{gap:.55rem;min-width:0}
  .logo-icon{display:none}
  .h-title{font-size:1.02rem}
  header.top .subtitle{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .titles{overflow:hidden}
  .controls{flex-wrap:nowrap;gap:.3rem}
  .controls .btn,.controls button,.controls summary{width:40px;height:40px;padding:0;justify-content:center;border-radius:10px}
  .lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .lbl-place{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .controls .print{display:none}
  .switch{grid-column:1/-1;order:3;padding:2px;border-radius:9px}
  .switch{min-width:0}
  .switch a{flex:1 1 auto;padding:.4rem .4rem;font-size:.82rem}
  .header-content:has(#lang) .switch{grid-column:1}
  #lang{height:40px;padding:0 .3rem;font-size:.84rem;width:auto;max-width:4.5rem;border-radius:10px}
  .nav-tabs{padding:.35rem .5rem;gap:.3rem;border-bottom-width:1px;box-shadow:0 2px 8px var(--shadow)}
  .nav-tab{padding:.45rem .75rem;font-size:.84rem;border-radius:999px;min-height:36px}
  .nav-tab .icon{width:15px;height:15px}
  .nav-tab::after{display:none}
  .nav-tab[aria-selected="true"],.nav-tab[aria-current="page"]{background:var(--card);box-shadow:inset 0 0 0 2px var(--fill-red)}
  main{padding:1rem .75rem 2rem}
  /* The section bar replaces the row of tabs when sir.js has built it. */
  .has-secbar .nav-tabs{display:none}
  .secbar{display:flex;align-items:stretch;gap:.35rem;position:sticky;top:0;z-index:90;background:var(--soft);padding:.4rem .5rem;border-bottom:1px solid var(--line);box-shadow:0 2px 8px var(--shadow)}
  .secbar button,.secbar button:hover{transform:none;color:var(--ink)}
  .sec-step:hover,.sec-now:hover{background:var(--card)}
  .sec-step:disabled{opacity:.35;cursor:default}
  .secgrid button:hover,.secgrid a:hover{background:var(--card);color:var(--ink)}
  .sec-step{width:44px;flex:none;justify-content:center;padding:0;border-radius:10px;background:var(--card)}
  .sec-now{flex:1;min-width:0;justify-content:space-between;gap:.5rem;padding:.45rem .7rem;border-radius:10px;background:var(--card);box-shadow:inset 0 0 0 2px var(--fill-red);text-align:start}
  .sec-where{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.92rem}
  .sec-crumb{color:var(--muted);font-weight:400}
  .sec-where b{color:var(--tab-on)}
  .sec-count{margin-inline-start:auto;font-size:.75rem;color:var(--muted);white-space:nowrap}
  .sec-now[aria-expanded="true"] .caret{transform:rotate(180deg)}
  .secmenu{position:absolute;inset-inline:.5rem;top:calc(100% + 4px);background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px var(--shadow);padding:.5rem;max-height:70vh;overflow:auto}
  .sechead{margin:.35rem .25rem .4rem;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  .sechead+.secgrid{margin-bottom:.35rem}
  .secgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
  .secgrid a{display:flex;align-items:center;text-decoration:none;border:1px solid var(--line)}
  .secgrid button,.secgrid a{justify-content:flex-start;gap:.5rem;padding:.7rem .7rem;min-height:48px;border-radius:10px;background:var(--soft);font-size:.9rem;font-weight:600;color:var(--tab);text-align:start}
  .secgrid button span,.secgrid a span{min-width:0}
  .secgrid .on{background:var(--card);color:var(--tab-on);box-shadow:inset 0 0 0 2px var(--fill-red)}
}
@media (min-width:701px){.secbar{display:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{header.top,.nav-tabs,.secbar,.switch,.dl,.card-actions,.search,.controls,.tools,.band{display:none}.tab-content{display:block!important}.card,.panel{break-inside:avoid;box-shadow:none}}

/* ------------------------------------------------------------ languages */
.i18n-note{max-width:var(--page);margin:.75rem auto 0;padding:.55rem 1.25rem;font-size:.85rem;color:var(--ink);background:var(--soft);border-inline-start:4px solid var(--fill-amber)}
.i18n-note a{color:var(--navy);text-decoration:underline}
html[data-lang="hi"] body{font-family:"Noto Sans Devanagari","Segoe UI",system-ui,sans-serif}
html[data-lang="te"] body{font-family:"Noto Sans Telugu","Segoe UI",system-ui,sans-serif}
html[data-lang="ta"] body{font-family:"Noto Sans Tamil","Segoe UI",system-ui,sans-serif}
html[data-lang="bn"] body{font-family:"Noto Sans Bengali","Segoe UI",system-ui,sans-serif}
html[data-lang="ur"] body{font-family:"Noto Nastaliq Urdu","Segoe UI",system-ui,sans-serif;line-height:2}
html[data-lang="ur"] .h-title,html[data-lang="ur"] h1,html[data-lang="ur"] h2,html[data-lang="ur"] h3{line-height:1.9}
html[data-lang="ur"] .summary-value,html[data-lang="ur"] .kpis b,html[data-lang="ur"] .claims b{line-height:1.6}
html[data-lang="ur"] .nav-tab,html[data-lang="ur"] button,html[data-lang="ur"] .btn{line-height:1.9}
/* Figures, tags and tables of numbers read left to right in every language. */
[dir="rtl"] .summary-value,[dir="rtl"] .kpis b,[dir="rtl"] .claims b,[dir="rtl"] .tag,[dir="rtl"] td:not(.l){unicode-bidi:plaintext}
[dir="rtl"] .nav-tab::after{left:auto;right:0}
[dir="rtl"] .sec-step svg{transform:scaleX(-1)}
[dir="rtl"] .xstrip,[dir="rtl"] .fate{direction:ltr}
.tab-lead{max-width:95ch;margin:.25rem 0 1.25rem;line-height:1.55}
/* plain-SVG charts (assets/viz.js) */
.viz{display:block;width:100%;height:auto;font-family:inherit;overflow:visible}
.viz .vname{fill:var(--ink);font-size:13px;font-weight:600}
.viz .vname.small{font-size:11px;font-weight:600}
.viz .vval{fill:var(--muted);font-size:12px}
.viz .vgrid{stroke:var(--line);stroke-width:1}
.viz .vlink{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.viz .vlink.thick{stroke-width:3;stroke-dasharray:none;opacity:.55}
.viz .flow:hover{opacity:.7!important}
.viz .vdot{stroke:var(--card);stroke-width:1}
.vizbox{width:100%}
.pick{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-weight:600;margin-bottom:.5rem;max-width:100%}
.pick select{max-width:100%;min-width:0;font:inherit;padding:.35rem .5rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
@media (max-width:600px){.viz .vname{font-size:11px}.viz .vval{font-size:10.5px}.viz .vname.small{font-size:10px}}
.viz .vname.light{font-weight:500}
.viz .vzero{stroke:var(--ink);stroke-width:1.5}
.viz .vci{stroke:var(--fill-navy);stroke-width:2.5}
.viz .vci.main{stroke:var(--fill-red);stroke-width:3.5}
.viz .vstem{stroke-width:2.5;opacity:.55}
.viz .vcell{fill:var(--ink);font-size:12px;font-weight:600}
.viz .vcell.on{fill:#fff}
.viz .vnone{fill:var(--line);opacity:.4}
.viz .vval.small{font-size:10.5px}
.viz .vmap path{stroke:var(--card);stroke-width:.6;cursor:pointer}
.viz .vmap path:hover{stroke:var(--ink);stroke-width:1.2}
.viz .vmap path.on{stroke:var(--ink);stroke-width:2.4}
.viz .vpanel{fill:var(--soft);stroke:none}
.viz .vline{fill:none;stroke-width:2.5;stroke-linejoin:round}
.viz .vslope line{stroke-width:1.6;opacity:.5}
.viz .vslope.hi line{stroke-width:2.6;opacity:.95}
.viz .vslope:hover line{opacity:1;stroke-width:3}
.bigs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.big{display:flex;flex-direction:column;gap:.25rem}
.big b{font-size:clamp(2.2rem,6vw,3.4rem);line-height:1;color:var(--navy);font-variant-numeric:tabular-nums}
.big .of{color:var(--muted);font-size:.9rem}
.big i{display:block;height:8px;border-radius:4px;background:linear-gradient(90deg,var(--fill-red) var(--w),var(--line) var(--w));margin:.4rem 0 .2rem}
.big span:last-child{font-weight:600}
@media (max-width:600px){.bigs{grid-template-columns:1fr}}
.has-viz{height:auto!important}
.chart-container.has-viz,.panel .chart.has-viz{height:auto}

/* chart tools, the finder and its card */
.panel .tools,.fcard .tools{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem;justify-content:flex-end}
.panel .tools button,.panel .tools .btn,.fcard .tools button,.fcard .tools .btn{font-size:.78rem;padding:.3rem .7rem;border-radius:6px}
.finder{display:grid;gap:.5rem;max-width:760px}
.finder label{font-weight:600}
.finder input{font:inherit;font-size:1rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);width:100%}
.fcard:empty{display:none}
.fcard{border:1px solid var(--line);border-radius:10px;padding:1rem;background:var(--card)}
.fcard h3{margin:0 0 .6rem}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem 1rem;margin:0}
.facts div{border-left:3px solid var(--line);padding-left:.6rem}
.facts dt{font-size:.8rem;color:var(--muted)}
.facts dd{margin:0;font-weight:600;font-size:1.02rem}
.golist{display:flex;flex-wrap:wrap;gap:.4rem;margin:.3rem 0 .8rem}
.golist .chip{font:inherit;font-size:.85rem;padding:.25rem .6rem;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer}
.golist .chip:hover,.golist .chip:focus-visible{border-color:var(--fill-red)}
/* sitewide search */
.kbd{font:600 .7rem/1 system-ui,sans-serif;border:1px solid var(--line);border-radius:4px;padding:.15rem .3rem;color:var(--muted)}
@media (max-width:700px){.kbd{display:none}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
dialog.search[open]{display:flex;flex-direction:column;align-items:stretch;text-align:left}
dialog.search{width:min(640px,calc(100vw - 24px));max-height:min(80vh,640px);padding:0;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);box-shadow:0 18px 50px rgba(0,0,0,.25);margin:10vh auto auto}
dialog.search::backdrop{background:rgba(15,23,42,.45)}
.search-in{box-sizing:border-box;width:100%;display:flex;gap:.5rem;padding:.7rem;border-bottom:1px solid var(--line)}
.search-in input{flex:1;min-width:0;font:inherit;font-size:1rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.search-in .sclose{font:inherit;font-size:.85rem;padding:.4rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--soft);color:var(--ink);cursor:pointer}
dialog.search ul{list-style:none;margin:0;padding:.3rem;overflow:auto;max-height:calc(min(80vh,640px) - 110px)}
dialog.search li{display:flex;flex-direction:column;gap:.1rem;padding:.5rem .7rem;border-radius:8px;cursor:pointer}
dialog.search li[aria-selected=true],dialog.search li:hover{background:var(--soft);outline:2px solid var(--line)}
dialog.search .sl{font-weight:600}
dialog.search .sm{font-size:.8rem;color:var(--muted)}
.sstatus{margin:0;padding:.4rem 1rem .7rem;font-size:.8rem;color:var(--muted)}
/* the dyslexia-friendly font keeps each Indian script in its own Noto face:
   OpenDyslexic has Latin glyphs only */
html.dyslexic-font[data-lang="hi"] *{font-family:"OpenDyslexic","Noto Sans Devanagari",sans-serif!important}
html.dyslexic-font[data-lang="te"] *{font-family:"OpenDyslexic","Noto Sans Telugu",sans-serif!important}
html.dyslexic-font[data-lang="ta"] *{font-family:"OpenDyslexic","Noto Sans Tamil",sans-serif!important}
html.dyslexic-font[data-lang="bn"] *{font-family:"OpenDyslexic","Noto Sans Bengali",sans-serif!important}
html.dyslexic-font[data-lang="ur"] *{font-family:"OpenDyslexic","Noto Nastaliq Urdu",sans-serif!important}
.controls .install[hidden],.btn.install[hidden]{display:none}
/* phone header: the title gets its own row and the controls a row beneath
   it, because seven controls beside the title squeezed it to a word */
@media (max-width:700px){
  .header-content{grid-template-columns:minmax(0,1fr)}
  .controls{grid-column:1/-1;justify-content:space-between;align-items:center;flex-wrap:nowrap;width:100%}
  .controls #dys-font-btn{min-width:40px;min-height:40px;width:40px;height:40px;padding:0}
  /* a menu hangs from the whole row, so it never opens past the screen edge */
  .controls{position:relative}
  .controls .dl{position:static}
  .controls .dl .menu{inset-inline:0;min-width:0;max-height:calc(100vh - 160px);overflow-y:auto}
  .controls .dl .menu a{white-space:normal}
}
.viz .vband{fill:var(--soft)}
.process .panel{scroll-margin-top:calc(var(--hh,0px) + 70px)}
.viz .vnum{font-size:10px;font-weight:700;pointer-events:none}.viz .vnum.on-dark{fill:#fff}.viz .vnum.on-light{fill:#111}.viz .vlane .vdot{stroke:var(--card);stroke-width:1.5}
@media (max-width:600px){.viz .vnum{font-size:8.5px}}
.viz .vmark{fill:none;stroke:var(--fill-red);stroke-width:2}
/* india/process: the timeline of rule changes */
.process .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.8rem;margin:1rem 0}
.process .kpis>div{display:flex;flex-direction:column;gap:.2rem}
.process .kpis b{font-size:1.6rem;color:var(--red)}
.process .kpis span{font-size:.85rem;color:var(--muted)}
.pfilter{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0}
.pfilter .chip{font:inherit;font-size:.85rem;padding:.3rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}
.pfilter .chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.pdot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%}
.pdot.eci,.pitem.eci::before{background:var(--fill-navy)}
.pdot.sc,.pitem.sc::before{background:var(--fill-red)}
.pdot.ceo,.pitem.ceo::before{background:var(--fill-teal)}
.ptl{list-style:none;margin:1rem 0 0;padding:0 0 0 1.4rem;border-inline-start:3px solid var(--line);position:relative}
.ptl .pyear{font-weight:800;font-size:1.3rem;margin:1.2rem 0 .4rem -1.4rem;padding-inline-start:.2rem;color:var(--muted)}
.ptl .pitem{position:relative;margin:0 0 1rem;padding:.9rem 1rem;background:var(--card);border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:150px minmax(0,1fr);gap:.4rem 1rem}
.ptl .pitem::before{content:'';position:absolute;inset-inline-start:calc(-1.4rem - 8px);top:1.15rem;width:13px;height:13px;border-radius:50%;border:3px solid var(--bg)}
.ptl .pdate time{font-weight:700;display:block}
.ptl .pwho{font-size:.8rem;color:var(--muted)}
.ptl .pbody h3{margin:0 0 .3rem;font-size:1rem}
.ptl .pbody p{margin:0 0 .4rem}
.ptl .psrc{font-size:.82rem}
.ptl .psrc a{text-decoration:underline}
.process h3.ph{margin:1.3rem 0 .2rem;font-size:1rem}
@media (max-width:700px){.ptl .pitem{grid-template-columns:minmax(0,1fr)}.process .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* a link to each section, beside its heading */
main h2[id],main h3[id]{scroll-margin-top:calc(var(--hh,0px) + 70px)}
.anchor{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;margin-inline-start:.4rem;width:28px;height:28px;padding:0;border:0;border-radius:6px;background:none;color:var(--muted);cursor:pointer;position:relative}
.anchor:hover{background:var(--soft);color:var(--ink)}
.anchor[data-msg]::after{content:attr(data-msg);position:absolute;inset-inline-start:100%;margin-inline-start:.3rem;font-size:.75rem;font-weight:600;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.1rem .4rem;white-space:nowrap}
@media print{.anchor{display:none}}
/* india/process: burdens, the forms thread and the reported list */
.process .burdens{list-style:none;counter-reset:b;padding:0;margin:0 0 1.5rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.8rem}
.process .burdens li{counter-increment:b;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.85rem 1rem}
.process .burdens h3{font-size:1rem;margin:0 0 .35rem}
.process .burdens h3::before{content:counter(b) ". ";color:var(--red)}
.process .burdens p{margin:.3rem 0}
.pitem.ilane::before{background:var(--fill-grey)}.pitem.ilane.ecs::before{background:var(--fill-red)}.pitem.ilane.officers::before{background:var(--fill-purple)}.pitem.ilane.commission::before{background:var(--fill-navy)}.pitem.ilane.goa::before{background:var(--fill-amber)}.pitem.ilane.court::before{background:var(--fill-teal)}
.process .inum{display:inline-block;min-width:1.6em;text-align:center;font-size:.8rem;border:1px solid var(--line);border-radius:999px;padding:0 .3em;margin-inline-end:.2rem}
.process ul.reported{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.7rem}
.process ul.reported li{background:var(--card);border:1px dashed var(--line);border-radius:10px;padding:.8rem 1rem}
.process .rmeta{margin:0 0 .3rem;color:var(--muted);font-size:.88rem}
.process .rmeta b{color:var(--ink)}
.process .rresp{font-size:.92rem;color:var(--muted)}
.process .rresp span{font-weight:700;color:var(--ink)}
.process .rresp span::after{content:"."}
/* bulk Form 7 filings: a wide table that scrolls inside its own box */
.process .bulk table{min-width:980px}
.process .bulk td,.process .bulk th{vertical-align:top}
.process .bulk td:nth-child(5),.process .bulk td:nth-child(6){min-width:15rem}
.process .bulk .nw{white-space:nowrap}
.process .bulk .btags{display:flex;flex-wrap:wrap;gap:.25rem;margin:0 0 .3rem}
.process .bulk .btags span{font-size:.75rem;color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:0 .45rem}
.process .bulk tr.bgroup th{font-weight:700;padding-top:1rem;border-bottom:2px solid var(--line)}
/* tables on a phone: smaller type and padding, and the first column stays in
   view while the rest scrolls sideways */
@media (max-width:600px){
  table{font-size:.8rem}
  th,td{padding:.4rem .45rem}
  thead th{font-size:.74rem;line-height:1.25;vertical-align:bottom}
  .twrap tbody th:first-child,.twrap tbody td:first-child{position:sticky;inset-inline-start:0;background:var(--card);z-index:1}
  .twrap thead th:first-child{position:sticky;inset-inline-start:0;z-index:2}
}
/* phones, second pass: chart buttons always under the chart, a section bar
   that names the section rather than the place (the header names the place),
   and tap areas a finger can hit */
.panel>.vizbox{order:2}.panel>.tools{order:6}
.card-actions button{font-size:.75rem;padding:.35rem .65rem;min-height:32px}
.anchor{width:32px;height:32px}
@media (max-width:600px){
  thead th{font-size:.78rem}
  th button{display:block;padding:.45rem 0;margin:-.45rem 0}
  footer a{display:inline-block;padding:.35rem 0}
}
@media (max-width:520px){
  .sec-crumb{display:none}
}
/* wide screens: the header is one row, title on the left and the controls on
   the right. With seven controls their labels came to 917px, so beside the
   title they wrapped under it and left the right of the header empty. Theme
   and print show their icons only (the label stays for screen readers) and
   the Ctrl K hint goes. */
@media (min-width:701px){
  .controls .kbd{display:none}
  .controls .theme .lbl,.controls .print .lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .controls .theme,.controls .print{padding-inline:.7rem}
  .controls{margin-inline-start:auto;justify-content:flex-end}
}
/* stage chips on india/progress/ */
.stage{display:inline-block;font-size:.8rem;font-weight:600;padding:1px 8px;border-radius:4px;line-height:1.5}
.stage.done{background:var(--fill-navy);color:#fff}
.stage.late{background:var(--fill-red);color:#fff}
.stage.now{background:#f5b041;color:#1c2833}
.stage.wait{background:transparent;color:var(--ink);border:1px solid var(--muted)}

/* =================================================================
   Off the Roll (October 2026): the frame round every page. Paper and ink,
   one red, Fraunces for display (OFL, self-hosted in fonts/, Latin only, so
   Indian scripts keep their Noto faces), a mono for small labels. Text sits
   in a reading column of about 44rem; maps, charts, tables and number rows
   run the full width. The palette is the token blocks at the top of this
   file, measured by check_contrast.py in both themes. */
@font-face{font-family:"Fraunces";src:url(../fonts/fraunces-latin.woff2) format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+20B9,U+2122,U+2212}
:root{--serif:"Fraunces",Georgia,"Noto Serif",serif;--mono:ui-monospace,"SFMono-Regular","Cascadia Mono",Menlo,Consolas,monospace;--measure:44rem;--on-ink:#f6f2ea;--red-on-ink:#efb3ac}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--on-ink:#15120e;--red-on-ink:#9e2019}}
:root[data-theme="dark"]{--on-ink:#15120e;--red-on-ink:#9e2019}
body{font-size:16px;line-height:1.6}
.band{height:4px;background-size:auto 4px!important;animation:none!important}

/* ------------------------------------------------------- the masthead */
header.top{background:var(--bg);border-bottom:1px solid var(--line);box-shadow:none;padding:.7rem 1.25rem}
.logo-icon{display:none}
header.top .h-title,header.top .subtitle{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wm{font-family:var(--serif);font-weight:700;font-size:1.6rem;line-height:1;letter-spacing:-.01em;color:var(--ink)}
.wm s{color:var(--red);text-decoration-thickness:3px}
.controls{gap:.2rem}
.controls .btn,.controls button,.controls summary.btn,.controls #lang,.controls #dys-font-btn{background:transparent;border:1px solid transparent;border-radius:6px;padding:.45rem .6rem;font-size:.88rem;color:var(--ink);font-weight:500;box-shadow:none}
.controls .btn:hover,.controls button:hover,.controls summary.btn:hover{background:var(--soft);color:var(--ink)}
.controls .places summary.btn,.controls #lang{border-color:var(--line)}
.controls .print{background:transparent}
.controls .more{display:none}
button:hover,.btn:hover{transform:none}
@media (min-width:701px){
  .controls .find{border-color:var(--line);background:var(--card);color:var(--muted);min-width:12rem;justify-content:flex-start}
  .controls .find .kbd{display:inline;margin-inline-start:auto}
  .controls .dlink .lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}

/* ----------------------------------------------------- the section tabs */
.nav-tabs{background:var(--bg);border-bottom:1px solid var(--line);box-shadow:none}
.nav-tab{background:none!important;border-radius:0;color:var(--muted);font-weight:600}
.nav-tab:hover{color:var(--ink)}
.nav-tab[aria-current="page"],.nav-tab[aria-selected="true"]{color:var(--ink)}
.nav-tab::after{background:var(--red);height:2px;bottom:-1px}
@media (min-width:901px){
  .nav-tabs{justify-content:flex-start;padding-inline:max(1.25rem,calc((100% - var(--page))/2 + 1.25rem));column-gap:1.6rem}
  .nav-tab{padding:.8rem 0;font-size:.86rem}
  .nav-tab .icon{display:none}
}

/* -------------------------------------------- the page and its columns */
main{padding:0 1.25rem 3.5rem}
main>:first-child:not(.page-head),main>article>:first-child:not(.page-head){margin-top:2.5rem}
body :where(main,main>article,main>section,.tab-content,.page-head,.page-faq,.report)>:is(h1,h2,h3,h4,p,.asof,blockquote,ol:not([class]),ul:not([class]),ol.summary,ul.plain,.nfacts,.nothere,.colq,.dlall,.dlstrip,.qa,.research-section,.methodology,.docard,.pull,.finder,.lead,.sub,.tab-lead,.finding,.caveat,.note,.report-lang,.report-actions,.page-faq,.kicker){max-width:var(--measure);margin-inline:0}
.xp main>*{max-width:none!important;margin-inline:0!important}
main h1{font-family:var(--serif);font-weight:700;letter-spacing:-.02em;line-height:1.02}
main h2{font-family:var(--serif);font-size:1.9rem;line-height:1.15;font-weight:700;letter-spacing:-.01em;border:0;padding:0;margin-top:3.5rem;margin-bottom:.5rem}
main h2:first-child{margin-top:0}
.methodology h2,.xp main h2{font-family:inherit}
body :where(main,main>article,main>section,.tab-content)>h3{font-family:var(--serif);font-size:1.3rem;margin-top:2rem;margin-bottom:.4rem}
.sub,.tab-lead{color:var(--muted)}
.lead{font-size:1.18rem;line-height:1.55}

/* the opening of a page: a mono label, the title, the findings */
.kicker{font-family:var(--mono);font-size:.76rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--red);margin-top:0;margin-bottom:.9rem}
.page-head{padding:3rem 0 2.5rem;margin-bottom:2.75rem;border-bottom:1px solid var(--line);box-shadow:0 1px 0 0 var(--line)}
.page-head h1{font-size:clamp(2.4rem,5vw,4rem);margin-bottom:1.25rem}
.page-head h1 em{font-style:normal;color:var(--red)}
ol.summary{list-style:none;counter-reset:f;padding:0;margin-top:1.25rem;margin-bottom:0;font-size:1.12rem;line-height:1.5}
ol.summary li{counter-increment:f;position:relative;margin:0;padding:.85rem 0;padding-inline-start:2.6rem;border-top:1px solid var(--line)}
ol.summary li::before{content:counter(f);position:absolute;inset-inline-start:0;top:.62rem;font-family:var(--serif);font-weight:700;font-size:1.6rem;line-height:1.2;color:var(--red);font-variant-numeric:tabular-nums}
main>ol.summary:first-child{margin-top:0}

/* a finding set apart: a red rule in the margin */
.takeaway,.finding{background:none!important;color:var(--ink)!important;border:0;border-inline-start:3px solid var(--red);border-radius:0;padding:.1rem 0;padding-inline-start:1rem;font-size:1.06rem;line-height:1.55}
:root:root .caveat{background:none}

/* numbers: a strip of figures between rules */
.summary-card,.kpis>div{background:transparent;box-shadow:none;border:0;border-radius:0;border-inline-end:1px solid var(--line)!important;padding:1.4rem 1.25rem}
.summary-card:last-child,.kpis>div:last-child{border-inline-end:0!important}
.summary-grid,.kpis{gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.summary-card:hover,.kpis>div:hover{transform:none}
.summary-value,.kpis b{background:none;-webkit-text-fill-color:currentColor;color:var(--ink);font-family:var(--serif);font-size:2.2rem;letter-spacing:-.01em;line-height:1.1}
.summary-label,.kpis span{font-size:.84rem;color:var(--muted)}
.claims li{box-shadow:none;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.claims b{font-family:var(--serif)}

/* charts sit on white cards with a hairline, as figures in a report */
.card,.panel{background:var(--card);box-shadow:none;border:1px solid var(--line);border-radius:10px;padding:1.25rem}
.card-title,.panel h3{font-family:var(--serif);font-size:1.12rem;font-weight:700;border-bottom:0;padding-bottom:0;margin-bottom:.75rem}
.panel>p,.chart-takeaway{background:none;border:0;padding:0;color:var(--muted);font-size:.9rem;margin-top:.6rem}
.charts-grid,.grid{gap:1.5rem}
.fcard,.drill,.docard,.research-section,.ptl .pitem,.process .burdens li,.process ul.reported li{box-shadow:none;border-radius:10px;background:var(--card)}
.qa{background:none;border:0;border-top:1px solid var(--line);border-radius:0;padding:1.1rem 0}
.research-a,.qa p{background:none;border:0;padding:0}
.qa h3{font-family:var(--serif);font-size:1.15rem;color:var(--ink)}
.note{border-top:0;padding-top:0;margin-top:1.25rem}
.note.limits{border-top:1px solid var(--line);padding-top:.9rem}
th{background:var(--bg);font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--ink)}
/* a symbol in an upper-case heading keeps its own case: ρ would become Ρ, read as P */
.sym{text-transform:none}
footer{background:var(--bg);margin-top:2rem}
.report .cover,.report .toc,.report .twrap,.report .stats div{box-shadow:none;border:1px solid var(--line)}
.report .title{font-family:var(--serif)}

/* cards to each analysis, each led by its number */
.hubs{gap:1.25rem}
.hub{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1.4rem;box-shadow:none;display:flex;flex-direction:column;gap:.45rem}
.hub:hover{border-color:var(--ink)}
.hub .n{font-family:var(--serif);font-style:normal;font-weight:700;font-size:2.1rem;line-height:1.05;color:var(--red);letter-spacing:-.01em}
.hub b{font-family:var(--serif);font-size:1.2rem}
.hub span{color:var(--muted);font-size:.9rem}
.hub.big{grid-column:span 2;background:var(--ink);border-color:var(--ink)}
.hub.big,.hub.big b,.hub.big span{color:var(--on-ink)}
.hub.big .n{color:var(--red-on-ink);font-size:2.8rem}
@media (max-width:700px){.hub.big{grid-column:auto}}
/* pinned cards: always beside the featured state, marked by a red rule */
.hub.pin{border:2px solid var(--red)}

/* ------------------------------------------------- the front page */
.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:3.5rem;align-items:center}
.hero .kicker,.hero h1,.hero .lead{max-width:none;margin-inline:0}
.hero h1{font-size:clamp(2.6rem,5.6vw,4.6rem);margin:0 0 1.2rem}
.hero .lead{font-size:1.2rem;color:var(--ink);margin:0}
.btns{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}
.btn-ink,.btn-line{display:inline-flex;align-items:center;padding:.8rem 1.15rem;border-radius:6px;font-weight:600;font-size:.95rem;text-decoration:none;border:1px solid var(--ink)}
.btn-ink{background:var(--ink);color:var(--on-ink)}
.btn-line{color:var(--ink)}
.btn-ink:hover,.btn-line:hover{background:var(--soft);color:var(--ink)}
.dots-fig{margin:0}
.dots{display:grid;grid-template-columns:repeat(20,minmax(0,1fr));gap:5px}
.dots i{aspect-ratio:1;border-radius:50%;background:var(--line)}
.dots i.on{background:var(--red)}
.dots-fig figcaption{font-size:.85rem;color:var(--muted);margin-top:.9rem}
.home .kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 1rem}
.mapwrap{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:1.5rem;align-items:start;margin-top:1.25rem}
.rank .twrap{max-height:640px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.rank table{margin:0}
.rank td,.rank th{padding:.5rem .75rem}
.rank .bar{height:8px;border-radius:2px;background:var(--red);min-width:2px}
.rank tr.all td{font-weight:700}
.rank tr.all .bar{background:var(--ink)}
.rank a{color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 0;max-width:var(--measure)}
.chips a{border:1px solid var(--ink);border-radius:999px;padding:.45rem .9rem;text-decoration:none;color:var(--ink);font-weight:600;font-size:.92rem;background:var(--card)}
.chips a:hover{background:var(--ink);color:var(--on-ink)}
.how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin-top:1.25rem}
.how h3{font-family:var(--serif);font-size:1.2rem;margin:0 0 .35rem}
.how p{margin:0;color:var(--muted)}
@media (max-width:900px){
  .hero,.mapwrap{grid-template-columns:minmax(0,1fr);gap:2rem}
  .how{grid-template-columns:minmax(0,1fr);gap:1.25rem}
  .home .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home .kpis>div:nth-child(2){border-inline-end:0!important}
  .home .kpis>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
}

/* "On this page": the sections in the left margin of a wide screen */
nav.toc:not(.page-toc):not(.report .toc){display:none}
@media (min-width:1240px){
  body.has-toc main{max-width:calc(var(--page) + 15rem);padding-inline-start:calc(15rem + 1.25rem)}
  nav.toc:not(.page-toc):not(.report .toc){display:block;position:fixed;z-index:50;top:calc(var(--hh,0px) + 84px);inset-inline-start:max(1.25rem,calc((100vw - var(--page) - 15rem) / 2 + 1.25rem));width:13rem;max-height:calc(100vh - var(--hh,0px) - 110px);overflow:auto;font-size:.84rem;line-height:1.35;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}
  nav.toc:not(.page-toc):not(.report .toc).on{opacity:1;visibility:visible}
  .toc-h{margin:0 0 .6rem;font-family:var(--mono);font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
  nav.toc:not(.page-toc):not(.report .toc) ol{list-style:none;margin:0;padding:0;border-inline-start:1px solid var(--line)}
  nav.toc:not(.page-toc):not(.report .toc) a{display:block;padding:.35rem .8rem;margin-inline-start:-1px;border-inline-start:2px solid transparent;color:var(--muted);text-decoration:none}
  nav.toc:not(.page-toc):not(.report .toc) a:hover{color:var(--ink)}
  nav.toc:not(.page-toc):not(.report .toc) a[aria-current]{color:var(--ink);font-weight:600;border-inline-start-color:var(--red)}
}

/* the contents list under the head of a long page, as the full reports have */
nav.page-toc{background:var(--card);border-radius:14px;padding:1rem 1.3rem;margin:0 0 1.5rem;box-shadow:0 2px 10px var(--shadow)}
nav.page-toc h2{margin:0 0 .5rem;font-size:1.1rem}
nav.page-toc ol{list-style:none;margin:0;padding:0;columns:2;column-gap:2rem}
nav.page-toc li{break-inside:avoid;margin:.25rem 0}
nav.page-toc a{color:var(--navy)}
@media (max-width:700px){nav.page-toc ol{columns:1}}

/* ------------------------------------------------------------ phones */
@media (max-width:700px){
  header.top{padding:.55rem .9rem}
  .header-content{grid-template-columns:minmax(0,1fr) auto}
  .wm{font-size:1.4rem}
  .controls .more{display:inline-flex}
  header.top:not(.open) .controls{grid-column:2;width:auto;justify-content:flex-end}
  header.top:not(.open) .controls>:not(.find):not(.more){display:none!important}
  header.top.open .controls{padding-top:.45rem;border-top:1px solid var(--line)}
  .controls .btn,.controls button,.controls summary.btn{width:40px;height:40px}
  .controls #lang{height:40px}
  main{padding:0 1rem 2.5rem}
  .page-head{padding:2rem 0 1.75rem;margin-bottom:2rem}
  .page-head h1{font-size:2.35rem}
  .hero h1{font-size:2.6rem}
  main h2{font-size:1.55rem;margin-top:2.75rem}
  ol.summary{font-size:1.02rem}
  ol.summary li{padding-inline-start:2.1rem}
  ol.summary li::before{font-size:1.35rem}
  .secbar{background:var(--bg);box-shadow:none}
  .sec-now{box-shadow:inset 0 0 0 1px var(--line)}
  .summary-value,.kpis b{font-size:1.65rem}
  .summary-card,.kpis>div{padding:1rem .75rem}
  .summary-grid,.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dots{gap:3px}
}

/* Indian scripts keep their own faces: Fraunces has Latin only */
html[data-lang]:not([data-lang="en"]) :is(main h1,main h2,main h3,.summary-value,.kpis b,.claims b,.qa h3,.hub b,.hub .n,.how h3,.card-title,.panel h3,.report .title){font-family:inherit;letter-spacing:0}

/* The reading font: OpenDyslexic is wider and taller than any face above,
   so the display sizes come down, nothing is set in italics or capitals,
   and lines get more room. */
html.dyslexic-font body{line-height:1.8;word-spacing:.08em}
html.dyslexic-font :is(.kicker,.toc-h,th,details.figs>summary){text-transform:none;letter-spacing:.02em}
html.dyslexic-font .page-head h1,html.dyslexic-font .hero h1{font-size:clamp(1.9rem,4vw,3rem);line-height:1.2;letter-spacing:0}
html.dyslexic-font main h2{font-size:1.5rem;line-height:1.3;letter-spacing:0}
html.dyslexic-font :is(.summary-value,.kpis b,.hub .n){font-size:1.6rem;letter-spacing:0}
html.dyslexic-font .hub.big .n{font-size:2rem}
html.dyslexic-font .wm{font-size:1.25rem;letter-spacing:0}
html.dyslexic-font ol.summary{font-size:1rem;line-height:1.7}
html.dyslexic-font em,html.dyslexic-font i{font-style:normal}
@media (max-width:700px){html.dyslexic-font .page-head h1,html.dyslexic-font .hero h1{font-size:1.75rem}html.dyslexic-font .summary-value,html.dyslexic-font .kpis b{font-size:1.3rem}}
html[data-lang]:not([data-lang="en"]) ol.summary li::before{font-family:inherit}
@media print{.band,nav.toc{display:none}.page-head{box-shadow:none}}
/* the report cover's figures: long Indian-grouped numbers stay inside their box */
.report .cover dt{font-family:var(--serif);font-size:clamp(1.15rem,4.2vw,1.6rem);line-height:1.15;overflow-wrap:anywhere}
@media (max-width:520px){.report .cover dl{grid-template-columns:minmax(0,1fr)}}

/* SIR.table: a table of figures at a readable width on a desktop, numbers in
   aligned columns, and one card per row on a phone with each figure named */
.twrap.fit{max-width:min(100%,52rem);margin:1.2rem 0}
table.stack{width:100%}
table.stack th,table.stack td{padding:.55rem .7rem;vertical-align:top}
table.stack th:not(.num),table.stack td:not(.num){text-align:start}
table.stack .num{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
table.stack td:first-child{font-weight:600}
table.stack td small{display:block;font-weight:400;color:var(--muted);font-size:.8rem;margin-top:.1rem}
details.figs{max-width:min(100%,52rem);margin:.4rem 0 1.4rem}
details.figs>summary{cursor:pointer;font-family:var(--mono);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:.4rem 0}
details.figs>summary:hover{color:var(--ink)}
details.upigate{margin:1rem 0}
details.upigate>summary{cursor:pointer;display:inline-block;font-weight:600;border:1px solid var(--ink);padding:.5rem .9rem;color:var(--ink)}
details.upigate[open]>summary{margin-bottom:.6rem}
@media (max-width:600px){
  .twrap.fit{overflow:visible}
  table.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:auto}
  table.stack tr{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;margin:0 0 .6rem}
  table.stack td,table.stack .num{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.3rem 0;border:0;text-align:end;white-space:normal;position:static;background:none}
  table.stack td::before{content:attr(data-label);flex:1 1 auto;text-align:start;color:var(--muted);font-size:.8rem;font-weight:400}
  table.stack td:first-child{display:block;text-align:start;font-size:1rem;padding:.1rem 0 .45rem;margin-bottom:.25rem;border-bottom:1px solid var(--line)}
  table.stack td:first-child::before{content:none}
  table.stack td:first-child small{display:inline;margin-inline-start:.3rem}
  html.dyslexic-font table.stack td::before{font-size:.85rem}
}

/* the places menu folds: a place's own pages and the 2026 states each sit
   under a heading that opens on a tap, and opens by itself on its own pages */
.places .menu>div{display:flex;flex-direction:column}
.places .menu details.grp>summary{list-style:none;cursor:pointer;padding:.6rem .75rem;border-radius:7px;font-size:.9rem;color:var(--ink);display:flex;justify-content:space-between;align-items:center;gap:1rem}
.places .menu details.grp>summary::-webkit-details-marker{display:none}
.places .menu details.grp>summary::after{content:"";width:.45rem;height:.45rem;border-inline-end:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin-top:-.2rem;transition:transform .15s}
.places .menu details.grp[open]>summary::after{transform:rotate(225deg);margin-top:.2rem}
.places .menu details.grp>summary:hover,.places .menu details.grp>summary:focus-visible{background:var(--soft)}
.places .menu details.grp .sub{display:flex;flex-direction:column;border-inline-start:2px solid var(--line);margin:0 0 .3rem .9rem}
.places .menu details.grp .sub a{font-size:.85rem;padding:.45rem .75rem}
/* the phone header turns every summary into a 40px icon button; the menu's
   group headings are rows of text and keep their own size */
.controls .places .menu details.grp>summary{width:auto;height:auto;padding:.6rem .75rem;justify-content:space-between;border-radius:7px;font-size:.9rem;border:0;background:transparent}

/* The NRC page: numbered statements, each with its document and its words */
.nfacts{padding-left:1.8rem}
.nfacts>li{margin:0 0 1.1rem;scroll-margin-top:calc(var(--hh,0px) + 4rem)}
.nfacts>li>p{margin:.15rem 0}
.nfacts .nsrc{font-size:.85rem;color:var(--muted)}
.nfacts details{font-size:.85rem;margin-top:.2rem}
.nfacts blockquote{margin:.4rem 0 0;padding-left:.8rem;border-left:2px solid var(--line)}
.nfacts>li:target{outline:2px solid var(--fill-red);outline-offset:.35rem;border-radius:2px}
.nref{font-size:.8em;white-space:nowrap}

/* The constituencies page: the controls in the reading column, and a table
   that keeps its columns on a phone (fewer of them) instead of stacking */
.acctl{max-width:var(--measure);margin:0 0 1rem}
.acctl .pfilter{margin-bottom:.6rem}
.acctl-row{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;font-size:.9rem}
.acctl-row label{display:flex;flex-direction:column;gap:.25rem;color:var(--muted)}
.acctl-row input,.acctl-row select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.4rem .55rem;min-width:14rem}
.acwrap{max-width:min(100%,64rem);margin:.6rem 0;border:1px solid var(--line);border-radius:10px;background:var(--card)}
table.actab{width:100%;border-collapse:collapse;font-size:.9rem}
table.actab th,table.actab td{padding:.5rem .65rem;border-bottom:1px solid var(--line);vertical-align:top}
table.actab thead th{font-family:var(--mono);font-size:.72rem;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:start;position:sticky;top:0;background:var(--card)}
table.actab .num{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
table.actab tbody th{text-align:start;font-weight:600;font-family:inherit;font-size:inherit;letter-spacing:normal;text-transform:none;color:var(--ink);background:var(--card)}
table.actab tbody th small{display:block;font-weight:400;color:var(--muted);font-size:.78rem}
table.actab .acno{font-family:var(--mono);font-size:.75rem;color:var(--muted);font-weight:400;margin-inline-end:.2rem}
table.actab .neg{color:var(--red);font-weight:600}
.acmore{text-align:center}
@media (max-width:600px){
  table.actab .wide{display:none}
  table.actab thead th,table.actab thead th.num{white-space:normal}
  table.actab{font-size:.84rem}
  table.actab th,table.actab td{padding:.45rem .4rem}
  .acctl-row input,.acctl-row select{min-width:0;width:100%}
  .acctl-row label{flex:1 1 100%}
}

/* -------------------------------------------- the downloads page */
.dls .book{max-width:min(100%,52rem);margin:0 0 1.1rem;border-top:1px solid var(--line);padding-top:.9rem}
.dls .bh{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem 1rem}
.dls .bh h3{margin:0;flex:1 1 16rem;font-family:var(--serif);font-size:1.3rem}
.dls .bh .meta{margin:0;font-size:.85rem;color:var(--muted)}
.dls .book details.figs{margin:.3rem 0 0;max-width:none}
.dls .sheets{padding-left:1.6rem;margin:.4rem 0}
.dls .sheets>li{margin:0 0 .9rem}
.dls .sheets p{margin:.1rem 0}
.dls .sheets .sh{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .55rem}
.dls .sheets .meta{font-size:.82rem;color:var(--muted)}
.dls .sheets .cannot{font-size:.88rem;color:var(--muted)}
.dls .tag{font-family:var(--mono);font-weight:600;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);background:transparent}
.dls .tag.source{color:var(--red);border-color:currentColor}
.dls .colq{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:center}
.dls .colq input{flex:1 1 14rem;font:inherit;padding:.45rem .6rem;border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--ink)}
.dls .dlall .btn{display:inline-block}
.dls table code{font-family:var(--mono);font-size:.82rem;overflow-wrap:anywhere}
html.dyslexic-font .dls .tag{text-transform:none}

/* -------------------------------------------- the protests and disputes page */
.disp .nfacts .nresp{margin:.2rem 0;padding-left:.7rem;border-left:2px solid var(--line);color:var(--muted);font-size:.92rem}
.disp .tag{font-family:var(--mono);font-weight:600;font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);background:transparent;vertical-align:1px}
.disp .tag.primary{color:var(--navy);border-color:currentColor}
html.dyslexic-font .disp .tag{text-transform:none}

/* the constituency finder on india/constituencies/: one card per match */
.acfind{list-style:none;padding:0;margin:0 0 1.5rem;max-width:var(--measure);display:grid;gap:.6rem}
.acfind li{border:1px solid var(--line);border-radius:8px;background:var(--card);padding:.7rem .9rem}
.acfind a{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;text-decoration:none;color:var(--ink)}
.acfind a b{font-family:var(--serif);font-size:1.05rem}
.acfind a span{color:var(--muted);font-size:.85rem}
.acfind a:hover b{text-decoration:underline}
.acfind p{margin:.25rem 0 0;font-size:.9rem}
.acfind .acno{font-family:var(--mono);font-size:.75rem;color:var(--muted);font-weight:400}

/* the disputes page: search and filters, and each item's issues */
.dfilter{max-width:var(--measure);margin:0 0 .6rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.6rem .9rem;align-items:end}
.dfilter label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted)}
.dfilter .dq{grid-column:1/-1}
.dfilter input,.dfilter select{font:inherit;font-size:.92rem;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.45rem .55rem;min-width:0;width:100%}
.dfilter .chip{justify-self:start}
.dcount{font-weight:600}
.disp .dtags{display:flex;flex-wrap:wrap;gap:.3rem;margin:.3rem 0 0}
.disp .dtags span{font-size:.75rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:.05rem .5rem}
/* india/disputes/: the hearings and deadlines ahead, above the English-only part of the page */
.nextcourt{margin:.5rem 0 1.5rem;padding-bottom:.6rem;border-bottom:2px solid var(--line)}
.nextcourt .nfacts>li>p:first-child{margin-top:0}

/* the places menu opens with the pages most readers come for */

/* header tooltips and the tour (sir.js) */
.htip{position:fixed;z-index:60;max-width:18rem;background:var(--ink);color:var(--on-ink);font-size:.8rem;line-height:1.35;padding:.45rem .6rem;border-radius:6px;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.htip[hidden]{display:none}
.tour{position:fixed;z-index:70;inset-inline-end:1rem;bottom:1rem;max-width:22rem;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:.9rem 1rem;box-shadow:0 10px 30px rgba(0,0,0,.2)}
.tour .tour-n{margin:0 0 .25rem;font-family:var(--mono);font-size:.72rem;color:var(--muted)}
.tour .tour-t{margin:0 0 .7rem;font-size:.95rem}
.tour .tour-b{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.tour button{font:inherit;font-size:.85rem;padding:.45rem .8rem;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer}
.tour button.btn-ink{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.tour button:disabled{opacity:.45;cursor:default}
.tour .tour-x{margin-inline-start:auto;border-color:transparent;text-decoration:underline}
.tour-on{outline:3px solid var(--red)!important;outline-offset:3px;border-radius:6px}
@media (max-width:600px){.tour{inset-inline:.75rem;bottom:.75rem;max-width:none}}
@media print{.tour,.htip{display:none}}

/* help/: the steps, their sources, and the organisations */
.helpart .hsteps,.helpart .hsrc,.helpart .orgs,.helpart .dfilter{max-width:var(--measure);margin-inline:0}
.helpart .hsteps{padding-inline-start:1.4rem;margin-block:.4rem 1rem}
.helpart .hsteps li{margin:.3rem 0}
.helpart .hsrc{margin-block:0 1.6rem}
.helpart .hsrc>summary{cursor:pointer;font-family:var(--mono);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.helpart .hsrc ul{padding-inline-start:1.1rem;font-size:.88rem}
.helpart .hsrc blockquote{margin:.3rem 0 .7rem;padding-inline-start:.7rem;border-inline-start:2px solid var(--line);color:var(--muted)}
.helpart .orgs{list-style:none;padding:0;display:grid;gap:.7rem;margin-block:.5rem 1.2rem}
.helpart .orgs li{border:1px solid var(--line);border-radius:8px;background:var(--card);padding:.8rem 1rem}
.helpart .orgs p{margin:.2rem 0}
.helpart .orgs .on{display:flex;flex-wrap:wrap;gap:.2rem .6rem;align-items:baseline}
.helpart .orgs .on b{font-family:var(--serif);font-size:1.05rem}
.helpart .orgs .on span{color:var(--muted);font-size:.85rem}
.helpart .nsrc{font-size:.85rem;color:var(--muted)}
.helpart .tag{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);padding:0 .3rem;border-radius:4px}
html.dyslexic-font .helpart :is(.hsrc>summary,.tag){text-transform:none}
/* <place>/now/: a state's "What to do now" page (assets/now.js) */
.nowart .nowlinks{max-width:var(--measure);margin:.3rem 0 1rem;padding-inline-start:1.1rem}
.nowart .nowlinks li{margin:.25rem 0}
.nowart .twrap{max-width:var(--measure);margin-block:.4rem .6rem}
.nowart .nsrc{color:var(--muted);font-size:.85rem}
.nowart h2{margin-top:1.8rem}
.who{max-width:var(--measure);margin:0 0 1.2rem;padding:0;list-style:none;display:grid;gap:.55rem}
.who li{padding-inline-start:.9rem;border-inline-start:3px solid var(--red)}
/* the states fold: zonal headings, a line on what bold means, the full analyses in bold */
.places .menu details.grp .sub .rg{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.6rem .75rem .15rem}
.places .menu details.grp .sub .lg{font-size:.78rem;color:var(--muted);padding:.35rem .75rem .1rem;margin:0;line-height:1.4}
.places .menu details.grp .sub a.full{font-weight:700}
.places .menu details.grp .sub a.in{padding-inline-start:1.6rem;font-size:.8rem}
html.dyslexic-font .places .menu details.grp .sub .rg{text-transform:none}
/* the share form: one column of labelled fields in the reading measure */
.shareform{max-width:var(--measure);margin:1.2rem 0 1rem;display:grid;gap:.2rem}
.shareform p{margin:0 0 .7rem}
.shareform label{display:block;font-size:.92rem;font-weight:600;margin-bottom:.3rem}
.shareform input:not([type=checkbox]),.shareform textarea{width:100%;box-sizing:border-box;font:inherit;padding:.6rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
.shareform input[type=file]{padding:.45rem}
.shareform .ck{display:flex;gap:.6rem;align-items:flex-start}
.shareform .ck input{margin-top:.25rem;width:1.1rem;height:1.1rem;flex:none}
.shareform .ck label{font-weight:400;margin:0}
.shareform .send{font:inherit;font-weight:700;padding:.65rem 1.4rem;border-radius:8px;background:var(--ink);color:var(--bg);border:0;cursor:pointer}
.shareform .send:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.share .hp{display:none}
/* the floating buttons, on every screen: the constituency finder and, above
   it, "Share a list". The tour box sits above them. */
.fabs{position:fixed;z-index:55;inset-inline-end:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;align-items:flex-end;gap:.55rem;pointer-events:none}
.fabs .fab{pointer-events:auto;display:inline-flex;align-items:center;gap:.45rem;border-radius:999px;font-weight:600;line-height:1;text-decoration:none;box-shadow:0 6px 18px rgba(0,0,0,.22)}
.fabs .fab .icon{width:20px;height:20px;flex:none}
.fabs .fab:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.fab:not(.fab-share){display:inline-flex;background:var(--ink);color:var(--bg);padding:.7rem 1.05rem;font-size:.9rem}
.fab-share{background:var(--card);color:var(--ink);border:1px solid var(--line);padding:.55rem .9rem;font-size:.85rem}
.fab-share .icon{width:18px;height:18px}
.fabs.fabs-off{display:none}
footer{padding-bottom:4rem}
.tour{bottom:calc(8rem + env(safe-area-inset-bottom,0px))}
footer{padding-bottom:5rem}
@media (max-width:700px){
  footer{padding-bottom:4.5rem}
  .tour{bottom:calc(8rem + env(safe-area-inset-bottom,0px))}
}
body:has(.fabs.fabs-off) .tour{bottom:calc(.75rem + env(safe-area-inset-bottom,0px))}
@media print{.fabs{display:none!important}}
/* the front page's usage figures */
.tally{max-width:var(--measure);margin:1.5rem 0 0}
.tally .kpis{margin:.6rem 0}
/* a card's count, and that count as a share of the roll beneath it */
.hub .n small{display:block;font-family:var(--mono);font-size:.72rem;font-weight:400;letter-spacing:.02em;color:var(--muted);margin-top:.3rem}
html.dyslexic-font .hub .n small{font-family:inherit;font-size:.8rem}

/* which roll a state's figures come from, under the kicker */
.asof{font-family:var(--mono);font-size:.74rem;color:var(--muted);margin-top:-.5rem;margin-bottom:1rem}
html.dyslexic-font .asof,html:not([lang="en"]) :is(.asof,.kicker){font-family:inherit;letter-spacing:normal}

/* the front page's cards: the pages across India in a row of their own,
   each marked with a pin, then every state and union territory */
main>h3.hubh{font-family:var(--mono);font-size:.78rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:1.6rem 0 .7rem;display:flex;align-items:center;gap:.45rem}
html.dyslexic-font main>h3.hubh,html:not([lang="en"]) main>h3.hubh{font-family:inherit;text-transform:none;letter-spacing:normal;font-size:.95rem}
@media (min-width:1000px){.hubs.pins{grid-template-columns:repeat(3,minmax(0,1fr))}}
.hubs.pins{padding-bottom:1.6rem;border-bottom:1px solid var(--line);margin-bottom:.4rem}
/* the front page's "What to do now in your state" card: one chip per state
   with a page, kept small so the card stays short on a phone */
.now-hub .chips{margin:.35rem 0 0;gap:.4rem;max-width:none}
.now-hub .chips a{padding:.3rem .75rem;font-size:.85rem}
/* on a phone the chips are two rows that scroll sideways, so the card stays
   short however many states have a page; every chip is a link, so Tab
   reaches each one and the browser scrolls it into view */
@media (max-width:699px){.now-hub .chips{display:grid;grid-auto-flow:column;grid-template-rows:auto auto;grid-auto-columns:max-content;justify-content:start;overflow-x:auto;overscroll-behavior-x:contain;padding:.2rem .1rem .5rem;scroll-snap-type:x proximity}
.now-hub .chips a{white-space:nowrap;scroll-snap-align:start}}
.hub.pin{position:relative;padding-inline-end:2.6rem}
.hub.pin::before{content:"";position:absolute;top:1rem;inset-inline-end:1rem;width:18px;height:18px;background:var(--red);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 17v5'/%3E%3Cpath d='M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 17v5'/%3E%3Cpath d='M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z'/%3E%3C/svg%3E") center/contain no-repeat}
/* the map and the ranked list beside it end at the same line: the list
   scrolls inside the map's height rather than stopping short of it */
@media (min-width:901px){
  .mapwrap{align-items:stretch}
  .mapwrap .rank{position:relative;min-height:20rem}
  .mapwrap .rank .twrap{position:absolute;inset:0;max-height:none}
}
/* Downloads is a button to the downloads page; the place it was pressed on
   is opened and marked there */
.controls a.dlink{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}
.controls a.dlink[aria-current]{background:var(--soft)}
.dls .book.here{border-top:2px solid var(--red)}
/* the places menu on a wide screen: one panel, the pages most readers come
   for and All India on the left, every state and territory on the right in
   columns by zone, so nothing scrolls */
.start .menu .about{border-top:1px solid var(--line);margin-top:.35rem;padding-top:.35rem;display:flex;flex-direction:column}
.places .menu .zn{display:flex;flex-direction:column}
@media (min-width:1000px){
  .controls .places .menu{position:fixed;top:calc(var(--hh,72px) + 4px);inset-inline-end:max(1rem,calc((100vw - var(--page))/2 + 1.25rem));width:min(56rem,calc(100vw - 2rem));max-height:calc(100vh - var(--hh,72px) - 1.5rem);overflow-y:auto}
  .places .menu>div{display:grid!important;grid-template-columns:13rem minmax(0,1fr);column-gap:1rem;align-items:start}
  .places .menu>div>details.grp:not(.states){grid-column:1;grid-row:1}
  .places .menu>div>details.grp.states{grid-column:2;grid-row:1;border-inline-start:1px solid var(--line);padding-inline-start:.6rem}
  .places .menu details.grp>summary{pointer-events:none;font-family:var(--mono);font-size:.7rem!important;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)!important;padding:.45rem .75rem .2rem!important}
  .places .menu details.grp>summary::after{display:none}
  .places .menu details.grp:not(.states) .sub{border:0;margin:0}
  .places .menu details.grp.states>summary{pointer-events:none;font-family:var(--mono);font-size:.7rem!important;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)!important;padding:.45rem .75rem .2rem!important}
  .places .menu details.grp.states>summary::after{display:none}
  .places .menu details.grp.states .sub{display:block;columns:3;column-gap:.6rem;border:0;margin:0}
  .places .menu details.grp.states .sub .lg{column-span:all;margin-bottom:.3rem}
  .places .menu details.grp.states .zn{break-inside:avoid;margin-bottom:.4rem}
  .places .menu details.grp.states .sub a{padding:.32rem .75rem;white-space:normal;line-height:1.3}
  html.dyslexic-font .places .menu details.grp>summary,html:not([lang="en"]) .places .menu details.grp>summary{font-family:inherit;text-transform:none;letter-spacing:normal;font-size:.85rem!important}
}
.hub.big .n small{color:var(--on-ink)}
.dls .book{scroll-margin-top:calc(var(--hh,72px) + 1rem)}
/* a sortable table on a phone: cards like any stacked table, with its
   headings kept above as a row of sort buttons */
@media (max-width:600px){
  table.stack.sortable thead{position:static;width:auto;height:auto;overflow:visible;clip:auto;display:block;margin-bottom:.6rem}
  table.stack.sortable thead tr{display:flex;flex-wrap:wrap;gap:.35rem;border:0;padding:0;background:none;margin:0}
  table.stack.sortable thead th{display:flex;height:auto;padding:0;border:0;background:none;position:static}
  table.stack.sortable thead th button{font:inherit;font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:.8rem;line-height:1.3;display:flex;box-sizing:border-box;align-items:center;gap:.25rem;min-height:2rem;margin:0;padding:.3rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);text-transform:none;letter-spacing:normal}
  table.stack.sortable thead th[aria-sort="ascending"] button,table.stack.sortable thead th[aria-sort="descending"] button{border-color:var(--ink);font-weight:700}
  table.stack.sortable tr.link td:first-child button.open{font-weight:700}
}
/* on a phone "Share a list" is the icon alone, so the two floating buttons
   cover less of the page; its name stays for screen readers */
@media (max-width:700px){
  .fab-share{padding:.6rem}
  .fab-share span{font-size:.8rem}
}
/* the front page below the cards: each section is its heading on the left
   and its text on the right, across the full width of the page, so the
   text lines up with the cards and maps above instead of stopping two
   thirds of the way across */
.fs{border-top:1px solid var(--line);padding-top:1.4rem;margin-top:2.2rem}
@media (min-width:1000px){
  .fs{display:grid;grid-template-columns:16rem minmax(0,1fr);column-gap:3rem;align-items:start}
  .fs>h2{margin-top:0;max-width:none}
  .fs-b>:first-child{margin-top:0}
}
.fs-b>*{max-width:none;margin-inline:0}
.fs-b .who,.fs-b .chips,.fs-b .tally{max-width:none}
/* a reading page is one column: text, charts, maps and tables all share
   the same width, and every reading page starts it at the same place, the
   left edge of the header and the tab row. "On this page" sits to the right
   of the column, so a page with it and a page without it line up. The front
   page and the dashboards keep their own widths. */
body:not(.wide):not(.home){--measure:48rem}
body:not(.wide):not(.home) main>*{max-width:var(--measure)}
@media (min-width:1240px){
  body.has-toc:not(.wide):not(.home) main{max-width:var(--page);padding-inline-start:1.25rem}
  body:not(.wide):not(.home) nav.toc:not(.page-toc){inset-inline-start:calc(max(0px,(100vw - var(--page)) / 2) + 1.25rem + var(--measure) + 3rem)}
}
/* inside the reading column, panels stack rather than sit two to a row,
   a page's own filter row starts at the column's edge, and the full
   reports use the same column as every other page */
body:not(.wide):not(.home) :is(.grid,.charts-grid){grid-template-columns:minmax(0,1fr)}
main .controls{margin-inline-start:0;justify-content:flex-start;max-width:var(--measure)}
body:not(.wide):not(.home) main.report-page{max-width:var(--page)}
body:not(.wide):not(.home) main>*>p{max-width:var(--measure)}
/* "Start here", its own menu beside Places: the pages most readers come
   for, then About this site under a rule */
.start .menu .ql{display:flex;flex-direction:column}
.start .menu>div{display:flex;flex-direction:column}
body:not(.wide):not(.home) main :is(p,.sub,.note){max-width:min(100%,var(--measure))}
/* a chart whose rows answer a hover, a tap or the keyboard (VIZ.gantt) */
.viz .vhit{fill:transparent;cursor:pointer;outline:none}
.viz .vhit:hover,.viz .vhit:focus-visible,.viz .vhit.on{fill:var(--ink);fill-opacity:.07}
.viz .vhit:focus-visible{stroke:var(--red);stroke-width:2}
.vread{font-size:.9rem;color:var(--ink);margin:.6rem 0 0;min-height:1.5em}

/* reading page: a pull-out panel per commentator, the quotation set beside
   the site's own figures */
.pull{background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--fill-red);border-radius:12px;padding:1rem 1.2rem .6rem;margin:1rem 0 1.4rem;scroll-margin-top:calc(var(--hh,0px) + 4rem)}
.pull>h3{margin:0 0 .2rem}
.pull .role{font-size:.9rem;color:var(--muted);margin:0 0 .6rem}
.pull .srcs{font-size:.88rem;margin:.3rem 0 .8rem;padding-inline-start:1.1rem}
.pull .pq{list-style:none;padding:0;margin:0}
.pull .pq>li{border-top:1px solid var(--line);padding:.8rem 0 .4rem}
.pull .pq blockquote{color:inherit;font-size:1.02rem;margin:.1rem 0 .3rem}
.pull .pq .tr{margin:0 0 .3rem;font-style:italic}
.pull .pq .meta{font-size:.82rem;color:var(--muted);margin:0 0 .4rem}
.pull dl{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:.35rem .9rem;margin:.3rem 0 .4rem;font-size:.93rem}
.pull dt{font-weight:600}
.pull dd{margin:0}
.pull .sides{display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1.4rem;border-top:1px solid var(--line);padding-top:.6rem;margin-top:.2rem}
.pull .sides h4{margin:.2rem 0 .3rem;font-size:.95rem}
.pull .sides ul{margin:0 0 .6rem;padding-inline-start:1.1rem;font-size:.93rem}
.pull .pnote{font-size:.85rem;color:var(--muted)}
@media (max-width:700px){.pull{padding:.9rem .9rem .5rem}.pull dl{grid-template-columns:1fr;gap:.1rem}.pull dd{margin-bottom:.4rem}.pull .sides{grid-template-columns:1fr}}
html.dyslexic-font .pull .pq .tr{font-style:normal}

/* the phone header's open row is a grid of equal tiles, four to a row, so
   eight controls never run past the edge of a narrow screen (they did at
   360px, where the menu button itself was cut off) */
@media (max-width:700px){
  header.top.open .controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;justify-items:stretch}
  header.top.open .controls>*{min-width:0;width:100%}
  header.top.open .controls>.btn,header.top.open .controls>button,header.top.open .controls>.dl>summary.btn,header.top.open .controls #lang,header.top.open .controls #dys-font-btn{width:100%!important;height:44px;justify-content:center;border:1px solid var(--line);border-radius:8px}
  header.top.open .controls #lang{padding-inline:.5rem}
}

/* the page's share row under its findings */
.pageshare{display:flex;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 1.2rem}.pageshare .btn,.pageshare button{font-size:.8rem;padding:.3rem .8rem;border-radius:6px}
@media print{.pageshare{display:none}}

/* every page of a place with a workbook: its files at the foot of the page */
.dlstrip{margin:2rem 0 1rem;padding:1rem 0 .4rem;border-top:2px solid var(--line)}
.dlstrip .dlh{font-size:1.05rem;margin:0 0 .6rem}
.dlstrip p{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.3rem 0}
.dlstrip .csvs{font-size:.88rem;color:var(--muted)}
.dlstrip .csvs a{color:var(--link,inherit)}
.dls .pick{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.4rem 0 1rem}
.dls .pick select{max-width:100%}
@media print{.dlstrip{display:none}}

/* help page: an organisation's public contact, with where it is printed */
.ncontact{font-size:.92rem;margin:.35rem 0 .2rem;line-height:1.5}
.ncontact b{font-weight:600;margin-inline-end:.3rem}
.ncontact a{overflow-wrap:anywhere}
.ncontact .csrc{font-size:.8rem;color:var(--muted);margin-inline-start:.3rem;white-space:nowrap}

/* the phone header's open menu: every tile names what it does under its
   icon, because a tooltip never shows on a touch screen and the compass, the
   pin and "Aa" mean nothing on their own */
@media (max-width:700px){
  header.top.open .controls>.btn,header.top.open .controls>button,header.top.open .controls>.dl>summary.btn,header.top.open .controls #dys-font-btn{flex-direction:column;gap:.2rem;height:auto!important;min-height:58px;padding:.35rem .2rem!important}
  header.top.open .controls .lbl,header.top.open .controls .lbl-place{position:static;width:auto;height:auto;overflow:hidden;clip:auto;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.68rem;line-height:1.15;font-weight:500}
  header.top.open .controls .kbd{display:none}
  header.top.open .controls #dys-font-btn::after{content:"Reading font";font-size:.68rem;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* floating buttons: hidden while the reader scrolls down on a phone, or while
   a finder is on screen (sir.js), with room at the foot of the page */
.fabs{transition:opacity .2s,transform .2s}
.fabs.fabs-hide{opacity:0;transform:translateY(130%);pointer-events:none}
.fabs.fabs-hide .fab{pointer-events:none}
@media (prefers-reduced-motion:reduce){.fabs{transition:none}}

/* a card hidden by script stays hidden: .panel sets its own display */
.panel[hidden],.grid[hidden]{display:none!important}
/* text for screen readers only */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* support/thanks: the UPI QR code, always dark on white so it scans in either theme */
.upiqr img{display:block;width:240px;max-width:70vw;height:auto;background:#fff;padding:8px;border:1px solid var(--line);border-radius:10px}

/* touch targets on a phone: chart tools, heading links and footer links are
   at least 40px tall, so a thumb lands on the one it meant */
@media (max-width:700px){
  .panel .tools button,.panel .tools .btn,.fcard .tools button,.fcard .tools .btn{min-height:40px;padding:.45rem .85rem;font-size:.82rem}
  .anchor{width:40px;height:40px}
  footer[data-i18n-each]{line-height:1.7}
  footer a{display:inline-block;padding:.3rem .1rem}
}
/* printing a page (and the PDF reports made from the pages): no buttons,
   no search box, no floating buttons, nothing a reader cannot press on paper */
@media print{.tools,.finder,.fabs,.anchor,.tour,.toc,#tally{display:none!important}.vizbox,.panel{break-inside:avoid}}
/* headings wrap between words and never hyphenate: automatic hyphenation
   split "every" as "ev-ery" in the front page's headline on a phone. A word
   too long for the line still breaks, without a hyphen */
h1,h2{overflow-wrap:break-word;hyphens:manual}
/* Start Here on a phone: thirteen links in one column ran past the screen,
   so they sit two to a row as compact tiles, and About This Site keeps its
   own row under the rule */
@media (max-width:700px){
  .start .menu .ql{display:grid;grid-template-columns:1fr 1fr;gap:.3rem}
  .start .menu .ql a{padding:.5rem .6rem;font-size:.84rem;line-height:1.25;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;min-height:2.75rem}
  .start .menu .about a{padding:.5rem .6rem;font-size:.84rem}
}

/* The dates of a state's revision as calendar files, and the form asking for
   one email when its final roll is published (build_site.py, dates_block). */
.rollcal{margin:2rem 0 1rem;padding:1rem 0 .4rem;border-top:2px solid var(--line)}
.rollcal .dlh{font-size:1.05rem;margin:0 0 .6rem}
.rollcal-links{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.calstates{display:flex;flex-wrap:wrap;gap:.35rem .9rem;font-size:.9rem}
.alertform{margin-top:1.2rem;padding:1rem;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.alertform h3{font-size:1rem;margin:0 0 .5rem}
.alertform select,.cmpick select{width:100%;max-width:24rem;font:inherit;padding:.55rem .6rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
@media print{.rollcal,.embedbox,details.cite{display:none}}

/* The code to embed a place's chart on another site (embed_block). */
.embedbox{margin:1rem 0;max-width:var(--measure)}
.embedbox>summary{display:inline-flex;cursor:pointer;list-style:none}
.embedbox>summary::-webkit-details-marker{display:none}
.embedcode{display:block;width:100%;box-sizing:border-box;font:.85rem/1.4 var(--mono);padding:.6rem;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);resize:vertical;margin:.5rem 0}
.embedacts{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}

/* "Cite this page", above the footer on every page (cite_block). */
details.cite{max-width:var(--page);margin:1.5rem auto 0;padding:0 1rem;font-size:.9rem}
details.cite>summary{cursor:pointer;color:var(--muted);font-weight:600}
details.cite .citetext{margin:.5rem 0;padding:.6rem .8rem;border-inline-start:3px solid var(--line);background:var(--card);overflow-wrap:anywhere}

/* A chart alone, for another site's frame (/embed/, embed_shell). */
body.embed{background:var(--card)}
body.embed .embedmain{max-width:none;margin:0;padding:.75rem 1rem 1rem}
body.embed .emh{font-size:1.1rem;margin:0 0 .25rem}
body.embed .emsub{margin:0 0 .5rem;color:var(--muted);font-size:.9rem}
body.embed .emsrc{margin:.5rem 0 0;color:var(--muted);font-size:.85rem}

/* Comparing constituencies within one state (india/compare-seats/). */
.cmpick{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.2rem 1rem;max-width:var(--page)}
.cmpick p{margin:0 0 .7rem}
.cmpick label{display:block;font-size:.92rem;font-weight:600;margin-bottom:.3rem}
#tCmp th[scope=row]{text-align:start;font-weight:600}
#tCmp td,#tCmp thead th{text-align:end}

/* A seat page on one A4 page (seat.js, "Print this seat"): the summary, the
   seat against its district and state, the margin and the sources. */
.printonly{display:none}
@media print{
  body.brief .printonly{display:inline}
  body.brief #sReasons,body.brief #sWomen,body.brief #sAfter,body.brief #sPress,body.brief .page-faq,body.brief .seatlinks,
  body.brief .report-lang,body.brief #dLinks,body.brief .limits,body.brief .pageshare,body.brief footer,body.brief .tools,body.brief .i18n-note{display:none!important}
  body.brief article.seat h2:nth-of-type(2),body.brief article.seat h2:nth-of-type(2)+.grid{display:none}
  :root:has(body.brief){font-size:12px}
  body.brief{font-size:9.5pt;line-height:1.35}
  body.brief main{padding:0;margin:0}
  body.brief main>.note{display:none}
  body.brief .page-head{padding:0;margin:0 0 .3rem}
  body.brief h1{font-size:15pt}
  body.brief h2{font-size:11pt;margin:.45rem 0 .15rem}
  body.brief ol.summary{margin:.15rem 0;font-size:9.5pt}
  body.brief ol.summary li{padding:.2rem 0;padding-inline-start:1.6rem}
  body.brief ol.summary li::before{font-size:11pt;top:.15rem}
  body.brief article.seat>p{margin:.2rem 0;font-size:8.5pt}
  body.brief .grid{margin:.15rem 0;gap:0}
  body.brief .panel{padding:.3rem .5rem;border-radius:6px}
  body.brief .vizbox svg{max-height:52mm;width:auto;max-width:100%}
  body.brief .finding{margin:.15rem 0 .3rem;padding:0;font-size:9pt}
  body.brief #fSources{font-size:8.5pt;margin:.1rem 0}
}
/* What's new: the follow buttons sit in their own row, and each item's section name is its link */
.follow{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 .4rem}
.follow-note{font-size:.92rem;color:var(--muted)}
#updates li{margin:.45rem 0}
#updates .upd-sec,.digest .upd-sec{font-weight:600}
.digest{background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--fill-teal);border-radius:12px;padding:1rem 1.25rem;margin:1.25rem 0 1.5rem}
.digest-kicker{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.digest .digest-h,.digest h3{margin:.2rem 0 0}
.digest-sub{margin:.15rem 0 .5rem;color:var(--muted);font-size:.9rem}
.digest ul{margin:0;padding-inline-start:1.2rem}
.digest li{margin:.35rem 0}
.digest-past{margin-top:1rem}
.digest-past summary{cursor:pointer;font-weight:600}

/* whether the revision still takes claims in a state, on the reader's date
   (sir.js): under the head of every state's overview, and on the help page */
.owin{display:block;background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--fill-navy);border-radius:10px;padding:.75rem 1rem;margin:0 0 1.2rem;max-width:var(--measure);overflow-wrap:anywhere}
.owin.open{border-inline-start-color:var(--fill-teal)}
.owin[hidden],.owin-all[hidden]{display:none}
.owin p{margin:.3rem 0}
.owin .owin-t{font-weight:700;margin-top:0}
.owin .owin-src{font-size:.85rem;color:var(--muted)}
.owin .owin-src span{font-weight:600;margin-inline-end:.35rem}
.owin-all{margin:1rem 0 1.6rem}
.owin-all .owin-t{font-weight:700;margin:1rem 0 .3rem}
.owin-pick label{font-weight:600;margin-inline-end:.4rem}
.owin-pick select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.3rem .5rem;max-width:100%}
