/* ==========================================================================
   KNOWLEDGE GROUP - TYPOGRAPHY SYSTEM  (the only file that decides fonts & text sizes)
   --------------------------------------------------------------------------
   Linked LAST in every page's <head>, so it wins over the theme and per-page CSS.

   TO CHANGE ANYTHING SITE-WIDE, EDIT ONLY THE TOKENS IN THE :root BLOCK BELOW.
     - Different font?    change --font-sans (and swap the @font-face files)
     - Bigger headings?   change --fs-h2 / --fs-h3 ...
     - Bigger body text?  change --fs-text

   ROLE            TOKEN         USED FOR
   Display         --fs-display  home hero slide titles
   Heading 1       --fs-h1       page title (banner at the top of every inner page)
   Heading 2       --fs-h2       section headings ("Achievements", "Facilities" ...)
   Title           --fs-h3       card / block titles
   Subtitle        --fs-h4       small block titles, list titles, footer column titles
   Lead            --fs-lead     intro line under a heading
   Stat            --fs-stat     big numbers (25+, 98%, 5000+)
   Description     --fs-text     paragraphs, lists - all body copy
   UI text         --fs-ui       menu, buttons, form fields, table cells, footer links
   Small           --fs-small    meta lines, captions, helper text
   Label           --fs-micro    UPPERCASE eyebrow labels, badges
   ========================================================================== */

/* Inter, hosted on this site (variable font, weights 100-900) */
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('../fonts/inter/inter-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url('../fonts/inter/inter-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  /* ---- font family ---- */
  --font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans Gujarati', 'Noto Sans Devanagari', 'Helvetica Neue', Arial, sans-serif;

  /* ---- weights ---- */
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  /* ---- sizes (fluid between phone and desktop) ---- */
  --fs-display: clamp(32px, 5vw, 48px);
  --fs-h1: clamp(30px, 4vw, 40px);
  --fs-h2: clamp(26px, 3vw, 34px);
  --fs-h3: clamp(19px, 1.8vw, 22px);
  --fs-h4: 18px;
  --fs-h5: 16px;
  --fs-h6: 14px;
  --fs-lead: 18px;
  --fs-stat: clamp(34px, 4.2vw, 48px);
  --fs-text: 16px;
  --fs-ui: 15px;
  --fs-small: 14px;
  --fs-micro: 12px;

  /* ---- line heights ---- */
  --lh-display: 1.1;
  --lh-heading: 1.2;
  --lh-title: 1.3;
  --lh-text: 1.7;
  --lh-ui: 1.4;

  /* ---- point the theme's own font variables at the same family ---- */
  --ztc-family-font1: var(--font-sans);
  --ztc-family-font2: var(--font-sans);
  --serif: var(--font-sans);
  --bs-font-sans-serif: var(--font-sans);
  --bs-body-font-family: var(--font-sans);
}

/* ---------- 1. one font family everywhere (icon fonts are left alone) ---------- */
html body,
html body *:not(i):not(svg):not(svg *):not([class*="fa-"]):not(.fa):not(.fas):not(.far):not(.fab):not(.fal):not(.fad) {
  font-family: var(--font-sans) !important;
}

/* NOTE: every rule below carries :not(#_) - a deliberate specificity boost so that a page's
   own CSS can never override the shared sizes. */

/* ---------- 2. body text ---------- */
html body { font-size: var(--fs-text); line-height: var(--lh-text); font-weight: var(--fw-regular); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
html body :is(p, li, dd, blockquote, address):not(#_) { font-size: var(--fs-text) !important; line-height: var(--lh-text) !important; }
html body :is(strong, b):not(#_) { font-weight: var(--fw-semibold); }

/* ---------- 3. headings ---------- */
html body :is(h1, h2, h3, h4, h5, h6):not(#_) { font-family: var(--font-sans) !important; font-style: normal !important; }
html body h1:not(#_) { font-size: var(--fs-h1) !important; line-height: var(--lh-heading) !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }
html body h2:not(#_) { font-size: var(--fs-h2) !important; line-height: var(--lh-heading) !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }
html body h3:not(#_) { font-size: var(--fs-h3) !important; line-height: var(--lh-title) !important; font-weight: var(--fw-semibold) !important; letter-spacing: -0.01em !important; }
html body h4:not(#_) { font-size: var(--fs-h4) !important; line-height: 1.35 !important; font-weight: var(--fw-semibold) !important; letter-spacing: 0 !important; }
html body h5:not(#_) { font-size: var(--fs-h5) !important; line-height: 1.4 !important; font-weight: var(--fw-semibold) !important; letter-spacing: 0 !important; }
html body h6:not(#_) { font-size: var(--fs-h6) !important; line-height: 1.4 !important; font-weight: var(--fw-semibold) !important; letter-spacing: 0 !important; }

/* ---------- 4. UI text: menus, buttons, forms, tables, footer ---------- */
html body :is(button, input, select, textarea, label, .nice-select, .btn, [class*="btn"], [class*="button"]):not(#_) { font-size: var(--fs-ui) !important; line-height: var(--lh-ui) !important; }
html body :is(td, th):not(#_) { font-size: var(--fs-ui) !important; line-height: 1.5 !important; }
html body th:not(#_) { font-weight: var(--fw-semibold) !important; }
html body :is(.main-menu, .mobile-nav-list, .nav-list1, .menu-small, .mobile-header) :is(a, span, strong, li):not(#_) { font-size: var(--fs-ui) !important; line-height: var(--lh-ui) !important; font-weight: var(--fw-medium); }
html body footer :is(a, span, li, p, address, small):not(#_) { font-size: var(--fs-ui) !important; line-height: 1.6 !important; }
html body footer :is(.kgf-bottom, .footer3-bottom-section) :is(a, span, p, b):not(#_) { font-size: var(--fs-small) !important; }
html body :is(small, .small, figcaption, caption):not(#_) { font-size: var(--fs-small) !important; line-height: 1.5 !important; }

/* ---------- 5. ROLES: things that are a heading / label / number in meaning but not in tag ----------
   Need a new exception? Add the selector to the right group below - never put a font-size in a page file. */

/* Display: home hero slide title */
html body :is(.hero-title):not(#_) { font-size: var(--fs-display) !important; line-height: var(--lh-display) !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }

/* Heading 1: the banner title at the top of every inner page (an h2 in the markup) */
html body :is(.inner-main-hero-area .inner-heading h2, .inner-main-hero-area h2):not(#_) { font-size: var(--fs-h1) !important; line-height: var(--lh-heading) !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }

/* Heading 2: section headings built from other tags */
html body :is(.welcome-title, .fg-app-title, .section-title, .content-title):not(#_) { font-size: var(--fs-h2) !important; line-height: var(--lh-heading) !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }
html body :is(.welcome-name):not(#_) { font-size: inherit !important; font-weight: inherit !important; }

/* Title: card / block titles built from links, spans, divs */
html body :is(.amenities-boxarea .content-area a, .campus-name, .kg-tour-info strong, .ab-timeline-list b, .location-name):not(#_) { font-size: var(--fs-h3) !important; line-height: var(--lh-title) !important; font-weight: var(--fw-semibold) !important; }

/* Subtitle */
html body :is(summary, .ct-phone, .ab-quick-grid a strong, .ab-group-ph span, .ab-group-grid a strong, .ad-panel-grid a span, .campus-location, .stat-label, .kg-tour-tab span, .kg-ach-name, .fg-download-title):not(#_) { font-size: var(--fs-h4) !important; line-height: 1.35 !important; font-weight: var(--fw-semibold) !important; }

/* Lead: intro text under a heading */
html body :is(.hero-sub, .welcome-lead, .kg-sub, .lead):not(#_) { font-size: var(--fs-lead) !important; line-height: 1.6 !important; }

/* Stat: big numbers */
html body :is(.stat-number, .ab-stats-row strong, .al-stats strong, .sch-cards article > strong, .tp-stats strong):not(#_) { font-size: var(--fs-stat) !important; line-height: 1.1 !important; font-weight: var(--fw-bold) !important; letter-spacing: -0.02em !important; }

/* UI text */
html body :is(.tab-button, .gl-album-go, .location-phone, .ct-dept a, .ab-sign span, .kg-tour-tab, .kg-ach-res strong, .kg-cf-res strong):not(#_) { font-size: var(--fs-ui) !important; line-height: var(--lh-ui) !important; }

/* Small: meta, dates, addresses, secondary lines */
html body :is(.kg-news-date, .cr-date, .kg-tour-addr, .cc-wa, .cc-dir, .ab-stats-row span, .sch-cards em, .kg-tour-tab small, .kg-ach-res small, .welcome-title small, .hero-sub small, .stat-label small, .al-step, [class*="-meta"], em):not(#_) { font-size: var(--fs-small) !important; }

/* Label: tiny uppercase eyebrows, tags, badges, counts */
html body :is([class*="eyebrow"], [class$="-tag"], [class*="-tag "], [class*="badge"], [class*="pill"], .kg-ach-cat, .gl-chips span, .kg-tour-meta):not(#_) { font-size: var(--fs-micro) !important; line-height: 1.3 !important; font-weight: var(--fw-semibold) !important; }

/* words inside a heading (emphasis, spans) always follow the heading size */
html body :is(h1, h2, h3, h4, h5, h6) :is(em, span, strong, b, i):not(#_):not([class*="fa-"]) { font-size: inherit !important; }

/* ---------- 6. page-specific leftovers (found by the site audit) ---------- */
html body :is(.ab-sign strong, .gl-album strong, .al-av, .cr-band-note span):not(#_) { font-size: var(--fs-h4) !important; line-height: 1.3 !important; font-weight: var(--fw-semibold) !important; }
html body :is(.ab-group-grid a span, .og-map-list button span, .cc-row strong, .welcome-badge span):not(#_) { font-size: var(--fs-small) !important; }
html body :is(.ab-dept-grid a, .kgf-contact a, .kgf-contact span):not(#_) { font-size: var(--fs-ui) !important; }
html body :is(.wa-tooltip):not(#_) { font-size: var(--fs-small) !important; }
html body :is(.ct-phone, .ct-dept a, .location-phone):not(#_) { font-size: var(--fs-ui) !important; }
