/* =====================================================================
   START FINAL OVERRIDES — WebStore (v2025-08-27)
   - Keep this file LAST in <head> (after all legacy CSS)
   - Bump the cache buster on the <link> when editing (?v=2025-08-27-1)
   - Assumes Google Fonts link:
     https://fonts.googleapis.com/css2?family=Montserrat:wght@600&family=Source+Sans+Pro:wght@400;600&display=swap
   ===================================================================== */
/* =====================================================================
   FINAL OVERRIDES — WebStore (clean merge)
   Keep this file LAST in <head>. Bump ?v= when you edit.
   ===================================================================== */

/* ---------- Full-bleed layout + sane container ---------- */
#HeaderBand, #NavBand, #ContentBand, #FooterBand { width: 100% !important; }
#MainContainer, #Container { width: 100% !important; max-width: none !important; }
#Container, .Container, .inner {
  margin: 0 auto;
  max-width: 1200px;
  width: 100%;
  padding-left: 16px;
  padding-right: 16px;
  box-sizing: border-box;
}

/* Images default responsive */
img { max-width: 100%; height: auto; }

/* Legacy logos/images in banner stay fluid */
#WebStoreBanner img,
#WebStoreBanner #WebStoreLogo,
#UILogo, #campus {
  max-width: 100% !important;
  height: auto !important;
  width: auto !important;
  overflow: hidden;
}

/* Kill legacy floats */
[id*="LeftContainer"], [class*="LeftContainer"],
[id*="RightContainer"], [class*="RightContainer"] { float: none !important; }

/* Simple grid helpers (kept from your backup) */
.ws-row { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 992px) {
  .ws-row-2 { grid-template-columns: 2fr 1fr; }
  .ws-row-3 { grid-template-columns: 1fr 1fr 1fr; }
}

/* ---------- Utility kit you had ---------- */
.min-h-140 { min-height: 140px; }
.min-h-200 { min-height: 200px; }
.h-160     { height: 160px; }
.ms-2-5em  { margin-inline-start: 2.5em; }  /* LTR:left / RTL:right */
.me-2em    { margin-inline-end: 2em; }
.mb-4em    { margin-bottom: 4em; }
.ps-3em    { padding-inline-start: 3em; }
.pe-1em    { padding-inline-end: 1em; }
.fs-135    { font-size: 1.35em; }
.lh-2em    { line-height: 2em; }
.float-none{ float: none !important; }
.w-160     { width: 160px; }
.max-w-100 { max-width: 100%; }

/* ---------- Modern banner (blue header) ---------- */
/* Your new banner markup uses .ws-banner + .ws-logo */
.ws-banner { background: #13294B !important; color: #fff; }
.ws-logo {
  font-family: "Montserrat", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: .2px;
  font-size: clamp(1.6rem, 3.2vw, 2.6rem);  /* ensure logo isn’t tiny */
  line-height: 1.1;
  white-space: nowrap;
}

/* Campus links (readable) */
.ws-banner .campus-links .nav-link {
  color: #fff !important;
  font-size: 1.1rem !important;
  line-height: 1.35;
  padding: 0 .5rem !important;
  opacity: .9;
}
.ws-banner .campus-links .nav-link:hover,
.ws-banner .campus-links .nav-link:focus { opacity: 1; text-decoration: underline; }

/* Right block spacing (campus + shop) */
#HeaderBand .ws-banner .ms-auto { gap: .75rem !important; }

/* Shop buttons on dark header */
#HeaderBand .ws-banner #cmdPersonalUse.btn,
#HeaderBand .ws-banner #cmdDepartmentalUse.btn,
#HeaderBand .ws-banner #cmdPersonalUse,
#HeaderBand .ws-banner #cmdDepartmentalUse {
  font-weight: 700;
  padding: .375rem .75rem;
  line-height: 1.25;
  border-width: 2px;
}
#HeaderBand .ws-banner .btn-light { color: #13294B; }
#HeaderBand .ws-banner .btn-outline-light { color: #fff; border-color: #fff; }
#HeaderBand .ws-banner .btn-outline-light:hover { background: #fff; color: #13294B; }

/* Keep carousel below header */
#heroCarousel { position: relative; z-index: 1; }

/* ---------- Navbar (white bar) ---------- */
#MenubarRegion { position: relative; z-index: 25; }
#MenubarRegion,
#MenubarRegion .navbar,
#MenubarRegion .navbar > .container-fluid { padding-left: 0; padding-right: 0; }

/* If you use inline bg on <nav>, fine; otherwise white: */
#MenubarRegion .navbar { background: #e8e9eb !important; }  /* (fixed a #FFFFF typo) */

#MenubarRegion .navbar .nav-link { color: #212529; }
#MenubarRegion .navbar .nav-link:hover,
#MenubarRegion .navbar .nav-link:focus { color: #13294B; }

/* Search sizing (desktop) 
#MenubarRegion .navbar .form-control {
  width: 360px; max-width: 40vw;
  border: 1px solid rgba(0,0,0,.25);
}*/

/* ---------- Brand and outline buttons (Ilini Blue) ---------- */
.btn-brand { background: #13294B; border-color: #13294B; color: #fff; }
.btn-brand:hover, .btn-brand:focus { background: #e65505; border-color: #e65505; color: #fff; }

.btn-outline-primary { background: #13294B; border-color: #13294B; color: #fff; }
.btn-outline-primary:hover, .btn-outline-primary:focus { background: #e65505; border-color: #e65505; color: #fff; }


/* ---------- Hero / carousel ---------- */
/* Use .h-hero on <img> inside each .carousel-item */
#heroCarousel .carousel-item img.h-hero {
  width: 100%; display: block;
  height: 320px; object-fit: cover; /*reduced from 400px */
}
@media (max-width: 992px) {
	#heroCarousel .carousel-item img.h-hero { height: 260px;} /*reduced from 300px */
}
@media (max-width: 576px) {
  /* On very small portrait, avoid brutal crops */
  #heroCarousel .carousel-item img.h-hero {
    height: 200px; /*reduced from 220px */
    object-fit: contain;
    background: #fff;   /* subtle letterbox */
  }
  #heroCarousel .carousel-control-prev-icon,
  #heroCarousel .carousel-control-next-icon { transform: scale(.85); }
}

/* --- Give the hero carousel a white background (fix for mobile black bars) --- */
#heroCarousel,
#heroCarousel .carousel-inner {
  background-color: #fff !important;
}

/* Optional: ensure slides fill height nicely without gray/black gutters */
#heroCarousel .carousel-item {
  background-color: #fff !important;  /* fallback if image doesn’t cover */
}
/* Optional: Add a tiny fade shadow at the bottom so the transition into the cards feels intentional: */
#heroCarousel::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 40px;
  background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1));
  pointer-events: none;
}

/* If your carousel sits inside a gray parent band, neutralize that too */
#HeaderBand,
#ContentBand {
  background-color: #fff !important;
}

/* ---------- Content polish ---------- */
.card .fs-5 { line-height: 1.5; }  /* better readability in News/Events/Save More */



/* Mobile (collapsed) navbar: full-width row, centered contents, no borders */
@media (max-width: 575.98px) {
  /* Let the header container wrap so the collapse can sit on its own row */
  #MenubarRegion .navbar > .container-fluid { flex-wrap: wrap; }

  /* Order & sizing so the collapse lives under the toggler and spans 100% */
  #MenubarRegion .navbar .navbar-toggler { order: 0; }
  #MenubarRegion .navbar .navbar-collapse {
    order: 1;
    flex-basis: 100%;
    width: 100%;
  }
  #MenubarRegion .navbar .navbar-collapse { display: none; }   /* default closed */
  #MenubarRegion .navbar .navbar-collapse.show {
    display: block;                  /* opened by Bootstrap JS */
    padding: .5rem 0;
    --nav-mobile-max: 360px;         /* cap inner width so it never hugs edges */
  }

  /* Center the list and neutralize me-auto/right-push */
  #MenubarRegion .navbar .navbar-nav {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0 auto !important;       /* beats me-auto */
    width: 100%;
  }

  /* Centered links, consistent width; kill desktop separators */
  #MenubarRegion .navbar .nav-link {
    display: block;
    width: 100%;
    max-width: var(--nav-mobile-max);
    text-align: center;
    padding: .5rem 0;
    border: 0 !important;            /* remove those vertical separator lines */
  }

  /* Search matches link width and centers 
  #MenubarRegion .navbar form[role="search"] {
    width: 100%;
    max-width: var(--nav-mobile-max);
    margin: .5rem auto 0;
  }*/
  #MenubarRegion .navbar .form-control { width: 100%; max-width: none; }
}

/* Kill legacy 300px padding on collapsed mobile menu */
@media (max-width: 575.98px) {
  /* collapse panel itself */
  #MenubarRegion .navbar .navbar-collapse,
  #MenubarRegion .navbar .navbar-collapse.show {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* the UL that holds the links */
  #MenubarRegion .navbar .navbar-collapse .navbar-nav {
    padding-left: 0 !important;
    padding-right: 0 !important;
    padding-inline-start: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* be extra-safe if a wrapper div inside collapse has padding */
  #MenubarRegion .navbar .navbar-collapse > * {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

.news-summary {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.btn-brand:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; }


/* Footer must participate in normal flow */
#site-footer, .footer, #Footer, footer {
  position: static !important;
  bottom: auto !important;
  left: auto !important;
  right: auto !important;
  z-index: auto !important;
  margin-top: 2rem; /* breathing room above */
}

/* Footer colors if your theme prefers navy instead of .bg-dark */
#site-footer.bg-dark { background-color: #0b1f3a; } /* tweak or delete if not needed */
#site-footer a { color: rgba(255,255,255,.85); }
#site-footer a:hover, #site-footer a:focus { color: #fff; text-decoration: underline; }


/* ---- Readability tier: larger body text on big desktops ---- */
:root { --ws-body-scale: 1; }                 /* base = 16px */
body { font-size: calc(1rem * var(--ws-body-scale)); line-height: 1.6; }

/* XL ≥1200px: ~17px */
@media (min-width: 1200px) {
  :root { --ws-body-scale: 1.0625; }         /* 1rem * 1.0625 = 17px */
}

/* XXL ≥1400px (e.g., 1920): ~18px */
@media (min-width: 1400px) {
  :root { --ws-body-scale: 1.125; }          /* 1rem * 1.125 = 18px */
}

/* Cards & lists inherit the larger size and keep comfortable leading */
.card .card-text,
.card p,
.list-group-item { line-height: 1.6; }

/* Card titles scale gracefully across widths */
.card-title.h4 { font-size: clamp(1.125rem, 1.2vw + .5rem, 1.5rem); }

/* Focus ring for keyboard users */
.btn-brand:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; }
```css
/* past/* ---- Readability tier: larger body text on big desktops ---- */
:root { --ws-body-scale: 1; }                 /* base = 16px */
body { font-size: calc(1rem * var(--ws-body-scale)); line-height: 1.6; }

/* XL ≥1200px: ~17px */
@media (min-width: 1200px) {
  :root { --ws-body-scale: 1.0625; }         /* 1rem * 1.0625 = 17px */
}

/* XXL ≥1400px (e.g., 1920): ~18px */
@media (min-width: 1400px) {
  :root { --ws-body-scale: 1.125; }          /* 1rem * 1.125 = 18px */
}

/* Cards & lists inherit the larger size and keep comfortable leading */
.card .card-text,
.card p,
.list-group-item { line-height: 1.6; }

/* Card titles (you’re using `h4`) scale gracefully across widths */
.card-title.h4 { font-size: clamp(1.125rem, 1.2vw + .5rem, 1.5rem); }


.btn-brand:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; }


/* News: clamp summaries to ~2 lines (graceful fallback) */
#news-col .news-summary {
  display: -webkit-box;
  -webkit-line-clamp: 2;        /* Chrome/Safari */
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-clamp: 2;                 /* Progressive enhancement */
}

/* Align list-group items with card edge (works site-wide inside cards) */
.card .list-group-item {
  border: 0;
  padding-left: 0;
  padding-right: 0;
}

/* (Already added earlier) Title scale + focus ring kept here for clarity */
.card-title.h4 { font-size: clamp(1.125rem, 1.2vw + .5rem, 1.5rem); }
.btn-brand:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; }



/* Navbar link sizing & rhythm */
.navbar .nav-link { font-weight: 600; letter-spacing: .01em; padding: .5rem .75rem; }
@media (min-width: 992px){ .navbar .nav-link { font-size: 1.125rem; } }    /* 18px */
@media (min-width: 1400px){ .navbar .nav-link { font-size: 1.1875rem; } }  /* ~19px */

/* Improve focus visibility without changing your palette */
.navbar .nav-link:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; text-decoration: none; }

/* Optional: center the brand on mobile while keeping items left */
@media (max-width: 991.98px){ .navbar .navbar-brand { margin-inline: auto; } }


/* Base nav link color + state rules */
.navbar .nav-link { color: #212529; } /* or your preferred dark */
.navbar .nav-link:visited { color: inherit; } /* neutralize odd visited colors */
.navbar .nav-link:hover { color: #FF5F05; }
.navbar .nav-link:focus { color: var(--bs-warning); text-decoration: none; }
/* Use your brand orange token; if you have one, swap var(--bs-warning) for it: var(--ws-orange) */

/* Active/current page */
.navbar .nav-link.active,
.navbar .nav-link[aria-current="page"] { color: var(--bs-warning); }

/* Desktop hero image: show everything */
.h-hero {
  height: 400px;           /* keep your fixed desktop height */
  width: 100%;
  object-fit: contain !important;   /* <-- key change */
  background: #fff;     /* subtle backdrop for any letterboxing */
}

.obj-contain { object-fit: contain !important; }
.obj-cover   { object-fit: cover !important; object-position: center; }

/* Button hover on Personal and Shop buttons*/
body:not(.shop-scope) .ws-banner .btn-outline-light:hover,
body:not(.shop-scope) .ws-banner .btn-outline-light:focus {
  background-color: #fff !important;
  color: #13294B !important;  /* Illini navy for contrast */
  border-color: #fff !important;
}


/* ===== Brand orange button: fix visited text color ===== */

/* Illini Blue brand buttons keep white text even when visited */
a.btn.btn-warning:visited,
a.btn.btn-brand:visited,
a.btn.btn-brand-orange:visited,
a.btn-brand:visited {
  color: #fff !important;
}
a.btn.btn-outine-primary:visited,
a.btn-outline-primary:visited {
  color: #fff !important;
}

/* Make the embed look like Bootstrap list items */
#ws-news-embed a {
  display:block; padding:.5rem 1rem; text-decoration:none;
  border-top:1px solid var(--gray-200);
}
#ws-news-embed a:first-child { border-top:0; }
#ws-news-embed a:hover { text-decoration:underline; }
#ws-news-embed br { display:none; }      /* many feeds separate items with <br> */
#ws-news-embed p { margin:0; }           /* normalize any <p> wrappers */

/* Normalize embed output just in case */
#ws-news-list .list-group-item { padding:.6rem 1rem; }
#ws-news-list a.list-group-item:hover { text-decoration: underline; }

/* --- Normalize News card header to match .card-title.h4 --- */
#home-news-title.card-header {
  font-size: clamp(1.125rem, 1.2vw + .5rem, 1.5rem);
  font-weight: 600;
  line-height: 1.3;
  padding-top: .75rem;
  padding-bottom: .75rem;
  border-bottom: 0;
  padding-top: 32px;
  padding-bottom: 32px; 
  padding-left: 32px;
  padding-right: 32px;
  background-color: #fff !important;
  border-bottom: 0 !important;
}


/* About page: heading + images centered */
.about-title {
  text-align: center !important;
  margin: 2rem auto 1rem !important;
  color: #13294B !important;
  font-size: 2.25rem !important; /* ≈36px */
  line-height: 1.2 !important;
  font-weight: 700 !important;
  display: block !important;
}

.about-content { 
  text-align: center !important; /* fallback centering for inline content */
}

.about-content img {
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: 100% !important;
  height: auto !important;
  float: none !important;
}

.about-img { margin-bottom: 2rem !important; }

.separator { margin: 2rem auto !important; }

/* About page content block (replaces the inline style) */
.about-body {
  /* readable line length + centered */
  max-width: min(90ch, 80%);
  margin: 0 auto 2rem;

  /* fluid type that scales sensibly from mobile → desktop */
  font-size: clamp(1rem, 0.9rem + 0.5vw, 1.15rem);
  line-height: 1.6;

  /* responsive side padding */
  padding-left: clamp(1rem, 4vw, 5rem);
  padding-right: clamp(1rem, 4vw, 5rem);
}

/* Keep the visible page title responsive too */
.about-title {
  font-size: clamp(1.5rem, 1.1rem + 1.5vw, 2.25rem) !important; /* ~24 → 36px */
  line-height: 1.2 !important;
  margin: 2rem auto 1rem !important;
  text-align: left !important;
  color: #13294B !important;
  font-weight: 700 !important;
}

/* Optional: tighten on very small screens */
@media (max-width: 430px) {
  .about-body { line-height: 1.55; }
}

/* Optional: a bit roomier on desktops */
@media (min-width: 992px) {
  .about-body { line-height: 1.65; }
}
/* --- Larger viewport adjustments --- */
@media (min-width: 1200px) {
  .about-body {
    max-width: 75ch; /* was 65ch; now allows about 10 extra characters per line */
    padding-left: clamp(2rem, 6vw, 6rem);
    padding-right: clamp(2rem, 6vw, 6rem);
  }
}

/* On true widescreens (≈1600px and up), allow even more breathing room */
@media (min-width: 1600px) {
  .about-body {
    max-width: 85ch;
  }
}

/* Remove extra outer constraints on wide viewports */
@media (min-width: 1400px) {
  #MainContent, 
  #ContentBand .content,
  .about-content, 
  .about-body {
    max-width: 1600px !important;
  }
}

/* Strategic Comms — scope Bootstrap's "white" to gray for the menubar */
nav.navbar.navbar-expand-lg.bg-white.border-bottom {
  /* 1) Override the Bootstrap token this utility uses */
  --bs-white-rgb: 232, 233, 235 !important;  /* #e8e9eb */
  --bs-bg-opacity: 1 !important;

  /* 2) Override the computed background directly */
  background-color: #e8e9eb !important;
  background: #e8e9eb !important;           /* nuke any background shorthand */

  /* 3) Keep the border you verified */
  border-bottom-color: rgba(0,0,0,.08) !important;
}

#WebStoreBanner .ws-banner-container {
  /* Tiny horizontal nudge if needed */
  padding-left: 1.75rem;  /* was px-3 ≈ 1rem */
  padding-right: 1.75rem;
}

@media (min-width: 930px) {
  #WebStoreBanner .ws-banner-container {
    padding-left: 4rem;
    padding-right: 4rem;
  }
}

.ws-banner-title-group {
  display: flex;
  flex-direction: row;
  align-items: baseline;  /* keeps text lined up nicely */
  gap: 0.75rem;            /* spacing between “WebStore” and tagline */
  flex-wrap: wrap;        /* allows wrapping on small screens */
  flex: 1 1 auto;
}

.ws-banner-tagline {
  font-size: 1rem;
  opacity: 0.85; /* optional—softens it slightly */
  white-space: normal; /* ensure normal wrapping */
}

.ws-banner-title {
  font-size: 1.75rem;         /*or use your existing WebStore heading size */
  font-weight: 700;
}

.ws-banner-tagline {
  font-size: 0.95rem;
  font-weight: 400;
}

.ws-banner-title a {
  color: inherit;
  text-decoration: none;
}
.ws-banner-title a:hover {
  text-decoration: underline;
}

.ws-nav {
  display: flex;
  justify-content: center;
  gap: 1.25rem;
  padding: 0.5rem 0;
}

.ws-nav {
  list-style: none;
  margin: 0;
  padding-left: 0;
}

/* Hide auto-inserted About Cookies button from ilw-footer */
ilw-footer [slot="cookies-button"] {
    display: none !important;
}

/* Keep the long Menu 1 heading on a single line on larger screens */
@media (min-width: 992px) {
  ilw-footer h2.footer-menu-heading-long {
    white-space: nowrap !important;
  }
}

/* Align Home nav directly under the 'WebStore' brand text */
#MenubarRegion .navbar {
    padding-left: 6.5rem !important;
}

/* Hide WebStore grey navbar on mobile; use Stratcom header menu instead */
@media (max-width: 991.98px) {
  #MenubarRegion {
    display: none !important;
  }
}

/* Remove the old grey navbar on Home (all breakpoints) */
#MenubarRegion {
  display: none !important;
}

/* Make the search controls actually line up and be visible */
.ws-header-search {
  display: inline-flex;
  align-items: stretch;
  gap: 0; /* ILW already handles the join between input + button */
}

/* Give both input and button a definite height so they can't collapse */
.ws-header-search input[type="search"],
.ws-header-search button {
  height: 2.25rem;
}

/* Optional: keep the input from stretching too wide */
.ws-header-search input[type="search"] {
  max-width: 16rem;
}

/* --- WebStore brand title sizing (Home + Shop) --- */
:root {
  /* Mobile-first size */
  --ws-brand-size: clamp(1.9rem, 6vw, 2.4rem);
}

@media (min-width: 992px) {
  /* Desktop bump */
  :root {
    --ws-brand-size: clamp(2.2rem, 2.2vw, 3.0rem);
  }
}

/* Apply to BOTH possible brand elements */
.ws-banner-title,
.ws-logo,
.ws-banner .navbar-brand {
  font-size: var(--ws-brand-size) !important;
  line-height: .7;     /* reduces the “air” under WebStore */
  margin-bottom: 0;      /* kill default heading spacing if any */
}

/* Optional: tighten the brand row padding if it’s contributing */
.ws-banner .navbar-brand {
  padding-top: 0;
  padding-bottom: 0;
}

/* WebStore brand title: always Montserrat, regardless of legacy inheritance */
.ws-banner-title,
.ws-logo,
.ws-banner .navbar-brand {
  font-family: "Montserrat", var(--ws-font-sans), system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif !important;
  font-weight: 600;
  letter-spacing: .1px;
}

/* Match Shop banner height: equivalent of Bootstrap py-3 */
.ws-banner .container,
.ws-banner .container-fluid {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important;
}

/* Shared shop button styling */
.ws-shop-btn{
  position: relative;
  outline: none;
}

/* Outer orange ring */
.ws-shop-btn::after{
  content: "";
  position: absolute;
  inset: -4px;                 /* distance from button edge */
  border: 2px solid var(--il-orange, #E84A27);
  border-radius: inherit;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease;
}

/* Show outer ring on hover and keyboard focus */
.ws-shop-btn:hover::after,
.ws-shop-btn:focus-visible::after{
  opacity: 1;
}

.ws-shop-btn:hover{
  background-color: rgba(255,255,255,.08);
}


/* Prevent visited orange on StratCom header site name */
a[slot="site-name"]:visited{
  color: #13294B !important;
}

/* ---------------------------
   About page – readable typography & spacing
   Put this near the end of your overrides file (keeps it last in <head>)
   --------------------------- */

.about-content {
  /* keep images stacked on small screens, sit next to body on larger */
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-items: flex-start;
  margin-bottom: 1.25rem;
}

/* image sizing and rhythm */
.about-img {
  max-width: 100%;
  height: auto;
  display: block;
  border-radius: .25rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  margin: 0 0 .5rem 0;
}

/* Constrain text column so lines remain readable on wide screens */
.about-body {
  max-width: min(70ch, 100%);          /* ~70 characters is ideal for readability */
  margin: 0;                      /* center within its container */
  font-size: clamp(1rem, 1rem + 0.3vw, 1.0625rem); /* ~16–17px responsive */
  line-height: 1.75;                   /* generous leading for paragraphs */
  color: #111;                         /* strong, readable body color */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  hyphens: auto;                       /* improves rag on narrow widths */
  text-wrap: balance;                  /* modern browsers will balance lines */
  padding: 0;                          /* avoid accidental inner spacing */
}

/* Left justify to Reading Rail */
.about-content,
.about-body {
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
}


/* Paragraph spacing — keep compact but airy */
.about-body p {
  margin: 0 0 1.15rem 0;               /* consistent paragraph rhythm */
  orphans: 2;
  widows: 2;
}

/* Tighten the lead paragraph a touch (optional feel) */
.about-body p:first-of-type {
  margin-top: 0;
  margin-bottom: 1.25rem;
}

/* Section headings inside the XML content */
.about-body h2,
.about-body h3 {
  color: var(--illini-navy, #13294B);
  font-weight: 700;
  margin: 1.5rem 0 .6rem 0;
  line-height: 1.15;
  font-size: clamp(1.25rem, 1.2rem + 0.8vw, 1.6rem); /* scales from tablet → desktop */
}

/* Ensure lists look airy and readable */
.about-body ul,
.about-body ol {
  margin: 0 0 1.15rem 1.25rem;
  line-height: 1.6;
}

/* Small screens: keep layout stacked and comfortable */
@media (max-width: 767.98px) {
  .about-body {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    line-height: 1.65;
  }
}

/* Larger screens: if you prefer the image and text side-by-side */
@media (min-width: 900px) {
  .about-content {
    flex-direction: row;
    align-items: flex-start;
  }

  .about-img {
    flex: 0 0 240px;   /* image column width */
    margin-right: 1rem;
  }

  .about-body {
    flex: 1 1 auto;
  }
}

/* Wide scree polish */
@media (min-width: 900px) {
  .about-content {
    flex-direction: row;
    align-items: flex-start;
  }

  .about-img {
    flex: 0 0 260px;
    margin-right: 1.25rem;
  }

  .about-body {
    padding-top: .25rem;  /* subtle alignment with image top */
  }
}


/* Minor accessibility polish: make headings easier to hit for keyboard users */
.about-body h2:focus,
.about-body h3:focus {
  outline: 3px solid rgba(19,41,75,.12);
  outline-offset: 3px;
}

/* News footer: make inner links match the list-group-item style */
#ws-news-list .list-group-item a {
  color: inherit;
  text-decoration: none;
}
#ws-news-list .list-group-item a:hover,
#ws-news-list .list-group-item a:focus {
  text-decoration: underline;
}

/* About page: match “middle column” lane width */
.about-page{
  max-width: 1200px;        /* or 1320px if you want Bootstrap’s xxl cap */
  margin-inline: auto;
  padding-inline: 1rem;
}


/* === Carousel arrow color override === */
#heroCarousel .carousel-control-prev-icon,
#heroCarousel .carousel-control-next-icon {
  background-image: none;        /* remove Bootstrap's white SVG */
  width: 2.5rem;
  height: 2.5rem;
}

/* Illini Orange version */
/* === Force colored carousel arrows === */
#heroCarousel .carousel-control-prev-icon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2313294B' viewBox='0 0 16 16'%3E%3Cpath d='M11 1L3 8l8 7'/%3E%3C/svg%3E") !important;
}

#heroCarousel .carousel-control-next-icon {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2313294B' viewBox='0 0 16 16'%3E%3Cpath d='M5 1l8 7-8 7'/%3E%3C/svg%3E") !important;
}

#heroCarousel .carousel-control-prev,
#heroCarousel .carousel-control-next {
  width: 5%;
  opacity: 1;
}

#heroCarousel .carousel-control-prev-icon,
#heroCarousel .carousel-control-next-icon {
  background-color: rgba(255,255,255,.85);
  border-radius: 50%;
  padding: .75rem;
}

/* News prompt headline */
#ws-news-list .ws-news-prompt {
  font-weight: 600;
  font-size: 1rem;          /* slightly larger than small */
  color: #13294B;           /* Illini navy */
  margin-bottom: .25rem;
}

/* Link styling */
#ws-news-list .ws-news-link {
  font-size: .9rem;
  color: var(--bs-secondary-color);
  text-decoration: none;
}

#ws-news-list .ws-news-link:hover,
#ws-news-list .ws-news-link:focus {
  text-decoration: underline;
  color: #13294B;
}

/* =================================
   Home cards – normalize link color
   ================================= */

#home-cards a,
#home-cards a:visited,
#home-cards .link-primary,
#home-cards .link-primary:visited {
  color: #212529 !important;   /* readable black */
  text-decoration: none;
}

/* Hover + keyboard focus */
#home-cards a:hover,
#home-cards a:focus,
#home-cards .link-primary:hover,
#home-cards .link-primary:focus {
  text-decoration: underline;
  color: #212529 !important;
}

/* Maintain accessible keyboard focus ring */
#home-cards a:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
}

/* Ensure brand buttons keep white text inside cards */
#home-cards a.btn,
#home-cards a.btn:visited,
#home-cards a.btn:hover,
#home-cards a.btn:focus {
  color: #fff !important;
  text-decoration: none;
}

/* Card action links – subtle emphasis */
#home-cards .link-primary {
  color: #13294B !important;
  font-weight: 500;   /* medium instead of bold */
  text-decoration: none;
}

#home-cards .link-primary:hover,
#home-cards .link-primary:focus {
  text-decoration: underline;
}

#home-cards .link-primary {
  display: inline-block;
  margin-bottom: .15rem;
}

/* Emphasize the "View all WebStore updates" link */
#ws-news-more {
  font-weight: 600;
  color: #13294B;       /* optional: matches other action links */
  text-decoration: none;
}

#ws-news-more:hover,
#ws-news-more:focus {
  text-decoration: underline;
}


/* Carousel indicators – match arrow color */
#heroCarousel .carousel-indicators [data-bs-target] {
  background-color: #13294B;
  opacity: .35;
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

/* Active indicator */
#heroCarousel .carousel-indicators .active {
  background-color: #13294B;
  opacity: 1;
}