/* =====================================================================
   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: #FFFFFF !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 button (orange) ---------- */
.btn-brand { background: #FF5F05; border-color: #FF5F05; color: #fff; }
.btn-brand:hover, .btn-brand: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: 400px; object-fit: cover;
}
@media (max-width: 992px) {
  #heroCarousel .carousel-item img.h-hero { height: 300px; }
}
@media (max-width: 576px) {
  /* On very small portrait, avoid brutal crops */
  #heroCarousel .carousel-item img.h-hero {
    height: 220px;
    object-fit: contain;
    background: #111;   /* subtle letterbox */
  }
  #heroCarousel .carousel-control-prev-icon,
  #heroCarousel .carousel-control-next-icon { transform: scale(.85); }
}

/* ---------- 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,
.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: #f8f9fa;     /* 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;
}
