/* St. Xavier's Technical Institute — Explore the Institute
   Brand palette: Deep Burgundy #8B1E2D · Royal Red #C62828 · Burnt Orange #F57C00 · Warm Gold #F4B942
                  Charcoal #292929 · Soft White #FAFAFA · Light Grey #F1F3F5
   Fonts: Bebas Neue (headings) + Poppins (body) */
.xt-ex{
  --burgundy:#8B1E2D;--red:#C62828;--orange:#F57C00;--gold:#F4B942;--charcoal:#292929;--white:#FAFAFA;--grey:#F1F3F5;
  position:relative;width:100%;padding:clamp(52px,8vh,92px) 20px clamp(56px,9vh,100px);
  background:#FFF9EC;color:var(--charcoal);
  font:400 .95rem/1.65 'Poppins','Segoe UI',Arial,sans-serif;
}
.xt-ex,.xt-ex *,.xt-ex *::before,.xt-ex *::after{box-sizing:border-box}
:where(.xt-ex) :is(h2,h3,p,figure){margin:0;padding:0}
.xt-ex-in{max-width:1180px;margin:0 auto}

/* ---------- heading ---------- */
.xt-ex-head{margin:0 auto clamp(30px,5vh,52px);text-align:center}
.xt-ex-eyebrow{display:flex;align-items:center;justify-content:center;gap:14px;
  color:var(--orange);font:600 .78rem/1 'Poppins',sans-serif;letter-spacing:.22em;text-transform:uppercase}
.xt-ex-eyebrow::before,.xt-ex-eyebrow::after{content:'';width:34px;height:2px;background:var(--gold)}
.xt-ex-title{margin-top:12px;color:var(--burgundy);font:400 clamp(2.4rem,4.8vw,3.4rem)/1.05 'Bebas Neue','Oswald',Impact,sans-serif;letter-spacing:.03em;text-transform:uppercase}
.xt-ex-title em{color:var(--red);font-style:normal}
.xt-ex-title::after{content:'';display:block;width:64px;height:4px;margin:12px auto 0;border-radius:4px;background:var(--gold)}

/* ---------- cards ---------- */
.xt-ex-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.2vw,30px)}
.xt-ex-card{position:relative;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;
  background:var(--grey);border-radius:10px;border-bottom:4px solid var(--gold);
  box-shadow:0 8px 22px rgba(41,41,41,.09);
  transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}
.xt-ex-card:hover,.xt-ex-card:focus-within{transform:translateY(-5px);border-color:var(--orange);box-shadow:0 18px 38px rgba(41,41,41,.17)}

.xt-ex-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:#e3e6ea}
.xt-ex-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.xt-ex-card:hover .xt-ex-media img{transform:scale(1.05)}

.xt-ex-body{display:flex;flex-direction:column;flex:1;padding:22px 24px 24px}
.xt-ex-kicker{display:flex;align-items:center;gap:10px;color:var(--orange);font:600 .72rem/1 'Poppins',sans-serif;letter-spacing:.16em;text-transform:uppercase}
.xt-ex-kicker::before{content:'';width:22px;height:2px;background:var(--orange)}
.xt-ex-name{margin-top:10px;color:var(--burgundy);font:400 1.9rem/1.05 'Bebas Neue','Oswald',Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.xt-ex-desc{margin-top:10px;flex:1;color:var(--charcoal);font-size:.9rem;line-height:1.65}

/* button = Royal Red */
.xt-ex-link{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;margin-top:20px;padding:11px 20px;border-radius:6px;
  background:var(--red);color:#fff;font:600 .82rem/1 'Poppins',sans-serif;letter-spacing:.04em;text-decoration:none;
  transition:background-color .25s ease}
.xt-ex-link span{transition:transform .3s ease}
.xt-ex-link::after{content:'';position:absolute;inset:0;z-index:2}      /* whole card clickable */
.xt-ex-card:hover .xt-ex-link{background:var(--burgundy)}
.xt-ex-card:hover .xt-ex-link span{transform:translateX(5px)}
.xt-ex-link:focus-visible{outline:none}
.xt-ex-card:has(.xt-ex-link:focus-visible){outline:2px solid var(--red);outline-offset:3px}

/* ---------- reveal: one calm fade-up, once ---------- */
.xt-ex--js .xt-ex-rv{opacity:0}
.xt-ex--js.is-in .xt-ex-rv{opacity:1;animation:xt-ex-in .8s cubic-bezier(.2,.7,.2,1) var(--d,0s) backwards}
@keyframes xt-ex-in{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .xt-ex-grid{grid-template-columns:minmax(0,520px);justify-content:center}
}
@media (max-width:520px){
  .xt-ex{padding:46px 14px 52px}
  .xt-ex-body{padding:18px 18px 20px}
  .xt-ex-name{font-size:1.7rem}
}
@media (prefers-reduced-motion:reduce){
  .xt-ex *{animation:none!important;transition:none!important}
  .xt-ex--js .xt-ex-rv{opacity:1}
}