:root {
  --psgvp-color-ink: #15202b;
  --psgvp-color-muted: #5f6c78;
  --psgvp-color-subtle: #eef3f6;
  --psgvp-color-surface: #ffffff;
  --psgvp-color-panel: #f8fafb;
  --psgvp-color-border: #d8e1e7;
  --psgvp-color-accent: #0b4f6c;
  --psgvp-color-accent-dark: #07384d;
  --psgvp-color-footer: #10212c;
  --psgvp-header-bg: #eef4f7;
  --psgvp-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --psgvp-font-devanagari: "Noto Sans Devanagari", "Mangal", "Kohinoor Devanagari", sans-serif;
  --psgvp-space-1: 0.25rem;
  --psgvp-space-2: 0.5rem;
  --psgvp-space-3: 0.75rem;
  --psgvp-space-4: 1rem;
  --psgvp-space-5: 1.5rem;
  --psgvp-space-6: 2rem;
  --psgvp-space-7: 3rem;
  --psgvp-space-8: 4.5rem;
  --psgvp-logo-size: 58px;
  --psgvp-radius-sm: 4px;
  --psgvp-radius-md: 8px;
  --psgvp-shadow-soft: 0 16px 40px rgba(21, 32, 43, 0.1);
  --psgvp-shadow-header: 0 8px 24px rgba(21, 32, 43, 0.08);
  --psgvp-container: 1180px;
  --psgvp-header-offset: 0px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  color: var(--psgvp-color-ink);
  font-family: var(--psgvp-font-sans);
  line-height: 1.5;
  scroll-behavior: smooth;
  /* Keeps in-page anchor targets clear of the fixed header. */
  scroll-padding-top: 88px;
}

body {
  margin: 0;
  min-width: 320px;
  overflow-x: hidden;
  background: var(--psgvp-color-surface);
}

body.is-menu-open {
  overflow: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

a:hover {
  color: var(--psgvp-color-accent);
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

button {
  font: inherit;
}

:focus-visible {
  outline: 3px solid rgba(11, 79, 108, 0.35);
  outline-offset: 3px;
}

.psgvp-shell-container {
  width: min(100% - 2rem, var(--psgvp-container));
  margin-inline: auto;
}

.psgvp-skip-link {
  position: fixed;
  top: var(--psgvp-space-3);
  left: var(--psgvp-space-3);
  z-index: 1000;
  padding: var(--psgvp-space-2) var(--psgvp-space-4);
  background: var(--psgvp-color-ink);
  color: #fff;
  border-radius: var(--psgvp-radius-sm);
  transform: translateY(-150%);
}

.psgvp-skip-link:focus {
  transform: translateY(0);
}

/* The header is taken OUT of document flow and paired with a constant-height
   spacer. When it collapses to the compact state its height changes by ~105px;
   while it was `position: sticky` (in flow) that shrank the document by the
   same amount, Chrome's scroll anchoring then corrected scrollY by ~105px, and
   because that is larger than the compact threshold the header immediately
   re-crossed it — an endless expand/collapse loop (the reported flicker).
   Fixed positioning + a spacer that never resizes makes document height
   independent of header state, so the feedback loop cannot form. */
.psgvp-shell-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: var(--psgvp-header-bg);
  box-shadow: var(--psgvp-shadow-header);
  transition: box-shadow 220ms ease;
}

/* ------------------------------------------------------------------
   NO-JS / PRE-HYDRATION FALLBACK
   Styles the markup between the P360:SHELL-FALLBACK markers. psgvp-shell.js
   replaces that region wholesale on DOMContentLoaded, so these rules only
   paint before the shell renders or when JavaScript is unavailable. The
   header is position:fixed, so the fallback needs enough styling to sit
   legibly in that band. Intentionally plain — institution identity plus
   real links, with no attempt to imitate the production header.

   Additive only: no existing selector, font family or font weight is
   changed. Values reuse the shell's own spacing/colour tokens and a weight
   already present in the shell scale.
   ------------------------------------------------------------------ */
.psgvp-fallback-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--psgvp-space-3) var(--psgvp-space-5);
  width: min(100% - 2rem, var(--psgvp-container));
  margin-inline: auto;
  padding-block: var(--psgvp-space-3);
}

.psgvp-fallback-brand {
  display: flex;
  align-items: center;
  gap: var(--psgvp-space-3);
  min-width: 0;
  color: var(--psgvp-color-accent-dark);
  font-weight: 750;
  line-height: 1.15;
}

.psgvp-fallback-brand img {
  flex: none;
  width: 44px;
  height: 44px;
  object-fit: contain;
}

.psgvp-fallback-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--psgvp-space-2) var(--psgvp-space-4);
  color: var(--psgvp-color-ink);
  font-size: 0.9rem;
}

.psgvp-fallback-nav a:hover,
.psgvp-fallback-nav a:focus-visible {
  text-decoration: underline;
}

/* Reserves the expanded header height in flow. JS refines the value per
   breakpoint; the fallback keeps content clear of the header before JS runs. */
.psgvp-header-spacer {
  height: var(--psgvp-header-space, 168px);
  flex: none;
  pointer-events: none;
}

/* Used for a single synchronous measurement of the expanded height while the
   header is compact — no paint happens between add and remove. */
.psgvp-shell-header.is-measuring,
.psgvp-shell-header.is-measuring * {
  transition: none !important;
}

/* The same shared header contracts after the visitor has started browsing. */
.psgvp-shell-header .psgvp-utility-bar,
.psgvp-shell-header .psgvp-identity-inner,
.psgvp-shell-header .psgvp-logo,
.psgvp-shell-header .psgvp-identity-copy,
.psgvp-shell-header .psgvp-nav-band {
  transition: max-height 220ms ease, min-height 220ms ease, padding 220ms ease, margin 220ms ease, opacity 180ms ease, width 220ms ease;
}

.psgvp-shell-header.is-compact {
  box-shadow: 0 6px 18px rgba(21, 32, 43, 0.14);
}

.psgvp-shell-header.is-compact .psgvp-utility-bar {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
}

.psgvp-shell-header.is-compact .psgvp-identity-inner {
  min-height: 64px;
  padding-block: 0.25rem;
}

.psgvp-shell-header.is-compact .psgvp-logo {
  width: 42px;
}

.psgvp-shell-header.is-compact .psgvp-identity-copy em,
.psgvp-shell-header.is-compact .psgvp-inline-badges,
.psgvp-shell-header.is-compact .psgvp-identity-ctas,
.psgvp-shell-header.is-compact .psgvp-header-apply-link,
.psgvp-shell-header.is-compact .psgvp-header-tour-link {
  display: none;
}

@media (min-width: 1041px) {
  .psgvp-shell-header.is-compact .psgvp-identity-inner {
    min-height: 64px;
    padding-block: 0.2rem;
  }

  .psgvp-shell-header.is-compact .psgvp-identity-copy strong {
    font-size: 0.94rem;
    line-height: 1.08;
  }

  .psgvp-shell-header.is-compact .psgvp-identity-copy strong > span {
    display: block;
  }

  .psgvp-shell-header.is-compact .psgvp-institution-prefix {
    font-size: 0.72rem;
    font-weight: 750;
  }

  .psgvp-shell-header.is-compact .psgvp-institution-name-line {
    font-size: 0.94rem;
    font-weight: 850;
  }

}

.psgvp-utility-bar {
  background: var(--psgvp-color-accent-dark);
  color: #fff;
  font-size: 0.8125rem;
}

.psgvp-utility-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--psgvp-space-4);
  min-height: 30px;
}

.psgvp-utility-inner p {
  margin: 0;
  font-weight: 650;
  letter-spacing: 0;
}

.psgvp-utility-inner nav,
.psgvp-primary-nav,
.psgvp-footer-links {
  display: flex;
  align-items: center;
}

.psgvp-utility-inner nav {
  gap: var(--psgvp-space-4);
  white-space: nowrap;
}

.psgvp-utility-inner a {
  color: rgba(255, 255, 255, 0.9);
}

.psgvp-identity-band {
  background: var(--psgvp-header-bg);
  border-bottom: 1px solid var(--psgvp-color-border);
}

.psgvp-identity-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--psgvp-space-4);
  min-height: 68px;
  padding-block: 0.45rem;
}

.psgvp-brand-lockup {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: var(--psgvp-space-4);
}

.psgvp-logo-pair,
.psgvp-footer-logo-row {
  display: flex;
  align-items: center;
  gap: var(--psgvp-space-2);
  flex: 0 0 auto;
}

.psgvp-logo,
.psgvp-footer-logo {
  display: block;
  width: var(--psgvp-logo-size);
  max-width: 22vw;
  height: auto;
  flex: 0 0 auto;
}

.psgvp-logo-placeholder {
  display: grid;
  place-items: center;
  width: 66px;
  aspect-ratio: 1;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: var(--psgvp-color-panel);
  color: var(--psgvp-color-muted);
  font-size: 0.68rem;
  font-weight: 750;
  line-height: 1.15;
  text-align: center;
}

.psgvp-identity-copy {
  display: grid;
  min-width: 0;
  gap: 0.06rem;
}

.psgvp-identity-copy strong {
  color: var(--psgvp-color-ink);
  max-width: min(62vw, 760px);
  overflow: visible;
  font-size: clamp(1rem, 1.55vw, 1.24rem);
  font-weight: 850;
  line-height: 1.08;
  text-wrap: balance;
}

.psgvp-institution-prefix,
.psgvp-institution-name-line {
  display: block;
}

.psgvp-identity-copy .psgvp-institution-name-line {
  color: var(--psgvp-color-accent-dark);
}

.psgvp-identity-copy span {
  color: var(--psgvp-color-muted);
  font-size: 0.8rem;
}

.psgvp-identity-copy > span[data-config-text="tagline"] {
  display: none;
}

/* ------------------------------------------------------------------
   INSTITUTION NAME — normal (expanded) header only.
   The generic `.psgvp-identity-copy span` rule above would otherwise
   pin both name lines to 0.8rem, leaving the college name smaller and
   lighter than the navigation beneath it. These rules restore the
   intended hierarchy: a quiet possessive prefix over a confident,
   heavier college name. Scoped with :not(.is-compact) so the compact
   scrolled header keeps its existing proportions untouched.
   ------------------------------------------------------------------ */
.psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong {
  overflow: visible;
  white-space: normal;
  text-overflow: clip;
  line-height: 1.07;
}

.psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-prefix {
  display: block;
  color: var(--psgvp-color-muted);
  font-size: clamp(0.64rem, 0.78vw, 0.76rem);
  font-weight: 750;
  letter-spacing: 0.07em;
  line-height: 1.25;
  text-transform: uppercase;
  white-space: normal;
}

.psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-name-line {
  display: block;
  color: var(--psgvp-color-accent-dark);
  font-size: clamp(1.16rem, 1.72vw, 1.42rem);
  font-weight: 900;
  letter-spacing: -0.004em;
  line-height: 1.1;
  white-space: normal;
}

/* Tablet band only (761–1040px): the identity actions sit inline with the
   logo here, and the long "Explore Virtual Tour" CTA squeezed the institution
   name onto three lines. Below 761px the actions move to their own second row,
   where the tour CTA has space again — so it is only dropped in this band.
   It stays reachable from Campus & Updates either way. */
@media (min-width: 761px) and (max-width: 1040px) {
  .psgvp-shell-header .psgvp-header-tour-link {
    display: none;
  }
}

/* Tablet + mobile — same hierarchy, scaled to the narrower identity column. */
@media (max-width: 1040px) {
  .psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-prefix {
    font-size: 0.64rem;
    letter-spacing: 0.06em;
  }

  .psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-name-line {
    font-size: clamp(0.98rem, 1.9vw, 1.16rem);
    font-weight: 880;
  }
}

/* Mobile — wrap onto a second line rather than truncating with an
   ellipsis, and keep the prefix small so header height stays compact. */
@media (max-width: 760px) {
  .psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-prefix {
    font-size: 0.58rem;
    letter-spacing: 0.05em;
    line-height: 1.2;
  }

  .psgvp-shell-header:not(.is-compact) .psgvp-identity-copy strong .psgvp-institution-name-line {
    font-size: clamp(0.94rem, 3.9vw, 1.1rem);
    font-weight: 850;
    line-height: 1.16;
  }

}

.psgvp-identity-copy em,
.psgvp-footer-identity em,
.psgvp-type-scale em {
  color: var(--psgvp-color-accent);
  font-family: var(--psgvp-font-devanagari);
  font-size: 0.86rem;
  font-style: normal;
  font-weight: 650;
  line-height: 1.12;
}

.psgvp-inline-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  margin-top: 0.12rem;
}

.psgvp-inline-badges span {
  border: 1px solid color-mix(in srgb, var(--psgvp-color-accent) 25%, var(--psgvp-color-border));
  border-radius: var(--psgvp-radius-sm);
  background: rgba(255, 255, 255, 0.56);
  color: var(--psgvp-color-muted);
  font-size: 0.68rem;
  font-weight: 750;
  line-height: 1;
  padding: 0.24rem 0.4rem;
}

.psgvp-identity-actions {
  display: flex;
  align-items: center;
  gap: var(--psgvp-space-2);
}

/* Apply Now + tour CTA pair. Same gap as the actions row, so the desktop
   header renders exactly as before the pair was wrapped. */
.psgvp-identity-ctas {
  display: flex;
  align-items: center;
  gap: var(--psgvp-space-2);
}

.psgvp-site-search {
  position: relative;
}

.psgvp-site-search-trigger {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  min-height: 36px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  background: rgba(255, 255, 255, 0.78);
  color: var(--psgvp-color-ink);
  padding: 0.48rem 0.68rem;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 750;
  cursor: pointer;
}

.psgvp-site-search-trigger svg,
.psgvp-site-search-field svg {
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-width: 2;
}

.psgvp-site-search-trigger:hover,
.psgvp-site-search-trigger:focus-visible {
  border-color: var(--psgvp-color-accent);
  color: var(--psgvp-color-accent-dark);
}

.psgvp-site-search-panel {
  position: absolute;
  top: calc(100% + 0.5rem);
  right: 0;
  z-index: 110;
  width: min(360px, calc(100vw - 2rem));
  padding: 0.85rem;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  box-shadow: var(--psgvp-shadow-soft);
}

.psgvp-site-search-panel label {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--psgvp-color-ink);
  font-size: 0.84rem;
  font-weight: 780;
}

.psgvp-site-search-field {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  padding: 0.1rem 0.58rem;
  color: var(--psgvp-color-muted);
}

.psgvp-site-search-field:focus-within {
  border-color: var(--psgvp-color-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--psgvp-color-accent) 16%, transparent);
}

.psgvp-site-search-field input {
  width: 100%;
  min-width: 0;
  border: 0;
  outline: 0;
  padding: 0.52rem 0;
  color: var(--psgvp-color-ink);
  font: inherit;
  font-size: 0.88rem;
}

.psgvp-site-search-hint,
.psgvp-site-search-empty {
  margin: 0.65rem 0 0;
  color: var(--psgvp-color-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.psgvp-site-search-results {
  display: grid;
  gap: 0.28rem;
  margin-top: 0.65rem;
}

.psgvp-site-search-results a {
  display: grid;
  gap: 0.12rem;
  border-radius: var(--psgvp-radius-sm);
  padding: 0.48rem 0.55rem;
  color: var(--psgvp-color-ink);
}

.psgvp-site-search-results a:hover,
.psgvp-site-search-results a:focus-visible {
  background: var(--psgvp-color-subtle);
}

.psgvp-site-search-results strong {
  font-size: 0.84rem;
}

.psgvp-site-search-results span {
  color: var(--psgvp-color-muted);
  font-size: 0.76rem;
  line-height: 1.35;
}

.psgvp-identity-actions .psgvp-badge-area,
.psgvp-identity-actions .psgvp-switcher {
  display: none;
}

.psgvp-badge-area {
  display: flex;
  gap: var(--psgvp-space-2);
}

.psgvp-badge-area span {
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  color: var(--psgvp-color-muted);
  font-size: 0.75rem;
  font-weight: 700;
  padding: 0.35rem 0.5rem;
}

.psgvp-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--psgvp-space-2);
  min-height: 36px;
  border: 1px solid transparent;
  border-radius: var(--psgvp-radius-sm);
  padding: 0.52rem 0.78rem;
  cursor: pointer;
  font-size: 0.84rem;
  font-weight: 750;
  line-height: 1.2;
  transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.psgvp-button svg,
.psgvp-primary-nav svg,
.psgvp-header-tour-link svg {
  width: 1.1rem;
  height: 1.1rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.psgvp-button:hover {
  transform: translateY(-1px);
}

.psgvp-button-primary {
  background: var(--psgvp-color-accent);
  color: #fff;
}

.psgvp-button-primary:hover {
  background: var(--psgvp-color-accent-dark);
  color: #fff;
}

.psgvp-button-secondary {
  background: rgba(255, 255, 255, 0.72);
  border-color: var(--psgvp-color-border);
  color: var(--psgvp-color-ink);
}

.psgvp-switcher {
  position: relative;
}

.psgvp-header-tour-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--psgvp-space-2);
  min-height: 36px;
  border-radius: var(--psgvp-radius-sm);
  background: var(--psgvp-color-accent);
  color: #fff;
  font-size: 0.84rem;
  font-weight: 780;
  line-height: 1.15;
  padding: 0.52rem 0.78rem;
  white-space: nowrap;
}

.psgvp-header-tour-link:hover {
  background: var(--psgvp-color-accent-dark);
  color: #fff;
}

.psgvp-header-apply-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  border-radius: var(--psgvp-radius-sm);
  background: var(--psgvp-color-accent);
  color: #fff;
  padding: 0.52rem 0.78rem;
  font-size: 0.84rem;
  font-weight: 780;
  line-height: 1.15;
  white-space: nowrap;
}

.psgvp-header-apply-link:hover {
  background: var(--psgvp-color-accent-dark);
  color: #fff;
}

.psgvp-switcher-menu {
  position: absolute;
  top: calc(100% + 0.5rem);
  right: 0;
  z-index: 100;
  display: none;
  width: min(310px, calc(100vw - 2rem));
  padding: var(--psgvp-space-2);
  background: #fff;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  box-shadow: var(--psgvp-shadow-soft);
}

.psgvp-switcher-menu.is-open {
  display: grid;
}

.psgvp-switcher-menu a {
  border-radius: var(--psgvp-radius-sm);
  padding: 0.65rem 0.75rem;
  color: var(--psgvp-color-ink);
  font-size: 0.9rem;
}

.psgvp-switcher-menu a:hover,
.psgvp-switcher-menu a:focus-visible {
  background: var(--psgvp-color-subtle);
}

.psgvp-menu-toggle {
  display: none;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 5px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  background: #fff;
  color: var(--psgvp-color-ink);
  cursor: pointer;
}

.psgvp-menu-toggle span {
  display: block;
  width: 20px;
  height: 2px;
  background: currentColor;
}

.psgvp-nav-band {
  background: color-mix(in srgb, var(--psgvp-header-bg) 82%, #ffffff);
  border-bottom: 1px solid var(--psgvp-color-border);
}

.psgvp-primary-nav {
  gap: 0.1rem;
  min-height: 42px;
  overflow-x: auto;
  scrollbar-width: none;
}

.psgvp-primary-nav::-webkit-scrollbar {
  display: none;
}

.psgvp-primary-nav.is-switcher-open {
  overflow: visible;
}

.psgvp-primary-nav.is-dropdown-open {
  overflow: visible;
}

.psgvp-primary-nav a {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 42px;
  padding: 0.68rem 0.62rem;
  color: var(--psgvp-color-ink);
  font-size: 0.84rem;
  font-weight: 720;
  white-space: nowrap;
}

.psgvp-primary-nav a::after {
  position: absolute;
  right: 0.7rem;
  bottom: 0;
  left: 0.7rem;
  height: 3px;
  background: var(--psgvp-color-accent);
  content: "";
  opacity: 0;
}

.psgvp-primary-nav a:hover::after,
.psgvp-primary-nav a.is-active::after {
  opacity: 1;
}

.psgvp-nav-item {
  position: relative;
  display: inline-flex;
  align-items: stretch;
}

.psgvp-nav-item > a {
  padding-right: 0.3rem;
}

.psgvp-nav-disclosure {
  display: inline-grid;
  width: 2rem;
  min-height: 42px;
  place-items: center;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--psgvp-color-text);
  cursor: pointer;
}

.psgvp-nav-disclosure svg {
  width: 1rem;
  height: 1rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
  transition: transform 160ms ease;
}

.psgvp-nav-item.is-open .psgvp-nav-disclosure svg { transform: rotate(180deg); }
.psgvp-nav-disclosure:hover,
.psgvp-nav-disclosure:focus-visible { background: var(--psgvp-color-subtle); outline: 2px solid var(--psgvp-color-accent); outline-offset: -2px; }

.psgvp-submenu {
  position: absolute;
  z-index: 20;
  top: calc(100% + 0.35rem);
  left: 0;
  display: none;
  min-width: 15.5rem;
  padding: 0.45rem;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  background: #fff;
  box-shadow: var(--psgvp-shadow-lg);
}

/* The panel is offset 0.35rem below the trigger for visual separation, which
   left a dead strip the pointer had to cross: leaving the nav item's box fired
   mouseleave and closed the menu before the pointer reached a link. This
   transparent bridge makes the gap part of the submenu's own hit area, so the
   pointer never leaves the .psgvp-nav-item subtree on the way down. */
.psgvp-submenu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 0.55rem;
}

.psgvp-nav-item.is-open .psgvp-submenu { display: grid; }
.psgvp-submenu a.psgvp-submenu-link { min-height: 42px; padding: 0.7rem 0.8rem; border-radius: var(--psgvp-radius-sm); white-space: normal; }
.psgvp-submenu a.psgvp-submenu-link::after { display: none; }
.psgvp-submenu a.psgvp-submenu-link:hover,
.psgvp-submenu a.psgvp-submenu-link:focus-visible,
.psgvp-submenu a.psgvp-submenu-link.is-active { background: var(--psgvp-color-subtle); outline: none; }

.psgvp-primary-nav .psgvp-tour-link {
  margin-left: auto;
  background: var(--psgvp-color-accent);
  color: #fff;
  border-radius: var(--psgvp-radius-sm);
  min-height: 38px;
  margin-block: 5px;
}

.psgvp-nav-switcher {
  display: inline-flex;
  align-items: center;
  align-self: stretch;
  margin-left: auto;
}

.psgvp-nav-switcher .psgvp-button {
  min-height: 34px;
  margin-block: 4px;
  white-space: nowrap;
}

.psgvp-primary-nav .psgvp-tour-link:hover {
  background: var(--psgvp-color-accent-dark);
  color: #fff;
}

.psgvp-primary-nav .psgvp-tour-link::after {
  display: none;
}

.psgvp-demo-hero {
  padding-block: var(--psgvp-space-8);
  background:
    linear-gradient(90deg, rgba(11, 79, 108, 0.08), transparent 34%),
    #f6fafc;
}

.psgvp-student-hero {
  padding-block: var(--psgvp-space-8);
  background:
    linear-gradient(90deg, rgba(11, 79, 108, 0.1), transparent 42%),
    #f6fafc;
}

.psgvp-demo-hero-grid,
.psgvp-two-column,
.psgvp-student-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.9fr);
  align-items: center;
  gap: var(--psgvp-space-7);
}

.psgvp-section-label {
  margin: 0 0 var(--psgvp-space-2);
  color: var(--psgvp-color-accent);
  font-size: 0.82rem;
  font-weight: 820;
  letter-spacing: 0;
  text-transform: uppercase;
}

h1,
h2,
h3,
p {
  overflow-wrap: anywhere;
}

h1,
h2,
h3 {
  margin: 0;
  color: var(--psgvp-color-ink);
  line-height: 1.15;
}

h1 {
  font-size: clamp(2.2rem, 5vw, 4.2rem);
  letter-spacing: 0;
}

h2 {
  font-size: clamp(1.65rem, 3vw, 2.4rem);
}

h3 {
  font-size: 1.25rem;
}

.psgvp-lede {
  max-width: 720px;
  margin: var(--psgvp-space-4) 0 0;
  color: var(--psgvp-color-muted);
  font-size: clamp(1.05rem, 2vw, 1.25rem);
  line-height: 1.6;
}

.psgvp-copy {
  color: var(--psgvp-color-muted);
  font-size: 1rem;
  line-height: 1.7;
}

.psgvp-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--psgvp-space-3);
  margin-top: var(--psgvp-space-6);
}

.psgvp-demo-panel,
.psgvp-pwa-panel,
.psgvp-reference-card,
.psgvp-counter-demo,
.psgvp-tour-cta-card,
.psgvp-viewer-placeholder {
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
}

.psgvp-demo-panel {
  padding: var(--psgvp-space-6);
  box-shadow: var(--psgvp-shadow-soft);
}

.psgvp-demo-panel p,
.psgvp-pwa-panel p {
  color: var(--psgvp-color-muted);
}

.psgvp-pwa-panel {
  padding: var(--psgvp-space-6);
  box-shadow: var(--psgvp-shadow-soft);
}

.psgvp-pwa-panel small {
  display: block;
  margin-top: var(--psgvp-space-3);
  color: var(--psgvp-color-muted);
  font-size: 0.84rem;
}

.psgvp-demo-switch-list {
  display: grid;
  gap: var(--psgvp-space-2);
  margin-top: var(--psgvp-space-4);
}

.psgvp-demo-switch-list button {
  min-height: 44px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  background: var(--psgvp-color-panel);
  color: var(--psgvp-color-ink);
  cursor: pointer;
  font-weight: 700;
  text-align: left;
  padding-inline: var(--psgvp-space-3);
}

.psgvp-demo-switch-list button:hover {
  border-color: var(--psgvp-color-accent);
}

.psgvp-section {
  padding-block: var(--psgvp-space-8);
}

.psgvp-section-muted {
  background: var(--psgvp-color-panel);
}

.psgvp-section-heading {
  max-width: 760px;
  margin-bottom: var(--psgvp-space-6);
}

.psgvp-section-heading p:last-child {
  color: var(--psgvp-color-muted);
  font-size: 1.05rem;
  line-height: 1.7;
}

.psgvp-demo-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--psgvp-space-4);
}

.psgvp-reference-card {
  padding: var(--psgvp-space-5);
}

.psgvp-reference-card p {
  color: var(--psgvp-color-muted);
}

.psgvp-link-directory {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--psgvp-space-4);
}

.psgvp-link-directory article {
  display: grid;
  align-content: start;
  gap: var(--psgvp-space-2);
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  padding: var(--psgvp-space-5);
}

.psgvp-link-directory h3 {
  margin-bottom: var(--psgvp-space-2);
}

.psgvp-link-directory a {
  color: var(--psgvp-color-muted);
  font-weight: 680;
}

.psgvp-link-directory a:hover {
  color: var(--psgvp-color-accent);
}

.psgvp-type-scale {
  display: grid;
  gap: var(--psgvp-space-3);
}

.psgvp-type-scale div {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--psgvp-space-4);
  border-top: 1px solid var(--psgvp-color-border);
  padding-block: var(--psgvp-space-4);
}

.psgvp-type-scale span,
.psgvp-type-scale small {
  color: var(--psgvp-color-muted);
  font-size: 0.84rem;
  font-weight: 700;
}

.psgvp-type-scale strong {
  font-size: clamp(1.25rem, 3vw, 2rem);
}

.psgvp-type-scale p {
  margin: 0;
  color: var(--psgvp-color-ink);
}

.psgvp-tour-cta-card {
  display: grid;
  gap: var(--psgvp-space-3);
  padding: var(--psgvp-space-6);
  color: var(--psgvp-color-ink);
  box-shadow: var(--psgvp-shadow-soft);
}

.psgvp-tour-cta-card:hover {
  border-color: var(--psgvp-color-accent);
  color: var(--psgvp-color-ink);
}

.psgvp-tour-cta-card strong {
  font-size: 1.45rem;
}

.psgvp-tour-cta-card span:last-child {
  color: var(--psgvp-color-muted);
}

.psgvp-orbit-icon,
.psgvp-compass-ring {
  display: inline-grid;
  place-items: center;
  width: 72px;
  aspect-ratio: 1;
  border: 2px solid var(--psgvp-color-accent);
  border-radius: 50%;
  position: relative;
}

.psgvp-orbit-icon::before,
.psgvp-orbit-icon::after,
.psgvp-compass-ring::before,
.psgvp-compass-ring::after {
  position: absolute;
  border: 1px solid var(--psgvp-color-accent);
  border-radius: 50%;
  content: "";
}

.psgvp-orbit-icon::before,
.psgvp-compass-ring::before {
  width: 36%;
  height: 100%;
}

.psgvp-orbit-icon::after,
.psgvp-compass-ring::after {
  width: 100%;
  height: 36%;
}

.psgvp-counter-demo {
  display: grid;
  gap: var(--psgvp-space-2);
  padding: var(--psgvp-space-6);
}

.psgvp-counter-demo span,
.psgvp-footer-counter span {
  color: var(--psgvp-color-muted);
  font-size: 0.82rem;
  font-weight: 780;
  text-transform: uppercase;
}

.psgvp-counter-demo strong {
  color: var(--psgvp-color-accent);
  font-size: 2.4rem;
  line-height: 1;
}

.psgvp-counter-demo small {
  color: var(--psgvp-color-muted);
}

[data-visitor-status]:empty {
  display: none;
}

.psgvp-footer {
  background: var(--psgvp-color-footer);
  color: rgba(255, 255, 255, 0.82);
}

.psgvp-footer-fallback {
  display: grid;
  gap: var(--psgvp-space-2);
  padding-block: var(--psgvp-space-4);
  font-size: 0.84rem;
}

.psgvp-footer-fallback p {
  margin: 0;
}

.psgvp-footer-fallback address {
  display: grid;
  gap: 0.2rem;
  font-style: normal;
}

.psgvp-footer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr));
  gap: var(--psgvp-space-4);
  padding-block: var(--psgvp-space-4);
}

.psgvp-footer.psgvp-footer section {
  padding: 0;
}

.psgvp-footer h2 {
  margin: 0 0 var(--psgvp-space-2);
  color: #fff;
  font-size: 1rem;
}

.psgvp-footer p {
  margin: 0;
  color: rgba(255, 255, 255, 0.72);
}

.psgvp-footer-identity {
  display: flex;
  align-items: flex-start;
  flex-wrap: nowrap;
  gap: var(--psgvp-space-3);
  min-width: 0;
}

.psgvp-footer-identity > div {
  min-width: 0;
  flex: 1 1 0;
}

.psgvp-footer .psgvp-logo-placeholder {
  border-color: rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.76);
}

.psgvp-footer-identity em {
  display: block;
  margin-top: -0.15rem;
  margin-bottom: var(--psgvp-space-1);
  color: #dceff7;
}

.psgvp-footer-identity address {
  margin-top: var(--psgvp-space-2);
  font-size: 0.78rem;
  line-height: 1.45;
}

.psgvp-footer-links {
  align-items: flex-start;
  flex-direction: column;
  gap: 0.1rem;
}

.psgvp-footer-links--external {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.1rem 1rem;
}

.psgvp-footer-links a {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  font-size: 0.78rem;
  line-height: 1.2;
}

.psgvp-footer-section--compliance a {
  font-weight: 650;
}

.psgvp-footer-links a,
.psgvp-footer address a,
.psgvp-footer address span,
.psgvp-footer-lower a {
  color: rgba(255, 255, 255, 0.74);
}

.psgvp-footer a:hover {
  color: #fff;
}

.psgvp-footer a:focus-visible {
  outline-color: var(--psgvp-color-accent);
}

.psgvp-footer address {
  display: grid;
  gap: 0.35rem;
  font-style: normal;
}

.psgvp-footer-lower {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.psgvp-footer-lower .psgvp-shell-container {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: var(--psgvp-space-3);
  min-height: 44px;
}

.psgvp-footer-lower p {
  margin: 0;
}

.psgvp-footer-lower nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--psgvp-space-2);
  font-size: 0.86rem;
}

.psgvp-crafted-by {
  display: inline-flex;
  align-items: center;
  gap: var(--psgvp-space-2);
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.86rem;
  font-weight: 700;
  white-space: nowrap;
}

.psgvp-crafted-line {
  display: flex;
  justify-content: center;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  padding: 0.35rem 1rem 0.45rem;
}

.psgvp-crafted-by span {
  display: inline-flex;
  align-items: center;
  gap: 0.22rem;
}

.psgvp-crafted-by i {
  display: block;
  width: 0.48rem;
  aspect-ratio: 1;
  border-radius: 50%;
}

.psgvp-crafted-by i:nth-child(1) {
  background: #ff9933;
}

.psgvp-crafted-by i:nth-child(2) {
  background: #ffffff;
}

.psgvp-crafted-by i:nth-child(3) {
  background: #138808;
}

.psgvp-footer-counter {
  display: grid;
  min-width: 124px;
  gap: 0.1rem;
}

.psgvp-footer-counter span {
  color: rgba(255, 255, 255, 0.62);
}

.psgvp-footer-counter strong {
  color: #fff;
  font-size: 1.15rem;
}

.psgvp-tour-main {
  background: var(--psgvp-color-panel);
}

.psgvp-tour-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 420px);
  align-items: center;
  gap: var(--psgvp-space-7);
  padding-block: var(--psgvp-space-8);
}

.psgvp-tour-visual {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 340px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  overflow: hidden;
}

.psgvp-tour-visual::before,
.psgvp-tour-visual::after {
  position: absolute;
  border: 1px solid rgba(11, 79, 108, 0.18);
  border-radius: 50%;
  content: "";
}

.psgvp-tour-visual::before {
  width: 78%;
  aspect-ratio: 1;
}

.psgvp-tour-visual::after {
  width: 58%;
  aspect-ratio: 1;
}

.psgvp-compass-ring {
  width: 142px;
  z-index: 1;
}

.psgvp-compass-axis {
  position: absolute;
  z-index: 1;
  width: 2px;
  height: 220px;
  background: var(--psgvp-color-accent);
  transform: rotate(42deg);
}

.psgvp-compass-label {
  position: absolute;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 76px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--psgvp-color-accent);
  color: #fff;
  font-size: 1.35rem;
  font-weight: 850;
}

.psgvp-viewer-placeholder {
  padding: var(--psgvp-space-6);
  min-height: 280px;
  margin-bottom: var(--psgvp-space-8);
}

.psgvp-viewer-placeholder p {
  color: var(--psgvp-color-muted);
}

.psgvp-reference-page {
  min-height: 45vh;
  padding-block: var(--psgvp-space-8);
}

.psgvp-feature-hero {
  padding-block: var(--psgvp-space-8);
  background:
    linear-gradient(90deg, rgba(26, 39, 68, 0.1), transparent 44%),
    var(--psgvp-color-panel);
}

.psgvp-feature-panel {
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  box-shadow: var(--psgvp-shadow-soft);
  padding: var(--psgvp-space-6);
}

.psgvp-form-embed {
  overflow: hidden;
  min-height: 420px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
}

.psgvp-form-embed iframe {
  display: block;
  width: 100%;
  min-height: 640px;
  border: 0;
}

.psgvp-form-placeholder {
  display: grid;
  place-items: center;
  align-content: center;
  min-height: 420px;
  padding: var(--psgvp-space-6);
  color: var(--psgvp-color-muted);
  text-align: center;
}

.psgvp-form-placeholder strong {
  color: var(--psgvp-color-ink);
  font-size: 1.25rem;
}

.psgvp-form-placeholder code {
  color: var(--psgvp-color-accent);
  font-weight: 750;
}

.psgvp-feature-grid,
.psgvp-feedback-grid,
.psgvp-service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--psgvp-space-4);
}

.psgvp-feedback-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.psgvp-service-card {
  display: grid;
  align-content: start;
  gap: var(--psgvp-space-3);
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  padding: var(--psgvp-space-5);
}

.psgvp-service-card span,
.psgvp-download-row span,
.psgvp-note {
  color: var(--psgvp-color-muted);
  font-size: 0.86rem;
}

.psgvp-service-card p,
.psgvp-service-card li {
  margin: 0;
  color: var(--psgvp-color-muted);
}

.psgvp-service-card ul {
  display: grid;
  gap: 0.45rem;
  margin: 0;
  padding-left: 1.1rem;
}

.psgvp-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--psgvp-space-2);
  margin-bottom: var(--psgvp-space-5);
}

.psgvp-filter-chip {
  min-height: 36px;
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-sm);
  background: #fff;
  color: var(--psgvp-color-ink);
  cursor: pointer;
  font-weight: 760;
  padding: 0.45rem 0.8rem;
}

.psgvp-filter-chip.is-active {
  background: var(--psgvp-color-accent);
  border-color: var(--psgvp-color-accent);
  color: #fff;
}

.psgvp-download-list {
  display: grid;
  gap: var(--psgvp-space-3);
}

.psgvp-download-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--psgvp-space-4);
  border: 1px solid var(--psgvp-color-border);
  border-radius: var(--psgvp-radius-md);
  background: #fff;
  padding: var(--psgvp-space-4);
}

.psgvp-download-row strong,
.psgvp-download-row span {
  display: block;
}

.psgvp-alert {
  border: 1px solid rgba(201, 168, 76, 0.55);
  border-radius: var(--psgvp-radius-md);
  background: #fff8e8;
  color: #5c4813;
  padding: var(--psgvp-space-4);
}

.psgvp-detail-grid {
  align-items: start;
  margin-top: var(--psgvp-space-6);
}

.psgvp-detail-grid article {
  display: grid;
  gap: var(--psgvp-space-3);
}

/* ==========================================================================
   Social Icons Dock — Polymath360Studio standard component
   Floating, fixed bottom-right vertical stack of brand-colored social icons.
   ========================================================================== */

:root {
  --dock-icon-size: 48px;
  --dock-gap: 12px;
  --dock-right-offset: 24px;
  --dock-bottom-offset: 24px;
}

.p360-social-dock {
  position: fixed;
  right: var(--dock-right-offset);
  bottom: calc(var(--dock-bottom-offset) + env(safe-area-inset-bottom, 0px));
  display: flex;
  flex-direction: column;
  gap: var(--dock-gap);
  z-index: 999;
  transition: opacity 0.4s ease;
}

.p360-social-dock.p360-idle {
  opacity: 0;
  pointer-events: none;
}
@media (min-width: 601px) {
  .p360-social-dock.p360-idle {
    opacity: 1;
    pointer-events: auto;
  }
}

.p360-social-icon {
  width: var(--dock-icon-size);
  height: var(--dock-icon-size);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  text-decoration: none;
}

.p360-social-icon svg {
  width: 55%;
  height: 55%;
}

.p360-social-icon:hover,
.p360-social-icon:focus-visible {
  transform: translateY(-4px) scale(1.08);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.28);
}

.p360-social-icon:focus-visible {
  outline: 2px solid #ffffff;
  outline-offset: 2px;
}

.p360-instagram {
  background: radial-gradient(circle at 30% 107%,
    #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%);
}

.p360-facebook   { background: #1877F2; }
.p360-youtube    { background: #FF0000; }
.p360-x          { background: #000000; }
.p360-linkedin   { background: #0A66C2; }
.p360-whatsapp   { background: #25D366; }

@media (max-width: 600px) {
  :root {
    --dock-icon-size: 40px;
    --dock-gap: 10px;
    --dock-right-offset: 16px;
    --dock-bottom-offset: 16px;
  }
}

@media (max-width: 1040px) {
  .psgvp-shell-header.is-compact .psgvp-identity-inner {
    min-height: 64px;
  }

  .psgvp-identity-inner {
    grid-template-columns: minmax(0, 1fr) auto auto;
  }

  .psgvp-badge-area {
    display: none;
  }

  .psgvp-identity-actions {
    display: flex;
  }

  .psgvp-menu-toggle {
    display: inline-flex;
  }

  .psgvp-nav-band {
    display: none;
    position: fixed;
    top: var(--psgvp-header-offset);
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 90;
    overflow: auto;
    background: #fff;
  }

  .psgvp-nav-band.is-open {
    display: block;
  }

  .psgvp-primary-nav {
    align-items: stretch;
    flex-direction: column;
    gap: 0;
    min-height: auto;
    padding-block: var(--psgvp-space-4);
    overflow: visible;
  }

  .psgvp-primary-nav a,
  .psgvp-primary-nav .psgvp-nav-item,
  .psgvp-primary-nav .psgvp-tour-link,
  .psgvp-primary-nav .psgvp-nav-switcher {
    width: 100%;
    min-height: 48px;
    margin: 0;
    border-radius: 0;
    border-bottom: 1px solid var(--psgvp-color-border);
  }

  .psgvp-primary-nav .psgvp-nav-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 48px;
    align-items: stretch;
  }

  .psgvp-primary-nav .psgvp-nav-item > a { width: auto; padding-right: 0.9rem; }
  .psgvp-primary-nav .psgvp-nav-disclosure { width: 48px; min-height: 48px; }
  .psgvp-primary-nav .psgvp-submenu { position: static; grid-column: 1 / -1; min-width: 0; padding: 0.35rem 0 0.45rem 1rem; border: 0; border-left: 2px solid var(--psgvp-color-border); border-radius: 0; box-shadow: none; }
  /* No offset panel in the stacked mobile menu, so no bridge is needed. */
  .psgvp-primary-nav .psgvp-submenu::before { content: none; }
  .psgvp-primary-nav .psgvp-submenu a.psgvp-submenu-link { width: 100%; min-height: 44px; padding: 0.7rem 0.8rem; }

  .psgvp-primary-nav .psgvp-tour-link,
  .psgvp-primary-nav .psgvp-nav-switcher .psgvp-button {
    justify-content: center;
    margin-top: var(--psgvp-space-3);
    border-radius: var(--psgvp-radius-sm);
  }

  .psgvp-primary-nav .psgvp-nav-switcher {
    display: grid;
    align-self: auto;
    padding-top: var(--psgvp-space-3);
  }

  .psgvp-primary-nav .psgvp-nav-switcher .psgvp-button {
    width: 100%;
    margin: 0;
  }

  .psgvp-primary-nav .psgvp-nav-switcher .psgvp-switcher-menu {
    position: static;
    width: 100%;
    margin-top: var(--psgvp-space-2);
    box-shadow: none;
  }

  .psgvp-demo-grid,
  .psgvp-feature-grid,
  .psgvp-feedback-grid,
  .psgvp-service-grid,
  .psgvp-link-directory,
  .psgvp-footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .psgvp-footer-lower .psgvp-shell-container {
    grid-template-columns: 1fr;
    padding-block: var(--psgvp-space-2);
  }
}

@media (max-width: 720px) {
  .psgvp-feature-grid,
  .psgvp-feedback-grid,
  .psgvp-service-grid,
  .psgvp-download-row,
  .psgvp-demo-hero-grid,
  .psgvp-two-column,
  .psgvp-student-hero-grid {
    grid-template-columns: 1fr;
  }

  .psgvp-download-row .psgvp-button {
    width: 100%;
  }
}

@media (max-width: 760px) {
  .psgvp-shell-header.is-compact .psgvp-identity-inner {
    min-height: 62px;
    padding-block: 0.2rem;
  }

  .psgvp-shell-header.is-compact .psgvp-brand-lockup {
    gap: var(--psgvp-space-2);
  }

  .psgvp-shell-header.is-compact .psgvp-logo {
    width: 38px;
  }

  .psgvp-shell-header.is-compact .psgvp-identity-copy strong {
    overflow: visible;
    font-size: 0.7rem;
    line-height: 1.05;
    text-overflow: clip;
    white-space: normal;
  }

  .psgvp-shell-header.is-compact .psgvp-identity-copy strong > span {
    display: block;
    white-space: nowrap;
  }

  .psgvp-shell-header.is-compact .psgvp-institution-prefix {
    font-size: 0.6rem;
    font-weight: 750;
  }

  .psgvp-shell-header.is-compact .psgvp-institution-name-line {
    font-size: 0.7rem;
    font-weight: 800;
  }

  .psgvp-shell-container {
    width: min(100% - 1.25rem, var(--psgvp-container));
  }

  .psgvp-utility-inner {
    align-items: center;
    flex-direction: row;
    gap: var(--psgvp-space-2);
    min-height: 28px;
    padding-block: 0.16rem;
  }

  .psgvp-utility-inner p {
    max-width: 54%;
    overflow: hidden;
    font-size: 0.66rem;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .psgvp-utility-inner nav {
    justify-content: flex-end;
    width: auto;
    min-width: 0;
    flex: 1;
    gap: var(--psgvp-space-2);
    overflow-x: auto;
    padding-bottom: 0.1rem;
    font-size: 0.66rem;
  }

  .psgvp-utility-inner nav a:nth-child(2),
  .psgvp-utility-inner nav a:nth-child(3) {
    display: none;
  }

  .psgvp-identity-inner {
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: var(--psgvp-space-3);
    min-height: 74px;
    padding-block: 0.32rem;
  }

  .psgvp-brand-lockup {
    grid-column: 1 / 2;
  }

  .psgvp-menu-toggle {
    grid-column: 3 / 4;
    grid-row: 1;
  }

  .psgvp-identity-actions {
    display: contents;
  }

  .psgvp-switcher,
  .psgvp-switcher .psgvp-button {
    width: 100%;
  }

  .psgvp-site-search {
    grid-column: 2 / 3;
    grid-row: 1;
  }

  /* Identical padding on both so the pair stays exactly equal in width, kept
     tight so the longer tour label still fits once the webfont has loaded. */
  .psgvp-header-apply-link,
  .psgvp-identity-actions .psgvp-header-tour-link {
    min-height: 36px;
    padding-block: 0.48rem;
    padding-inline: 0.35rem;
    font-size: 0.72rem;
  }

  /* The pair takes one full-width row of its own and splits it evenly, rather
     than inheriting the narrow 44px search/menu tracks. */
  .psgvp-identity-ctas {
    grid-row: 2;
    grid-column: 1 / 4;
    min-width: 0;
  }

  .psgvp-identity-ctas > * {
    flex: 1 1 0;
    min-width: 0;
  }

  /* At 375px the half-row leaves the label 20px short. The compass glyph is
     decorative (aria-hidden) and it plus its gap is worth 23px, so dropping it
     here lets "Explore 360° Virtual Tour" read in full beside Apply Now. */
  .psgvp-identity-actions .psgvp-header-tour-link svg {
    display: none;
  }

  .psgvp-identity-actions .psgvp-header-tour-link span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .psgvp-site-search-trigger {
    width: 44px;
    height: 44px;
    justify-content: center;
    padding: 0;
  }

  .psgvp-site-search-trigger span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .psgvp-site-search-panel {
    position: fixed;
    top: calc(var(--psgvp-header-offset) + 0.5rem);
    right: 0.625rem;
    left: 0.625rem;
    width: auto;
  }

  .psgvp-switcher-menu {
    right: auto;
    left: 0;
    width: 100%;
  }

  .psgvp-brand-lockup {
    gap: var(--psgvp-space-3);
  }

  .psgvp-logo,
  .psgvp-footer-logo {
    --psgvp-logo-size: 48px;
  }

  .psgvp-identity-copy strong {
    max-width: none;
    overflow: visible;
    font-size: clamp(0.76rem, 3.8vw, 0.95rem);
    font-weight: 800;
    line-height: 1.18;
    text-overflow: clip;
    white-space: normal;
  }

  .psgvp-identity-copy strong .psgvp-institution-prefix,
  .psgvp-identity-copy strong .psgvp-institution-name-line {
    display: inline;
    white-space: nowrap;
  }

  .psgvp-identity-copy strong .psgvp-institution-prefix::after {
    content: " ";
  }

  .psgvp-identity-inner {
    grid-template-columns: minmax(0, 1fr) 44px 44px;
  }

  .psgvp-brand-lockup,
  .psgvp-identity-copy,
  .psgvp-identity-copy strong {
    min-width: 0;
    overflow: hidden;
  }

  .psgvp-identity-copy strong {
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .psgvp-site-search,
  .psgvp-menu-toggle {
    justify-self: end;
  }

  .psgvp-identity-copy span {
    font-size: 0.78rem;
  }

  .psgvp-identity-copy em {
    font-size: 0.72rem;
  }

  .psgvp-inline-badges span {
    font-size: 0.62rem;
    padding: 0.2rem 0.32rem;
    white-space: nowrap;
  }

  .psgvp-inline-badges {
    flex-wrap: nowrap;
    max-width: 100%;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .psgvp-inline-badges::-webkit-scrollbar {
    display: none;
  }

  .psgvp-demo-hero,
  .psgvp-student-hero,
  .psgvp-section,
  .psgvp-tour-hero {
    padding-block: var(--psgvp-space-7);
  }

  .psgvp-demo-hero-grid,
  .psgvp-two-column,
  .psgvp-student-hero-grid,
  .psgvp-tour-hero {
    grid-template-columns: 1fr;
    gap: var(--psgvp-space-5);
  }

  .psgvp-demo-grid,
  .psgvp-link-directory,
  .psgvp-footer-grid {
    grid-template-columns: 1fr;
  }

  .psgvp-type-scale div {
    grid-template-columns: 1fr;
    gap: var(--psgvp-space-2);
  }

  .psgvp-action-row,
  .psgvp-button {
    width: 100%;
  }

  .psgvp-footer-grid {
    padding-block: var(--psgvp-space-4);
  }

  .psgvp-footer-links--external {
    grid-template-columns: 1fr;
  }

  .psgvp-footer-links a {
    min-height: 44px;
  }

  .psgvp-tour-visual {
    min-height: 260px;
  }
}

/* Below ~360px the half-row can no longer hold the full label at a legible
   size, so the pair wraps to two full-width rows rather than truncating. */
@media (max-width: 360px) {
  .psgvp-identity-ctas {
    flex-wrap: wrap;
  }

  .psgvp-identity-ctas > * {
    flex-basis: 100%;
  }
}

@media (min-width: 1101px) {
  .psgvp-footer-grid {
    grid-template-columns: minmax(0, 1.45fr) minmax(0, 0.85fr) minmax(0, 1.7fr) minmax(0, 1.1fr);
  }
}

@media (min-width: 721px) and (max-width: 1100px) {
  .psgvp-footer-external-column {
    grid-column: span 2;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
