/* SAVRN Institute — public catalog section (savrn.com/institute).
   Extends static/marketing.css: crisp white, Fraunces display, copper accent,
   french blue as structural secondary. All selectors prefixed .ins- */

.ins-hero{position:relative;padding:clamp(48px,7vh,92px) 0 0;overflow:hidden}
.ins-hero .wrap{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);gap:clamp(28px,4vw,64px);align-items:center}
.ins-kicker{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.ins-kicker .dot{width:9px;height:9px;border-radius:50%;background:var(--copper);flex:none}
.ins-hero .h1{margin:0 0 18px}
.ins-hero .lede{margin:0 0 28px}
.ins-cta-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-bottom:34px}
.ins-figure{position:relative}
.ins-figure .frame{position:relative;border-radius:24px;overflow:hidden;box-shadow:var(--shadow)}
.ins-figure .frame img{width:100%;height:100%;object-fit:cover;aspect-ratio:16/10;transform:scale(1.02)}
.ins-figure::before{content:"";position:absolute;inset:auto -18px -18px auto;width:62%;height:62%;
  border-radius:24px;background:linear-gradient(135deg,var(--copper-tint),#EAF1F8);z-index:-1}
.ins-figure .cap{margin-top:12px;font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--faint)}

/* stats band */
.ins-stats{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--bone-2)}
.ins-stats .wrap{display:grid;grid-template-columns:repeat(5,1fr);gap:0}
.ins-stat{padding:26px 18px;text-align:center;position:relative}
.ins-stat+.ins-stat::before{content:"";position:absolute;left:0;top:22%;bottom:22%;width:1px;background:var(--rule)}
.ins-stat b{display:block;font-family:'JetBrains Mono',monospace;font-weight:600;font-size:clamp(26px,3vw,38px);
  color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ins-stat span{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}

/* thesis columns */
.ins-thesis{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);margin-top:44px}
.ins-th{border-top:3px solid var(--copper);padding-top:20px}
.ins-th .n{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--copper);letter-spacing:.18em;margin-bottom:10px}
.ins-th h3{font-family:'Fraunces',serif;font-weight:600;font-size:21px;color:var(--ink);margin:0 0 10px}
.ins-th p{font-size:14.5px;line-height:1.62;color:var(--text);margin:0}

/* department grid */
.ins-dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:40px}
.ins-dcard{position:relative;background:#fff;border:1px solid var(--rule);border-radius:20px;overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s}
.ins-dcard:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--rule-2)}
.ins-dcard .im{aspect-ratio:16/9;overflow:hidden;background:var(--bone)}
.ins-dcard .im img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.ins-dcard:hover .im img{transform:scale(1.05)}
.ins-dcard .bd{padding:20px 22px 22px}
.ins-dcard .code{font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:600;letter-spacing:.2em;
  color:var(--copper);text-transform:uppercase}
.ins-dcard h3{font-family:'Fraunces',serif;font-weight:600;font-size:20px;line-height:1.16;color:var(--ink);margin:8px 0 10px}
.ins-dcard p{font-size:13.5px;line-height:1.58;color:var(--text);margin:0 0 14px}
.ins-dcard .ft{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--dim)}
.ins-dcard .ft .go{color:var(--copper);font-weight:600;transition:transform .25s var(--ease);display:inline-flex;gap:6px}
.ins-dcard:hover .ft .go{transform:translateX(4px)}

/* stacking diagram */
.ins-stack{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:14px;align-items:stretch;margin-top:44px}
.ins-sbox{background:#fff;border:1px solid var(--rule);border-radius:18px;padding:24px;border-top:3px solid var(--blue)}
.ins-sbox.hot{border-top-color:var(--copper)}
.ins-sbox b{display:block;font-family:'JetBrains Mono',monospace;font-size:30px;font-weight:600;color:var(--ink);
  font-variant-numeric:tabular-nums}
.ins-sbox h4{font-family:'Fraunces',serif;font-weight:600;font-size:18px;color:var(--ink);margin:6px 0 8px}
.ins-sbox p{font-size:13px;line-height:1.55;color:var(--text);margin:0}
.ins-sarrow{display:flex;align-items:center;color:var(--copper);font-size:22px}

/* course rows (dept + catalog pages) */
.ins-lvl{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--blue);margin:38px 0 6px;display:flex;align-items:center;gap:12px}
.ins-lvl::after{content:"";flex:1;height:1px;background:var(--rule)}
.ins-crow{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:18px;align-items:center;
  padding:20px 18px;margin:0 -18px;border-radius:16px;transition:background .25s}
.ins-crow:hover{background:var(--bone)}
.ins-crow+.ins-crow{border-top:1px solid var(--rule)}
.ins-crow .code{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:600;color:var(--copper);
  letter-spacing:.06em;white-space:nowrap}
.ins-crow h3{font-family:'Fraunces',serif;font-weight:600;font-size:19px;line-height:1.2;color:var(--ink);margin:0 0 5px}
.ins-crow p{font-size:13.5px;line-height:1.55;color:var(--text);margin:0}
.ins-crow .meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px;white-space:nowrap}
.ins-crow .hrs{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.ins-crow .go{color:var(--copper);font-weight:600;font-size:13px;transition:transform .25s var(--ease)}
.ins-crow:hover .go{transform:translateX(4px)}

/* course page */
.ins-chero{padding:clamp(44px,6vh,72px) 0 34px}
.ins-crumb{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-family:'JetBrains Mono',monospace;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin-bottom:20px}
.ins-crumb a{color:var(--copper)}
.ins-crumb .sep{color:var(--rule-2)}
.ins-glance{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:18px;overflow:hidden;margin:32px 0}
.ins-gl{background:#fff;padding:18px 16px}
.ins-gl b{display:block;font-family:'JetBrains Mono',monospace;font-size:19px;font-weight:600;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.2}
.ins-gl span{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.ins-hourbar{height:8px;border-radius:99px;background:#EAF1F8;overflow:hidden;display:flex;margin:26px 0 8px}
.ins-hourbar i{background:var(--copper);height:100%}
.ins-hourkey{display:flex;gap:22px;font-size:12px;color:var(--dim);margin-bottom:6px}
.ins-hourkey b{color:var(--ink);font-family:'JetBrains Mono',monospace;font-weight:600}
.ins-hourkey .k{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:7px}
.ins-body{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:clamp(30px,4vw,60px);align-items:start}
.ins-prose{font-size:16px;line-height:1.72;color:var(--text)}
.ins-prose p{margin:0 0 18px}
.ins-comp{counter-reset:comp;list-style:none;margin:18px 0 0;padding:0}
.ins-comp li{counter-increment:comp;position:relative;padding:16px 0 16px 58px;border-top:1px solid var(--rule);
  font-size:15px;line-height:1.6;color:var(--text)}
.ins-comp li::before{content:counter(comp,decimal-leading-zero);position:absolute;left:0;top:14px;
  font-family:'JetBrains Mono',monospace;font-weight:600;font-size:15px;color:var(--copper)}
.ins-rail{position:sticky;top:86px;display:flex;flex-direction:column;gap:18px}
.ins-rcard{background:#fff;border:1px solid var(--rule);border-radius:18px;padding:20px;box-shadow:var(--shadow-sm)}
.ins-rcard .im{border-radius:12px;overflow:hidden;margin:-6px -6px 14px;aspect-ratio:16/8}
.ins-rcard .im img{width:100%;height:100%;object-fit:cover}
.ins-rcard h4{font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:var(--dim);margin:0 0 12px}
.ins-rcard .big{font-family:'Fraunces',serif;font-weight:600;font-size:17px;color:var(--ink);line-height:1.25}
.ins-path{list-style:none;margin:0;padding:0}
.ins-path li{position:relative;padding:0 0 16px 24px;font-size:13.5px;line-height:1.5;color:var(--text)}
.ins-path li::before{content:"";position:absolute;left:6px;top:7px;width:8px;height:8px;border-radius:50%;
  background:var(--blue)}
.ins-path li.hot::before{background:var(--copper)}
.ins-path li:not(:last-child)::after{content:"";position:absolute;left:9.5px;top:17px;bottom:-1px;width:1.5px;background:var(--rule-2)}
.ins-path b{color:var(--ink);font-weight:600}
.ins-chips{display:flex;flex-wrap:wrap;gap:8px}
.ins-chip{font-size:12px;font-weight:600;color:var(--slate);background:var(--bone);border:1px solid var(--rule);
  border-radius:999px;padding:6px 12px}
.ins-chip.hot{color:var(--copper-deep);background:var(--copper-tint);border-color:#F3D3BE}
.ins-pn{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:54px}
.ins-pn a{display:block;border:1px solid var(--rule);border-radius:16px;padding:18px 20px;transition:border-color .25s,transform .25s var(--ease)}
.ins-pn a:hover{border-color:var(--copper);transform:translateY(-2px)}
.ins-pn .lab{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.ins-pn .t{font-family:'Fraunces',serif;font-weight:600;font-size:15.5px;color:var(--ink);margin-top:6px;line-height:1.3}
.ins-pn a.nx{text-align:right}

/* book CTA band */
.ins-book{position:relative;border:1px solid var(--rule);border-radius:26px;overflow:hidden;
  background:linear-gradient(120deg,#fff 0%,#F4F8FC 60%,var(--copper-tint) 130%);
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:center;
  padding:clamp(30px,4vw,54px)}
.ins-book h3{font-family:'Fraunces',serif;font-weight:600;font-size:clamp(24px,3vw,36px);color:var(--ink);margin:0 0 10px}
.ins-book p{max-width:52ch;margin:0}
.ins-bookmock{width:190px;aspect-ratio:3/4;background:#fff;border:1px solid var(--rule-2);border-radius:6px 14px 14px 6px;
  box-shadow:-14px 18px 40px -18px rgba(13,22,33,.35);position:relative;flex:none;
  transform:rotate(3deg);transition:transform .4s var(--ease)}
.ins-book:hover .ins-bookmock{transform:rotate(1deg) translateY(-4px)}
.ins-bookmock::before{content:"";position:absolute;left:0;top:0;bottom:0;width:10px;
  background:linear-gradient(90deg,#E3E7EC,#fff);border-radius:6px 0 0 6px}
.ins-bookmock .bm-in{position:absolute;inset:22px 18px;display:flex;flex-direction:column;gap:8px}
.ins-bookmock .bm-dot{width:8px;height:8px;border-radius:50%;background:var(--copper)}
.ins-bookmock .bm-t{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--ink);line-height:1.25}
.ins-bookmock .bm-r{height:3px;width:34px;background:var(--copper);border-radius:2px}
.ins-bookmock .bm-l{height:5px;border-radius:3px;background:var(--bone);margin-top:2px}

/* FAQ */
.ins-faq{margin-top:26px;max-width:820px}
.ins-faq details{border-top:1px solid var(--rule)}
.ins-faq details:last-child{border-bottom:1px solid var(--rule)}
.ins-faq summary{display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:18px 2px;cursor:pointer;list-style:none}
.ins-faq summary::-webkit-details-marker{display:none}
.ins-faq summary h3{font-family:'Fraunces',serif;font-weight:600;font-size:17.5px;color:var(--ink);margin:0}
.ins-faq .tg{position:relative;width:22px;height:22px;flex:none;border-radius:50%;
  border:1.5px solid var(--rule-2);transition:border-color .25s,transform .3s var(--ease)}
.ins-faq .tg::before,.ins-faq .tg::after{content:"";position:absolute;background:var(--copper);
  top:50%;left:50%;transform:translate(-50%,-50%)}
.ins-faq .tg::before{width:9px;height:1.5px}
.ins-faq .tg::after{width:1.5px;height:9px;transition:opacity .2s}
.ins-faq details[open] .tg{transform:rotate(45deg);border-color:var(--copper)}
.ins-faq summary:hover .tg{border-color:var(--copper)}
.ins-faq p{margin:0;padding:0 40px 20px 2px;font-size:14.5px;line-height:1.66;color:var(--text);max-width:74ch}

/* reveal animation — gated on .ins-js (set by institute-voice.js) so content
   is never hidden if the script fails to load */
@media(prefers-reduced-motion:no-preference){
  .ins-js [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
  .ins-js [data-reveal].in{opacity:1;transform:none}
  .ins-js [data-reveal="2"]{transition-delay:.08s}.ins-js [data-reveal="3"]{transition-delay:.16s}
  .ins-js [data-reveal="4"]{transition-delay:.24s}
}

/* responsive */
@media(max-width:1020px){
  .ins-dgrid{grid-template-columns:repeat(2,1fr)}
  .ins-stats .wrap{grid-template-columns:repeat(3,1fr)}
  .ins-stat:nth-child(4)::before,.ins-stat:nth-child(3n+1)::before{display:none}
  .ins-body{grid-template-columns:1fr}
  .ins-rail{position:static}
}
@media(max-width:760px){
  .ins-hero .wrap{grid-template-columns:1fr}
  .ins-figure{order:-1}
  .ins-thesis{grid-template-columns:1fr}
  .ins-dgrid{grid-template-columns:1fr}
  .ins-stack{grid-template-columns:1fr}
  .ins-sarrow{justify-content:center;transform:rotate(90deg)}
  .ins-stats .wrap{grid-template-columns:repeat(2,1fr)}
  .ins-glance{grid-template-columns:repeat(2,1fr)}
  .ins-glance .ins-gl:last-child:nth-child(odd){grid-column:span 2}
  .ins-crow{grid-template-columns:minmax(0,1fr);gap:8px;margin:0;padding:18px 4px}
  .ins-crow .meta{flex-direction:row;align-items:center;gap:14px}
  .ins-book{grid-template-columns:1fr}
  .ins-bookmock{display:none}
  .ins-pn{grid-template-columns:1fr}
  #iv-wave{display:none}
}
