@font-face{font-family:'Rubik';src:url(../fonts/rubik-300_700.woff2) format('woff2');font-weight:300 700;font-display:swap;}
@font-face{font-family:'Rajdhani';src:url(../fonts/rajdhani-600.woff2) format('woff2');font-weight:600;font-display:swap;}
@font-face{font-family:'Rajdhani';src:url(../fonts/rajdhani-700.woff2) format('woff2');font-weight:700;font-display:swap;}

:root{
  --v-violet:#7A2A8F; --v-indigo:#33307E; --v-blue:#2B95D6; --v-green:#8FAE12;
  --v-yellow:#E0A800; --v-orange:#EE7C24; --v-red:#DE1F26;
  /* Brand palette lifted from vibgyorenergy.com so both properties read as one
     company. --primary/--secondary/--accent-lime/--brand-red/--brand-blue are the
     live site's own values, unchanged. */
  --ink:#163300;                        /* --primary-color   */
  --brand-blue:#278CCC;                 /* live --btn / accent blue */
  --brand-red:#DA1023;                  /* live red, 4% darker so it clears AA on --bg-sunk */
  --brand-red-pure:#E31124;             /* the untouched live value, for fills and rules */
  --accent-lime:#89EA5F;                /* live --accent-color */
  --bg:#FFFFFF; --bg-alt:#F8FBF5; --bg-sunk:#EFF1ED;   /* --secondary-color */
  --overlay:rgba(22,51,0,.65);          /* live --overlay-color */
  --text:#172013; --muted:#55604E; --faint:#666F61;
  --line:#DCE3D6; --line-soft:#E9EFE4;
  /* --brand-blue is only 3.68:1 on white, so anything carrying text uses --action:
     the same hue at -18% lightness, which clears 4.5:1 on all three light grounds. */
  --action:#2073A7; --action-hover:#1C6695; --on-action:#FFFFFF;
  --accent:#278CCC; --head:#163300;
  --card:#FFFFFF;
  --shadow:0 1px 2px rgba(22,51,0,.05),0 8px 24px -12px rgba(22,51,0,.20);
  --maxw:1180px;
  /* The live site's component language: 30px on cards, a 70px blue badge at 20px
     radius for every icon, and soft shadows instead of hairline borders. */
  --r-card:30px; --r-badge:20px; --r-tile:16px;
  --badge:#278CCC; --badge-soft:#E8F3FB;
  --lift:0 4px 24px rgba(22,51,0,.07);
  --lift-hi:0 14px 40px rgba(22,51,0,.13);
  --f-display:'Rajdhani',system-ui,sans-serif;
  --f-body:'Rubik',system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0D1210; --bg-alt:#141A16; --bg-sunk:#1B231D;
    --text:#E8EDE6; --muted:#A3AC9F; --faint:#848F81;
    --line:#2A332B; --line-soft:#212A23;
    --action:#4FA8DC; --action-hover:#7CC1E8; --on-action:#08131C;
    --accent:#4FA8DC; --head:#E8EDE6;
    --card:#141A16;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px -14px rgba(0,0,0,.7);
    --v-green:#A9C81C; --v-yellow:#FBC10D; --v-violet:#A45BB8; --v-indigo:#5D59C4;
    /* #E31124 falls to 3.96:1 on this ground, so the eyebrow red lifts for dark */
    --brand-red:#FF6E6E; --brand-red-pure:#FF6E6E; --accent-lime:#89EA5F; --brand-blue:#4FA8DC;
    --badge:#2F86C4; --badge-soft:#16232D;
    --lift:0 4px 24px rgba(0,0,0,.45); --lift-hi:0 14px 40px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  --bg:#0D1210; --bg-alt:#141A16; --bg-sunk:#1B231D;
  --text:#E8EDE6; --muted:#A3AC9F; --faint:#848F81;
  --line:#2A332B; --line-soft:#212A23;
  --action:#4FA8DC; --action-hover:#7CC1E8; --on-action:#08131C;
  --accent:#4FA8DC; --head:#E8EDE6;
  --card:#141A16;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px -14px rgba(0,0,0,.7);
  --v-green:#A9C81C; --v-yellow:#FBC10D; --v-violet:#A45BB8; --v-indigo:#5D59C4;
  /* #E31124 falls to 3.96:1 on this ground, so the eyebrow red lifts for dark */
  --brand-red:#FF6E6E; --brand-red-pure:#FF6E6E; --accent-lime:#89EA5F; --brand-blue:#4FA8DC;
  --badge:#2F86C4; --badge-soft:#16232D;
  --lift:0 4px 24px rgba(0,0,0,.45); --lift-hi:0 14px 40px rgba(0,0,0,.6);
}
:root[data-theme="light"]{
  --bg:#FFFFFF; --bg-alt:#F8FBF5; --bg-sunk:#EFF1ED;
  --text:#172013; --muted:#55604E; --faint:#666F61;
  --line:#DCE3D6; --line-soft:#E9EFE4;
  --action:#2073A7; --action-hover:#1C6695; --on-action:#FFFFFF;
  --accent:#278CCC; --head:#163300;
  --brand-red:#DA1023; --brand-red-pure:#E31124; --accent-lime:#89EA5F; --brand-blue:#278CCC;
  --badge:#278CCC; --badge-soft:#E8F3FB;
  --lift:0 4px 24px rgba(22,51,0,.07); --lift-hi:0 14px 40px rgba(22,51,0,.13);
  --card:#FFFFFF;
  --shadow:0 1px 2px rgba(16,19,24,.05),0 8px 24px -12px rgba(16,19,24,.18);
  --v-violet:#7A2A8F; --v-indigo:#33307E; --v-green:#8FAE12; --v-yellow:#E0A800;
}

*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--f-body);
  font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased;}
h1,h2,h3,h4{font-family:var(--f-display);font-weight:700;letter-spacing:0;line-height:1.14;text-wrap:balance;margin:0;color:var(--head,var(--text));}
p{margin:0;} a{color:inherit;}
/* height:auto keeps the width/height attributes as an aspect hint (no layout
   shift) without ever pinning a stretched pixel height */
img{max-width:100%;display:block;height:auto;}
.tnum{font-variant-numeric:tabular-nums;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.eyebrow{font-family:var(--f-display);font-size:14px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--brand-red);display:flex;align-items:center;gap:10px;}
.eyebrow::before{content:"";width:22px;height:3px;border-radius:2px;background:var(--sec,var(--brand-red-pure));flex:none;}

.spectrum{height:3px;display:flex;width:100%;}
.spectrum i{flex:1;}
.spectrum i:nth-child(1){background:var(--v-violet);} .spectrum i:nth-child(2){background:var(--v-indigo);}
.spectrum i:nth-child(3){background:var(--v-blue);} .spectrum i:nth-child(4){background:var(--v-green);}
.spectrum i:nth-child(5){background:var(--v-yellow);} .spectrum i:nth-child(6){background:var(--v-orange);}
.spectrum i:nth-child(7){background:var(--v-red);}

/* nav */
.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 90%,transparent);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line-soft);}
.nav-in{max-width:var(--maxw);margin:0 auto;padding:15px 28px;display:flex;align-items:center;gap:24px;}
.logo{display:block;flex:none;width:130px;height:34px;
  background:url(../img/logo.png) no-repeat left center;background-size:contain;}
.logo-f{width:150px;height:40px;}
@media (prefers-color-scheme:dark){.logo{background-image:url(../img/logo-dark.png);}}
:root[data-theme="dark"] .logo{background-image:url(../img/logo-dark.png);}
:root[data-theme="light"] .logo{background-image:url(../img/logo.png);}
.nav-links{display:flex;gap:20px;margin-left:auto;font-size:14px;font-weight:500;color:var(--muted);flex-wrap:wrap;}
.nav-links a{text-decoration:none;transition:color .15s;white-space:nowrap;position:relative;}
.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:-5px;height:2px;
  border-radius:1px;background:var(--action);transition:right .22s cubic-bezier(.2,.7,.3,1);}
.nav-links a:hover{color:var(--text);}
.nav-links a:hover::after,.nav-links a.on::after{right:0;}
.btn{display:inline-flex;align-items:center;gap:9px;border:0;cursor:pointer;
  font-family:var(--f-body);font-size:15.5px;font-weight:500;padding:13px 28px;border-radius:30px;
  text-decoration:none;transition:background .16s,border-color .16s,color .16s;}
.btn-primary{background:var(--action);color:var(--on-action);box-shadow:0 6px 18px -8px rgba(32,115,167,.55);}
.btn-primary:hover{background:var(--action-hover);}
.btn-ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.34);}
.btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.08);}
.btn-line{background:transparent;color:var(--text);border:1px solid var(--line);}
.btn-line:hover{border-color:var(--action);color:var(--action);}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,
button:focus-visible,summary:focus-visible{outline:2px solid var(--action);outline-offset:2px;}

/* hero */
.hero{position:relative;background:#0E100F;color:#fff;overflow:hidden;}
/* Daylight hero: the photograph carries the frame, and the scrim is the brand's
   deep green rather than black -- heavy only where the headline needs it. */
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.88;}
.hero-veil{position:absolute;inset:0;background:
  linear-gradient(to top,rgba(12,14,13,.88) 0%,rgba(12,14,13,0) 34%),
  linear-gradient(100deg,rgba(12,14,13,.93) 2%,rgba(12,14,13,.72) 40%,rgba(12,14,13,.38) 62%,rgba(12,14,13,.14) 82%,rgba(12,14,13,.28) 100%);}
.hero-in{position:relative;max-width:var(--maxw);margin:0 auto;padding:92px 28px 0;}
.hero h1{font-size:clamp(2.7rem,5.8vw,4.7rem);letter-spacing:-.01em;line-height:1.02;max-width:15ch;color:#fff;}
.hero h1 em{font-style:normal;color:var(--accent-lime);}
.hero-tag{font-family:var(--f-body);font-size:13px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:var(--accent-lime);margin-bottom:20px;display:flex;
  align-items:center;gap:12px;}
.hero-tag::before{content:"";width:26px;height:3px;border-radius:2px;flex:none;
  background:linear-gradient(90deg,var(--v-violet),var(--v-blue),var(--accent-lime));}
.f-tag{font-family:var(--f-body);font-size:12.5px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--accent-lime);margin-top:16px;}
.hero-sub{margin-top:22px;max-width:56ch;font-size:clamp(1.02rem,1.5vw,1.19rem);color:#DCE0DE;line-height:1.6;}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px;}
.hero-note{margin-top:16px;font-size:13.5px;color:#C7CDC9;max-width:62ch;}
.hero-badges{display:flex;flex-wrap:wrap;gap:9px;margin-top:44px;}
.badge{font-size:12px;font-weight:600;letter-spacing:.055em;text-transform:uppercase;
  border:1px solid rgba(255,255,255,.22);color:#DCE0DE;padding:6px 13px;border-radius:999px;}
.rail{position:relative;margin-top:70px;border-top:1px solid rgba(255,255,255,.16);
  display:grid;grid-template-columns:repeat(6,1fr);}
.rail div{padding:22px 18px 26px;border-right:1px solid rgba(255,255,255,.1);}
.rail div:last-child{border-right:0;}
.rail b{display:block;font-family:var(--f-display);font-weight:700;font-size:clamp(1.5rem,2.5vw,2.05rem);
  letter-spacing:-.03em;color:#fff;}
.rail span{display:block;margin-top:4px;font-size:12.5px;color:#B2BAB5;line-height:1.4;}

section{padding:clamp(76px,8vw,110px) 0;}
.sec-head{max-width:70ch;}
.sec-head h2{font-size:clamp(2.05rem,3.9vw,3rem);margin-top:18px;line-height:1.08;}
.sec-head p{margin-top:18px;color:var(--muted);font-size:1.08rem;line-height:1.7;max-width:62ch;}
.alt{background:var(--bg-alt);}

/* problem */
.prob{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.prob > div{background:var(--card);padding:28px 24px;border-radius:var(--r-badge);box-shadow:var(--lift);}
.prob b{font-family:var(--f-display);font-size:1.7rem;font-weight:800;letter-spacing:-.03em;display:block;}
.prob p{margin-top:10px;color:var(--muted);font-size:14.5px;}

/* offerings */
.offers{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.offer{background:var(--card);padding:26px 24px;display:flex;flex-direction:column;
  border-radius:var(--r-badge);box-shadow:var(--lift);}
.offer .n{font-family:var(--f-display);font-size:11.5px;font-weight:800;letter-spacing:.12em;color:var(--sec);}
.offer h3{font-size:1.06rem;margin-top:10px;}
.offer p{margin-top:10px;font-size:14px;color:var(--muted);}
.offer ul{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:7px;}
.offer li{font-size:13.5px;color:var(--muted);padding-left:16px;position:relative;line-height:1.5;}
.offer li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;
  background:var(--sec);opacity:.6;}
.offer .stat{margin-top:auto;padding-top:16px;font-family:var(--f-display);font-weight:800;
  font-size:1rem;letter-spacing:-.02em;color:var(--text);}
.newbadge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  background:var(--v-green);color:#0D1014;padding:2px 7px;border-radius:2px;margin-left:8px;vertical-align:2px;}

/* models */
.models{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:40px;}
.model{border-radius:var(--r-badge);box-shadow:var(--lift);background:var(--card);padding:26px 22px 24px;
  display:flex;flex-direction:column;position:relative;overflow:hidden;
  transition:transform .22s ease,box-shadow .22s ease;}
.model:hover{transform:translateY(-4px);box-shadow:var(--lift-hi);}
.model::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--sec);}
.model h3{font-size:1.05rem;}
.model .tag{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);margin-bottom:9px;}
.model ul{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:9px;}
.model li{font-size:14px;color:var(--muted);padding-left:17px;position:relative;line-height:1.5;}
.model li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;
  background:var(--sec);opacity:.55;}
.model .rec{margin-top:auto;padding-top:16px;font-size:11.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--action);}

/* cases */
.cases{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:40px;}
.case{background:var(--card);border-radius:var(--r-badge);padding:24px 22px;
  box-shadow:var(--lift);display:flex;flex-direction:column;
  transition:transform .22s ease,box-shadow .22s ease;}
.case:hover{transform:translateY(-4px);box-shadow:var(--lift-hi);}
.case-top{border-left:3px solid var(--sec);padding-left:13px;}
.case h3{font-size:1.05rem;letter-spacing:-.015em;}
.case .meta{font-size:12px;color:var(--faint);margin-top:5px;font-weight:500;}
.figs{margin-top:20px;display:grid;gap:12px;}
.fig{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  border-bottom:1px dotted var(--line);padding-bottom:8px;}
.fig span{font-size:12.5px;color:var(--muted);}
.fig b{font-family:var(--f-display);font-weight:700;font-size:1.1rem;letter-spacing:-.02em;}
.case-note{margin-top:auto;padding-top:16px;font-size:12px;color:var(--faint);line-height:1.5;}

/* project table */
table{border-collapse:collapse;width:100%;font-size:14.5px;}
thead th{position:sticky;top:0;background:var(--bg-sunk);text-align:left;font-family:var(--f-body);
  font-size:11.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer;white-space:nowrap;user-select:none;}
thead th:hover{color:var(--action);}
thead th .ar{opacity:.4;font-size:10px;}
tbody td{padding:11px 16px;border-bottom:1px solid var(--line-soft);}
tbody tr:last-child td{border-bottom:0;}
tbody tr:hover{background:var(--bg-alt);}
td.cap{font-variant-numeric:tabular-nums;font-weight:600;text-align:right;white-space:nowrap;}
td.loc{color:var(--muted);}
.psum{margin-top:14px;font-size:13px;color:var(--faint);}

/* story */
.story{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:start;margin-top:40px;}
.quote{border-left:3px solid var(--v-orange);padding:4px 0 4px 22px;margin-top:24px;}
.quote p{font-family:var(--f-display);font-weight:700;font-size:1.2rem;line-height:1.36;letter-spacing:-.018em;}
.quote cite{display:block;margin-top:12px;font-style:normal;font-size:13px;color:var(--faint);}
.bignums{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.bignums div{background:var(--card);padding:20px 18px;border-radius:14px;box-shadow:var(--lift);}
.bignums b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.6rem;letter-spacing:-.03em;}
.bignums span{display:block;margin-top:4px;font-size:12.5px;color:var(--muted);line-height:1.4;}

/* global presence */
.geo{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:40px;}
.geo div{background:var(--card);padding:22px 20px;border-radius:14px;box-shadow:var(--lift);}
.geo b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.05rem;letter-spacing:-.02em;}
.geo span{display:block;margin-top:7px;font-size:13px;color:var(--muted);line-height:1.5;}

/* impact */
.impact{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:40px;}
.imp{border-radius:var(--r-badge);box-shadow:var(--lift);padding:24px 20px;background:var(--card);}
.imp b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.8rem;letter-spacing:-.03em;color:var(--sec);}
.imp span{display:block;margin-top:6px;font-size:13.5px;color:var(--muted);}

/* proof */
.proof{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;margin-top:40px;}
.proof figure{margin:0;}
.proof img{border-radius:var(--r-tile);box-shadow:var(--lift);}
.proof figcaption{margin-top:11px;font-size:12.5px;color:var(--faint);}
.iso{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px;}
.iso span{font-size:12px;font-weight:600;letter-spacing:.05em;border:1px solid var(--line);
  padding:7px 12px;border-radius:2px;color:var(--muted);}
.awards{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:10px;}
.awards li{font-size:14.5px;color:var(--muted);padding-left:20px;position:relative;}
.awards li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:2px;background:var(--accent-lime);}

/* team */
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px;}
.person{border-radius:var(--r-badge);box-shadow:var(--lift);padding:22px 20px;background:var(--card);}
.person .role{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);}
.person h3{font-size:1.05rem;margin-top:8px;}
.person p{margin-top:9px;font-size:13.5px;color:var(--muted);}
.bench{margin-top:20px;border:1px solid var(--line);border-radius:var(--r-tile);overflow:hidden;}
.bench table{min-width:520px;}

/* values */
.vals{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px;}
.vals div{background:var(--card);padding:24px 22px;border-radius:var(--r-badge);box-shadow:var(--lift);}
.vals b{font-family:var(--f-display);font-size:1.02rem;font-weight:800;display:block;letter-spacing:-.015em;}
.vals p{margin-top:9px;font-size:13.5px;color:var(--muted);}
.mv{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:36px;}
.mv div{border-left:3px solid var(--sec);border-radius:0 16px 16px 0;box-shadow:var(--lift);padding:24px 24px;background:var(--card);}
.mv h3{font-size:1.05rem;} .mv p{margin-top:11px;color:var(--muted);font-size:14.5px;}

/* steps */
.steps{display:grid;grid-template-columns:repeat(6,1fr);margin-top:40px;border-top:1px solid var(--line);}
.step{padding:24px 18px 0;border-right:1px solid var(--line-soft);position:relative;}
.step:last-child{border-right:0;}
.step::before{content:"";position:absolute;top:-1px;left:0;width:100%;height:3px;background:var(--sec);}
.step .n{font-family:var(--f-display);font-weight:800;font-size:1.45rem;letter-spacing:-.03em;color:var(--sec);}
.step h3{font-size:.96rem;margin-top:8px;}
.step p{margin-top:8px;font-size:13.5px;color:var(--muted);}

/* faq */
.faqgrid{margin-top:36px;display:grid;grid-template-columns:1fr 1fr;gap:0 40px;align-items:start;}
details{border-bottom:1px solid var(--line);}
summary{cursor:pointer;padding:16px 10px;margin:0 -10px;border-radius:10px;
  font-family:var(--f-display);font-weight:700;font-size:1.02rem;
  letter-spacing:0;list-style:none;display:flex;gap:14px;align-items:flex-start;
  transition:background .15s;}
summary:hover{background:var(--bg-sunk);}
summary::-webkit-details-marker{display:none;}
summary::before{content:"+";font-family:var(--f-body);font-weight:600;color:var(--sec);flex:none;
  font-size:1.15rem;line-height:1.3;width:14px;}
details[open] summary::before{content:"\2212";}
details p{padding:0 0 18px 28px;font-size:14.5px;color:var(--muted);}
.faqcat{font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);margin:26px 0 4px;}
.faqcat:first-child{margin-top:0;}

/* media */
.press{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px;}
.art{border-radius:var(--r-badge);box-shadow:var(--lift);padding:22px 20px;background:var(--card);
  display:flex;flex-direction:column;text-decoration:none;transition:border-color .16s;}
.art:hover{border-color:var(--action);}
.art .src{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sec);}
.art h3{font-size:1rem;margin-top:10px;line-height:1.24;}
.art time{margin-top:auto;padding-top:14px;font-size:12.5px;color:var(--faint);}

/* two-col blocks */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start;margin-top:40px;}
.panel{border-radius:var(--r-badge);padding:28px;background:var(--card);box-shadow:var(--lift);}
.panel h3{font-size:1.15rem;} .panel p{margin-top:12px;color:var(--muted);font-size:14.5px;}

/* forms */
/* the contact band is the brand green in every theme -- ink resolves near-black
   in dark mode, so pin the actual brand value */
.cta{background:#163300;color:#fff;}
.cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
.cta h2{font-size:clamp(1.85rem,3.3vw,2.5rem);color:#fff;}
.cta .sec-head p{color:#C7CDC9;} .cta .eyebrow{color:#A3ADA7;}
.contact-list{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:15px;font-size:15px;color:#DCE0DE;}
.contact-list a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3);}
.contact-list a:hover{border-color:var(--accent-lime);color:var(--accent-lime);}
.contact-list strong{display:block;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;
  color:#7F8798;font-weight:600;margin-bottom:3px;}
form{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.13);border-radius:var(--r-badge);padding:26px;}
.formlight{background:var(--card);border:1px solid var(--line);}
.field{margin-bottom:14px;}
label{display:block;font-size:12px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  color:#B2BAB5;margin-bottom:6px;}
.formlight label{color:var(--faint);}
input,select,textarea{width:100%;font-family:var(--f-body);font-size:15px;color:#fff;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);border-radius:12px;
  padding:11px 13px;transition:border-color .15s;}
.formlight input,.formlight select,.formlight textarea{color:var(--text);background:var(--bg);border-color:var(--line);}
input:focus,select:focus,textarea:focus{border-color:var(--accent-lime);}
.formlight input:focus,.formlight select:focus,.formlight textarea:focus{border-color:var(--action);}
select option{background:#171A21;color:#fff;}
.formlight select option{background:var(--bg);color:var(--text);}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
form .btn-primary{width:100%;justify-content:center;margin-top:6px;padding:13px;}
.form-note{margin-top:12px;font-size:12.5px;color:#7F8798;line-height:1.5;}
.formlight .form-note{color:var(--faint);}
.form-ok{display:none;padding:15px;border:1px solid var(--v-green);border-radius:12px;
  background:rgba(143,174,18,.1);color:var(--v-green);font-size:14px;margin-top:14px;}
.form-ok.on{display:block;}

/* The footer is the closing brand block: deep Vibgyor green under the spectrum
   strip, in every theme -- the same move the live site makes. */
footer{background:#163300;color:#C7CDC9;padding:0 0 30px;font-size:14px;}
footer > .wrap{padding-top:56px;}
.f-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:34px;}
.f-grid h2{font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:#A3ADA7;
  font-weight:600;font-family:var(--f-body);margin-bottom:13px;}
.f-grid ul{list-style:none;padding:0;margin:0;display:grid;gap:9px;}
.f-grid a{color:#C7CDC9;text-decoration:none;transition:color .15s;}
.f-grid a:hover{color:var(--accent-lime);}
.f-about{color:#C7CDC9;font-size:14px;max-width:38ch;margin-top:14px;}
.f-bot{margin-top:38px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);
  display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;color:#A3ADA7;font-size:12.5px;}
/* the footer logo needs the light lockup on this ground, in light theme too */
footer .logo{background-image:url(../img/logo-dark.png)!important;}
.f-bot a{color:#C7CDC9;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.22);}
.f-bot a:hover{color:var(--accent-lime);border-color:var(--accent-lime);}


/* ---------- skip link ---------- */
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--action);color:var(--on-action);
  padding:10px 16px;border-radius:0 0 3px 0;font-size:14px;font-weight:600;text-decoration:none;}
.skip:focus{left:0;}

/* ---------- mobile nav ---------- */
.navtoggle{display:none;margin-left:auto;background:transparent;border:1px solid var(--line);
  border-radius:12px;padding:9px 11px;cursor:pointer;color:var(--text);align-items:center;gap:8px;
  font-family:var(--f-body);font-size:13.5px;font-weight:600;}
.navtoggle .ico{display:block;width:16px;height:11px;position:relative;}
.navtoggle .ico i{position:absolute;left:0;width:100%;height:2px;background:currentColor;border-radius:1px;
  transition:transform .22s ease,opacity .18s ease;}
.navtoggle .ico i:nth-child(1){top:0;}
.navtoggle .ico i:nth-child(2){top:4.5px;}
.navtoggle .ico i:nth-child(3){top:9px;}
.navtoggle[aria-expanded="true"] .ico i:nth-child(1){transform:translateY(4.5px) rotate(45deg);}
.navtoggle[aria-expanded="true"] .ico i:nth-child(2){opacity:0;}
.navtoggle[aria-expanded="true"] .ico i:nth-child(3){transform:translateY(-4.5px) rotate(-45deg);}
.mobnav{display:none;border-top:1px solid var(--line-soft);background:var(--bg);}
/* 24 pages overflow a phone screen; let the menu scroll rather than
   hiding the last entries below the fold with no way to reach them. */
.mobnav.open{max-height:calc(100vh - 62px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
.mobnav.open{display:block;}
.mobnav ul{list-style:none;margin:0;padding:8px 28px 18px;display:grid;gap:2px;}
.mobnav a{display:block;padding:12px 14px;margin:0 -14px;border-radius:12px;
  text-decoration:none;color:var(--muted);font-size:15.5px;font-weight:500;
  transition:background .15s,color .15s;}
.mobnav a:hover,.mobnav a:focus-visible{color:var(--action);background:var(--bg-sunk);}
.mobnav .cta-m{margin-top:14px;}
.mobnav .cta-m a{display:flex;justify-content:center;background:var(--action);color:var(--on-action);
  border:0;border-radius:30px;font-weight:600;padding:13px 26px;}

/* ---------- back to top ---------- */
.totop{position:fixed;right:20px;bottom:20px;z-index:60;width:44px;height:44px;border-radius:50%;
  background:var(--action);color:var(--on-action);border:0;cursor:pointer;display:flex;
  align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.24);
  opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease;transform:translateY(8px);}
.totop.on{opacity:1;pointer-events:auto;transform:none;}
.totop:hover{background:var(--action-hover);}
.totop svg{width:17px;height:17px;}

/* ---------- why vibgyor ---------- */
.why{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:40px;}
.why > div{background:var(--card);padding:28px 26px;border-radius:var(--r-badge);
  box-shadow:var(--lift);}
.why h3{font-size:1.06rem;color:var(--head);}
.why p{margin-top:11px;font-size:14.5px;color:var(--muted);}
.why .vs{font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
  margin-bottom:9px;}

/* ---------- industries ---------- */
.inds{display:flex;flex-wrap:wrap;gap:10px;margin-top:36px;}
.ind{border:1px solid var(--line);border-radius:999px;padding:11px 18px;font-size:14.5px;color:var(--muted);
  background:var(--card);display:flex;align-items:center;gap:10px;}
.ind::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--sec);flex:none;}
.ind.core{border-color:var(--sec);color:var(--text);font-weight:600;}

/* ---------- settlement explainer ---------- */
.settle{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.reg{border-radius:var(--r-badge);box-shadow:var(--lift);background:var(--card);padding:24px 22px;
  display:flex;flex-direction:column;border-top:3px solid var(--sec);}
.reg h3{font-size:1.05rem;}
.formula{margin-top:16px;background:var(--bg-sunk);border-radius:12px;padding:13px 14px;
  font-family:var(--f-body);font-size:12.5px;font-weight:600;letter-spacing:.02em;color:var(--text);
  line-height:1.6;overflow-x:auto;white-space:nowrap;}
.reg p{margin-top:14px;font-size:14px;color:var(--muted);}
.reg .best{margin-top:auto;padding-top:14px;font-size:12px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--sec);}

/* ---------- monitoring ---------- */
.mon{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.mon > div{background:var(--card);padding:26px 24px;border-radius:var(--r-badge);box-shadow:var(--lift);}
.mon h3{font-size:1rem;color:var(--head);}
.mon ul{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px;}
.mon li{font-size:13.5px;color:var(--muted);padding-left:16px;position:relative;line-height:1.5;}
.mon li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;
  background:var(--sec);opacity:.55;}

/* ---------- client roster ---------- */
.roster{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px;}
.roster span{border-radius:16px;box-shadow:var(--lift);padding:14px 20px;background:var(--card);
  font-family:var(--f-display);font-weight:700;font-size:1rem;letter-spacing:-.015em;color:var(--text);}
.roster span em{display:block;font-style:normal;font-family:var(--f-body);font-size:11.5px;
  font-weight:500;letter-spacing:.04em;color:var(--faint);margin-top:3px;}

/* ---------- chart tokens (validated: see contrast run) ---------- */
:root{
  --c-bar:#1F72A8;        /* 4.70:1 on light alt surface */
  --c-neg:#C41A20;        /* 5.97:1 on white */
  --c-pos:#5E7A0C;        /* 4.92:1 on white, brand-green family */
  --c-grid:#DFE3EC;
  --c-axis:#8A91A1;
}
@media (prefers-color-scheme:dark){
  :root{--c-bar:#4FB0E8;--c-neg:#FF6B6B;--c-pos:#A9C81C;--c-grid:#252B36;--c-axis:#79808F;}
}
:root[data-theme="dark"]{--c-bar:#4FB0E8;--c-neg:#FF6B6B;--c-pos:#A9C81C;--c-grid:#252B36;--c-axis:#79808F;}
:root[data-theme="light"]{--c-bar:#1F72A8;--c-neg:#C41A20;--c-pos:#5E7A0C;--c-grid:#DFE3EC;--c-axis:#8A91A1;}

/* ---------- calculator ---------- */
.calc{display:grid;grid-template-columns:340px 1fr;gap:34px;margin-top:40px;align-items:start;}
.calc-in{border-radius:var(--r-badge);background:var(--card);padding:24px;box-shadow:var(--lift);}
.slider{margin-bottom:22px;}
.slider .lab{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px;}
.slider .lab span{font-size:12px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.slider .lab b{font-family:var(--f-display);font-weight:800;font-size:1.06rem;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;
  background:var(--bg-sunk);padding:0;border:0;outline-offset:6px;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;
  background:var(--action);cursor:pointer;border:3px solid var(--card);box-shadow:0 0 0 1px var(--line);}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--action);
  cursor:pointer;border:3px solid var(--card);box-shadow:0 0 0 1px var(--line);}
.slider .hint{margin-top:7px;font-size:12px;color:var(--faint);line-height:1.45;}

.calc-out{display:grid;gap:20px;}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.tile{background:var(--card);padding:20px 18px;border-radius:14px;box-shadow:var(--lift);}
.tile b{display:block;font-family:var(--f-display);font-weight:700;font-size:1.6rem;
  letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--text);}
.tile span{display:block;margin-top:5px;font-size:12.5px;color:var(--muted);line-height:1.4;}
/* the headline result spans the row on its own blue card */
.tile.hero{grid-column:1 / -1;background:var(--action);
  display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;padding:24px 24px 22px;
  box-shadow:0 10px 30px -10px rgba(32,115,167,.5);}
.tile.hero b{color:var(--on-action);font-size:clamp(2.2rem,4vw,2.9rem);}
.tile.hero span{color:var(--on-action);opacity:.82;font-size:14px;margin-top:0;}

.chartbox{border-radius:var(--r-badge);box-shadow:var(--lift);background:var(--card);padding:22px 20px 16px;}
.chart-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;
  margin-bottom:6px;}
.chart-head h3{font-size:1rem;}
.chart-key{display:flex;gap:16px;font-size:12px;color:var(--muted);}
.chart-key i{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:6px;vertical-align:-1px;}
.cf-svg{width:100%;height:230px;display:block;overflow:visible;}
.cf-svg text{font-family:var(--f-body);font-size:11px;fill:var(--faint);font-variant-numeric:tabular-nums;}
.cf-grid{stroke:var(--c-grid);stroke-width:1;}
.cf-zero{stroke:var(--c-axis);stroke-width:1.5;stroke-dasharray:4 3;}
.cf-line{fill:none;stroke-width:2;}
.cf-dot{r:5;stroke:var(--card);stroke-width:2;}
.cf-hit{fill:transparent;cursor:crosshair;}
.cf-tip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;font-size:12.5px;
  padding:8px 11px;border-radius:10px;white-space:nowrap;opacity:0;transition:opacity .12s;
  font-variant-numeric:tabular-nums;z-index:5;box-shadow:0 4px 14px rgba(0,0,0,.28);}
.cf-tip.on{opacity:1;}
.cf-wrap{position:relative;}
.disc{margin-top:14px;font-size:12px;color:var(--faint);line-height:1.55;}

/* ---------- state bar chart ---------- */
.bars{margin-top:26px;display:grid;gap:9px;}
.bar{display:grid;grid-template-columns:132px 1fr 92px;gap:14px;align-items:center;}
.bar .nm{font-size:13.5px;color:var(--muted);text-align:right;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;}
.bar .track{background:var(--bg-sunk);border-radius:2px;height:17px;position:relative;overflow:hidden;}
.bar .track{display:flex;}
.bar .fill{height:100%;background:var(--c-bar);border-radius:0 3px 3px 0;transition:width .5s ease;}
/* under-construction segment: same hue, hatched, so commissioned stays the solid claim */
.bar .fill-b{border-radius:0 3px 3px 0;opacity:.55;
  background:repeating-linear-gradient(135deg,var(--c-bar) 0 5px,transparent 5px 9px);}
.bar .val em{display:block;font-style:normal;font-weight:500;font-size:11px;color:var(--faint);line-height:1.25;}
.bar .val{font-size:13px;font-variant-numeric:tabular-nums;color:var(--text);font-weight:600;}
.bar:hover .fill{filter:brightness(1.12);}
.bar .track[title]{cursor:help;}

/* ---------- timeline ---------- */
/* Vertical timeline: a spine running through the brand spectrum, one card per
   era. The gradient order matches the per-item accents deliberately. */
.tl{margin-top:44px;position:relative;display:grid;gap:22px;max-width:720px;}
.tl::before{content:"";position:absolute;left:9px;top:10px;bottom:10px;width:3px;border-radius:2px;
  background:linear-gradient(180deg,var(--v-violet),var(--v-blue),var(--v-green),var(--v-orange),var(--v-red));}
.tl-i{position:relative;margin-left:46px;background:var(--card);
  border-radius:var(--r-badge);box-shadow:var(--lift);padding:22px 26px 22px;}
.tl-i::before{content:"";position:absolute;top:28px;left:-43px;width:13px;height:13px;border-radius:50%;
  background:var(--sec);border:3px solid var(--bg);box-shadow:0 0 0 2px var(--sec);}
.tl-i .yr{font-family:var(--f-display);font-weight:700;font-size:1.5rem;line-height:1;color:var(--sec);}
.tl-i h3{font-size:1.08rem;margin-top:7px;}
.tl-i p{margin-top:9px;font-size:14px;line-height:1.6;color:var(--muted);max-width:56ch;}
@media(max-width:520px){.tl-i{margin-left:36px;padding:18px 18px;}
  .tl-i::before{left:-33px;}}

/* ---------- OA flow ---------- */
.flow{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:40px;}
.fstep{position:relative;padding:26px 30px 26px 0;}
.fstep:not(:last-child)::after{content:"";position:absolute;right:18px;top:34px;width:14px;height:14px;
  border-top:2px solid var(--line);border-right:2px solid var(--line);transform:rotate(45deg);}
.fstep .n{width:34px;height:34px;border-radius:50%;background:var(--sec);color:#fff;
  display:flex;align-items:center;justify-content:center;font-family:var(--f-display);font-weight:800;
  font-size:.95rem;margin-bottom:14px;}
.fstep h3{font-size:1.02rem;} .fstep p{margin-top:9px;font-size:14px;color:var(--muted);}

/* ---------- photo strip ---------- */
.photos{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:40px;}
.photos figure{margin:0;}
.photos img{border-radius:var(--r-tile);box-shadow:var(--lift);width:100%;
  aspect-ratio:4/5;object-fit:cover;}
.photos figcaption{margin-top:10px;font-size:12.5px;color:var(--faint);}

.proto{background:var(--v-indigo);color:#fff;font-size:13px;padding:9px 28px;text-align:center;}
.proto b{font-weight:700;}
/* reveal: hidden only when JS has announced itself, so content is never
   lost without scripts; .in plays the rise, both classes are shed after */
.js .rv{opacity:0;transform:translateY(18px);
  transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.3,1);}
.js .rv.in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){.js .rv{opacity:1;transform:none;transition:none;}*{animation:none!important;}}

/* ---------- capability grid (home preview) ---------- */
.verts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.vert{background:var(--card);padding:26px 24px;display:flex;flex-direction:column;
  border-radius:var(--r-badge);box-shadow:var(--lift);}
.vert .n{font-family:var(--f-display);font-size:11.5px;font-weight:800;letter-spacing:.12em;
  color:var(--sec);}
.vert h3{font-size:1.06rem;margin-top:10px;}
.vert p{margin-top:10px;font-size:14px;color:var(--muted);}
.vert .stat{margin-top:auto;padding-top:16px;font-family:var(--f-display);font-weight:800;
  font-size:1rem;letter-spacing:-.02em;color:var(--text);}

@media(max-width:1000px){
  .nav-links{display:none;}
  .navtoggle{display:flex;}
  .nav-in > .btn-primary{display:none;}
  .why,.settle,.mon{grid-template-columns:1fr 1fr;}
  .rail{grid-template-columns:repeat(3,1fr);}
  .rail div:nth-child(3){border-right:0;}
  .cases,.models,.impact{grid-template-columns:1fr 1fr;}
  .offers,.prob,.team,.press,.verts{grid-template-columns:1fr 1fr;}
  .vals,.geo{grid-template-columns:1fr 1fr;}
  .steps{grid-template-columns:repeat(3,1fr);}
  .story,.proof,.cta-grid,.duo,.faqgrid,.mv{grid-template-columns:1fr;gap:32px;}
  .faqgrid{gap:0;}
  .calc{grid-template-columns:1fr;gap:26px;}
  .tl{grid-template-columns:repeat(3,1fr);row-gap:26px;}
  .flow{grid-template-columns:1fr;}
  .fstep{padding-right:0;}
  .fstep:not(:last-child)::after{display:none;}
}
@media(max-width:620px){
  body{font-size:16px;} section{padding:56px 0;} .hero-in{padding-top:60px;}
  .rail{grid-template-columns:repeat(2,1fr);}
  .rail div{border-right:1px solid rgba(255,255,255,.1);}
  .rail div:nth-child(2n){border-right:0;}
  .cases,.models,.offers,.prob,.steps,.row2,.bignums,.f-grid,.team,.press,.vals,.geo,.impact,.verts{grid-template-columns:1fr;}
  .step{border-right:0;border-bottom:1px solid var(--line-soft);padding-bottom:20px;}
  .ptool input,.ptool select{min-width:0;width:100%;} .ptool{width:100%;} .pcount{margin-left:0;}
  .tiles{grid-template-columns:1fr 1fr;}
  .why,.settle,.mon{grid-template-columns:1fr;}
  .totop{right:14px;bottom:14px;}
  .tl{grid-template-columns:1fr;}
  .photos{grid-template-columns:1fr;}
  .bar{grid-template-columns:96px 1fr 62px;gap:9px;}
  .bar .nm{font-size:12.5px;} .bar .val{font-size:12px;}
}

/* ================= MULTI-PAGE SHELL ================= */
.brand{display:flex;align-items:center;flex:none;text-decoration:none;}
.nav-links a.on{color:var(--action);}
.navcta{flex:none;}

/* nav dropdown groups */
.navgrp{position:relative;}
.navgrp > button{display:inline-flex;align-items:center;gap:6px;background:transparent;border:0;
  cursor:pointer;font-family:var(--f-body);font-size:14px;font-weight:500;color:var(--muted);
  padding:0;transition:color .15s;}
.navgrp > button:hover,.navgrp:hover > button,.navgrp.on > button{color:var(--text);}
.navgrp.on > button{color:var(--action);}
.navgrp > button svg{width:10px;height:7px;transition:transform .18s;}
.navgrp:hover > button svg,.navgrp > button[aria-expanded="true"] svg{transform:rotate(180deg);}
.navmenu{position:absolute;top:calc(100% + 14px);left:-16px;min-width:224px;background:var(--card);
  border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:6px;
  display:grid;gap:1px;opacity:0;visibility:hidden;pointer-events:none;
  transform:translateY(-5px);transition:opacity .16s,transform .16s;z-index:60;}
.navgrp:hover .navmenu,.navgrp:focus-within .navmenu,
.navgrp.open .navmenu{opacity:1;visibility:visible;pointer-events:auto;transform:none;}
.navmenu::before{content:"";position:absolute;top:-14px;left:0;right:0;height:14px;}
.navmenu a{display:block;padding:10px 12px;border-radius:10px;font-size:14.5px;color:var(--muted);
  text-decoration:none;white-space:nowrap;}
.navmenu a:hover,.navmenu a:focus-visible{background:var(--bg-alt);color:var(--action);}
.mobnav a.on{color:var(--action);font-weight:600;}

/* page header */
.phead{padding:62px 0 10px;background:var(--bg);}
.phead h1{font-size:clamp(2.2rem,4.4vw,3.4rem);letter-spacing:-.01em;line-height:1.05;margin-top:16px;max-width:20ch;}
.phead p{margin-top:18px;color:var(--muted);font-size:1.08rem;max-width:62ch;}

/* "see more" link */
.morelink{margin-top:34px;}
.morelink a{display:inline-flex;align-items:center;gap:9px;font-weight:600;font-size:15px;
  color:var(--action);text-decoration:none;border-bottom:1px solid transparent;padding-bottom:2px;}
.morelink a:hover{border-color:var(--action);}
.morelink span{transition:transform .18s;display:inline-block;}
.morelink a:hover span{transform:translateX(4px);}

/* closing CTA band */
.ctaband{padding:64px 0;}
.band{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;}
.band h2{font-size:clamp(1.7rem,3vw,2.35rem);color:#fff;margin-top:14px;}
.band > div > p{margin-top:14px;color:#C7CDC9;font-size:1.02rem;max-width:52ch;}
.band .eyebrow{color:#A3ADA7;}
.band-act{display:flex;flex-direction:column;gap:12px;align-items:flex-start;}
.band-act .btn{width:100%;justify-content:center;}
.band-meta{margin-top:6px;font-size:13.5px;color:#A3ADA7;line-height:1.7;}
.band-meta a{color:#DCE0DE;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.24);}
.band-meta a:hover{color:var(--accent-lime);border-color:var(--accent-lime);}

/* bundle-mode routes (single-file review build only) */
/* Without JavaScript (mail-app previews, locked-down browsers) the single-file
   build shows the home route instead of hiding everything; the router takes
   over only once html.js is stamped. */
.route{display:none;}
main > .route:first-of-type{display:block;}
.js main > .route:first-of-type:not(.on){display:none;}
.route.on{display:block;}

@media(max-width:1000px){
  .navcta{display:none;}
  .band{grid-template-columns:1fr;gap:28px;}
  .band-act{align-items:stretch;}
  .phead{padding-top:44px;}
}
@media(max-width:620px){
  .ctaband{padding:48px 0;}
}

/* ================= FORM STATES ================= */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
input.err,select.err,textarea.err{border-color:var(--c-neg)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--c-neg) 18%,transparent);}
.form-ok.bad{border-color:var(--c-neg);background:color-mix(in srgb,var(--c-neg) 10%,transparent);
  color:var(--c-neg);}
.formlight .form-ok{color:var(--v-green);}
.formlight .form-ok.bad{color:var(--c-neg);}
button[type=submit][disabled]{opacity:.6;cursor:progress;}

/* inline "more" link inside a card footer */
.morelink-inline{color:var(--sec);text-decoration:none;font-family:var(--f-body);font-size:13.5px;
  font-weight:600;border-bottom:1px solid transparent;padding-bottom:1px;}
.morelink-inline:hover{border-color:var(--sec);}

/* ================= DISPATCH CHART (validated palette) =================
   light  solar #B45309  battery #1F72A8  -- CVD dE 20.3 protan, contrast 4.5+/4.7
   dark   solar #C87F27  battery #3A8FC4  -- CVD dE 21.1 protan, both inside L band */
:root{--c-solar:#B45309;--c-batt:#1F72A8;--c-grid:#6E7686;}
@media (prefers-color-scheme:dark){:root{--c-solar:#C87F27;--c-batt:#3A8FC4;--c-grid:#7F8798;}}
:root[data-theme="dark"]{--c-solar:#C87F27;--c-batt:#3A8FC4;--c-grid:#7F8798;}
:root[data-theme="light"]{--c-solar:#B45309;--c-batt:#1F72A8;--c-grid:#6E7686;}

.dp-svg{width:100%;height:260px;display:block;overflow:visible;}
.dp-svg text{font-family:var(--f-body);font-size:11px;fill:var(--faint);font-variant-numeric:tabular-nums;}
.dp-grid{stroke:var(--c-grid-line,var(--line));stroke-width:1;}
.dp-seg{shape-rendering:crispEdges;}
.dp-gen{fill:none;stroke:var(--c-solar);stroke-width:2;stroke-dasharray:4 3;opacity:.85;}
.dp-hit{fill:transparent;cursor:crosshair;}
.dp-hit:hover + .dp-hl,.dp-hl.on{opacity:.10;}
.dp-hl{fill:var(--text);opacity:0;pointer-events:none;}

/* ================= PHOTO GALLERY ================= */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:40px;}
.gal figure{margin:0;position:relative;overflow:hidden;border-radius:var(--r-tile);box-shadow:var(--lift);
  background:var(--bg-sunk);}
.gal img{width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;display:block;
  transition:transform .5s ease;}
.gal figure:hover img{transform:scale(1.04);}
/* mosaic variant: a feature anchor, a wide tile, singles filling the rest */
.gal-mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:205px;gap:14px;}
.gal-mosaic figure{border-radius:var(--r-badge);}
.gal-mosaic img{height:100%;aspect-ratio:auto;}
.gal-mosaic .g-feat{grid-column:span 2;grid-row:span 2;}
.gal-mosaic .g-wide{grid-column:span 2;}
.gcap{position:absolute;top:14px;left:14px;z-index:1;background:rgba(255,255,255,.92);
  color:var(--ink);font-family:var(--f-display);font-weight:700;font-size:13.5px;
  letter-spacing:.02em;padding:6px 13px;border-radius:999px;}
@media(max-width:980px){.gal-mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:190px;}
  .gal-mosaic .g-feat{grid-column:span 2;grid-row:span 1;}
  .gal-mosaic .g-wide{grid-column:span 2;}}
@media(max-width:540px){.gal-mosaic{grid-template-columns:1fr;grid-auto-rows:210px;}
  .gal-mosaic .g-feat,.gal-mosaic .g-wide{grid-column:span 1;}}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 16px 13px;color:#fff;
  font-size:12.5px;line-height:1.45;
  background:linear-gradient(to top,rgba(10,12,11,.82),rgba(10,12,11,0));}
.gal figcaption b{display:block;font-family:var(--f-display);font-size:14px;font-weight:800;
  letter-spacing:-.01em;margin-bottom:2px;}


/* full-bleed photo band between sections */
.pband{position:relative;height:340px;overflow:hidden;}
.pband img{width:100%;height:100%;object-fit:cover;}
.pband .band-in{position:absolute;inset:0;display:flex;align-items:flex-end;
  background:linear-gradient(to top,rgba(10,12,11,.82) 0%,rgba(10,12,11,.12) 60%,rgba(10,12,11,.28) 100%);}
.pband .wrap{padding-bottom:34px;width:100%;}
.pband h2{color:#fff;font-size:clamp(1.5rem,2.8vw,2.1rem);max-width:22ch;}
.pband p{color:#DCE0DE;margin-top:12px;max-width:56ch;font-size:1rem;}
.pband .eyebrow{color:#B2BAB5;}

@media(max-width:1000px){
  .gal{grid-template-columns:1fr 1fr;}
  .pband{height:280px;}
}
@media(max-width:620px){
  .gal{grid-template-columns:1fr;}

  .pband{height:240px;}
}

/* ================= GROUP CAPTIVE DIAGRAM =================
   Bar labels are white, so the bar must clear 4.5:1 against white.
   The section accent (--sec) cannot be trusted for that -- brand green is 2.55:1.
   Dedicated token: #33307E light (11.26:1) / #5D59C4 dark (5.69:1). */
:root{--gc-bar:#33307E;}
@media (prefers-color-scheme:dark){:root{--gc-bar:#5D59C4;}}
:root[data-theme="dark"]{--gc-bar:#5D59C4;}
:root[data-theme="light"]{--gc-bar:#33307E;}
.gc{margin-top:40px;border-radius:var(--r-badge);box-shadow:var(--lift);background:var(--card);
  padding:22px 20px;overflow-x:auto;}
/* The container scrolls, so hold the diagram at its native 720 units rather
   than letting it shrink to 600 and drag the 10px labels down to 8.3px. */
.gc-svg{width:100%;min-width:720px;height:auto;display:block;}
.gc-box{fill:var(--bg-alt);stroke:var(--line);stroke-width:1;}
.gc-box-main{fill:var(--bg-sunk);stroke:var(--sec);stroke-width:1.5;}
.gc-box-win{stroke:var(--sec);stroke-width:1.5;}
.gc-fill-a{fill:var(--gc-bar);}
.gc-fill-b{fill:var(--bg-sunk);stroke:var(--line);stroke-width:1;}
.gc-fill-c{fill:var(--bg-sunk);stroke:var(--line);stroke-width:1;}
.gc-line{stroke:var(--faint);stroke-width:1.5;fill:none;stroke-dasharray:4 3;}
.gc-line-v{stroke-dasharray:none;}
.gc-t{font-family:var(--f-body);fill:var(--text);}
.gc-t-hd{font-family:var(--f-display);font-weight:800;font-size:14px;letter-spacing:-.01em;}
.gc-t-sm{font-size:11.5px;fill:var(--muted);}
.gc-t-lb{font-size:10px;font-weight:700;letter-spacing:.12em;fill:var(--faint);}
.gc-t-in{font-family:var(--f-display);font-weight:800;font-size:14px;fill:#fff;}
.gc-t-in2{font-size:11px;fill:var(--muted);}
.gc-em{font-weight:700;fill:var(--text);}

/* ================= ARTICLES ================= */
.wrap-narrow{max-width:672px;}
.article{padding:52px 0 72px;}
.art-meta{font-size:11.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--faint);margin-bottom:26px;}
.article .lede{font-size:1.2rem;line-height:1.6;color:var(--text);font-weight:500;
  padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:34px;}
.article h2{font-size:1.5rem;margin-top:44px;letter-spacing:-.022em;}
.article h3{font-size:1.12rem;margin-top:28px;}
.article p{margin-top:16px;color:var(--muted);font-size:1.02rem;line-height:1.72;}
.article h2 + p,.article h3 + p{margin-top:12px;}
.article strong{color:var(--text);font-weight:600;}
.art-list,.art-steps{margin:20px 0 0;padding-left:0;list-style:none;display:grid;gap:11px;}
.art-list li{position:relative;padding-left:22px;color:var(--muted);line-height:1.6;}
.art-list li::before{content:"";position:absolute;left:2px;top:10px;width:7px;height:2px;
  background:var(--v-orange);}
.art-steps{counter-reset:s;}
.art-steps li{position:relative;padding-left:40px;color:var(--muted);line-height:1.6;
  counter-increment:s;}
.art-steps li::before{content:counter(s);position:absolute;left:0;top:0;width:26px;height:26px;
  border-radius:50%;background:var(--bg-sunk);color:var(--text);font-family:var(--f-display);
  font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;}
.art-steps b,.art-cards b{color:var(--text);font-weight:700;}
.art-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px;}
.art-cards > div{border-radius:16px;box-shadow:var(--lift);padding:18px 16px;background:var(--card);}
.art-cards b{display:block;font-family:var(--f-display);font-size:1rem;margin-bottom:7px;}
.art-cards p{margin-top:0;font-size:14px;}
.art-note{margin-top:40px;padding-top:18px;border-top:1px solid var(--line);
  font-size:13px;color:var(--faint);line-height:1.6;}

/* insights index */
.posts{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:40px;}
.post{border-radius:var(--r-badge);box-shadow:var(--lift);padding:26px 24px;background:var(--card);
  text-decoration:none;display:flex;flex-direction:column;
  transition:transform .22s ease,box-shadow .22s ease;}
.post:hover{transform:translateY(-4px);box-shadow:var(--lift-hi);}
.post .k{font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--sec);}
.post h3{font-size:1.14rem;margin-top:11px;letter-spacing:-.018em;}
.post p{margin-top:11px;font-size:14.5px;color:var(--muted);line-height:1.6;}
.post .go{margin-top:auto;padding-top:16px;font-size:13.5px;font-weight:600;color:var(--action);}
.post .go{display:inline-flex;align-items:center;gap:7px;}
.post .go::after{content:"\2192";transition:transform .22s cubic-bezier(.2,.7,.3,1);}
.post:hover .go::after{transform:translateX(5px);}

@media(max-width:1000px){.art-cards{grid-template-columns:1fr;}.posts{grid-template-columns:1fr;}}

/* ================= BRAND MOTIF =================
   The logo is seven rays radiating from a point. Used as a large, quiet
   background graphic rather than an icon -- gives depth without decoration. */
.burst{position:absolute;pointer-events:none;z-index:0;}
.burst .ray{transform-origin:100px 100px;}
.hero .burst{right:-4%;top:-14%;width:min(640px,62vw);opacity:.30;}
.hero-in{position:relative;z-index:1;}
.sec-burst{position:relative;overflow:hidden;}
.sec-burst .burst{left:-120px;bottom:-180px;width:420px;opacity:.055;}
.sec-burst > .wrap{position:relative;z-index:1;}

/* ================= FEATURE NUMBER ROW ================= */
.figs-big{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:46px;
  border-top:1px solid var(--line);}
.figs-big > div{padding:30px 26px 30px 0;position:relative;}
.figs-big > div::before{content:"";position:absolute;top:-1px;left:0;width:44px;height:3px;
  background:var(--sec);}
.figs-big b{display:block;font-family:var(--f-display);font-weight:800;
  font-size:clamp(2.1rem,4vw,3.1rem);letter-spacing:-.038em;line-height:1;
  font-variant-numeric:tabular-nums;}
.figs-big span{display:block;margin-top:12px;font-size:13.5px;color:var(--muted);line-height:1.45;
  max-width:22ch;}

/* ================= PULL QUOTE MOMENT ================= */
.quoteband{position:relative;overflow:hidden;background:#101312;}
.quoteband img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.32;}
.quoteband .qb-in{position:relative;z-index:1;padding:92px 0;}
.quoteband blockquote{margin:0;font-family:var(--f-display);font-weight:700;
  font-size:clamp(1.45rem,3.1vw,2.35rem);line-height:1.28;letter-spacing:-.025em;
  color:#fff;max-width:24ch;text-wrap:balance;}
.quoteband .qmark{font-family:var(--f-display);font-size:4rem;line-height:.6;color:var(--accent-lime);
  display:block;margin-bottom:10px;}
.quoteband cite{display:block;margin-top:28px;font-style:normal;font-size:14px;color:#C7CDC9;
  line-height:1.6;max-width:44ch;}
.quoteband cite b{color:#fff;font-weight:600;display:block;margin-bottom:3px;}
.qb-figs{display:flex;flex-wrap:wrap;gap:38px;margin-top:44px;padding-top:26px;
  border-top:1px solid rgba(255,255,255,.16);}
.qb-figs div b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.7rem;
  letter-spacing:-.03em;color:#fff;font-variant-numeric:tabular-nums;}
.qb-figs div span{display:block;margin-top:4px;font-size:12.5px;color:#B2BAB5;}

/* ================= SPLIT: IMAGE + TEXT ================= */
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:44px;
  border:1px solid var(--line);border-radius:var(--r-tile);overflow:hidden;}
.split-img{position:relative;min-height:340px;background:var(--bg-sunk);}
.split-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.split-txt{padding:40px 38px;display:flex;flex-direction:column;justify-content:center;
  background:var(--card);}
.split-txt h3{font-size:1.35rem;letter-spacing:-.022em;}
.split-txt p{margin-top:14px;color:var(--muted);font-size:15px;line-height:1.65;}
.split-txt ul{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:9px;}
.split-txt li{font-size:14px;color:var(--muted);padding-left:18px;position:relative;line-height:1.5;}
.split-txt li::before{content:"";position:absolute;left:0;top:8px;width:7px;height:2px;
  background:var(--sec);}
.split.flip .split-img{order:2;}

/* ================= DEPTH & HOVER ================= */
.offer,.model,.case,.vert,.person,.imp,.reg{transition:transform .22s ease,box-shadow .22s ease;}
.case:hover,.model:hover,.imp:hover,.reg:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.post:hover{transform:translateY(-2px);}
.roster span{transition:border-color .18s,transform .18s;}
.roster span:hover{border-color:var(--sec);transform:translateY(-2px);}

@media(max-width:1000px){
  .figs-big{grid-template-columns:1fr 1fr;}
  .split{grid-template-columns:1fr;}
  .split.flip .split-img{order:0;}
  .split-img{min-height:260px;}
  .split-txt{padding:32px 26px;}
  .quoteband .qb-in{padding:64px 0;}
  .hero .burst{width:78vw;opacity:.20;right:-18%;}
}
@media(max-width:620px){
  .figs-big{grid-template-columns:1fr;}
  .figs-big > div{padding:24px 0;}
  .qb-figs{gap:26px;}
}
@media (prefers-reduced-motion:reduce){
  .case:hover,.model:hover,.imp:hover,.reg:hover,.post:hover,.roster span:hover{transform:none;}
}

/* ================= 404 ================= */
.nf{padding:96px 0 110px;}
.nf-code{font-family:var(--f-display);font-weight:800;font-size:clamp(3.4rem,9vw,6rem);
  letter-spacing:-.05em;line-height:1;color:var(--accent);opacity:.32;}
.nf h1{font-size:clamp(1.7rem,3.4vw,2.5rem);margin-top:10px;}
.nf-lede{margin-top:16px;color:var(--muted);font-size:1.06rem;}
.nf-links{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:36px;}
.nf-links a{display:block;border-radius:16px;box-shadow:var(--lift);background:var(--card);padding:16px 18px;
  text-decoration:none;background:var(--card);transition:border-color .16s,transform .16s;
  font-size:13.5px;color:var(--muted);}
.nf-links a:hover{border-color:var(--action);transform:translateY(-2px);}
.nf-links b{display:block;font-family:var(--f-display);font-size:1rem;color:var(--head,var(--text));
  margin-bottom:3px;}
.nf-note{margin-top:32px;font-size:14px;color:var(--faint);}
.nf-note a{color:var(--action);}
@media(max-width:620px){.nf-links{grid-template-columns:1fr;}.nf{padding:64px 0 76px;}}

/* ================= PRINT ================= */
@media print{
  :root{--bg:#fff;--bg-alt:#fff;--bg-sunk:#fff;--card:#fff;
        --text:#000;--head:#000;--muted:#333;--faint:#555;--line:#bbb;}
  .nav,.mobnav,.totop,.skip,.hero-img,.hero-veil,.burst,.ctaband,.proto,
  .ptools,.cf-tip,.dp-svg,.calc-in,form,.gal,.photos,.pband img,.quoteband img{display:none!important;}
  body{font-size:11pt;background:#fff;color:#000;}
  .hero,.pband,.quoteband{background:#fff!important;color:#000!important;min-height:0;height:auto;}
  .hero h1,.pband h2,.quoteband blockquote,.quoteband cite{color:#000!important;}
  .hero-sub,.band p{color:#333!important;}
  section{padding:14pt 0!important;break-inside:avoid;}
  h1,h2,h3{break-after:avoid;}
  .offer,.model,.case,.vert,.reg,.person,.split{break-inside:avoid;border-color:#bbb;}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt;color:#555;}
  .ptable-wrap{overflow:visible;}
  table{font-size:9pt;}
  footer{border-top:1pt solid #bbb;}
}

/* ================= FOOTER SOCIAL / DOWNLOAD ================= */
.f-social{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px;padding-top:24px;
  border-top:1px solid rgba(255,255,255,.14);}
.f-social a{display:inline-flex;align-items:center;gap:9px;border:1px solid rgba(255,255,255,.24);
  border-radius:999px;padding:9px 17px;font-size:13.5px;font-weight:600;color:#DCE0DE;
  text-decoration:none;background:transparent;transition:border-color .16s,color .16s;}
.f-social a:hover{border-color:var(--accent-lime);color:var(--accent-lime);}
.f-social svg{flex:none;}
.f-social .f-dl{margin-left:auto;}
@media(max-width:620px){.f-social .f-dl{margin-left:0;width:100%;justify-content:center;}}

/* screen-reader-only: keeps the heading outline intact where the visible
   heading was removed because the page header already says it */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ================= STRUCTURE COMPARISON ================= */
.cmp{margin-top:40px;}
.cmp-in{border-radius:var(--r-badge);box-shadow:var(--lift);background:var(--card);
  padding:24px 26px;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;align-items:start;}
.cmp-in .slider{margin-bottom:0;}
.cmp-in .hint{grid-column:1/-1;margin-top:4px;padding-top:16px;border-top:1px solid var(--line-soft);
  font-size:13.5px;color:var(--muted);}
.cmp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px;}
.cmp-col{border:1px solid var(--line);border-radius:4px;background:var(--card);padding:0 0 22px;
  display:flex;flex-direction:column;overflow:hidden;transition:transform .2s,box-shadow .2s;}
.cmp-col:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.cmp-hd{padding:20px 22px 16px;border-top:3px solid var(--sec);background:var(--bg-alt);}
.cmp-hd .k{font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--sec);}
.cmp-hd h3{font-size:1.1rem;margin-top:8px;}
.cmp-col dl{margin:0;padding:6px 22px 0;}
.cmp-col dl > div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:11px 0;border-bottom:1px dotted var(--line);}
.cmp-col dl > div:last-child{border-bottom:0;}
.cmp-col dt{font-size:12.5px;color:var(--muted);flex:none;max-width:52%;}
.cmp-col dd{margin:0;font-family:var(--f-display);font-weight:700;font-size:1rem;
  letter-spacing:-.015em;text-align:right;font-variant-numeric:tabular-nums;color:var(--head,var(--text));}
.cmp-col dd.yes{color:var(--sec);}
.cmp-note{margin:16px 22px 0;font-size:12.5px;color:var(--faint);line-height:1.55;
  padding-top:14px;border-top:1px solid var(--line-soft);}
.cmp-verdict{margin-top:22px;padding:18px 22px;border-left:3px solid var(--action);
  background:var(--bg-alt);border-radius:0 4px 4px 0;font-size:15.5px;color:var(--muted);
  line-height:1.6;}
.cmp-verdict b{color:var(--head,var(--text));font-weight:700;}
@media(max-width:1000px){
  .cmp-in{grid-template-columns:1fr 1fr;}
  .cmp-grid{grid-template-columns:1fr;}
}
@media(max-width:620px){ .cmp-in{grid-template-columns:1fr;} }

/* ================= GROUP CAPTIVE CHECK ================= */
.gc-tests{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px;}
.gc-test{border:1px solid var(--line);border-left:4px solid var(--faint);border-radius:12px;
  background:var(--card);padding:24px 24px 22px;position:relative;
  transition:border-color .2s;}
.gc-test.pass{border-left-color:var(--c-pos,#5E7A0C);}
.gc-test.fail{border-left-color:var(--c-neg,#C41A20);}
.gc-badge{position:absolute;top:20px;right:22px;font-size:11px;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;padding:5px 11px;border-radius:2px;
  background:var(--bg-sunk);color:var(--muted);}
.gc-test.pass .gc-badge{background:color-mix(in srgb,var(--c-pos,#5E7A0C) 16%,transparent);
  color:var(--c-pos,#5E7A0C);}
.gc-test.fail .gc-badge{background:color-mix(in srgb,var(--c-neg,#C41A20) 14%,transparent);
  color:var(--c-neg,#C41A20);}
.gc-test h3{font-size:1.06rem;padding-right:88px;}
.gc-req{margin-top:12px;font-size:13px;color:var(--faint);line-height:1.55;
  padding-bottom:14px;border-bottom:1px solid var(--line-soft);}
.gc-res{margin-top:14px;font-size:15px;color:var(--muted);line-height:1.6;}
.gc-res b{color:var(--head,var(--text));font-weight:700;font-variant-numeric:tabular-nums;}
@media(max-width:1000px){.gc-tests{grid-template-columns:1fr;}}

/* ================= SITE SEARCH ================= */
.navsearch{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:38px;height:38px;border:1px solid var(--line);border-radius:3px;background:transparent;
  color:var(--muted);cursor:pointer;transition:border-color .16s,color .16s;}
.navsearch:hover{border-color:var(--action);color:var(--action);}
body.srch-open{overflow:hidden;}
.srch{position:fixed;inset:0;z-index:120;background:rgba(10,16,12,.55);
  backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;
  padding:12vh 20px 20px;}
.srch[hidden]{display:none;}
.srch-box{width:min(680px,100%);background:var(--card);
  border-radius:var(--r-badge);box-shadow:0 24px 70px -20px rgba(0,0,0,.5);overflow:hidden;}
.srch-in{display:flex;align-items:center;gap:12px;padding:16px 18px;
  border-bottom:1px solid var(--line);color:var(--faint);}
.srch-in input{flex:1;border:0;background:transparent;font-family:var(--f-body);font-size:17px;
  color:var(--text);padding:4px 0;}
.srch-in input:focus{outline:none;}
.srch-in button{border:1px solid var(--line);background:var(--bg-alt);color:var(--faint);
  font-size:11px;font-weight:700;letter-spacing:.06em;padding:5px 11px;border-radius:999px;
  cursor:pointer;}
.srch-out{max-height:min(52vh,460px);overflow-y:auto;}
.srch-hint{padding:22px 20px;font-size:14px;color:var(--faint);line-height:1.55;}
.srch-hit{display:block;padding:15px 20px;border-bottom:1px solid var(--line-soft);
  text-decoration:none;}
.srch-hit:last-child{border-bottom:0;}
.srch-hit:hover,.srch-hit:focus-visible{background:var(--bg-alt);outline:none;}
.srch-hit b{display:block;font-family:var(--f-display);font-size:1rem;letter-spacing:-.015em;
  color:var(--head,var(--text));}
.srch-sec{display:inline-block;margin-top:5px;font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--accent);}
.srch-snip{display:block;margin-top:6px;font-size:13.5px;color:var(--muted);line-height:1.55;}
@media(max-width:620px){.srch{padding:8vh 12px 12px;}.srch-in input{font-size:16px;}}

/* ================= PRINTABLE RESULTS ================= */
.printhead{display:none;}
@media print{
  /* the calculator sheet: keep the numbers and the chart, drop the controls */
  .printbtn{display:none!important;}
  .printhead{display:block!important;margin-bottom:18pt;padding-bottom:10pt;
    border-bottom:1.5pt solid #000;}
  .printhead b{display:block;font-family:var(--f-display);font-size:15pt;font-weight:800;color:#000;}
  .printhead span{display:block;margin-top:4pt;font-size:9pt;color:#333;}
  .calc{display:block!important;}
  .calc-in{display:none!important;}
  .tiles{display:grid!important;grid-template-columns:repeat(3,1fr)!important;
    border:1pt solid #999!important;background:#fff!important;}
  .tile{background:#fff!important;border-right:1pt solid #ccc;padding:10pt 12pt!important;}
  .tile b{color:#000!important;font-size:15pt!important;}
  .tile.hero b{font-size:19pt!important;}
  .tile span{color:#333!important;}
  .chartbox{border:1pt solid #999!important;background:#fff!important;break-inside:avoid;}
  .cf-svg{display:block!important;height:150pt!important;}
  .cf-grid{stroke:#ccc!important;}
  .cmp-in{display:none!important;}
  .cmp-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;}
  .cmp-col{border:1pt solid #999!important;background:#fff!important;break-inside:avoid;}
  .cmp-hd{background:#f2f2f2!important;}
  .cmp-verdict{background:#f7f7f7!important;border-left:3pt solid #000!important;color:#000!important;}
  .disc{color:#444!important;font-size:8.5pt!important;}
}

/* ---------- flagship project cards ---------- */
.fp{margin-top:40px;border-radius:var(--r-card);box-shadow:var(--lift);overflow:hidden;
  background:var(--bg);display:flex;flex-direction:column;}
.fp-img{position:relative;overflow:hidden;background:var(--bg-sunk);}
.fp-img img{width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.2,.7,.3,1);}
.fp:hover .fp-img img{transform:scale(1.03);}
.fp-badge{position:absolute;top:0;left:0;background:rgba(11,16,13,.88);color:#fff;
  font-family:var(--f-display);font-weight:800;font-size:15px;letter-spacing:-.01em;
  padding:9px 14px 8px;border-bottom:3px solid var(--sec,var(--action));
  border-bottom-right-radius:4px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);}
.fp-body{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1;}
.fp-tag{font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
  font-weight:700;margin-bottom:11px;}
.fp-body h3{font-size:clamp(1.15rem,1.9vw,1.5rem);max-width:24ch;}
.fp-body>p{margin-top:13px;color:var(--muted);font-size:.975rem;line-height:1.62;max-width:62ch;}
.fp-stats{display:flex;flex-wrap:wrap;gap:0;margin-top:auto;padding-top:22px;}
.fp-stats>div{flex:1 1 150px;padding:14px 16px 13px 0;border-top:2px solid var(--sec,var(--action));
  margin-right:18px;}
.fp-stats>div:last-child{margin-right:0;}
.fp-stats b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.22rem;
  letter-spacing:-.02em;color:var(--head,var(--text));}
.fp-stats span{display:block;margin-top:5px;font-size:12.5px;line-height:1.45;color:var(--muted);}
.fp-two{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.fp-two .fp{margin-top:24px;}
@media(min-width:900px){
  .fp-lead{flex-direction:row;align-items:stretch;}
  .fp-lead .fp-img{flex:0 0 52%;}
  .fp-lead .fp-img img{height:100%;aspect-ratio:auto;min-height:340px;}
  .fp-lead .fp-body{padding:34px 34px 32px;justify-content:center;}
}
@media(max-width:820px){
  .fp-two{grid-template-columns:1fr;gap:0;}
}

/* ---------- site film player ---------- */
.vplayer{position:relative;border-radius:var(--r-card);overflow:hidden;box-shadow:var(--lift);
  background:var(--bg-sunk);line-height:0;}
.vplayer img,.vplayer video{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover;}
.vplay{position:absolute;inset:0;width:100%;border:0;background:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:16px;color:#fff;
  font-family:var(--f-display);font-weight:800;font-size:1.05rem;letter-spacing:-.01em;
  text-shadow:0 2px 14px rgba(0,0,0,.6);}
.vplay::before{content:"";position:absolute;inset:0;background:rgba(8,12,10,.30);
  transition:background .25s;}
.vplay:hover::before,.vplay:focus-visible::before{background:rgba(8,12,10,.14);}
.vtri{position:relative;width:64px;height:64px;flex:none;border-radius:50%;
  background:rgba(11,16,13,.82);border:2px solid rgba(255,255,255,.9);
  transition:transform .25s;}
.vtri::after{content:"";position:absolute;top:50%;left:54%;transform:translate(-50%,-50%);
  border-left:17px solid #fff;border-top:11px solid transparent;border-bottom:11px solid transparent;}
.vplay:hover .vtri,.vplay:focus-visible .vtri{transform:scale(1.07);}
.vlab{position:relative;text-align:left;line-height:1.2;}
.vlab em{display:block;font-style:normal;font-family:var(--f-body);font-weight:500;font-size:12.5px;
  letter-spacing:.06em;text-transform:uppercase;color:#DDE4DA;margin-top:5px;}
.vfallback{display:none;position:absolute;left:0;right:0;bottom:0;margin:0;padding:12px 16px;
  background:rgba(11,16,13,.86);color:#DDE4DA;font-size:12.5px;line-height:1.45;}
.vplayer.nosrc .vplay{display:none;}
.vplayer.nosrc .vfallback{display:block;}
@media(max-width:620px){
  .vplay{flex-direction:column;gap:12px;font-size:.95rem;}
  .vtri{width:52px;height:52px;}
  .vlab{text-align:center;}
}

/* ---------- Rajasthan stat strip + spec table ---------- */
.rstat{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:28px;}
.rstat>div{padding:18px 18px 16px;border-top:3px solid var(--sec,var(--action));
  background:var(--card);border-radius:14px;box-shadow:var(--lift);}
.rstat b{display:block;font-family:var(--f-display);font-weight:700;
  font-size:clamp(1.3rem,2.2vw,1.85rem);letter-spacing:0;color:var(--head,var(--text));}
.rstat span{display:block;margin-top:6px;font-size:12.5px;line-height:1.4;color:var(--muted);}
@media(max-width:820px){.rstat{grid-template-columns:repeat(2,1fr);}}
@media(max-width:420px){.rstat{grid-template-columns:1fr;}}
table.spec{width:100%;border-collapse:collapse;font-size:14.5px;}
table.spec th,table.spec td{text-align:left;padding:11px 0;border-bottom:1px solid var(--line-soft);
  vertical-align:top;}
table.spec th{font-weight:600;color:var(--muted);width:42%;font-size:13.5px;}
table.spec td{color:var(--text);}
table.spec tr:last-child th,table.spec tr:last-child td{border-bottom:0;}
.fp-more{margin-top:20px;}
.fp-lead .fp-stats{margin-top:22px;}
.pband-tall{height:420px;}
.pband .band-cta{margin-top:18px;}
.pband .band-cta .arr{color:#fff;}
@media(max-width:700px){.pband-tall{height:460px;}}

/* ---------- sector sections ---------- */
.sect{display:grid;grid-template-columns:auto 1fr;gap:28px;margin-top:44px;padding-top:34px;
  border-top:1px solid var(--line);}
.sect:first-of-type{border-top:0;padding-top:0;}
.sect-num{font-family:var(--f-display);font-weight:800;font-size:clamp(1.6rem,3.4vw,2.6rem);
  letter-spacing:-.03em;color:var(--sec,var(--action));line-height:1;opacity:.55;}
.sect-body h3{font-size:clamp(1.2rem,2.2vw,1.6rem);}
.sect-lede{margin-top:13px;color:var(--text);font-size:1.02rem;line-height:1.62;max-width:66ch;}
.sect-pts{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px;max-width:70ch;}
.sect-pts li{position:relative;padding-left:20px;color:var(--muted);font-size:.95rem;line-height:1.6;}
.sect-pts li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:2px;
  background:var(--sec,var(--action));}
.sect-pts b{color:var(--head,var(--text));font-weight:700;}
.sect-work{margin-top:20px;padding-top:15px;border-top:1px dashed var(--line);
  font-size:13.5px;color:var(--faint);max-width:70ch;}
@media(max-width:700px){
  .sect{grid-template-columns:1fr;gap:8px;}
}

/* ---------- theme toggle ---------- */
.navtheme{flex:none;width:38px;height:38px;display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--muted);
  transition:color .15s,border-color .15s;}
.navtheme:hover{color:var(--text);border-color:var(--faint);}
.navtheme svg{width:18px;height:18px;}
.navtheme .ic-moon{display:none;}
@media (prefers-color-scheme:dark){
  .navtheme .ic-sun{display:none;} .navtheme .ic-moon{display:block;}
}
:root[data-theme="dark"] .navtheme .ic-sun{display:none;}
:root[data-theme="dark"] .navtheme .ic-moon{display:block;}
:root[data-theme="light"] .navtheme .ic-sun{display:block;}
:root[data-theme="light"] .navtheme .ic-moon{display:none;}
.steps-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:900px){.steps-4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.steps-4{grid-template-columns:1fr;}}

/* Narrow phones: brand + theme + search + menu must fit 320px without the
   header forcing the whole page to scroll sideways. */
@media(max-width:560px){
  .nav-in{padding:12px 16px;gap:10px;}
  .logo{width:112px;height:30px;}
}
@media(max-width:360px){
  .nav-in{padding:10px 12px;gap:8px;}
  .logo{width:96px;height:26px;}
  .navtheme,.navsearch{width:34px;height:34px;}
}
@media(max-width:560px){
  /* Two narrow columns become unreadable and force the page sideways;
     stack the label above its value instead. */
  table.spec,table.spec tbody,table.spec tr,table.spec th,table.spec td{display:block;width:auto;}
  table.spec tr{padding:11px 0;border-bottom:1px solid var(--line-soft);}
  table.spec tr:last-child{border-bottom:0;}
  table.spec th,table.spec td{padding:0;border-bottom:0;}
  table.spec th{width:auto;margin-bottom:3px;}
}

/* Grid items default to min-width:auto, so one long token can force a track
   wider than its container and scroll the whole page sideways. */
.settle,.mon,.why,.offers,.prob,.cases,.models,.impact,.team,.press,.verts,.vals,.geo,
.figs-big,.rstat,.gal,.fp-two,.steps,.tiles,.cmp,.cmp-in{min-width:0;}
.settle>*,.mon>*,.why>*,.offers>*,.prob>*,.cases>*,.models>*,.impact>*,.team>*,.press>*,
.verts>*,.vals>*,.geo>*,.figs-big>*,.rstat>*,.gal>*,.fp-two>*,.steps>*,.tiles>*,.cmp>*,
.cmp-in>*{min-width:0;}
.reg,.tile,.step,.sect-body{overflow-wrap:anywhere;}

/* ---------- arrow link ---------- */
.arr{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-weight:600;
  font-size:.94rem;color:var(--action);border-bottom:1px solid transparent;
  transition:border-color .18s,gap .18s;}
.arr::after{content:"\2192";font-size:1.05em;line-height:1;transition:transform .22s cubic-bezier(.2,.7,.3,1);}
.arr:hover,.arr:focus-visible{border-bottom-color:currentColor;}
.arr:hover::after,.arr:focus-visible::after{transform:translateX(4px);}

/* ---------- explore grid ---------- */
.explore{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px;}
.xc{background:var(--card);padding:26px 24px 24px;display:flex;flex-direction:column;
  text-decoration:none;position:relative;min-width:0;
  border-radius:var(--r-badge);box-shadow:var(--lift);overflow:hidden;
  transition:background .18s,transform .22s ease,box-shadow .22s ease;}
.xc:hover{transform:translateY(-4px);box-shadow:var(--lift-hi);}
.xc::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;
  background:var(--sec,var(--action));transform:scaleX(0);transform-origin:left;
  transition:transform .28s cubic-bezier(.2,.7,.3,1);}
.xc:hover,.xc:focus-visible{background:var(--bg-alt);}
.xc:hover::before,.xc:focus-visible::before{transform:scaleX(1);}
.xc .eyebrow{margin-bottom:10px;}
.xc h3{font-size:1.08rem;color:var(--head,var(--text));}
.xc p{margin-top:10px;font-size:.9rem;line-height:1.58;color:var(--muted);flex:1;}
.xc .go{margin-top:16px;display:inline-flex;align-items:center;gap:7px;font-weight:600;
  font-size:.88rem;color:var(--action);}
.xc .go::after{content:"\2192";transition:transform .22s cubic-bezier(.2,.7,.3,1);}
.xc:hover .go::after,.xc:focus-visible .go::after{transform:translateX(4px);}
@media(max-width:900px){.explore{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.explore{grid-template-columns:1fr;}}

/* ---------- portfolio map ---------- */
.mapwrap{display:grid;grid-template-columns:minmax(0,0.72fr) minmax(0,1fr);gap:38px;
  align-items:start;margin-top:34px;}
.mapfig{margin:0;}
.mapfig img{width:100%;height:auto;display:block;}
.mapfig figcaption{margin-top:14px;font-size:12.5px;line-height:1.5;color:var(--faint);}
.mapcred{display:block;margin-top:6px;font-size:11px;color:var(--faint);opacity:.8;}
@media(max-width:860px){
  .mapwrap{grid-template-columns:1fr;gap:30px;}
  .mapfig{max-width:340px;margin:0 auto;}
}

/* ---------- legal pages ---------- */
.legal h2{font-size:1.28rem;margin-top:42px;padding-bottom:10px;
  border-bottom:1px solid var(--line);}
.legal h3{font-size:1.02rem;margin-top:26px;}
.legal p{margin-top:14px;font-size:.98rem;line-height:1.68;color:var(--text);}
.legal ul{margin:14px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:9px;}
.legal li{font-size:.96rem;line-height:1.62;color:var(--muted);}
.legal li b,.legal p b{color:var(--head,var(--text));font-weight:600;}
.legal-meta{font-size:13px;color:var(--faint);}
.legal-note{margin-top:22px;padding:18px 20px;background:var(--bg-sunk);
  border-left:3px solid var(--v-orange);border-radius:0 3px 3px 0;}
.legal-note p:first-child,.legal-note b:first-child{margin-top:0;}
.legal-note p{font-size:.93rem;line-height:1.6;color:var(--muted);}
.legal-table{width:100%;border-collapse:collapse;margin-top:16px;font-size:.93rem;}
.legal-table th{text-align:left;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--faint);font-weight:700;padding:0 18px 9px 0;border-bottom:2px solid var(--line);}
.legal-table td{padding:13px 18px 13px 0;border-bottom:1px solid var(--line-soft);
  vertical-align:top;line-height:1.55;color:var(--muted);}
.legal-table td:first-child{width:52%;color:var(--text);}
.legal-foot{margin-top:38px;padding-top:18px;border-top:1px solid var(--line);
  font-size:13px;color:var(--faint);}
@media(max-width:560px){
  .legal-table,.legal-table tbody,.legal-table tr,.legal-table td{display:block;width:auto;}
  .legal-table thead{display:none;}
  .legal-table tr{padding:12px 0;border-bottom:1px solid var(--line-soft);}
  .legal-table td{padding:0;border-bottom:0;}
  .legal-table td:first-child{width:auto;font-weight:600;margin-bottom:5px;}
}

/* ---------- leadership ---------- */
.lead{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:38px;}
.lead article{background:var(--card);padding:26px 24px 24px;min-width:0;
  border-top:3px solid var(--sec,var(--action));border-radius:var(--r-badge);box-shadow:var(--lift);}
.lead h3{font-size:1.14rem;}
.lead-role{margin-top:6px;font-size:12px;letter-spacing:.09em;text-transform:uppercase;
  font-weight:700;color:var(--action);}
.lead article p{margin-top:14px;font-size:.93rem;line-height:1.62;color:var(--muted);}
.lead-fn{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:34px;
  border-top:1px solid var(--line);}
.lead-fn>div{padding:20px 20px 18px 0;border-top:2px solid var(--sec,var(--action));
  margin-right:20px;min-width:0;}
.lead-fn>div:last-child{margin-right:0;}
.lead-fn b{display:block;font-family:var(--f-display);font-weight:800;font-size:.96rem;
  color:var(--head,var(--text));}
.lead-fn span{display:block;margin-top:8px;font-size:12.5px;line-height:1.5;color:var(--muted);}
@media(max-width:900px){
  .lead{grid-template-columns:1fr;}
  .lead-fn{grid-template-columns:1fr 1fr;}
}
@media(max-width:560px){.lead-fn{grid-template-columns:1fr;}}
.bench table caption{text-align:left;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;
  font-weight:700;color:var(--faint);padding-bottom:12px;}

/* ---------- technical diagram ---------- */
.diagram{margin:36px 0 0;padding:22px;background:var(--bg-alt);border:1px solid var(--line);
  border-radius:5px;}
.diagram img{width:100%;height:auto;display:block;}
.diagram figcaption{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);
  font-size:13px;line-height:1.55;color:var(--muted);max-width:78ch;}
.csnav{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r-tile);overflow:hidden;margin-top:36px;}
.csfig{margin:34px 0 0;}
.csfig img{width:100%;height:auto;display:block;border-radius:var(--r-tile);box-shadow:var(--lift);}
.csfig figcaption{margin-top:13px;font-size:13px;line-height:1.55;color:var(--faint);max-width:76ch;}
@media(max-width:700px){.csnav{grid-template-columns:1fr;}}

/* ---------- bidder checklist ---------- */
.bidbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:30px;
  padding:16px 18px;background:var(--bg-sunk);border-radius:4px;}
.bidprog{flex:1 1 180px;height:6px;background:var(--line);border-radius:3px;overflow:hidden;}
.bidfill{height:100%;width:0;background:var(--sec,var(--action));
  transition:width .3s cubic-bezier(.2,.7,.3,1);}
.bidcount{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none;}
.bidgroup{margin-top:38px;}
.bidgroup h3{font-size:1.08rem;padding-bottom:11px;border-bottom:2px solid var(--sec,var(--action));}
.bidq{list-style:none;margin:0;padding:0;}
.bidq li{border-bottom:1px solid var(--line-soft);}
.bidq label{display:flex;gap:14px;align-items:flex-start;padding:16px 0;cursor:pointer;}
.bidq input{flex:none;width:19px;height:19px;margin:1px 0 0;accent-color:var(--action);cursor:pointer;}
.bidq span{font-size:.95rem;line-height:1.62;color:var(--muted);}
.bidq b{color:var(--head,var(--text));font-weight:700;}
.bidq label:hover span{color:var(--text);}
.bidq input:checked ~ span{opacity:.55;}
.bidq input:checked ~ span b{text-decoration:line-through;text-decoration-thickness:1px;}
@media print{
  .bidbar,.nav,footer,.cta{display:none!important;}
  .bidq label{padding:7px 0;break-inside:avoid;}
  .bidq span{font-size:9.5pt;color:#000;}
  .bidgroup{break-inside:avoid;margin-top:16pt;}
}

/* ---------- certifications ---------- */
.certs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:36px;}
.certs>div{background:var(--card);padding:24px 22px;min-width:0;
  border-top:3px solid var(--sec,var(--action));border-radius:var(--r-badge);box-shadow:var(--lift);}
.certs b{display:block;font-family:var(--f-display);font-weight:800;font-size:1.3rem;
  letter-spacing:-.02em;color:var(--head,var(--text));}
.certs span{display:block;margin-top:7px;font-size:13px;color:var(--muted);}
@media(max-width:700px){.certs{grid-template-columns:1fr;}}
.geo-3{grid-template-columns:repeat(3,1fr);}
@media(max-width:900px){.geo-3{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.geo-3{grid-template-columns:1fr;}}

/* ---------- the regulatory tailwind band ---------- */
.exitband{display:grid;grid-template-columns:minmax(0,0.9fr) minmax(0,1.4fr);gap:34px;
  align-items:center;margin-top:34px;padding:26px 28px;background:var(--bg-sunk);
  border-radius:12px;border-left:4px solid var(--accent-lime);}
.exit-lede p{margin-top:10px;font-size:.97rem;line-height:1.6;color:var(--muted);}
.exit-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:0;min-width:0;}
.exit-nums>div{padding-right:20px;margin-right:20px;border-right:1px solid var(--line);min-width:0;}
.exit-nums>div:last-child{border-right:0;margin-right:0;padding-right:0;}
.exit-nums b{display:block;font-family:var(--f-display);font-weight:800;
  font-size:clamp(1.2rem,2.2vw,1.6rem);letter-spacing:-.025em;color:var(--head,var(--text));
  font-variant-numeric:tabular-nums;}
.exit-nums span{display:block;margin-top:7px;font-size:12.5px;line-height:1.45;color:var(--muted);}
@media(max-width:900px){
  .exitband{grid-template-columns:1fr;gap:22px;}
}
@media(max-width:560px){
  .exit-nums{grid-template-columns:1fr;gap:16px;}
  .exit-nums>div{border-right:0;margin-right:0;padding-right:0;padding-bottom:14px;
    border-bottom:1px solid var(--line);}
  .exit-nums>div:last-child{border-bottom:0;padding-bottom:0;}
}

/* ---------- capability chain ----------
   Five connected stages. The rail is the argument: one continuous line from
   development to year twenty-five, no seam where a subcontractor would sit. */
.chain{margin-top:44px;}
.lnk{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,0.82fr);
  gap:0 34px;padding-bottom:52px;position:relative;}
.lnk:last-child{padding-bottom:0;}
.lnk-rail{position:relative;display:flex;justify-content:center;}
.lnk-n{position:relative;z-index:1;width:52px;height:52px;flex:none;border-radius:50%;
  display:grid;place-items:center;background:var(--bg);color:var(--sec,var(--action));
  border:2px solid var(--sec,var(--action));
  font-family:var(--f-display);font-weight:800;font-size:1.05rem;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;}
/* the connector runs from this number down to the next */
.lnk:not(:last-child) .lnk-rail::after{content:"";position:absolute;top:52px;bottom:-52px;
  left:50%;width:2px;margin-left:-1px;background:var(--line);}
.lnk-body{min-width:0;padding-top:4px;}
.lnk-k{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--sec,var(--action));}
.lnk-body h3{margin-top:9px;font-size:clamp(1.2rem,2.3vw,1.6rem);}
.lnk-lede{margin-top:13px;font-size:1rem;line-height:1.62;color:var(--text);max-width:56ch;}
.lnk-pts{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:9px;max-width:60ch;}
.lnk-pts li{position:relative;padding-left:19px;font-size:.93rem;line-height:1.55;
  color:var(--muted);}
.lnk-pts li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:2px;
  background:var(--sec,var(--action));}
.lnk-stat{margin-top:18px;display:inline-block;padding:7px 13px;border-radius:3px;
  background:var(--bg-sunk);font-size:12.5px;font-weight:600;color:var(--head,var(--text));
  font-variant-numeric:tabular-nums;}
.lnk-more{margin-top:16px;}
.lnk-img{margin:4px 0 0;}
.lnk-img img{width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;
  border-radius:4px;border:1px solid var(--line);}

/* the public-sector lane sits outside the chain on purpose */
.lane{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 34px;margin-top:56px;
  padding:26px 28px;background:var(--bg-alt);border-left:4px solid var(--v-red);
  border-radius:0 4px 4px 0;}
.lane-k{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--v-red);padding-top:5px;white-space:nowrap;}
.lane-body{min-width:0;}
.lane-body h3{font-size:1.14rem;}
.lane-body>p{margin-top:10px;color:var(--muted);font-size:.96rem;}
.lane-body .lnk-pts{margin-top:16px;}

@media(max-width:1000px){
  .lnk{grid-template-columns:56px minmax(0,1fr);}
  .lnk-img{grid-column:2;margin-top:22px;}
  .lnk-img img{aspect-ratio:16/9;}
}
@media(max-width:620px){
  .lnk{grid-template-columns:44px minmax(0,1fr);gap:0 18px;padding-bottom:40px;}
  .lnk-n{width:40px;height:40px;font-size:.92rem;}
  .lnk:not(:last-child) .lnk-rail::after{top:40px;bottom:-40px;}
  .lane{grid-template-columns:1fr;gap:12px;padding:22px 20px;}
}
@media(prefers-reduced-motion:reduce){.lnk{transition:none;}}

/* ================= CLIENT / SUPPLIER LOGO WALL ================= */
/* Centred section head, the way the live site sets one up. */
.sec-head-c{max-width:64ch;margin-left:auto;margin-right:auto;text-align:center;}
.sec-head-c .eyebrow{justify-content:center;}
.sec-head-c p{margin-left:auto;margin-right:auto;}

.lwall .lgroup{margin-top:44px;}
.lcap{font-family:var(--f-body);font-size:12px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--faint);text-align:center;margin:0 0 16px;}
/* The strip runs the full width of the viewport, not the text column, so it reads
   as a moving rail. overflow-x:clip on the section stops 100vw from opening a
   horizontal scrollbar when the vertical one is taking up width. */
.lwall{overflow-x:clip;}
.lwall .lrow{margin-inline:calc(50% - 50vw);}
/* the rail masks the track at both ends so logos fade in and out of the strip */
.lrow{overflow:hidden;position:relative;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);}
.ltrack{display:flex;width:max-content;animation:lscroll 46s linear infinite;}
.lrow-r .ltrack{animation-direction:reverse;}
.lrow:hover .ltrack,.lrow:focus-within .ltrack{animation-play-state:paused;}
.lset{display:flex;flex:none;}
.ltile{flex:none;width:186px;height:104px;margin:0 8px;background:#fff;border-radius:12px;
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;
  padding:14px 18px;
  /* The rail is masked, which isolates it as a blend group; without isolating the
     tile too, multiply below resolves against transparent black and the whole
     strip renders black in dark mode. */
  isolation:isolate;}
.ltile img{width:100%;height:100%;object-fit:contain;
  /* the sources are JPEGs on off-white, so multiply hides the panel edge */
  mix-blend-mode:multiply;}
@keyframes lscroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.lnote{margin-top:34px;text-align:center;font-size:12.5px;color:var(--faint);
  max-width:62ch;margin-left:auto;margin-right:auto;}

/* Motion is decorative here; without it the wall becomes a plain wrapped grid. */
@media (prefers-reduced-motion:reduce){
  .lrow{-webkit-mask-image:none;mask-image:none;overflow:visible;}
  .ltrack{animation:none;width:100%;justify-content:center;flex-wrap:wrap;}
  .lset[aria-hidden="true"]{display:none;}
  .lset{flex-wrap:wrap;justify-content:center;gap:10px;}
  .ltile{margin:0;}
}
@media (max-width:640px){
  .ltile{width:150px;height:88px;padding:11px 14px;}
  .ltrack{animation-duration:34s;}
}

/* ================= ARTICLE CARDS ================= */
/* The live site's blog card: one photograph filling a 30px-radius tile, with a
   white panel floated 20px inside the bottom edge. */
.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:44px;}
.pcard{position:relative;display:block;text-decoration:none;color:inherit;
  border-radius:var(--r-card);overflow:hidden;aspect-ratio:3/4;
  background:var(--bg-sunk);box-shadow:var(--lift);
  transition:transform .25s ease,box-shadow .25s ease;}
.pcard:hover{transform:translateY(-5px);box-shadow:var(--lift-hi);}
.pcard-fig{position:absolute;inset:0;display:block;}
.pcard-fig img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease;}
.pcard:hover .pcard-fig img{transform:scale(1.06);}
/* a soft scrim so the photo never fights the panel edge */
.pcard-fig::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(8,14,10,.35),rgba(8,14,10,0) 46%);}
.pcard-body{position:absolute;left:20px;right:20px;bottom:20px;
  background:var(--card);border-radius:var(--r-card);padding:24px 24px 22px;}
.pmeta{display:flex;align-items:center;gap:10px;font-size:11.5px;letter-spacing:.12em;
  text-transform:uppercase;}
.pmeta b{font-family:var(--f-display);font-weight:600;color:var(--brand-red);}
.pmeta i{font-style:normal;color:var(--faint);}
.pmeta i::before{content:"\2022";margin-right:10px;}
.pcard h3{font-size:1.18rem;margin-top:9px;line-height:1.24;}
.pcard-body p{margin-top:9px;color:var(--muted);font-size:.9rem;line-height:1.55;}
/* the date row the live site puts under the headline */
.pdate{display:flex;align-items:center;gap:7px;margin-top:13px;
  font-size:12.5px;color:var(--faint);}
.pdate svg{width:14px;height:14px;stroke:var(--brand-red);stroke-width:1.8;fill:none;flex:none;}
.lmore{margin-top:36px;text-align:center;}
@media (max-width:900px){.pgrid{grid-template-columns:1fr;max-width:440px;margin-inline:auto;}}

/* ================= ICON BADGE ================= */
/* 70px blue rounded square, matching the live site's .icon-box exactly. */
.ibox{width:70px;height:70px;flex:none;border-radius:var(--r-badge);background:var(--badge);
  display:flex;align-items:center;justify-content:center;}
.ibox svg{width:34px;height:34px;stroke:#fff;stroke-width:1.7;fill:none;
  stroke-linecap:round;stroke-linejoin:round;}
.ibox-sm{width:52px;height:52px;border-radius:14px;}
.ibox-sm svg{width:26px;height:26px;}
/* the pale variant, for icons sitting on a coloured band */
.ibox-soft{background:var(--badge-soft);}
.ibox-soft svg{stroke:var(--badge);}

/* ================= IMPACT BAND (icon + figure cards) ================= */
.impactband{display:grid;grid-template-columns:1fr 1.15fr;gap:56px;align-items:center;}
.impact-cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.icard{background:var(--card);border-radius:var(--r-badge);padding:22px;
  display:flex;gap:16px;align-items:center;box-shadow:var(--lift);}
.icard b{font-family:var(--f-display);font-size:2.3rem;font-weight:700;color:var(--head);
  display:block;line-height:1.1;}
.icard b sup{font-size:.9rem;font-weight:600;margin-left:3px;color:var(--muted);top:-.55em;}
.icard span{font-size:.85rem;color:var(--muted);line-height:1.45;display:block;margin-top:3px;}
@media (max-width:900px){
  .impactband{grid-template-columns:1fr;gap:34px;}
  .impact-cards{grid-template-columns:1fr 1fr;gap:14px;}
  .icard{flex-direction:column;align-items:flex-start;gap:12px;padding:18px;}
}
@media (max-width:460px){.impact-cards{grid-template-columns:1fr;}}
.impact-sec .sec-head .btn{margin-top:8px;}
.impact-sec .sec-head p{margin-top:16px;}
.latest{padding-bottom:92px;}

/* ================= DESIGN LANGUAGE: DEEP PASS ================= */
/* 1 -- imagery grade: one consistent treatment across every photograph, so the
   pages read as art-directed rather than assembled. Logos are excluded. */
.hero-img,.pcard-fig img,.gal img,.pband > img,.quoteband img,.photos img,
.proof img,.csfig img,.fp img,.chain img,.sect img,.split img{
  filter:saturate(1.07) contrast(1.045) brightness(1.01);}

/* 3 -- chapter numbers: home-page section kickers carry a spectrum-coded index,
   so the scroll reads as a numbered arc through the brand's seven colours. */
.eyebrow-n::before{display:none;}
.ch{font-family:var(--f-display);font-size:1.4rem;font-weight:700;line-height:1;
  color:var(--sec,var(--brand-red));font-variant-numeric:tabular-nums;
  letter-spacing:.02em;margin-right:2px;}

/* ================= PHOTO PAGE HEADERS ================= */
/* The hero's opening language carried into the inner pages: neutral scrim
   over a graded photograph, lime kicker, white Rajdhani headline. */
.phead-img{position:relative;overflow:hidden;background:#0E100F;
  padding:clamp(84px,10vw,128px) 0 clamp(56px,7vw,84px);}
.phead-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.85;
  filter:saturate(1.07) contrast(1.045) brightness(1.01);}
.phead-veil{position:absolute;inset:0;background:
  linear-gradient(to top,rgba(12,14,13,.55) 0%,rgba(12,14,13,0) 45%),
  linear-gradient(100deg,rgba(12,14,13,.92) 4%,rgba(12,14,13,.66) 42%,rgba(12,14,13,.30) 68%,rgba(12,14,13,.12) 100%);}
.phead-img .wrap{position:relative;}
.phead-img h1{color:#fff;}
.phead-img p{color:#DCE0DE;}
.phead-img .eyebrow{color:var(--accent-lime);}
.phead-img .eyebrow::before{background:var(--accent-lime);}

/* ================= EDITORIAL PULL LINE ================= */
/* One oversized display sentence per story -- the line the reader should
   leave with. Bar takes the section accent. */
.pull{margin:46px auto 8px;max-width:30ch;text-align:center;position:relative;
  font-family:var(--f-display);font-weight:700;line-height:1.18;text-wrap:balance;
  font-size:clamp(1.5rem,3vw,2.15rem);color:var(--head);}
.pull::before{content:"";display:block;width:44px;height:4px;border-radius:2px;
  background:var(--sec,var(--brand-red-pure));margin:0 auto 22px;}

/* ================= SENIOR BENCH CARDS ================= */
.benchgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:8px;}
.bcard{background:var(--card);border-radius:16px;box-shadow:var(--lift);padding:20px 19px 18px;}
.bcard h3{font-size:1.02rem;}
.brole{margin-top:4px;font-size:11px;font-weight:600;letter-spacing:.09em;
  text-transform:uppercase;color:var(--action);}
.bcard p{margin-top:10px;font-size:13px;line-height:1.55;color:var(--muted);}
@media(max-width:1000px){.benchgrid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:520px){.benchgrid{grid-template-columns:1fr;}}

/* ================= HERO FILM ================= */
/* The film sits behind the same veil as the still and fades in only once it
   can play -- the photograph is always the first paint. */
.hero-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity 1s ease;}
.hero-film.on{opacity:.96;}

/* ================= FORM CONSENT ================= */
.consent{margin:14px 0 0;}
.consent label{display:flex;gap:11px;align-items:flex-start;cursor:pointer;font-size:13.5px;
  line-height:1.5;color:#C7CDC9;}
.formlight .consent label{color:var(--muted);}
.consent input{width:17px;height:17px;flex:none;margin-top:2px;accent-color:var(--accent-lime);}
.formlight .consent input{accent-color:var(--action);}
.consent em{font-style:normal;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--faint);margin-left:6px;}
.consent input.err{outline:2px solid var(--brand-red);outline-offset:2px;}
.consent + .btn,.consent + .consent{margin-top:14px;}

/* ================= CALCULATOR -> FORM HANDOFF ================= */
.handoff{margin:0 0 18px;padding:14px 16px;border-radius:14px;font-size:13.5px;line-height:1.55;
  background:rgba(137,234,95,.12);border:1px solid rgba(137,234,95,.35);color:#DCE0DE;}
.handoff b{color:var(--accent-lime);font-weight:600;display:block;margin-bottom:3px;}
.handoff-x{margin-left:8px;background:transparent;border:1px solid rgba(255,255,255,.3);
  color:#C7CDC9;border-radius:999px;padding:3px 12px;font-size:11.5px;font-weight:600;cursor:pointer;}
.handoff-x:hover{border-color:var(--accent-lime);color:var(--accent-lime);}

/* ================= HERO SCROLL CUE ================= */
.scrollcue{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:2;
  width:26px;height:42px;border:2px solid rgba(255,255,255,.5);border-radius:14px;
  pointer-events:none;}
.scrollcue::after{content:"";position:absolute;left:50%;top:8px;width:4px;height:8px;
  margin-left:-2px;border-radius:2px;background:var(--accent-lime);
  animation:cuedrop 2.2s ease-in-out infinite;}
@keyframes cuedrop{0%,100%{transform:translateY(0);opacity:1;}70%{transform:translateY(14px);opacity:0;}}
@media (prefers-reduced-motion:reduce){.scrollcue{display:none;}}
@media (max-width:760px){.scrollcue{display:none;}}

/* ================= BESS ONE-LINE DIAGRAM ================= */
.bd-wrap{overflow-x:auto;}
.bd-svg{width:100%;min-width:820px;height:auto;display:block;}
.bd-box{fill:var(--card);stroke:var(--line);stroke-width:1.5;}
.bd-key{stroke:var(--c-batt);stroke-width:2;}
.bd-cells rect{fill:var(--c-solar);opacity:.8;}
.bd-batt rect{fill:var(--v-green);opacity:.75;}
.bd-meter{fill:var(--card);stroke:var(--c-grid);stroke-width:2;}
.bd-bound{stroke:var(--faint);stroke-width:1.5;stroke-dasharray:7 6;}
.bd-flow{fill:none;stroke-width:4.5;stroke-linecap:round;}
.f-dc{stroke:var(--c-solar);} .ah-dc{fill:var(--c-solar);}
.f-ac{stroke:var(--c-batt);}  .ah-ac{fill:var(--c-batt);}
.f-bat{stroke:var(--v-green);}.ah-bat{fill:var(--v-green);}
.f-gr{stroke:var(--c-grid);}  .ah-gr{fill:var(--c-grid);}
.bd-t{font-family:var(--f-display);font-weight:700;font-size:21px;fill:var(--head);}
.bd-s{font-family:var(--f-body);font-size:13.5px;fill:var(--muted);}
.bd-s2{font-family:var(--f-body);font-size:14.5px;font-weight:500;fill:var(--text);}
.bd-l{font-family:var(--f-body);font-size:12.5px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;fill:var(--faint);}
.bd-m{font-family:var(--f-body);font-size:10.5px;font-weight:700;fill:var(--muted);}
.tensel{width:100%;margin-top:6px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);
  background:var(--card);color:var(--text);font-family:var(--f-body);font-size:14px;}

/* build-time: keep grid/flex items from forcing their track wider
   than the container (min-width:auto default). Generated from the
   132 grid/flex selectors above. */
.art > *,.art-cards > *,.art-list > *,.art-steps > *,.awards > *,.band > *,.band-act > *,.bar > *,.bar .track > *,.bidq label > *,.bignums > *,.calc-out > *,.case > *,.chart-head > *,.chart-key > *,.cmp-col > *,.cmp-col dl > div > *,.cmp-grid > *,.cmp-in > *,.consent label > *,.contact-list > *,.csnav > *,.cta-grid > *,.exit-nums > *,.eyebrow > *,.f-bot > *,.f-grid > *,.f-grid ul > *,.fig > *,.figs > *,.fp-body > *,.fp-stats > *,.fp-two > *,.fstep .n > *,.hero-badges > *,.hero-cta > *,.hero-tag > *,.icard > *,.impact-cards > *,.ind > *,.iso > *,.lead-fn > *,.legal ul > *,.lnk > *,.lnk-n > *,.lnk-pts > *,.lnk-rail > *,.lset > *,.ltile > *,.ltrack > *,.mobnav .cta-m a > *,.mobnav ul > *,.model > *,.model ul > *,.mon ul > *,.mv > *,.nav-in > *,.nav-links > *,.navmenu > *,.navtoggle > *,.nf-links > *,.offer > *,.offer ul > *,.pband .band-in > *,.pmeta > *,.post > *,.qb-figs > *,.rail > *,.reg > *,.row2 > *,.sect-pts > *,.slider .lab > *,.spectrum > *,.split-txt > *,.split-txt ul > *,.srch > *,.srch-in > *,.tiles > *,.vert > *,.vplay > *,.xc > *,/* ---------- OA flow ---------- */
.flow > *,/* ---------- Rajasthan stat strip + spec table ---------- */
.rstat > *,/* ---------- back to top ---------- */
.totop > *,/* ---------- bidder checklist ---------- */
.bidbar > *,/* ---------- calculator ---------- */
.calc > *,/* ---------- capability grid (home preview) ---------- */
.verts > *,/* ---------- certifications ---------- */
.certs > *,/* ---------- client roster ---------- */
.roster > *,/* ---------- explore grid ---------- */
.explore > *,/* ---------- flagship project cards ---------- */
.fp > *,/* ---------- industries ---------- */
.inds > *,/* ---------- leadership ---------- */
.lead > *,/* ---------- monitoring ---------- */
.mon > *,/* ---------- photo strip ---------- */
.photos > *,/* ---------- portfolio map ---------- */
.mapwrap > *,/* ---------- sector sections ---------- */
.sect > *,/* ---------- settlement explainer ---------- */
.settle > *,/* ---------- state bar chart ---------- */
.bars > *,/* ---------- the regulatory tailwind band ---------- */
.exitband > *,/* ---------- theme toggle ---------- */
.navtheme > *,/* ---------- why vibgyor ---------- */
.why > *,/* ================= FEATURE NUMBER ROW ================= */
.figs-big > *,/* ================= FOOTER SOCIAL / DOWNLOAD ================= */
.f-social > *,/* ================= GROUP CAPTIVE CHECK ================= */
.gc-tests > *,/* ================= ICON BADGE ================= */
/* 70px blue rounded square > *,/* ================= IMPACT BAND (icon + figure cards) ================= */
.impactband > *,/* ================= MULTI-PAGE SHELL ================= */
.brand > *,/* ================= PHOTO GALLERY ================= */
.gal > *,/* ================= SENIOR BENCH CARDS ================= */
.benchgrid > *,/* cases */
.cases > *,/* faq */
.faqgrid > *,/* global presence */
.geo > *,/* impact */
.impact > *,/* insights index */
.posts > *,/* media */
.press > *,/* models */
.models > *,/* offerings */
.offers > *,/* problem */
.prob > *,/* proof */
.proof > *,/* steps */
.steps > *,/* story */
.story > *,/* team */
.team > *,/* the date row the live site puts under the headline */
.pdate > *,/* the headline result spans the row on its own blue card */
.tile.hero > *,/* the public-sector lane sits outside the chain on purpose */
.lane > *,/* two-col blocks */
.duo > *,/* values */
.vals > *,matching the live site's .icon-box exactly. */
.ibox > *,one card per
   era. The gradient order matches the per-item accents deliberately. */
.tl > *,summary > *,with a
   white panel floated 20px inside the bottom edge. */
.pgrid > *{min-width:0;}
