
:root{
  --navy:#071c25;--navy2:#0d3341;--teal:#046e70;--aqua:#23c7bd;--gold:#b07f14;
  --paper:#f7f9f8;--white:#fff;--ink:#132a34;--muted:#586a70;--line:#dfe7e5;
  --soft:#edf5f3;--soft2:#f2f6f5;--shadow:0 24px 70px rgba(7,28,37,.12);--max:1500px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:74px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button,input,textarea,select{font:inherit}.container{width:min(92vw,var(--max));margin:auto}.skip-link{position:absolute;left:-9999px;top:10px;background:#fff;padding:10px 14px;z-index:999}.skip-link:focus{left:10px}.utility{background:var(--navy);color:#cbd9dc;font-size:.78rem}.utility .container{min-height:36px;display:flex;align-items:center;justify-content:space-between;gap:20px}.utility a{color:#fff}.site-header{position:sticky;top:0;z-index:60;background:rgba(247,249,248,.94);backdrop-filter:blur(18px);border-bottom:1px solid rgba(223,231,229,.9)}.nav{height:76px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:12px;min-width:235px}.brand img{width:44px;height:44px}.nav-links{display:flex;gap:2px;align-items:center}.nav-links a{font-size:.9rem;font-weight:750;color:#40545d;padding:9px 10px;border-radius:10px}.nav-links a:hover,.nav-links a.active{color:var(--teal);background:#fff}.menu-toggle{display:none;border:1px solid var(--line);background:#fff;border-radius:11px;padding:9px 12px;font-weight:750;color:var(--ink)}
.eyebrow{display:inline-flex;align-items:center;gap:9px;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;font-weight:850;color:var(--teal)}.eyebrow:before{content:"";width:25px;height:2px;background:var(--gold)}h1,h2,h3,h4{line-height:1.1;letter-spacing:-.035em;margin:0 0 14px}h1{font-size:clamp(3rem,6.5vw,6rem)}h2{font-size:clamp(2rem,4vw,3.45rem)}h3{font-size:1.27rem}h4{font-size:1rem}p{margin:0 0 18px}.lead{font-size:clamp(1.08rem,1.7vw,1.3rem);line-height:1.7}.muted{color:var(--muted)}.small{font-size:.88rem}.role{color:var(--teal);font-weight:800}.role:hover{text-decoration:underline;text-underline-offset:3px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:999px;padding:13px 19px;border:1px solid transparent;font-weight:850;transition:.2s ease}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--gold);color:#17251f;box-shadow:0 12px 30px rgba(214,166,59,.18)}.btn-secondary{border-color:rgba(255,255,255,.3);color:#fff;background:rgba(255,255,255,.07)}.btn-light{background:#fff;border-color:var(--line);color:var(--ink)}
.hero{position:relative;overflow:hidden;background:linear-gradient(125deg,#061820 0%,#0a2c39 57%,#0c5a60 100%);color:#fff}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 22%,rgba(35,199,189,.22),transparent 25%),radial-gradient(circle at 14% 90%,rgba(214,166,59,.09),transparent 20%)}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.15fr .85fr;gap:80px;align-items:center;min-height:650px;padding:80px 0}.hero-kicker{display:flex;align-items:center;gap:12px;font-size:.82rem;color:#b9d9dc;margin-bottom:28px}.hero-kicker .dot{width:7px;height:7px;background:var(--aqua);border-radius:50%;box-shadow:0 0 0 7px rgba(35,199,189,.1)}.hero h1{max-width:820px;font-size:clamp(3.2rem,6vw,5.8rem)}.hero h1 em{font-style:normal;color:#7ce2da}.hero .lead{max-width:780px;color:#d1e0e3}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.hero-meta{display:flex;flex-wrap:wrap;gap:18px;margin-top:34px;color:#b9cdd1;font-size:.84rem}.hero-meta span{display:flex;align-items:center;gap:7px}.hero-meta span:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--gold)}
.section{padding:90px 0}.section-soft{background:var(--soft)}.section-dark{background:var(--navy);color:#fff}.section-head{display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:40px}.section-head>p{max-width:610px}.grid{display:grid;gap:22px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;transition:.2s ease}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.card-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--teal);font-weight:850;margin-bottom:14px}.pillar{position:relative;min-height:310px;padding:30px;overflow:hidden}.pillar:after{content:attr(data-index);position:absolute;right:20px;bottom:-20px;font-weight:950;font-size:8rem;line-height:1;color:#eef4f2;z-index:0}.pillar>*{position:relative;z-index:1}.pillar-icon{width:52px;height:52px;border-radius:16px;background:var(--soft);display:grid;place-items:center;font-weight:900;color:var(--teal);margin-bottom:42px}.tag-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.tag{font-size:.76rem;padding:6px 9px;border-radius:999px;background:var(--soft);color:#205d61;font-weight:750}.feature-split{display:grid;grid-template-columns:.92fr 1.08fr;gap:34px;align-items:stretch}.feature-panel{border-radius:28px;background:#fff;border:1px solid var(--line);padding:38px}.feature-panel.dark{background:linear-gradient(135deg,var(--navy),#104653);color:#fff;border:0}.feature-panel.dark .muted{color:#c7d8db}.statement{font-size:clamp(1.55rem,3vw,2.45rem);line-height:1.35;letter-spacing:-.04em}.statement strong{color:var(--teal)}.dark .statement strong{color:#74ded7}.method-list{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:24px}.method{padding:16px;border:1px solid var(--line);border-radius:16px}.dark .method{border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.04)}.method b{display:block}.method span{font-size:.82rem;color:var(--muted)}.dark .method span{color:#b9cdd1}
.pi-card{display:grid;grid-template-columns:300px 1fr;gap:42px;background:#fff;border:1px solid var(--line);border-radius:30px;padding:32px}.pi-photo{width:100%;max-width:300px;aspect-ratio:1;align-self:center;justify-self:center;border-radius:50%;overflow:hidden;border:1px solid var(--line)}.pi-photo img{display:block;width:100%;height:100%;object-fit:cover}.pi-copy{padding:10px 8px}.profile-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.badge{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:.8rem;font-weight:750}.badge:before{content:"↗";color:var(--teal)}
.project-card{padding:0;overflow:hidden}.project-top{padding:26px 28px;background:linear-gradient(145deg,#0d3441,#0b6063);color:#fff;min-height:155px}.project-top.alt{background:linear-gradient(145deg,#102736,#294b60)}.project-no{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:#a9d5d5;font-weight:850}.project-body{padding:25px 28px}.project-body p{font-size:.92rem}.source-label{display:inline-flex;padding:5px 8px;background:#fff4d9;color:#755813;border-radius:8px;font-size:.7rem;font-weight:850;margin-top:5px}
.pub-list{display:grid}.pub-item{display:grid;grid-template-columns:90px 1fr auto;gap:24px;align-items:start;padding:25px 0;border-bottom:1px solid var(--line)}.pub-year{font-weight:900;color:var(--teal)}.pub-item h3{font-size:1.12rem;margin-bottom:8px;line-height:1.35;letter-spacing:-.02em}.pub-meta{color:var(--muted);font-size:.88rem}.pub-actions{display:flex;gap:8px}.pub-link{display:inline-flex;padding:7px 10px;border:1px solid var(--line);border-radius:9px;font-size:.76rem;font-weight:800;background:#fff}.pub-link:hover{border-color:var(--teal);color:var(--teal)}
.page-hero{background:linear-gradient(125deg,#071c25,#0d4550);color:#fff;padding:68px 0 60px}.page-hero h1{width:100%;font-size:clamp(2.8rem,5vw,4.8rem);margin-top:8px;text-align:center;text-wrap:balance}.page-hero .lead{color:#cde0e3;width:100%;max-width:none;text-align:center;margin-inline:auto}.theme-row{display:grid;grid-template-columns:190px 1fr 300px;gap:36px;padding:42px 0;border-bottom:1px solid var(--line)}.theme-index{font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;color:var(--teal);font-weight:850}.theme-row h2{font-size:clamp(1.7rem,3vw,2.5rem)}.question-box{padding:20px;border-radius:18px;background:var(--soft);align-self:start}.question-box strong{display:block;margin-bottom:8px}.question-box p{font-size:.88rem;margin:0;color:var(--muted)}
.person-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.person-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px}.recruit-card{border:1px dashed #9db6b4;background:#f9fbfa;border-radius:22px;padding:28px}.recruit-card h3{color:var(--teal)}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0}.filter-btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;font-size:.8rem;font-weight:800;color:#485d65;cursor:pointer}.filter-btn.active,.filter-btn:hover{background:var(--navy);color:#fff;border-color:var(--navy)}.pub-item[hidden]{display:none}.search-wrap{margin-top:24px}.search-wrap input{width:100%;max-width:520px;padding:13px 15px;border-radius:13px;border:1px solid var(--line);background:#fff;outline:none}.search-wrap input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(7,139,141,.1)}
.roadmap{display:grid;gap:0}.roadmap-item{display:grid;grid-template-columns:150px 1fr;gap:28px;padding:28px 0;border-bottom:1px solid var(--line)}.roadmap-phase{color:var(--teal);font-weight:900}.status{display:inline-flex;padding:5px 8px;border-radius:8px;background:#fff3d8;color:#765817;font-size:.72rem;font-weight:850}.status.plan{background:#eaf5f3;color:#286064}.status.future{background:#edf0f5;color:#536271}
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:28px}.contact-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px}.contact-list{display:grid;gap:12px;margin-top:22px}.contact-row{padding:15px 0;border-bottom:1px solid var(--line)}.contact-row:last-child{border:0}.contact-row small{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:800}.form{display:grid;gap:15px}.field label{display:block;font-size:.86rem;font-weight:800;margin-bottom:6px}.field input,.field textarea,.field select{width:100%;border:1px solid #cfdcda;background:#fff;border-radius:12px;padding:12px 14px;outline:none}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(7,139,141,.1)}.field textarea{min-height:140px;resize:vertical}.notice{padding:15px 17px;border-radius:14px;background:#fff4dc;color:#6d531b;font-size:.87rem;border:1px solid #f2deb1}.cta{border-radius:30px;padding:42px;background:linear-gradient(135deg,#0c2b37,#0b6869);color:#fff;display:flex;justify-content:space-between;align-items:center;gap:32px}.cta p{max-width:680px;color:#c9dfe1}.cta h2{font-size:clamp(1.8rem,3vw,3rem)}
footer{background:#06171e;color:#bfcfd2;padding:62px 0 28px}.footer-grid{display:grid;grid-template-columns:1.4fr .7fr .8fr;gap:50px}.footer-logo{display:flex;align-items:center;gap:13px;margin-bottom:18px}.footer-logo img{width:48px}.footer-grid h3,.footer-grid h4{color:#fff}.footer-grid h3{font-size:1.25rem}.footer-grid a{display:block;padding:4px 0}.footer-grid a:hover{color:#fff}.footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:38px;padding-top:23px;border-top:1px solid rgba(255,255,255,.1);font-size:.8rem}
.fade{opacity:1;transform:none}
.js .fade{opacity:0;transform:translateY(10px);transition:opacity .55s ease,transform .55s ease}.js .fade.visible{opacity:1;transform:none}
@media(max-width:1050px){.nav-links a{padding:8px 7px;font-size:.84rem}.hero-grid{grid-template-columns:1fr .75fr;gap:40px}.theme-row{grid-template-columns:130px 1fr}.theme-row .question-box{grid-column:2}}
@media(max-width:880px){.utility{display:none}.nav-links{display:none;position:absolute;left:20px;right:20px;top:70px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:10px;flex-direction:column;align-items:stretch}.nav-links.open{display:flex}.nav-links a{padding:11px 12px}.menu-toggle{display:block}.hero-grid{grid-template-columns:1fr;padding:68px 0}.grid-3,.grid-2,.person-grid,.contact-grid,.feature-split,.pi-card,.footer-grid{grid-template-columns:1fr}.pi-card{gap:24px}.section-head,.cta{align-items:flex-start;flex-direction:column}.section{padding:70px 0}.pub-item{grid-template-columns:70px 1fr}.pub-actions{grid-column:2}.theme-row{grid-template-columns:1fr;gap:12px}.theme-row .question-box{grid-column:auto}.roadmap-item{grid-template-columns:110px 1fr}}
@media(max-width:600px){.container{width:min(calc(100% - 28px),var(--max))}.hero h1{font-size:3rem}.hero-grid{padding:54px 0}.section{padding:58px 0}.method-list{grid-template-columns:1fr}.pub-item,.roadmap-item{grid-template-columns:1fr;gap:8px}.pub-actions{grid-column:auto}.cta{padding:28px}.footer-bottom{flex-direction:column}.pi-card{padding:20px}.page-hero{padding:52px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.fade{opacity:1;transform:none;transition:none}.btn,.card{transition:none}}

/* HECS IITG brand palette.
   --brand-* are the logo hues: use them on dark grounds and for the mark itself.
   On light grounds use --teal / --gold, which are the AA-contrast versions. */
:root{
  --brand-navy:#0B2342;
  --brand-blue:#004E9B;
  --brand-teal:#00A79D;   /* logo teal — 8.3:1 on --navy, only 2.99:1 on white */
  --brand-orange:#F59C00; /* logo orange — decorative only, never text on white */
  --brand-teal-ink:#046e70; /* AA text teal on light grounds — 6.05:1 on white */
}
.footer-brand img{width:62px;height:62px;object-fit:contain;background:#fff;border-radius:50%;padding:3px}
.hero-logo-panel{position:relative;min-height:500px;display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid rgba(255,255,255,.14);border-radius:38px;background:linear-gradient(145deg,rgba(255,255,255,.10),rgba(255,255,255,.035));backdrop-filter:blur(10px);overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 30px 80px rgba(0,0,0,.12)}
.hero-logo-panel:before{content:"";position:absolute;width:390px;height:390px;border-radius:50%;background:radial-gradient(circle,rgba(0,167,157,.22),rgba(0,78,155,.07) 58%,transparent 72%);filter:blur(2px)}
.hero-logo-glow{position:absolute;width:300px;height:300px;border-radius:50%;background:rgba(0,167,157,.11);filter:blur(50px)}
.hero-logo{position:relative;z-index:2;width:min(82%,430px);max-height:420px;filter:drop-shadow(0 22px 40px rgba(0,0,0,.22));background:rgba(255,255,255,.97);border-radius:50%;padding:5px}
.hero-logo-chips{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;padding:0 24px}
.hero-logo-chips span{font-size:.72rem;font-weight:800;letter-spacing:.04em;padding:6px 9px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:rgba(4,28,42,.46);color:#d7ebed}
.launch-note{display:flex;gap:12px;align-items:flex-start;max-width:740px;margin:23px 0 0;padding:13px 15px;border-left:3px solid var(--brand-orange);border-radius:0 12px 12px 0;background:rgba(255,255,255,.07);color:#d8e7e9;font-size:.82rem}
.launch-note strong{color:#fff;white-space:nowrap}.launch-note span{color:#bed2d5}
.site-header .nav{height:82px}
.site-header{border-bottom-color:rgba(0,167,157,.16)}
.nav-links a:hover,.nav-links a.active{color:var(--brand-teal)}
.btn-primary{background:var(--brand-orange);color:#17251f;box-shadow:0 12px 30px rgba(245,156,0,.18)}
.hero h1 em{color:#61d7ce}
@media(max-width:1050px){.hero-logo-panel{min-height:440px}.hero-logo{width:min(80%,360px)}}
@media(max-width:880px){.hero-logo-panel{min-height:460px;max-width:650px}.hero-logo{width:min(76%,390px)}.launch-note{flex-direction:column;gap:3px}}
@media(max-width:600px){.site-header .nav{height:70px}.hero-logo-panel{min-height:370px;border-radius:26px}.hero-logo{width:min(78%,310px)}.launch-note strong{white-space:normal}.footer-brand img{width:54px;height:54px}}

/* HECS IITG interactive motion system — v5 */
:root{--motion-fast:180ms;--motion-med:420ms;--motion-slow:780ms;--focus-color:var(--brand-teal)}
body{overflow-x:clip}.scroll-progress{position:fixed;inset:0 auto auto 0;width:100%;height:3px;z-index:200;pointer-events:none;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,var(--brand-blue),var(--brand-teal),var(--brand-orange));box-shadow:0 0 18px rgba(0,167,157,.35)}
.site-header{transition:background var(--motion-med) ease,box-shadow var(--motion-med) ease,transform var(--motion-med) ease}.site-header.is-scrolled{background:rgba(247,249,248,.975);box-shadow:0 12px 34px rgba(7,28,37,.09)}.site-header .nav{transition:height var(--motion-med) ease}.nav-links a{position:relative;transition:color var(--motion-fast) ease,background var(--motion-fast) ease,transform var(--motion-fast) ease}.nav-links a:after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;border-radius:99px;background:linear-gradient(90deg,var(--brand-teal),var(--brand-blue));transform:scaleX(0);transform-origin:center;transition:transform var(--motion-med) cubic-bezier(.2,.8,.2,1)}.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}
.hero{isolation:isolate}.hero:after{content:"";position:absolute;inset:-20%;z-index:0;opacity:.18;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:58px 58px;transform:perspective(600px) rotateX(64deg) translateY(14%);transform-origin:center 35%;mask-image:linear-gradient(to bottom,transparent 4%,#000 42%,transparent 88%);animation:gridDrift 18s linear infinite}.hero-grid{z-index:2}.hero-grid>div:first-child{animation:heroTextIn .9s cubic-bezier(.18,.8,.18,1) both}.hero-kicker .dot{animation:pulseDot 2.4s ease-in-out infinite}.hero h1 em{position:relative;text-shadow:0 0 34px rgba(97,215,206,.14)}.hero h1 em:after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:4px;border-radius:99px;background:linear-gradient(90deg,var(--brand-teal),transparent);transform:scaleX(0);transform-origin:left;animation:underlineGrow 1s .65s ease forwards}.hero-actions .btn{position:relative;overflow:hidden}.btn .ripple{position:absolute;border-radius:50%;transform:translate(-50%,-50%) scale(0);background:rgba(255,255,255,.38);pointer-events:none;animation:ripple .65s ease-out forwards}.scroll-cue{position:absolute;z-index:5;left:50%;bottom:20px;transform:translateX(-50%);display:flex;align-items:center;gap:9px;color:#b9d6d8;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;font-weight:800}.scroll-cue i{width:20px;height:32px;border:1px solid rgba(255,255,255,.38);border-radius:999px;position:relative}.scroll-cue i:after{content:"";position:absolute;left:50%;top:6px;width:4px;height:7px;border-radius:99px;background:var(--brand-orange);transform:translateX(-50%);animation:scrollDot 1.7s ease-in-out infinite}
.hero-logo-panel{--tilt-x:0deg;--tilt-y:0deg;--spot-x:50%;--spot-y:50%;transform-style:preserve-3d;transition:transform .24s ease,border-color .35s ease,box-shadow .35s ease;transform:perspective(1100px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y))}.hero-logo-panel:after{content:"";position:absolute;width:78%;aspect-ratio:1;border-radius:50%;border:1px dashed rgba(124,226,218,.23);animation:spinRing 22s linear infinite;z-index:1}.hero-logo-panel:hover{border-color:rgba(124,226,218,.3);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 34px 90px rgba(0,0,0,.18)}.hero-logo-glow{animation:glowBreath 4.5s ease-in-out infinite}.hero-logo{animation:logoFloat 5.5s ease-in-out infinite;transform-origin:center;transition:filter .35s ease}.hero-logo-panel:hover .hero-logo{filter:drop-shadow(0 30px 48px rgba(0,0,0,.28))}.hero-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.hero-particle{position:absolute;width:var(--size);height:var(--size);left:var(--x);top:var(--y);border-radius:50%;background:var(--particle-color);opacity:var(--opacity);filter:blur(var(--blur));animation:particleFloat var(--duration) ease-in-out var(--delay) infinite alternate}.hero-logo-chips{gap:9px}.research-chip{appearance:none;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:rgba(4,28,42,.46);color:#d7ebed;padding:7px 10px;font:inherit;font-size:.72rem;font-weight:800;letter-spacing:.04em;cursor:pointer;transition:transform var(--motion-fast) ease,background var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-fast) ease}.research-chip:hover,.research-chip:focus-visible{transform:translateY(-2px);border-color:rgba(255,255,255,.34);outline:none}.research-chip.active{background:color-mix(in srgb,var(--focus-color) 25%,rgba(4,28,42,.72));border-color:color-mix(in srgb,var(--focus-color) 70%,white 10%);color:#fff;box-shadow:0 8px 24px color-mix(in srgb,var(--focus-color) 18%,transparent)}.hero-focus{position:relative;z-index:3;margin-top:13px;min-height:30px;display:flex;align-items:center;justify-content:center;gap:8px;color:#d8e9eb;font-size:.75rem;padding:0 24px;text-align:center}.hero-focus span{color:#8fb0b5;text-transform:uppercase;letter-spacing:.13em;font-size:.62rem;font-weight:850}.hero-focus strong{font-weight:750;transition:opacity .2s ease,transform .2s ease}.hero-focus strong.is-changing{opacity:0;transform:translateY(5px)}
.js .fade{opacity:0;transform:translateY(24px) scale(.985);transition:opacity var(--motion-slow) cubic-bezier(.2,.75,.2,1),transform var(--motion-slow) cubic-bezier(.2,.75,.2,1);transition-delay:var(--reveal-delay,0ms)}.js .fade.visible{opacity:1;transform:none}.card,.feature-panel,.pi-card,.project-card,.person-card,.contact-card{position:relative}.interactive-card{--mx:50%;--my:50%;transform-style:preserve-3d;will-change:transform;transition:transform .24s ease,box-shadow .3s ease,border-color .3s ease}.interactive-card:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(260px circle at var(--mx) var(--my),rgba(35,199,189,.12),transparent 62%);transition:opacity .25s ease;z-index:0}.interactive-card:hover:before{opacity:1}.interactive-card>*{position:relative;z-index:1}.pillar-icon,.method,.tag,.badge,.pub-link{transition:transform var(--motion-fast) ease,border-color var(--motion-fast) ease,background var(--motion-fast) ease,color var(--motion-fast) ease}.pillar:hover .pillar-icon{transform:rotate(-5deg) scale(1.06);background:#e4f7f4}.method:hover{transform:translateY(-3px);border-color:#b5d8d4}.tag:hover,.badge:hover,.pub-link:hover{transform:translateY(-2px)}.page-hero{position:relative;overflow:hidden;background-size:180% 180%;animation:pageGradient 12s ease infinite}.page-hero:after{content:"";position:absolute;right:-80px;top:-120px;width:360px;height:360px;border-radius:50%;border:1px solid rgba(124,226,218,.14);box-shadow:0 0 0 55px rgba(124,226,218,.04),0 0 0 110px rgba(124,226,218,.025);animation:slowOrbit 16s linear infinite}.page-hero .container{position:relative;z-index:1}.cta{background-size:180% 180%;animation:ctaShift 10s ease infinite}.pub-item{transition:background var(--motion-fast) ease,transform var(--motion-fast) ease,padding-left var(--motion-fast) ease}.pub-item:hover{background:rgba(255,255,255,.55);transform:translateX(4px)}.back-to-top{position:fixed;right:22px;bottom:22px;z-index:70;width:46px;height:46px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(7,28,37,.9);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 14px 34px rgba(7,28,37,.2);opacity:0;transform:translateY(10px) scale(.9);pointer-events:none;transition:opacity .25s ease,transform .25s ease,background .2s ease}.back-to-top.show{opacity:1;transform:none;pointer-events:auto}.back-to-top:hover{background:var(--brand-teal)}
@keyframes heroTextIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes pulseDot{0%,100%{box-shadow:0 0 0 7px rgba(35,199,189,.1)}50%{box-shadow:0 0 0 13px rgba(35,199,189,.025)}}@keyframes underlineGrow{to{transform:scaleX(1)}}@keyframes gridDrift{to{transform:perspective(600px) rotateX(64deg) translate(58px,14%)}}@keyframes scrollDot{0%{opacity:0;transform:translate(-50%,0)}35%{opacity:1}100%{opacity:0;transform:translate(-50%,12px)}}@keyframes spinRing{to{transform:rotate(360deg)}}@keyframes logoFloat{0%,100%{transform:translateY(0) rotate(-.25deg)}50%{transform:translateY(-10px) rotate(.25deg)}}@keyframes glowBreath{0%,100%{transform:scale(.95);opacity:.65}50%{transform:scale(1.12);opacity:1}}@keyframes particleFloat{from{transform:translate3d(-10px,-8px,0) scale(.8)}to{transform:translate3d(18px,24px,0) scale(1.18)}}@keyframes ripple{to{transform:translate(-50%,-50%) scale(18);opacity:0}}@keyframes pageGradient{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}@keyframes slowOrbit{to{transform:rotate(360deg)}}@keyframes ctaShift{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}
@media(max-width:880px){.scroll-cue{display:none}.hero-logo-panel{transform:none!important}.page-hero:after{right:-190px}.back-to-top{right:14px;bottom:14px}.pub-item:hover{transform:none;padding-left:0}}
@media(max-width:600px){.hero-focus{font-size:.69rem}.hero-focus span{display:none}.research-chip{font-size:.68rem;padding:7px 9px}}
@media(prefers-reduced-motion:reduce){.hero:after,.hero-kicker .dot,.hero h1 em:after,.scroll-cue i:after,.hero-logo-panel:after,.hero-logo-glow,.hero-logo,.hero-particle,.page-hero,.page-hero:after,.cta{animation:none!important}.hero-grid>div:first-child{animation:none}.interactive-card{transform:none!important}.scroll-progress{display:none}.fade{opacity:1;transform:none;transition:none}.back-to-top{transition:none}}

/* <picture> must not become the layout box — the img keeps every existing
   rule (percentage widths, flex behaviour, max-height) that targets it. */
picture{display:contents}
/* the hero badge is circular — never let a height constraint squash it */
.hero-logo{height:auto;aspect-ratio:1/1;object-fit:contain}

/* ==========================================================================
   Institutional masthead
   Moved out of main.js (it used to rebuild the header at runtime, which made
   every page jump on load). This is now plain markup + plain CSS.
   ========================================================================== */
.site-header{
  position:sticky;top:var(--masthead-offset,0px);z-index:80;background:#fff;border:0;
  box-shadow:0 1px 0 rgba(11,35,66,.10);backdrop-filter:none;
  transition:box-shadow var(--motion-med) ease;
}
.lab-masthead{
  max-height:184px;overflow:hidden;background:#fff;
}
.lab-masthead-inner{
  min-height:168px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;gap:22px;padding-top:8px;padding-bottom:8px;
}
.lab-emblem-link{display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding-right:22px;border-right:1px solid transparent}
.lab-emblem{width:152px;height:152px;flex:0 0 auto;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(11,35,66,.08))}
.lab-identity{min-width:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.lab-title{
  color:#0B2342;font-size:clamp(1.55rem,2.15vw,2.12rem);font-weight:900;
  letter-spacing:-.035em;line-height:1.08;white-space:nowrap;
  text-wrap:balance;
}
.lab-meta-line{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:8px;min-width:0}
.lab-acronym{color:var(--teal);font-size:.98rem;font-weight:900;letter-spacing:.115em;white-space:nowrap}
.lab-divider{width:1px;height:18px;background:rgba(11,35,66,.20);flex:0 0 auto}
.lab-school{color:#425866;font-size:.84rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lab-institute{
  display:inline-block;width:max-content;max-width:100%;margin:2px auto 0;
  color:#5d6f79;font-size:.78rem;font-weight:650;transition:color .18s ease;
}
.lab-institute:hover{color:var(--brand-blue)}
.iitg-brand-link{
  display:flex;align-items:center;justify-content:flex-end;min-width:0;
  padding-left:22px;border-left:1px solid rgba(11,35,66,.14);
}
.iitg-brand{width:152px;height:152px;flex:0 0 auto;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(11,35,66,.08))}

.lab-navrow{
  background:linear-gradient(90deg,#0B2342 0%,#0D3449 62%,#0B4C56 100%);
  border-top:1px solid rgba(0,167,157,.14);box-shadow:0 4px 16px rgba(7,28,37,.08);
}
.lab-nav-inner{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative}
.lab-navrow .nav-tag{
  color:#8fb6bb;font-size:.7rem;font-weight:850;letter-spacing:.14em;
  text-transform:uppercase;white-space:nowrap;
}
.lab-navrow .nav-links{display:flex;align-items:center;gap:3px;margin-left:auto}
.lab-navrow .nav-links a{
  color:#E5EFF1;background:transparent;border-radius:8px;padding:11px 12px;
  font-size:1rem;font-weight:780;
  transition:color .18s ease,background .18s ease,transform .18s ease;
}
.lab-navrow .nav-links a:hover{color:#fff;background:rgba(255,255,255,.08);transform:translateY(-1px)}
.lab-navrow .nav-links a.active{color:#fff;background:rgba(0,167,157,.30)}
.lab-navrow .nav-links a:after{bottom:3px;background:linear-gradient(90deg,#61D7CE,#F59C00)}
.lab-navrow .menu-toggle{display:none;color:#fff;border-color:rgba(255,255,255,.30);background:rgba(255,255,255,.10)}

/* Keep both header rows in normal flow at every scroll position. The negative
   sticky offset lets the masthead leave the viewport while the nav stays put. */
.site-header.is-scrolled{box-shadow:0 10px 28px rgba(7,28,37,.18)}

@media(max-width:1120px){
  .lab-emblem,.iitg-brand{width:126px;height:126px}
  .lab-masthead-inner{min-height:144px;grid-template-columns:auto minmax(0,1fr) auto;gap:17px}
  .lab-title{font-size:clamp(1.35rem,2.2vw,1.8rem)}
  .lab-school{font-size:.78rem}
  .iitg-brand-link{padding-left:17px}
  .lab-emblem-link{padding-right:17px}
  .lab-navrow .nav-links a{padding:10px 7px;font-size:.9rem}
}
@media(max-width:980px){
  .lab-navrow .nav-tag{display:none}
}
@media(max-width:880px){
  .lab-masthead{max-height:150px}
  .lab-masthead-inner{min-height:134px;grid-template-columns:auto minmax(0,1fr) auto;gap:14px}
  .lab-emblem,.iitg-brand{width:106px;height:106px}
  .lab-title{font-size:clamp(1.12rem,4vw,1.5rem);white-space:normal}
  .lab-meta-line{gap:8px;margin-top:6px;flex-wrap:wrap;justify-content:center}
  .lab-divider{display:none}
  .lab-school{white-space:normal;font-size:.73rem}
  .lab-institute{display:none}
  .iitg-brand-link{padding-left:12px}
  .lab-emblem-link{padding-right:12px}
  .lab-nav-inner{min-height:50px}
  .lab-navrow .nav-tag{display:block;color:#9fc3c7;font-size:.66rem}
  .lab-navrow .menu-toggle{display:block}
  .lab-navrow .nav-links{
    display:none;position:absolute;z-index:100;top:calc(100% + 8px);left:0;right:0;
    flex-direction:column;align-items:stretch;gap:2px;padding:9px;background:#0B2342;
    border:1px solid rgba(255,255,255,.10);border-radius:14px;box-shadow:0 18px 45px rgba(7,28,37,.28);
  }
  .lab-navrow .nav-links.open{display:flex}
  .lab-navrow .nav-links a{width:100%;padding:12px 13px;font-size:.9375rem}
}
@media(max-width:560px){
  .lab-masthead{max-height:126px}
  .lab-masthead-inner{min-height:112px;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;padding:7px 0}
  .lab-emblem,.iitg-brand{width:72px;height:72px}
  .lab-title{font-size:clamp(.84rem,4.2vw,1.02rem);line-height:1.12}
  .lab-meta-line{margin-top:5px}
  .lab-acronym{font-size:.64rem;letter-spacing:.09em}
  .lab-divider,.lab-school{display:none}
  .iitg-brand-link{padding-left:8px}
  .lab-emblem-link{padding-right:8px}
}
@media(prefers-reduced-motion:reduce){
  .lab-masthead{transition:none}
}

/* ==========================================================================
   Focus, targets and form state
   ========================================================================== */
a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--brand-teal);outline-offset:2px;border-radius:4px;
}
.lab-navrow a:focus-visible,.hero a:focus-visible,.hero button:focus-visible,
.section-dark a:focus-visible,footer a:focus-visible{outline-color:#7ce2da}
.research-chip:hover{transform:translateY(-2px);border-color:rgba(255,255,255,.34)}
.research-chip:focus-visible{transform:translateY(-2px);outline:2px solid #7ce2da;outline-offset:3px}
.skip-link:focus{left:10px;outline:2px solid var(--brand-teal);outline-offset:2px}
.role{display:inline-block;padding:4px 0}

#form-note{transition:background .2s ease,color .2s ease,border-color .2s ease}
#form-note[data-state="pending"]{background:#eef3f4;color:#42545a;border-color:#d3dddd}
#form-note[data-state="success"]{background:#e2f2ea;color:#175540;border-color:#b4d9c6}
#form-note[data-state="error"]{background:#f9e7e3;color:#8f2712;border-color:#e6c0b5}

/* ==========================================================================
   Figures — research imagery with a caption and a source line
   ========================================================================== */
.figure{margin:0;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff}
.figure img{display:block;width:100%;height:auto;background:var(--soft)}
.figure figcaption{padding:14px 18px;font-size:.84rem;color:var(--muted);line-height:1.55}
.figure figcaption b{display:block;color:var(--ink);font-weight:750;margin-bottom:3px}
.figure figcaption cite{display:block;margin-top:6px;font-style:normal;font-size:.76rem;color:var(--muted)}
.figure-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px;margin-top:30px}

/* ==========================================================================
   News
   ========================================================================== */
.news-list{display:grid;gap:0;margin-top:8px}
.news-item{
  display:grid;grid-template-columns:132px 1fr;gap:0 30px;
  padding:26px 0;border-bottom:1px solid var(--line);
}
.news-item:last-child{border-bottom:0}
.news-date{font-size:.78rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);padding-top:4px}
.news-item h3{margin:0 0 8px;font-size:1.2rem;letter-spacing:-.02em}
.news-item p{margin:0;color:var(--muted);max-width:66ch}
.news-tag{
  display:inline-block;margin-bottom:9px;padding:4px 9px;border-radius:7px;
  background:var(--soft);color:#20575b;font-size:.7rem;font-weight:850;
  letter-spacing:.1em;text-transform:uppercase;
}
@media(max-width:640px){
  .news-item{grid-template-columns:1fr;gap:0}
  .news-date{padding-top:0;margin-bottom:8px}
}

/* ==========================================================================
   Open positions / project briefs
   ========================================================================== */
.brief{border:1px solid var(--line);border-radius:22px;background:#fff;overflow:hidden}
.brief-head{padding:24px 28px 20px;border-bottom:1px solid var(--line);background:var(--soft2)}
.brief-head h3{margin:8px 0 0;font-size:1.42rem;letter-spacing:-.025em}
.brief-body{padding:22px 28px 26px}
.brief-body dl{display:grid;grid-template-columns:132px 1fr;gap:12px 20px;margin:0}
.brief-body dt{font-size:.72rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);padding-top:3px}
.brief-body dd{margin:0;color:var(--muted);font-size:.93rem}
.brief-body dd strong{color:var(--ink);font-weight:650}
@media(max-width:620px){
  .brief-body dl{grid-template-columns:1fr;gap:4px 0}
  .brief-body dt{margin-top:12px}
}

/* ==========================================================================
   Resources & teaching
   ========================================================================== */
.res-item{
  display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;
  padding:22px 0;border-bottom:1px solid var(--line);
}
.res-item:last-child{border-bottom:0}
.res-item h3{margin:0 0 6px;font-size:1.1rem;letter-spacing:-.015em}
.res-item p{margin:0;color:var(--muted);font-size:.9rem;max-width:62ch}
.res-meta{margin-top:9px;font-size:.75rem;color:var(--muted);letter-spacing:.04em}
.status.soon{background:#eef3f4;color:#48606a;border-color:#d3dddd}
@media(max-width:620px){
  .res-item{grid-template-columns:1fr;gap:14px;align-items:start}
}
.course-item{padding:22px 0;border-bottom:1px solid var(--line)}
.course-item:last-child{border-bottom:0}
.course-item h3{margin:8px 0 8px;font-size:1.14rem;letter-spacing:-.015em}
.course-item p{margin:0;color:var(--muted);max-width:66ch}
.course-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;font-weight:700;letter-spacing:.06em;color:var(--teal)}

/* ==========================================================================
   Misc fixes
   ========================================================================== */
.pub-empty{padding:34px 4px;color:var(--muted);font-size:.95rem}
.contact-row a{color:var(--teal);font-weight:650}
.contact-row a:hover{text-decoration:underline}
.profile-links .badge{transition:transform var(--motion-fast) ease,border-color var(--motion-fast) ease}
.profile-links .badge:hover{border-color:#b5d8d4}
@media(max-width:600px){
  .hero h1{font-size:2.4rem}
}

/* ==========================================================================
   Hero research map
   Six themes on a ring, each a real link into the matching research pillar.
   Replaces the logo that used to sit here — it duplicated the masthead badge.
   ========================================================================== */
.visually-hidden{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.rmap-panel{padding:26px}
.rmap-panel:after{display:none}          /* the panel's own spinning ring would fight the orbit */
.rmap{
  position:relative;z-index:2;width:min(100%,430px);aspect-ratio:1;margin:0 auto;
}
.rmap-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.rmap-ring{
  fill:none;stroke:rgba(124,226,218,.30);stroke-width:1.5;stroke-dasharray:4 9;
  transform-origin:50% 50%;animation:spinRing 46s linear infinite;
}
.rmap-spokes line{stroke:rgba(190,225,228,.30);stroke-width:1.5}
.rmap-dot{opacity:.9}

.rmap-core{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:29%;aspect-ratio:1;border-radius:50%;z-index:3;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  background:radial-gradient(circle at 38% 32%,#0d6b6a,#053f47 70%);
  border:1px solid rgba(124,226,218,.5);
  box-shadow:0 0 0 7px rgba(6,32,40,.55),0 14px 36px rgba(0,0,0,.32);
}
.rmap-core b{color:#fff;font-size:clamp(.95rem,3.4vw,1.32rem);font-weight:900;letter-spacing:-.02em;line-height:1}
.rmap-core i{color:#7ce2da;font-style:normal;font-size:.62rem;font-weight:850;letter-spacing:.17em}

.rmap-node{
  position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);
  width:25.5%;aspect-ratio:1;border-radius:50%;z-index:4;
  display:grid;place-items:center;text-align:center;padding:6px;
  background:rgba(6,28,36,.80);
  border:1.5px solid color-mix(in srgb,var(--a) 55%,transparent);
  color:var(--a);font-size:clamp(.66rem,1.9vw,.82rem);font-weight:850;letter-spacing:.01em;
  box-shadow:0 8px 22px rgba(0,0,0,.26);
  transition:transform var(--motion-fast) ease,border-color var(--motion-fast) ease,
             box-shadow var(--motion-fast) ease,background var(--motion-fast) ease;
}
.rmap-node:hover,.rmap-node:focus-visible{
  transform:translate(-50%,-50%) scale(1.09);
  background:rgba(8,38,48,.94);
  border-color:var(--a);
  box-shadow:0 0 0 5px color-mix(in srgb,var(--a) 16%,transparent),0 14px 30px rgba(0,0,0,.34);
  outline:none;
}
.rmap-node:focus-visible{outline:2px solid var(--a);outline-offset:4px}
.rmap-node span{display:block;line-height:1.15}

@media(max-width:600px){
  .rmap-panel{padding:18px}
  .rmap{width:min(100%,320px)}
  .rmap-node{width:25.5%;font-size:.62rem}
}
@media(prefers-reduced-motion:reduce){
  .rmap-ring{animation:none}
  .rmap-node{transition:none}
  .rmap-node:hover,.rmap-node:focus-visible{transform:translate(-50%,-50%)}
}

/* white cards sitting on a dark section must not inherit its white text */
.section-dark .card{color:var(--ink)}
.section-dark .card .tag{background:var(--soft);color:#20575b}

/* ============================================================
   Research scope figure (#scope on research.html)
   Self-contained. Uses the site tokens only.
   ============================================================ */
.sc-fig{margin:0}
.sc-scroll{background:#fff;border:1px solid var(--line);border-radius:22px;padding:26px 22px 18px;overflow-x:auto}
.sc-scroll svg{display:block;width:100%;min-width:880px;height:auto}
.sc-cap{margin-top:14px;font-size:.9rem;color:var(--muted);max-width:78ch}
.sc-cap strong{color:var(--ink);font-weight:800}

.sc-s1{color:#0b5e7a}
.sc-s2{color:#0e8f86}
.sc-s3{color:#b07f14}
.sc-s4{color:#c4621a}
.sc-s5{color:#a33417}

.sc-wire{fill:none;stroke:#5c7078;stroke-width:1.4}
.sc-faint{stroke:var(--line);stroke-width:1.2}
.sc-boxbg{fill:#fff;stroke:var(--line);stroke-width:1}
.sc-hit{fill:transparent;stroke:transparent}
.sc-lbl{font-size:10px;letter-spacing:.05em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sc-ink{fill:var(--ink)}
.sc-name{font-size:14px;font-weight:800;fill:var(--ink)}
.sc-metric{font-size:10.5px;fill:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sc-flow{font-size:8.5px;letter-spacing:.08em;fill:var(--muted);text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sc-flowline line{stroke:var(--muted);stroke-width:1.3}
.sc-pillar{font-size:10.5px;letter-spacing:.14em;fill:var(--muted);font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sc-rule{fill:none;stroke:var(--muted);stroke-width:1.2}
.sc-tick line{stroke:var(--line);stroke-width:1.2;stroke-dasharray:3 4}
.sc-dash{fill:none;stroke-width:1.3;stroke-dasharray:4 4}
.sc-mkm path{fill:var(--muted)}
.sc-mk2 path{fill:#0e8f86}
.sc-mk4 path{fill:#c4621a}
.sc-mk5 path{fill:#a33417}

.sc-f1{fill:#0b5e7a}
.sc-f2{fill:#0e8f86}
.sc-f3{fill:#b07f14}
.sc-f4{fill:#c4621a}
.sc-f5{fill:#a33417}
.sc-k1{stroke:#0b5e7a}
.sc-k2{stroke:#0e8f86}
.sc-k3{stroke:#b07f14}
.sc-k4{stroke:#c4621a}
.sc-k5{stroke:#a33417}

.sc-bandbg{fill:var(--soft);stroke:var(--line);stroke-width:1}
.sc-mesh line{stroke:var(--muted);stroke-width:.8;opacity:.35}
.sc-amr line,.sc-amr rect{stroke:#0e8f86;stroke-width:.8}
.sc-bandtitle{font-size:13.5px;font-weight:800;fill:var(--ink)}
.sc-bandsub{font-size:12px;fill:var(--muted)}

.sc-stage,.sc-band{cursor:pointer;transition:opacity .22s ease}
.sc-scroll:hover .sc-stage,.sc-scroll:hover .sc-band{opacity:.42}
.sc-scroll .sc-stage:hover,.sc-scroll .sc-band:hover,
.sc-scroll .sc-stage:focus-visible,.sc-scroll .sc-band:focus-visible{opacity:1}
.sc-stage:hover .sc-boxbg,.sc-band:hover .sc-bandbg{stroke:var(--teal);stroke-width:1.6}
.sc-stage:focus-visible,.sc-band:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.sc-stage,.sc-band{transition:none}}
@media (max-width:760px){.sc-scroll{padding:18px 14px 14px;border-radius:18px}}

/* ------------------------------------------------------------
   Project diagrams (projects.html) - shares the .sc-* primitives
   ------------------------------------------------------------ */
.dg-fig{margin:0 0 20px}
.dg-frame{background:var(--soft2);border:1px solid var(--line);border-radius:14px;padding:12px 14px;overflow-x:auto}
.dg-frame svg{display:block;width:100%;height:auto}
.dg-fig.dg-sm .dg-frame{padding:10px 12px}
.dg-cap{margin-top:9px;font-size:.8rem;line-height:1.55;color:var(--muted)}
.dg-mut{fill:var(--muted)}
.dg-name{font-size:12.5px}
.dg-cone{fill:#0e8f86;fill-opacity:.07;stroke:#0e8f86;stroke-width:1;stroke-dasharray:4 4;stroke-opacity:.5}
.sc-mk3 path{fill:#b07f14}
