/* 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:#1c2833;--muted:#4d5b69;--navy:#1f618d;--red:#b03a2e;--amber:#8a6100;
  --line:#e1e5e8;--bg:#ffffff;--soft:#f4f6f7;--card:#ffffff;
  --nda:#b85a10;--india:#1e7a45;--other:#6b5b95;--female:#8e3b6d;--male:#1f618d;
  --tab:#4f5f6e;--tab-on:#b03a2e;--grad-a:#b03a2e;--grad-b:#b85a10;
  --shadow:rgba(0,0,0,.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:#eaecee;--muted:#b7c0c9;--navy:#8ec1e6;--red:#f5a79e;--amber:#e7c35a;
  --line:#2e3b55;--bg:#111827;--soft:#172033;--card:#1b2740;
  --nda:#f4a45c;--india:#6fcf97;--other:#b7a8e0;--female:#e59bc8;--male:#8ec1e6;
  --tab:#a9b4c0;--tab-on:#f5a79e;--grad-a:#f5a79e;--grad-b:#f8c471;
  --shadow:rgba(0,0,0,.35);
}}
:root[data-theme="dark"]{
  --ink:#eaecee;--muted:#b7c0c9;--navy:#8ec1e6;--red:#f5a79e;--amber:#e7c35a;
  --line:#2e3b55;--bg:#111827;--soft:#172033;--card:#1b2740;
  --nda:#f4a45c;--india:#6fcf97;--other:#b7a8e0;--female:#e59bc8;--male:#8ec1e6;
  --tab:#a9b4c0;--tab-on:#f5a79e;--grad-a:#f5a79e;--grad-b:#f8c471;
  --shadow:rgba(0,0,0,.35);
}
*{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}
/* 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}
@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}
.header-content{max-width:var(--page);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[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)}
.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}
