:root {
  --portal-blue: #064b9b;
  --portal-blue-dark: #06356d;
  --portal-navy: #071f3f;
  --portal-gold: #f4c542;
  --portal-ink: #142238;
  --portal-muted: #5c6a7c;
  --portal-line: #d7e0e9;
  --portal-page: #f5f7fa;
  --portal-surface: #ffffff;
  --portal-success: #087553;
  --portal-danger: #aa2738;
  --portal-shadow: 0 16px 45px rgba(7, 31, 63, .10);
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--portal-ink);
  background: var(--portal-page);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: var(--portal-page); }
body, button, input, select, textarea { font: inherit; }
a { color: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
img { max-width: 100%; }
.public-container { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: fixed; z-index: 100; top: 8px; left: 8px; padding: 10px 14px; color: #fff; background: #000; transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }

.site-header { position: relative; z-index: 30; color: #fff; background: var(--portal-navy); box-shadow: 0 8px 24px rgba(4, 20, 42, .16); }
.site-header-main { display: flex; min-height: 92px; align-items: center; gap: 24px; }
.site-logo { display: flex; align-items: center; gap: 13px; color: #fff; text-decoration: none; }
.site-logo img { width: 68px; height: 68px; object-fit: cover; border: 2px solid rgba(255,255,255,.22); border-radius: 13px; }
.site-logo strong, .site-logo small { display: block; }
.site-logo strong { font-size: 20px; letter-spacing: -.02em; }
.site-logo small { margin-top: 4px; color: #b9c8dc; font-size: 13px; }
.site-tools { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.site-tools button, .site-tools a { display: inline-flex; min-height: 42px; align-items: center; justify-content: center; padding: 0 14px; border: 1px solid rgba(255,255,255,.25); border-radius: 7px; color: #fff; background: transparent; font-size: 14px; font-weight: 700; text-decoration: none; cursor: pointer; }
.site-tools button { width: 45px; padding: 0; }
.site-tools button:hover, .site-tools a:hover { border-color: #fff; background: rgba(255,255,255,.09); }
.public-menu-button { display: none; margin-left: auto; padding: 9px 13px; border: 1px solid rgba(255,255,255,.28); border-radius: 7px; color: #fff; background: transparent; font-weight: 800; }
.site-nav { border-top: 1px solid rgba(255,255,255,.10); background: #092b56; }
.site-nav .public-container { display: flex; align-items: stretch; overflow-x: auto; scrollbar-width: thin; }
.site-nav a { display: flex; min-height: 52px; flex: 0 0 auto; align-items: center; padding: 0 10px; border-bottom: 3px solid transparent; color: #d5deeb; font-size: 13px; font-weight: 700; text-decoration: none; }
.site-nav a:hover, .site-nav a.is-active { color: #fff; border-bottom-color: var(--portal-gold); background: rgba(255,255,255,.05); }

.public-notice-wrap { padding-top: 20px; }
.public-notice { padding: 14px 17px; border: 1px solid; border-radius: 8px; font-weight: 750; }
.public-notice.is-success { color: #075c43; border-color: #8bc7b4; background: #ecf8f4; }
.public-notice.is-error { color: #842030; border-color: #e2a9b2; background: #fff0f2; }

.portal-hero { position: relative; overflow: hidden; color: #fff; background: var(--portal-blue-dark); }
.portal-hero::after { position: absolute; top: -130px; right: -130px; width: 480px; height: 480px; border: 90px solid rgba(244,197,66,.16); border-radius: 50%; content: ""; }
.hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, .6fr); align-items: center; gap: 70px; min-height: 570px; padding-block: 76px; }
.hero-grid.is-single { grid-template-columns: 1fr; min-height: 500px; }
.hero-copy { max-width: 770px; }
.portal-kicker { display: block; color: #1970ce; font-size: 13px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.portal-hero .portal-kicker, .athlete-band .portal-kicker { color: var(--portal-gold); }
.hero-copy h1 { max-width: 740px; margin: 15px 0 20px; font-size: clamp(48px, 7vw, 82px); line-height: .99; letter-spacing: -.055em; }
.hero-copy > p { max-width: 670px; margin: 0; color: #d6e1ee; font-size: 20px; line-height: 1.55; }
.hero-search { display: flex; max-width: 700px; margin-top: 32px; padding: 6px; border-radius: 9px; background: #fff; box-shadow: 0 15px 40px rgba(0,0,0,.18); }
.hero-search label { min-width: 0; flex: 1; }
.hero-search input { width: 100%; min-height: 54px; padding: 0 18px; border: 0; color: var(--portal-ink); background: #fff; outline: none; }
.hero-search button { min-width: 160px; border: 0; border-radius: 7px; color: #102039; background: var(--portal-gold); font-weight: 900; cursor: pointer; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.hero-card { padding: 32px; border: 1px solid rgba(255,255,255,.22); background: rgba(5,29,61,.65); }
.hero-card span, .hero-card strong, .hero-card p, .hero-card a { display: block; }
.hero-card span { color: #c7d5e5; font-weight: 800; }
.hero-card strong { margin: 18px 0 3px; color: var(--portal-gold); font-size: 68px; line-height: 1; }
.hero-card p { margin: 0 0 28px; color: #d7e2ef; line-height: 1.45; }
.hero-card a { color: #fff; font-weight: 800; }

.portal-button { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; padding: 0 18px; border: 2px solid transparent; border-radius: 7px; font-size: 15px; font-weight: 850; text-align: center; text-decoration: none; cursor: pointer; }
.portal-button.is-gold { color: #17233a; background: var(--portal-gold); }
.portal-button.is-ghost { color: #fff; border-color: rgba(255,255,255,.45); }
.portal-button.is-blue { color: #fff; background: var(--portal-blue); }
.portal-button.is-outline { color: var(--portal-blue); border-color: var(--portal-blue); background: #fff; }
.portal-button.is-full { width: 100%; }
.portal-button:hover { filter: brightness(.95); }

.stat-strip { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(4, 1fr); margin-top: -38px; border: 1px solid var(--portal-line); background: #fff; box-shadow: var(--portal-shadow); }
.stat-strip article { padding: 25px 28px; border-right: 1px solid var(--portal-line); }
.stat-strip article:last-child { border: 0; }
.stat-strip strong, .stat-strip span { display: block; }
.stat-strip strong { color: var(--portal-blue); font-size: 38px; line-height: 1; }
.stat-strip span { margin-top: 7px; color: var(--portal-muted); font-size: 14px; }

.public-section { padding-block: 72px; }
.section-tint { background: #eaf0f6; }
.portal-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 28px; }
.portal-heading h2 { margin: 8px 0 0; font-size: clamp(30px, 4vw, 47px); line-height: 1.1; letter-spacing: -.04em; }
.portal-heading > a { color: var(--portal-blue); font-size: 15px; font-weight: 850; text-decoration: none; }
.portal-heading.is-light h2, .portal-heading.is-light > a { color: #fff; }

.today-schedule { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.today-schedule article { display: grid; grid-template-columns: 78px minmax(0, 1fr) auto; align-items: center; gap: 20px; min-height: 128px; padding: 20px; border: 1px solid var(--portal-line); background: #fff; }
.today-schedule time { color: var(--portal-blue); font-size: 28px; font-weight: 900; }
.today-schedule article span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.today-schedule h3 { margin: 5px 0 7px; font-size: 19px; }
.today-schedule p { margin: 0; color: var(--portal-muted); font-size: 14px; }
.today-schedule article > a { color: var(--portal-blue); font-size: 14px; font-weight: 850; }

.portal-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.sport-card { display: grid; grid-template-columns: 58px 1fr; gap: 16px; padding: 24px; border: 1px solid #cdd9e5; background: #fff; box-shadow: 0 7px 20px rgba(7,31,63,.05); }
.sport-card-icon { display: grid; width: 58px; height: 58px; place-items: center; color: #fff; background: var(--portal-blue); font-size: 24px; font-weight: 900; }
.sport-card div > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.sport-card h3 { margin: 6px 0; font-size: 20px; }
.sport-card p, .sport-card small { margin: 0; color: var(--portal-muted); }
.sport-card small { display: block; margin-top: 5px; }
.sport-card > a { grid-column: 1/-1; padding-top: 14px; border-top: 1px solid var(--portal-line); color: var(--portal-blue); font-weight: 850; text-decoration: none; }
.public-session-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-bottom: 56px; }
.public-session-grid article { display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 21px; border: 1px solid #cdd9e5; background: #fff; }
.public-session-grid time { display: grid; width: 76px; height: 78px; place-content: center; color: #fff; background: var(--portal-blue); text-align: center; }
.public-session-grid time b, .public-session-grid time span { display: block; }
.public-session-grid time b { font-size: 30px; line-height: 1; }
.public-session-grid time span { margin-top: 4px; font-size: 12px; }
.public-session-grid div > span { color: var(--portal-blue); font-size: 11px; font-weight: 850; text-transform: uppercase; }
.public-session-grid h3 { margin: 5px 0; font-size: 19px; }
.public-session-grid p { margin: 0 0 5px; color: var(--portal-muted); font-size: 13px; }
.public-session-grid .session-address { color: var(--portal-ink); font-weight: 750; }
.public-session-grid small { color: #33465f; font-weight: 750; }
.public-session-grid em { display: block; margin-top: 8px; color: var(--portal-muted); font-size: 12px; font-style: normal; line-height: 1.45; }
.public-session-grid article > a:not(.portal-button) { color: var(--portal-blue); font-size: 13px; font-weight: 850; }
.public-session-grid.is-list { grid-template-columns: 1fr; }
.trainings-catalog-heading { margin-top: 58px; }

.event-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.event-card { display: grid; grid-template-columns: 92px 1fr; gap: 20px; padding: 23px; border: 1px solid var(--portal-line); background: #fff; }
.event-card time { display: grid; width: 92px; height: 92px; place-content: center; color: #fff; background: var(--portal-blue); text-align: center; }
.event-card.is-weekend time { color: #18243a; background: var(--portal-gold); }
.event-card time b { font-size: 34px; line-height: 1; }
.event-card time span { margin-top: 4px; font-size: 13px; }
.event-card div > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.event-card h3 { margin: 7px 0; font-size: 21px; }
.event-card p { margin: 0 0 13px; color: var(--portal-muted); }
.event-card a { color: var(--portal-blue); font-weight: 850; text-decoration: none; }

.athlete-band { color: #fff; background: var(--portal-navy); }
.athlete-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.athlete-grid.is-large { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.athlete-grid article { display: flex; min-width: 0; align-items: center; gap: 14px; padding: 20px; border: 1px solid rgba(255,255,255,.18); background: #0d2b53; }
.athlete-photo { width: 72px; height: 72px; flex: 0 0 auto; object-fit: cover; object-position: center; }
.athlete-avatar, .person-avatar { display: grid; width: 58px; height: 58px; flex: 0 0 auto; place-items: center; color: #17233a; background: var(--portal-gold); font-size: 23px; font-weight: 900; }
.athlete-grid h3 { margin: 0 0 5px; font-size: 18px; }
.athlete-grid p { margin: 0 0 8px; color: #b9c9db; font-size: 13px; }
.athlete-grid strong { color: var(--portal-gold); font-size: 13px; }
.athlete-grid small { display: block; margin: 8px 0; color: #ced9e6; line-height: 1.45; }
.medal-row { display: flex; gap: 12px; margin-top: 10px; }
.medal-row b { color: #fff; font-size: 13px; }

.callout-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.callout-grid article { padding: 38px; border: 1px solid var(--portal-line); background: #fff; }
.callout-grid article > span { color: var(--portal-blue); font-weight: 900; }
.callout-grid h2 { margin: 12px 0 10px; font-size: 30px; letter-spacing: -.03em; }
.callout-grid p { margin: 0 0 24px; color: var(--portal-muted); font-size: 16px; line-height: 1.55; }

.resident-hero { position: relative; overflow: hidden; background: #eaf1f7; }
.resident-hero-shell { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(310px, .72fr); align-items: stretch; gap: 14px; padding-block: 28px; }
.resident-hero-main { position: relative; display: flex; min-height: 590px; overflow: hidden; flex-direction: column; justify-content: center; padding: clamp(44px, 6vw, 76px); border-radius: 26px; color: #fff; background: linear-gradient(145deg, #061f41 0%, #063d7c 58%, #0860b3 100%); box-shadow: 0 22px 55px rgba(7,31,63,.18); }
.resident-hero-main::after { position: absolute; right: -150px; bottom: -180px; width: 420px; height: 420px; border: 72px solid rgba(244,197,66,.14); border-radius: 50%; content: ""; }
.resident-hero-main > * { position: relative; z-index: 1; }
.resident-hero-label { display: inline-flex; width: max-content; align-items: center; gap: 8px; padding: 8px 11px; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; color: #c9daec; background: rgba(255,255,255,.07); font-size: 11px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.resident-hero-label b { color: var(--portal-gold); }
.resident-hero .resident-hero-title { max-width: none; margin: 26px 0 24px; font-size: clamp(54px, 5.8vw, 78px); line-height: .9; letter-spacing: -.055em; }
.resident-hero-title span { display: block; white-space: nowrap; }
.resident-hero-title .resident-hero-accent { margin-top: 12px; color: var(--portal-gold); }
.resident-hero .resident-hero-lead { max-width: 600px; margin: 0; color: #dce8f5; font-size: 18px; line-height: 1.55; }
.resident-hero .hero-search { width: min(100%, 640px); margin: 34px 0 0; text-align: left; }
.resident-hero-link { display: inline-flex; width: max-content; align-items: center; gap: 9px; margin-top: 24px; color: #fff; font-size: 13px; font-weight: 850; text-decoration: none; }
.resident-hero-link span { color: var(--portal-gold); }
.resident-hero-shortcuts { display: flex; min-width: 0; flex-direction: column; gap: 9px; padding: 22px; border: 1px solid #d3dee8; border-radius: 26px; background: #fff; box-shadow: 0 18px 45px rgba(7,31,63,.09); }
.resident-shortcuts-heading { padding: 8px 6px 20px; }
.resident-shortcuts-heading span, .resident-shortcuts-heading strong { display: block; }
.resident-shortcuts-heading span { color: var(--portal-blue); font-size: 10px; font-weight: 900; letter-spacing: .13em; text-transform: uppercase; }
.resident-shortcuts-heading strong { margin-top: 7px; font-size: 28px; letter-spacing: -.04em; }
.resident-hero-shortcuts > a:not(.resident-shortcut-all) { display: grid; grid-template-columns: 42px minmax(0,1fr) 24px; align-items: center; gap: 12px; min-height: 102px; padding: 16px; border: 1px solid #d8e1ea; border-radius: 15px; color: var(--portal-ink); background: #f8fafc; text-decoration: none; transition: transform .18s ease, border-color .18s ease, background .18s ease; }
.resident-hero-shortcuts > a:not(.resident-shortcut-all):hover { border-color: #89b7e4; background: #fff; transform: translateY(-2px); }
.resident-hero-shortcuts > a > span:first-child { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 11px; color: #fff; background: var(--portal-blue); font-size: 11px; font-weight: 900; }
.resident-hero-shortcuts > a div strong, .resident-hero-shortcuts > a div small { display: block; }
.resident-hero-shortcuts > a div strong { font-size: 17px; }
.resident-hero-shortcuts > a div small { margin-top: 5px; color: var(--portal-muted); font-size: 11px; line-height: 1.35; }
.resident-hero-shortcuts > a > b { color: var(--portal-blue); font-size: 22px; }
.resident-shortcut-all { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: auto; padding: 15px 7px 5px; color: var(--portal-blue); font-size: 13px; font-weight: 900; text-decoration: none; }
.resident-shortcut-all span { display: block !important; width: auto !important; height: auto !important; color: inherit !important; background: transparent !important; font-size: inherit !important; }
.resident-hero-link:hover { color: var(--portal-gold); }
.resident-hub-section { background: #edf2f7; }
.resident-hub-intro { display: flex; align-items: end; justify-content: space-between; gap: 35px; margin-bottom: 28px; }
.resident-hub-intro h2 { margin: 8px 0 0; font-size: clamp(34px, 4vw, 52px); line-height: 1.03; letter-spacing: -.045em; }
.resident-hub-intro > p { max-width: 430px; margin: 0; color: var(--portal-muted); font-size: 16px; line-height: 1.55; }
.resident-hub-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.resident-hub-card { --hub-accent: var(--portal-blue); min-width: 0; overflow: hidden; border: 1px solid #cbd7e3; border-top: 5px solid var(--hub-accent); border-radius: 14px; background: #fff; box-shadow: 0 12px 32px rgba(7,31,63,.06); }
.resident-hub-card.is-wide { grid-column: 1/-1; }
.resident-hub-card.is-news { --hub-accent: #0b66b3; }
.resident-hub-card.is-weekends { --hub-accent: #d79a00; }
.resident-hub-card.is-gto { --hub-accent: #b63838; }
.resident-hub-card.is-courtyard { --hub-accent: #3b7d35; }
.resident-hub-card.is-training { --hub-accent: #0d8062; }
.resident-hub-card.is-people { --hub-accent: #6d4bb6; }
.resident-hub-card.is-events { --hub-accent: #b33d4e; }
.resident-hub-card.is-facilities { --hub-accent: #28787e; }
.resident-hub-card.is-about { --hub-accent: #324b70; }
.resident-hub-card.is-league { --hub-accent: #e9b51a; color: #fff; border-color: #123d73; background: linear-gradient(145deg,#071f40,#0a4f9d); }
.resident-hub-direct { display: grid; grid-template-columns: 58px minmax(0,1fr) 64px; align-items: start; gap: 18px; min-height: 190px; padding: 27px; text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.resident-hub-direct:hover { transform: translateY(-3px); box-shadow: 0 18px 38px rgba(7,31,63,.18); }
.resident-hub-direct .hub-label { color: #ffd84d; }.resident-hub-direct h2 { margin: 8px 0 9px; font-size: clamp(25px,3vw,34px); line-height: 1.08; letter-spacing: -.035em; }.resident-hub-direct p { max-width: 520px; margin: 0; color: #d0e2f4; font-size: 14px; line-height: 1.55; }.hub-direct-action { display: block; margin-top: 18px; color: #ffd84d; font-size: 13px; }.hub-direct-icon { display: grid; width: 58px; height: 58px; place-items: center; border: 1px solid rgba(255,255,255,.2); border-radius: 18px; background: rgba(255,255,255,.08); font-size: 28px; }
.resident-hub-card summary { display: grid; grid-template-columns: 58px minmax(0, 1fr) 42px; align-items: start; gap: 18px; min-height: 190px; padding: 27px; list-style: none; cursor: pointer; }
.resident-hub-card summary::-webkit-details-marker { display: none; }
.resident-hub-card summary:hover { background: #f8fafc; }
.resident-hub-card summary:focus-visible { outline: 3px solid color-mix(in srgb, var(--hub-accent) 32%, transparent); outline-offset: -3px; }
.hub-number { display: grid; width: 58px; height: 58px; place-items: center; border-radius: 12px; color: #fff; background: var(--hub-accent); font-size: 17px; font-weight: 900; }
.hub-label { color: var(--hub-accent); font-size: 11px; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.resident-hub-card summary h2 { margin: 8px 0 9px; font-size: clamp(25px, 3vw, 34px); line-height: 1.08; letter-spacing: -.035em; }
.resident-hub-card summary p { max-width: 520px; margin: 0; color: var(--portal-muted); font-size: 14px; line-height: 1.55; }
.hub-toggle { display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid #b8c7d5; border-radius: 50%; color: var(--hub-accent); font-size: 27px; line-height: 1; transition: transform .18s ease, color .18s ease, background .18s ease; }
.resident-hub-card[open] { box-shadow: 0 18px 44px rgba(7,31,63,.11); }
.resident-hub-card[open] summary { background: color-mix(in srgb, var(--hub-accent) 7%, #fff); }
.resident-hub-card[open] .hub-toggle { color: #fff; background: var(--hub-accent); transform: rotate(45deg); }
.hub-card-body { padding: 22px 27px 27px; border-top: 1px solid var(--portal-line); background: #fbfcfe; }
.hub-action-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 9px; }
.hub-action-row.is-scrollable { display: flex; overflow-x: auto; padding: 2px 2px 9px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.hub-action { display: flex; min-height: 76px; min-width: 0; flex-direction: column; justify-content: center; gap: 5px; padding: 13px 15px; border: 1px solid #c9d5e1; border-radius: 9px; color: var(--portal-ink); background: #fff; text-decoration: none; transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease; }
.hub-action-row.is-scrollable .hub-action { width: 210px; flex: 0 0 210px; scroll-snap-align: start; }
.hub-action:hover { border-color: var(--hub-accent); box-shadow: 0 8px 18px rgba(7,31,63,.08); transform: translateY(-1px); }
.hub-action:focus-visible { outline: 3px solid color-mix(in srgb, var(--hub-accent) 28%, transparent); outline-offset: 2px; }
.hub-action strong { overflow: hidden; font-size: 14px; line-height: 1.3; text-overflow: ellipsis; }
.hub-action small { overflow: hidden; color: var(--portal-muted); font-size: 11px; line-height: 1.35; text-overflow: ellipsis; }
.hub-action.is-primary { color: #fff; border-color: var(--hub-accent); background: var(--hub-accent); }
.hub-action.is-primary small { color: rgba(255,255,255,.78); }
.sport-quick-action { position: relative; padding-left: 55px; }
.hub-sport-letter { position: absolute; left: 13px; display: grid; width: 31px; height: 31px; place-items: center; border-radius: 8px; color: #fff; background: var(--hub-accent); font-size: 13px; font-weight: 900; }
.hub-body-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.hub-body-heading.is-secondary { margin-top: 22px; }
.hub-body-heading strong { font-size: 17px; }
.hub-body-heading span { color: var(--portal-muted); font-size: 12px; }
.hub-all-link { display: inline-flex; margin-top: 15px; color: var(--hub-accent); font-size: 14px; font-weight: 900; text-decoration: none; }
.hub-empty { display: flex; min-height: 76px; align-items: center; padding: 14px; border: 1px dashed #b9c7d5; border-radius: 9px; color: var(--portal-muted); background: #fff; font-size: 13px; line-height: 1.45; }

.page-hero { padding: 64px 0 58px; color: #fff; background: var(--portal-blue-dark); }
.page-hero.is-small { padding-block: 44px; }
.page-hero h1 { margin: 10px 0 12px; font-size: clamp(42px, 6vw, 70px); line-height: 1; letter-spacing: -.05em; }
.page-hero p { max-width: 820px; margin: 0; color: #d5e1ee; font-size: 18px; line-height: 1.55; }
.back-link { display: inline-block; margin-bottom: 24px; color: #fff; font-weight: 800; }

.filter-panel { display: grid; grid-template-columns: 1.4fr 1fr 1fr auto; align-items: end; gap: 12px; padding: 18px; border: 1px solid var(--portal-line); background: #fff; }
.filter-panel.is-compact { grid-template-columns: minmax(240px, 1fr) minmax(180px, .4fr) auto; }
.filter-panel label { display: grid; gap: 7px; color: #394960; font-size: 13px; font-weight: 800; }
.filter-panel input, .filter-panel select, .public-form-grid input, .public-form-grid textarea, .weekend-form input { width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid #aebdcd; border-radius: 5px; color: var(--portal-ink); background: #fff; outline: none; }
.filter-panel input:focus, .filter-panel select:focus, .public-form-grid input:focus, .public-form-grid textarea:focus, .weekend-form input:focus { border-color: var(--portal-blue); box-shadow: 0 0 0 3px rgba(6,75,155,.14); }
.filter-panel button { min-height: 46px; padding: 0 15px; border: 1px solid var(--portal-blue); border-radius: 5px; color: var(--portal-blue); background: #fff; font-weight: 800; cursor: pointer; }
.results-line { display: flex; justify-content: space-between; gap: 20px; padding: 20px 2px 14px; color: var(--portal-muted); font-size: 14px; }
.results-line strong { color: var(--portal-ink); }

.training-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.sport-index-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 20px; }
.sport-index-card { display: grid; grid-template-columns: 58px 1fr; gap: 16px; min-height: 178px; padding: 23px; border: 1px solid var(--portal-line); color: var(--portal-ink); background: #fff; box-shadow: 0 8px 24px rgba(7,31,63,.05); text-decoration: none; transition: transform .16s ease, border-color .16s ease; }
.sport-index-card:hover { transform: translateY(-2px); border-color: #81a7d0; }
.sport-index-letter { display: grid; width: 58px; height: 58px; place-items: center; color: #fff; background: var(--portal-blue); font-size: 24px; font-weight: 900; }
.sport-index-card small { color: var(--portal-blue); font-size: 11px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.sport-index-card h2 { margin: 6px 0 9px; font-size: 23px; }.sport-index-card p { margin: 0; color: var(--portal-muted); font-size: 13px; line-height: 1.45; }
.sport-index-card > strong { grid-column: 1/-1; align-self: end; padding-top: 13px; border-top: 1px solid var(--portal-line); color: var(--portal-blue); font-size: 13px; }
.schedule-breadcrumb { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; padding-bottom: 15px; border-bottom: 1px solid var(--portal-line); color: var(--portal-muted); font-size: 13px; }
.schedule-breadcrumb a { color: var(--portal-blue); font-weight: 850; text-decoration: none; }.schedule-subheading { margin-top: 44px; }
.sport-schedule-column { display: grid; gap: 14px; }
.sport-schedule-column .training-card { display: grid; grid-template-columns: minmax(240px, .9fr) minmax(320px, 1.15fr) minmax(190px, .55fr); align-items: start; gap: 24px; }
.sport-schedule-column .address-schedule-card { display: block; padding: 0; overflow: hidden; }
.address-schedule-head, .address-schedule-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 24px; }
.address-schedule-head { border-bottom: 1px solid var(--portal-line); background: #f8fafc; }
.address-schedule-head h2 { margin: 10px 0 6px !important; font-size: 24px; }
.address-schedule-head p { margin: 0; color: var(--portal-muted); }
.weekly-schedule { display: grid; grid-template-columns: repeat(7, minmax(130px, 1fr)); overflow-x: auto; border-bottom: 1px solid var(--portal-line); }
.weekly-day { min-width: 130px; border-right: 1px solid var(--portal-line); }
.weekly-day:last-child { border-right: 0; }
.weekly-day > strong { display: block; padding: 12px; color: #fff; background: var(--portal-blue-dark); font-size: 12px; text-align: center; }
.weekly-day > div { display: grid; gap: 8px; padding: 10px; }
.weekly-day article { display: grid; gap: 4px; padding: 10px; border: 1px solid #cad7e4; background: #fff; }
.weekly-day article b { color: var(--portal-blue); font-size: 14px; }
.weekly-day article span { color: var(--portal-ink); font-size: 12px; font-weight: 800; }
.weekly-day article small { color: var(--portal-muted); font-size: 11px; line-height: 1.35; }
.weekly-day article a { margin-top: 4px; color: var(--portal-blue); font-size: 11px; font-weight: 850; text-decoration: none; }
.day-empty { display: block; padding: 14px 5px; color: #8290a0; font-size: 12px; text-align: center; }
.address-schedule-footer span, .address-schedule-footer strong { display: block; }
.address-schedule-footer span { color: var(--portal-muted); font-size: 11px; font-weight: 850; text-transform: uppercase; }
.address-schedule-footer strong { margin-top: 5px; font-size: 14px; }
.sport-schedule-column .training-card h2 { margin: 15px 0 10px; }
.training-card-schedule { min-width: 0; }.schedule-label { color: var(--portal-blue); font-size: 11px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.training-card-action { display: grid; gap: 11px; align-self: center; }.training-card-action small { color: var(--portal-muted); font-size: 12px; line-height: 1.45; text-align: center; }
.sport-directory { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 18px; }
.sport-directory-column { min-width: 0; overflow: hidden; border: 1px solid #c8d5e2; background: #fff; box-shadow: 0 10px 30px rgba(7,31,63,.06); }
.sport-directory-column > header { display: flex; align-items: center; gap: 16px; padding: 22px 24px; color: #fff; background: var(--portal-blue-dark); }
.sport-directory-column > header > span { color: var(--portal-gold); font-size: 28px; font-weight: 900; }
.sport-directory-column > header p { margin: 0 0 4px; color: #b9cbe0; font-size: 11px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.sport-directory-column > header h2 { margin: 0; font-size: 25px; letter-spacing: -.025em; }
.sport-options { display: grid; gap: 1px; background: var(--portal-line); }
.sport-directory .training-card { border: 0; box-shadow: none; }
.training-card { display: flex; min-width: 0; flex-direction: column; padding: 23px; border: 1px solid var(--portal-line); background: #fff; box-shadow: 0 8px 24px rgba(7,31,63,.05); }
.training-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.sport-chip, .level-chip, .availability, .age-chip { display: inline-flex; align-items: center; padding: 6px 8px; border-radius: 5px; color: #08427f; background: #e7f1fc; font-size: 12px; font-weight: 850; }
.age-chip { color: #5d3d00; background: #fff0bf; }
.level-chip { color: #6b4b02; background: #fff4cf; }
.availability { color: #086044; background: #e5f5ef; }
.training-card h2 { margin: 18px 0 13px; font-size: 23px; letter-spacing: -.025em; }
.training-meta { margin: 5px 0; color: var(--portal-muted); font-size: 14px; line-height: 1.45; }
.training-meta b { color: var(--portal-ink); }
.training-address { display: grid; gap: 5px; margin-top: 15px; padding: 14px; border-left: 3px solid var(--portal-gold); background: #f5f8fb; }
.training-address span { color: var(--portal-muted); font-size: 11px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.training-address strong { color: var(--portal-ink); font-size: 14px; line-height: 1.4; }
.schedule-list { display: grid; gap: 7px; margin: 17px 0; }
.schedule-list > div { display: grid; grid-template-columns: minmax(110px, 1fr) auto; gap: 4px 12px; padding: 10px 11px; border: 1px solid #cad7e4; background: #f8fafc; }
.schedule-list b { font-size: 13px; }
.schedule-list span { color: var(--portal-blue); font-size: 13px; font-weight: 850; }
.schedule-list small { grid-column: 1/-1; color: var(--portal-muted); font-size: 12px; }
.schedule-list > p { margin: 0; padding: 12px; color: var(--portal-muted); background: #f8fafc; font-size: 13px; }
.schedule-pills { display: flex; flex-wrap: wrap; gap: 7px; margin: 18px 0; }
.schedule-pills span { display: inline-flex; flex-wrap: wrap; gap: 5px; align-items: center; padding: 7px 9px; border: 1px solid #cad7e4; border-radius: 5px; color: #405168; background: #f8fafc; font-size: 12px; }
.schedule-pills small { width: 100%; color: var(--portal-muted); }
.schedule-pills.is-stacked { display: grid; }
.schedule-pills.is-stacked span { display: block; }
.schedule-pills .is-muted { color: var(--portal-muted); }
.training-card .portal-button { margin-top: auto; }

.competition-list { display: grid; gap: 13px; margin-top: 18px; }
.competition-list > article { display: grid; grid-template-columns: 94px minmax(0, 1fr) 190px; align-items: center; gap: 24px; padding: 22px; border: 1px solid var(--portal-line); background: #fff; }
.competition-list > article.public-event-card { grid-template-columns: 180px minmax(0, 1fr) 210px; align-items: start; }
.public-event-visual img { display: block; width: 180px; height: 230px; object-fit: cover; border: 1px solid var(--portal-line); background: #eef2f6; }
.public-event-visual time { display: grid; width: 180px; height: 180px; place-content: center; color: #fff; background: var(--portal-blue); text-align: center; }
.event-place { font-weight: 750; }.competition-copy .event-description { margin-top: 12px; color: var(--portal-ink); line-height: 1.55; }
.public-event-facts { display: grid; gap: 8px; margin: 16px 0; }
.public-event-facts div { padding: 10px 12px; border-left: 3px solid var(--portal-gold); background: #f6f8fb; }
.public-event-facts dt { color: var(--portal-muted); font-size: 11px; font-weight: 850; text-transform: uppercase; }
.public-event-facts dd { margin: 4px 0 0; white-space: pre-line; font-size: 13px; line-height: 1.45; }
.competition-list time { display: grid; width: 94px; height: 94px; place-content: center; color: #fff; background: var(--portal-blue); text-align: center; }
.competition-list time b { font-size: 36px; line-height: 1; }
.competition-list time span { margin-top: 4px; }
.competition-copy > div { display: flex; flex-wrap: wrap; gap: 7px; }
.competition-copy h2 { margin: 10px 0 7px; font-size: 24px; }
.competition-copy p { margin: 0; color: var(--portal-muted); }
.competition-action { display: grid; gap: 12px; text-align: center; }
.competition-action > span { color: var(--portal-success); font-size: 13px; font-weight: 850; }
.competition-action > span.is-neutral { color: var(--portal-muted); }

.news-feature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.news-card { overflow: hidden; border: 1px solid #bfd0e2; border-radius: 14px; background: #eaf2fa; box-shadow: 0 4px 16px rgba(7, 31, 63, .07); }
.news-card img { display: block; width: 100%; height: auto; max-height: 760px; object-fit: contain; background: #dfe9f3; }
.news-placeholder { display: block; width: 100%; height: 270px; background: #dfe9f3; }
.news-placeholder { display: grid; place-content: center; color: var(--portal-blue); text-align: center; }
.news-placeholder span { font-size: 62px; font-weight: 900; }
.news-placeholder.is-editorial { align-content: center; padding: 25px; color: #fff; background: linear-gradient(135deg, var(--portal-navy), var(--portal-blue)); }.news-placeholder.is-editorial small { color: var(--portal-gold); font-size: 14px; font-weight: 900; letter-spacing: .2em; }.news-placeholder.is-editorial span { margin-top: 8px; font-size: 31px; letter-spacing: -.04em; }
.news-card > div:last-child { padding: 24px; }
.news-card time { display: block; margin-top: 14px; color: var(--portal-muted); font-size: 13px; }
.news-card h2 { margin: 8px 0; font-size: 27px; }
.news-card p { color: var(--portal-muted); line-height: 1.55; }
.news-card a { color: var(--portal-blue); font-weight: 850; text-decoration: none; }
.news-list { display: grid; gap: 1px; border: 1px solid var(--portal-line); background: var(--portal-line); }
.news-list article { display: grid; grid-template-columns: 170px 1fr; gap: 25px; padding: 22px; background: #fff; }
.news-list time { color: var(--portal-muted); font-size: 14px; }
.news-list span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.news-list h3 { margin: 6px 0; font-size: 21px; }
.news-list p { margin: 0; color: var(--portal-muted); }
.news-detail-hero { padding: 58px 0 52px; color: #fff; background: var(--portal-blue); }.news-detail-heading { max-width: 900px; }.news-detail-heading > a { display: inline-block; margin-bottom: 34px; color: #d8e7f8; font-size: 14px; font-weight: 800; text-decoration: none; }.news-detail-heading .portal-kicker { color: var(--portal-gold); }.news-detail-heading time { display: block; margin-top: 13px; color: #cbdced; font-size: 14px; }.news-detail-heading h1 { max-width: 850px; margin: 10px 0 18px; font-size: clamp(38px, 7vw, 72px); letter-spacing: -.055em; line-height: .98; }.news-detail-heading p { max-width: 760px; margin: 0; color: #d8e7f8; font-size: 20px; line-height: 1.5; }.news-detail { max-width: 900px; padding-block: 42px 70px; }.news-detail-photo { display: block; width: 100%; max-height: 620px; margin-bottom: 36px; object-fit: cover; border: 1px solid var(--portal-line); }.news-detail-body { color: var(--portal-ink); font-size: 18px; line-height: 1.75; white-space: pre-line; }.news-detail-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 36px; padding-top: 26px; border-top: 1px solid var(--portal-line); }.news-detail-links a { padding: 13px 17px; color: #fff; background: var(--portal-blue); font-weight: 850; text-decoration: none; }

.people-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin-top: 20px; }
.people-grid article { display: flex; align-items: center; gap: 15px; padding: 20px; border: 1px solid var(--portal-line); background: #fff; }
.person-avatar { color: #fff; background: var(--portal-blue); }
.people-grid span:not(.person-avatar) { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.people-grid h3 { margin: 5px 0; font-size: 19px; }
.people-grid p { margin: 0; color: var(--portal-muted); font-size: 14px; }
.coach-public-details { display: grid; gap: 6px; margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--portal-line); }
.coach-public-details b { color: var(--portal-blue); font-size: 13px; }
.coach-public-details small { color: var(--portal-muted); font-size: 12px; line-height: 1.45; }
.public-people-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-top: 22px; }
.public-people-grid > article { display: grid; grid-template-columns: 210px minmax(0, 1fr); min-height: 310px; overflow: hidden; border: 1px solid var(--portal-line); background: #fff; box-shadow: 0 9px 28px rgba(7,31,63,.06); }
.public-people-grid > article > img, .public-person-placeholder { width: 100%; height: 100%; min-height: 310px; object-fit: cover; object-position: center; }
.public-person-placeholder { display: grid; place-items: center; color: #fff; background: var(--portal-blue); font-size: 72px; font-weight: 900; }
.public-person-copy { padding: 25px; }
.public-person-copy > span { color: var(--portal-blue); font-size: 11px; font-weight: 900; text-transform: uppercase; }
.public-person-copy h2 { margin: 8px 0; font-size: 25px; }
.public-person-copy p { color: var(--portal-muted); line-height: 1.55; }
.public-person-copy .public-person-meta { color: var(--portal-ink); font-weight: 750; }
.public-person-copy blockquote { margin: 18px 0 0; padding: 14px; border-left: 3px solid var(--portal-gold); color: #35465d; background: #f7f9fc; font-size: 13px; line-height: 1.5; }
.public-person-copy blockquote strong { display: block; margin-bottom: 5px; color: var(--portal-blue); }

.facility-grid { display: grid; gap: 15px; margin-top: 20px; }
.facility-grid article { display: grid; grid-template-columns: 74px minmax(0, 1fr) auto; align-items: start; gap: 24px; padding: 27px; border: 1px solid var(--portal-line); background: #fff; }
.facility-number { color: #afbdcc; font-size: 32px; font-weight: 900; }
.facility-grid article > div:nth-child(2) > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.facility-grid h2 { margin: 7px 0 8px; font-size: 26px; }
.facility-address { margin: 0 0 13px; color: var(--portal-muted); }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.tag-list span { padding: 5px 7px; border: 1px solid #cbd8e5; color: #3e5067; background: #f8fafc; font-size: 12px; }
.facility-grid dl { display: flex; flex-wrap: wrap; gap: 12px 30px; margin: 18px 0 0; }
.facility-grid dl div { display: grid; gap: 4px; }
.facility-grid dt { color: var(--portal-muted); font-size: 12px; }
.facility-grid dd { margin: 0; font-weight: 750; }
.map-button { display: inline-flex; min-height: 44px; align-items: center; padding: 0 14px; border: 1px solid var(--portal-blue); color: var(--portal-blue); font-weight: 850; text-decoration: none; }
.facility-map-shell { margin-bottom: 22px; padding: 24px; border: 1px solid var(--portal-line); background: #fff; box-shadow: var(--portal-shadow); }
.facility-map-copy h2 { margin: 7px 0 5px; font-size: 28px; }.facility-map-copy p { margin: 0 0 18px; color: var(--portal-muted); }
.facilities-map { position: relative; width: 100%; height: 520px; border: 1px solid #b9c8d8; background: #e7edf3; z-index: 1; }
.map-loading, .map-empty-overlay { display: grid; height: 100%; place-items: center; color: var(--portal-muted); text-align: center; }
.map-empty-overlay { position: absolute; z-index: 900; inset: auto 16px 16px; height: auto; padding: 12px; border: 1px solid #c4d0dd; background: rgba(255,255,255,.94); }
.map-note { margin: 10px 0 0; color: var(--portal-muted); font-size: 12px; }
.facility-grid article:target { border-color: var(--portal-blue); box-shadow: 0 0 0 3px rgba(6,75,155,.12); }
.facility-main { min-width: 0; }.facility-actions { display: grid; gap: 9px; }.facility-actions .map-button { justify-content: center; background: #fff; cursor: pointer; }
.facility-schedule { margin-top: 20px; border-top: 1px solid var(--portal-line); }.facility-schedule summary { padding: 15px 0; color: var(--portal-blue); font-weight: 850; cursor: pointer; }.facility-schedule summary span { display: inline-grid; min-width: 23px; height: 23px; margin-left: 5px; place-items: center; border-radius: 50%; color: #fff; background: var(--portal-blue); font-size: 11px; }
.facility-schedule-list { display: grid; gap: 8px; padding-bottom: 8px; }.facility-schedule-list > article { display: grid; grid-template-columns: minmax(170px, .8fr) minmax(230px, 1.2fr) auto; gap: 15px; padding: 14px; border: 1px solid #d6e0e9; background: #f8fafc; }.facility-schedule-list strong, .facility-schedule-list small { display: block; }.facility-schedule-list strong { margin: 7px 0 4px; }.facility-schedule-list small { color: var(--portal-muted); }.facility-schedule-list > article > a { align-self: center; color: var(--portal-blue); font-weight: 850; text-decoration: none; }
.facility-times p { display: grid; gap: 3px; margin: 0 0 7px; font-size: 12px; }.facility-times span { color: var(--portal-muted); }.facility-no-schedule { margin-top: 18px; color: var(--portal-muted); font-size: 13px; }
.facility-popup { display: grid; gap: 7px; min-width: 230px; }.facility-popup > strong { color: var(--portal-ink); font-size: 15px; }.facility-popup > p, .facility-popup-schedule p { margin: 0; color: var(--portal-muted); font-size: 12px; }.facility-popup-sports { display: flex; flex-wrap: wrap; gap: 4px; }.facility-popup-sports span { padding: 3px 5px; color: #08427f; background: #e7f1fc; font-size: 10px; font-weight: 800; }.facility-popup-schedule { display: grid; gap: 3px; padding-top: 5px; border-top: 1px solid #dce3ea; }.facility-popup > a { color: var(--portal-blue); font-weight: 850; }

.management-root { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 26px; max-width: 900px; margin-inline: auto; padding: 30px; border: 2px solid var(--portal-blue); background: #fff; }
.management-mark { display: grid; width: 96px; height: 96px; place-items: center; color: #fff; background: var(--portal-blue); font-size: 40px; font-weight: 900; }
.management-root div > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.management-root h2 { margin: 8px 0; font-size: 27px; }
.management-root p { margin: 0; color: var(--portal-muted); line-height: 1.55; }
.structure-line { width: 2px; height: 44px; margin: 0 auto; background: #9eb3c8; }
.structure-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.structure-grid article { padding: 23px; border: 1px solid var(--portal-line); background: #fff; }
.structure-grid article > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.structure-grid h3 { margin: 8px 0 16px; font-size: 21px; }
.structure-grid dl { display: grid; gap: 12px; margin: 0; }
.structure-grid dt { color: var(--portal-muted); font-size: 12px; }
.structure-grid dd { margin: 3px 0 0; line-height: 1.4; }
.principles-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.principles-grid article { padding: 25px; border-left: 4px solid var(--portal-blue); background: #fff; }
.principles-grid article > span { color: var(--portal-blue); font-weight: 900; }
.principles-grid h3 { margin: 12px 0 7px; font-size: 21px; }
.principles-grid p { margin: 0; color: var(--portal-muted); line-height: 1.5; }

.registration-layout { display: grid; grid-template-columns: minmax(270px, .7fr) minmax(420px, 1.3fr); align-items: start; gap: 20px; }
.registration-summary, .registration-form { padding: 30px; border: 1px solid var(--portal-line); background: #fff; }
.registration-summary h2 { margin: 16px 0 9px; font-size: 28px; }
.registration-summary > p { color: var(--portal-muted); line-height: 1.5; }
.registration-summary dl { display: grid; gap: 12px; margin: 22px 0; }
.registration-summary dt { color: var(--portal-muted); font-size: 12px; }
.registration-summary dd { margin: 4px 0 0; font-weight: 800; }
.registration-coach { display: grid; gap: 6px; margin-top: 18px; padding: 16px; border-left: 3px solid var(--portal-blue); background: #eef4fa; }
.registration-coach span { color: #3d5068; font-size: 13px; }
.registration-coach p { margin: 5px 0 0; color: var(--portal-muted); font-size: 13px; line-height: 1.5; }
.form-intro > span { color: var(--portal-blue); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.form-intro h2 { margin: 8px 0; font-size: 30px; }
.form-intro p { margin: 0 0 22px; color: var(--portal-muted); }
.public-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
.public-form-grid label, .weekend-form > label:not(.consent-field) { display: grid; gap: 7px; color: #35465d; font-size: 13px; font-weight: 800; }
.public-form-grid .is-wide { grid-column: 1/-1; }
.public-form-grid textarea { min-height: 110px; resize: vertical; }
.consent-field { display: flex; align-items: flex-start; gap: 10px; margin: 18px 0; color: #35465d; font-size: 13px; line-height: 1.45; cursor: pointer; }
.consent-field input { width: 19px; height: 19px; flex: 0 0 auto; accent-color: var(--portal-blue); }
.consent-field.is-small { margin: 4px 0; font-size: 12px; }
.form-footnote { margin: 14px 0 0; color: var(--portal-muted); font-size: 12px; line-height: 1.45; }
.honey-field { position: absolute !important; left: -9999px !important; }

.weekend-list { display: grid; gap: 18px; }
.weekend-card { display: grid; grid-template-columns: minmax(190px, 270px) minmax(240px, 1fr) minmax(300px, 360px); align-items: center; gap: 28px; padding: 25px; border: 1px solid var(--portal-line); background: #fff; }
.weekend-poster { display: block; overflow: hidden; background: #e8edf3; }
.weekend-poster img { display: block; width: 100%; max-height: 390px; object-fit: contain; }
.weekend-placeholder { display: grid; min-height: 260px; place-content: center; color: #fff; background: var(--portal-blue); text-align: center; }
.weekend-placeholder time b, .weekend-placeholder time span { display: block; }
.weekend-placeholder time b { font-size: 58px; line-height: 1; }
.weekend-placeholder small { margin-top: 18px; color: #d9e6f3; }
.weekend-copy h2 { margin: 14px 0 10px; font-size: 28px; }
.weekend-copy p { color: var(--portal-muted); line-height: 1.55; }
.weekend-copy strong, .weekend-copy small { display: block; }
.weekend-copy small { margin-top: 9px; color: var(--portal-muted); }
.weekend-form { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; padding: 20px; border: 1px solid #c9d7e4; background: #f7f9fc; }
.weekend-form h3, .weekend-form .consent-field, .weekend-form .portal-button { grid-column: 1/-1; }
.weekend-form h3 { margin: 0 0 4px; font-size: 20px; }
.weekend-form.is-pending { display: block; }
.weekend-form.is-pending p { color: var(--portal-muted); line-height: 1.5; }

.resident-program-hero { position: relative; overflow: hidden; }
.resident-program-hero::after { position: absolute; right: max(20px, calc((100vw - 1180px)/2)); bottom: -70px; width: 250px; height: 250px; border: 40px solid rgba(255,255,255,.08); border-radius: 50%; content: ""; }
.resident-program-hero.is-gto { background: linear-gradient(125deg, #671a23, #b33d49); }
.resident-program-hero.is-courtyard { background: linear-gradient(125deg, #16482c, #2d7650); }
.resident-program-hero .hero-actions { position: relative; z-index: 1; margin-top: 27px; }
.program-about-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(270px, .7fr); gap: 22px; align-items: start; }
.program-about-grid > article, .program-about-grid > aside { padding: 30px; border: 1px solid var(--portal-line); background: #fff; }
.program-about-grid h2 { margin: 9px 0 18px; font-size: 32px; }
.program-rich-text, .program-about-grid aside > div { color: #34455a; line-height: 1.7; white-space: pre-line; }
.program-about-grid aside { border-top: 5px solid var(--portal-gold); }
.program-about-grid aside > strong { display: block; margin-bottom: 13px; color: var(--portal-blue); font-size: 19px; }
.program-about-grid aside > small { display: block; margin-top: 17px; color: var(--portal-muted); line-height: 1.5; }
.resident-registration-section { background: #edf3f8; }
.program-group-heading { margin: 34px 0 15px; padding-top: 5px; }
.program-group-heading.is-secondary { margin-top: 48px; padding-top: 32px; border-top: 1px solid #cbd7e3; }
.program-group-heading > span { color: var(--portal-blue); font-size: 12px; font-weight: 900; text-transform: uppercase; }
.program-group-heading h3 { margin: 6px 0 0; font-size: 26px; }
.resident-activity-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.resident-activity-card { display: flex; min-width: 0; flex-direction: column; padding: 25px; border: 1px solid var(--portal-line); border-top: 5px solid var(--portal-blue); background: #fff; box-shadow: var(--portal-shadow); }
.resident-activity-poster { display: block; margin: -25px -25px 22px; overflow: hidden; border-bottom: 1px solid var(--portal-line); background: #eef2f6; }
.resident-activity-poster img { display: block; width: 100%; aspect-ratio: 4/5; object-fit: contain; transition: transform .2s ease; }
.resident-activity-poster:hover img { transform: scale(1.015); }
.activity-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.activity-card-top > span { color: var(--portal-blue); font-size: 11px; font-weight: 900; text-transform: uppercase; }
.activity-card-top > b { padding: 5px 7px; color: #19623f; background: #e2f5e9; font-size: 10px; white-space: nowrap; }
.activity-card-top > b.is-muted { color: #53657b; background: #edf1f5; }
.resident-activity-card h3 { margin: 15px 0 8px; font-size: 24px; }
.resident-activity-card > p { margin: 0; color: var(--portal-muted); line-height: 1.55; white-space: pre-line; }
.resident-activity-card dl { display: grid; gap: 10px; margin: 20px 0; }
.resident-activity-card dl div { padding-top: 9px; border-top: 1px solid #e1e7ed; }
.resident-activity-card dt { color: var(--portal-muted); font-size: 11px; }
.resident-activity-card dd { margin: 4px 0 0; font-weight: 800; }
.resident-activity-card .portal-button, .activity-closed-note { margin-top: auto; }
.activity-closed-note { display: block; padding: 13px; border: 1px solid #cbd7e3; color: var(--portal-muted); background: #f7f9fc; font-size: 13px; font-weight: 800; text-align: center; }
.program-documents-section { background: #fff; }
.public-document-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.public-document-list > a { display: grid; grid-template-columns: 48px 1fr; gap: 15px; align-items: center; padding: 18px; border: 1px solid var(--portal-line); color: var(--portal-ink); background: #f8fafc; text-decoration: none; }
.public-document-list > a:hover { border-color: var(--portal-blue); background: #fff; }
.public-document-list > a > span { display: grid; width: 48px; height: 48px; place-items: center; color: #fff; background: var(--portal-blue); font-size: 22px; font-weight: 900; }
.public-document-list strong, .public-document-list small, .public-document-list em { display: block; }
.public-document-list small { margin-top: 5px; color: var(--portal-muted); line-height: 1.4; }
.public-document-list em { margin-top: 7px; color: #728094; font-size: 11px; font-style: normal; }

.public-empty { grid-column: 1/-1; padding: 38px; border: 1px dashed #aebdcb; color: var(--portal-muted); background: #fff; text-align: center; }
.public-empty strong { display: block; margin-bottom: 7px; color: var(--portal-ink); font-size: 19px; }
.public-empty p { margin: 0 0 12px; }
.public-empty a { color: var(--portal-blue); font-weight: 850; }
.public-empty.is-dark { border-color: rgba(255,255,255,.28); color: #c5d2df; background: transparent; }
.public-empty.is-dark strong { color: #fff; }
.filter-empty { margin-top: 16px; }
[hidden] { display: none !important; }

.site-footer { padding-top: 48px; color: #c7d3e1; background: var(--portal-navy); }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 50px; padding-bottom: 42px; }
.footer-grid > div { display: grid; align-content: start; gap: 9px; }
.footer-grid strong { color: #fff; font-size: 17px; }
.footer-grid p { max-width: 420px; margin: 0; line-height: 1.55; }
.footer-grid a { color: #d6e1ed; text-decoration: none; }
.footer-grid a:hover { color: var(--portal-gold); }
.footer-grid span { color: #9fb0c4; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; padding-block: 18px; border-top: 1px solid rgba(255,255,255,.12); color: #93a6ba; font-size: 13px; }

html.public-font-large { font-size: 118%; }
html.public-high-contrast { --portal-blue: #003d80; --portal-blue-dark: #001f45; --portal-navy: #000; --portal-ink: #000; --portal-muted: #343434; --portal-line: #68707a; --portal-page: #fff; }
html.public-high-contrast .portal-kicker, html.public-high-contrast .portal-hero .portal-kicker { color: #ffd800; }
html.public-high-contrast .site-header, html.public-high-contrast .site-footer, html.public-high-contrast .athlete-band { background: #000; }

@media (max-width: 980px) {
  .public-menu-button { display: block; }
  .site-tools { margin-left: 0; }
  .site-nav { display: none; }
  .site-nav.is-open { display: block; }
  .site-nav .public-container { display: grid; grid-template-columns: repeat(2, 1fr); padding-block: 10px; }
  .site-nav a { min-height: 44px; border: 0; }
  .hero-grid { grid-template-columns: 1fr; gap: 32px; min-height: 0; }
  .hero-card { max-width: 420px; }
  .portal-card-grid, .training-grid, .sport-index-grid, .people-grid, .structure-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sport-directory { grid-template-columns: 1fr; }
  .public-session-grid { grid-template-columns: 1fr; }
  .athlete-grid, .athlete-grid.is-large { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .public-people-grid { grid-template-columns: 1fr; }
  .filter-panel { grid-template-columns: 1fr 1fr; }
  .filter-search { grid-column: 1/-1; }
  .weekend-card { grid-template-columns: minmax(190px, 260px) 1fr; }
  .weekend-form { grid-column: 1/-1; }
  .sport-schedule-column .training-card { grid-template-columns: 1fr 1fr; }.sport-schedule-column .training-card-action { grid-column: 1/-1; }
  .facility-schedule-list > article { grid-template-columns: 1fr 1fr; }.facility-schedule-list > article > a { grid-column: 1/-1; }
  .resident-hub-card summary { min-height: 210px; }
  .resident-activity-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  .public-container { width: min(100% - 24px, 1180px); }
  .site-header-main { min-height: 74px; gap: 10px; }
  .site-logo img { width: 50px; height: 50px; }
  .site-logo strong { font-size: 16px; }
  .site-logo small { font-size: 11px; }
  .site-tools { position: absolute; top: 78px; right: 12px; display: none; padding: 8px; background: var(--portal-navy); }
  .site-header.tools-open .site-tools { display: flex; }
  .site-tools a { font-size: 12px; }
  .public-menu-button { padding-inline: 10px; }
  .site-nav .public-container { grid-template-columns: 1fr; }
  .portal-hero::after { display: none; }
  .hero-grid { padding-block: 55px; }
  .hero-copy h1 { font-size: clamp(42px, 14vw, 64px); }
  .hero-copy > p { font-size: 17px; }
  .hero-search { display: grid; }
  .hero-search button { min-height: 50px; }
  .resident-hero-shell { grid-template-columns: 1fr; gap: 10px; padding-block: 12px; }
  .resident-hero-main { min-height: 0; padding: 42px 22px 36px; border-radius: 20px; }
  .resident-hero-main::after { right: -180px; bottom: -210px; opacity: .75; }
  .resident-hero-label { margin-inline: auto; font-size: 9px; letter-spacing: .085em; }
  .resident-hero .resident-hero-title { margin: 25px 0 22px; font-size: clamp(34px, 10.2vw, 47px); line-height: .96; letter-spacing: -.045em; text-align: center; }
  .resident-hero-title .resident-hero-accent { margin-top: 10px; }
  .resident-hero .resident-hero-lead { max-width: 390px; margin-inline: auto; font-size: 15px; line-height: 1.5; text-align: center; }
  .resident-hero .hero-search { gap: 6px; margin-top: 28px; padding: 6px; border-radius: 14px; }
  .resident-hero .hero-search input { min-height: 52px; padding-inline: 14px; text-align: center; }
  .resident-hero .hero-search button { border-radius: 9px; }
  .resident-hero-link { margin: 21px auto 0; }
  .resident-hero-shortcuts { gap: 8px; padding: 16px; border-radius: 20px; }
  .resident-shortcuts-heading { padding: 7px 4px 14px; text-align: center; }
  .resident-shortcuts-heading strong { font-size: 24px; }
  .resident-hero-shortcuts > a:not(.resident-shortcut-all) { min-height: 88px; padding: 13px; }
  .resident-shortcut-all { padding: 13px 5px 3px; }
  .hero-actions .portal-button { width: 100%; }
  .stat-strip { grid-template-columns: repeat(2, 1fr); margin-top: 0; }
  .stat-strip article:nth-child(2) { border-right: 0; }
  .stat-strip article:nth-child(-n+2) { border-bottom: 1px solid var(--portal-line); }
  .public-section { padding-block: 50px; }
  .portal-heading { align-items: flex-start; flex-direction: column; }
  .today-schedule, .portal-card-grid, .event-grid, .athlete-grid, .athlete-grid.is-large, .callout-grid, .training-grid, .sport-index-grid, .news-feature-grid, .people-grid, .structure-grid, .principles-grid, .resident-activity-grid, .program-about-grid, .public-document-list { grid-template-columns: 1fr; }
  .sport-directory { grid-template-columns: 1fr; }
  .public-session-grid article { grid-template-columns: 68px 1fr; }
  .public-session-grid article > a { grid-column: 1/-1; }
  .today-schedule article { grid-template-columns: 70px 1fr; }
  .today-schedule article > a { grid-column: 2; }
  .filter-panel, .filter-panel.is-compact { grid-template-columns: 1fr; }
  .filter-search { grid-column: auto; }
  .results-line { align-items: flex-start; flex-direction: column; }
  .competition-list > article { grid-template-columns: 78px 1fr; gap: 16px; }
  .competition-list > article.public-event-card { grid-template-columns: 110px 1fr; }.public-event-visual img, .public-event-visual time { width: 110px; height: 145px; }
  .competition-list time { width: 78px; height: 82px; }
  .competition-action { grid-column: 1/-1; }
  .news-list article { grid-template-columns: 1fr; gap: 8px; }
  .facility-grid article { grid-template-columns: 52px 1fr; gap: 15px; }
  .facility-grid .map-button { grid-column: 1/-1; justify-content: center; }
  .facilities-map { height: 410px; }.facility-map-shell { padding: 14px; }.sport-schedule-column .training-card { grid-template-columns: 1fr; }.sport-schedule-column .training-card-action { grid-column: auto; }.facility-actions { grid-column: 1/-1; }.facility-schedule-list > article { grid-template-columns: 1fr; }.facility-schedule-list > article > a { grid-column: auto; }
  .management-root { grid-template-columns: 1fr; }
  .management-mark { width: 70px; height: 70px; }
  .registration-layout { grid-template-columns: 1fr; }
  .public-form-grid { grid-template-columns: 1fr; }
  .public-form-grid .is-wide { grid-column: auto; }
  .weekend-card { grid-template-columns: 1fr; padding: 18px; }
  .public-people-grid > article { grid-template-columns: 1fr; }.public-people-grid > article > img, .public-person-placeholder { height: 330px; min-height: 0; }
  .address-schedule-head, .address-schedule-footer { align-items: stretch; flex-direction: column; }.address-schedule-head .map-button, .address-schedule-footer .portal-button { width: 100%; justify-content: center; }
  .weekend-form { grid-column: auto; grid-template-columns: 1fr; }
  .weekend-form h3, .weekend-form .consent-field, .weekend-form .portal-button { grid-column: auto; }
  .footer-grid { grid-template-columns: 1fr; gap: 28px; }
  .footer-bottom { flex-direction: column; }
  .resident-hub-intro { align-items: flex-start; flex-direction: column; gap: 14px; }
  .resident-hub-grid { grid-template-columns: 1fr; }
  .resident-hub-card.is-wide { grid-column: auto; }
  .resident-hub-card summary { min-height: 0; grid-template-columns: 48px minmax(0, 1fr) 38px; gap: 13px; padding: 20px 17px; }
  .hub-number { width: 48px; height: 48px; border-radius: 10px; font-size: 14px; }
  .hub-toggle { width: 38px; height: 38px; font-size: 23px; }
  .resident-hub-card summary h2 { font-size: 25px; }
  .resident-hub-direct { grid-template-columns: 48px minmax(0,1fr); min-height: 0; gap: 13px; padding: 20px 17px; }.resident-hub-direct .hub-direct-icon { display: none; }.resident-hub-direct h2 { font-size: 25px; }
  .hub-card-body { padding: 17px; }
  .hub-action-row { grid-template-columns: 1fr; }
  .hub-action-row.is-scrollable { display: flex; }
  .hub-body-heading { align-items: flex-start; flex-direction: column; gap: 4px; }
}

@media (max-width: 430px) {
  .site-logo span { display: none; }
  .page-hero { padding-block: 46px; }
  .page-hero h1 { font-size: 44px; }
  .stat-strip strong { font-size: 31px; }
  .stat-strip article { padding: 20px; }
  .registration-summary, .registration-form, .callout-grid article { padding: 22px; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
}

/* Full-card colours match the resident hero, including poster side gutters. */
.news-card {
  color: #fff;
  background: linear-gradient(145deg, #061f41 0%, #063d7c 58%, #0860b3 100%);
  border-color: #164c80;
  box-shadow: 0 12px 32px rgba(7, 31, 63, .16);
}
.news-card img,
.news-card .home-news-photo { background: transparent; }
.news-card h2,
.news-card h3,
.news-card h2 a,
.news-card h3 a,
.news-card.home-news-card h3 a { color: #fff; }
.news-card p,
.news-card time { color: #dce9f8; }
.news-card a { color: #f4c542; }
.news-card a:hover { color: #ffe08a; }
.news-card h2 a:hover,
.news-card h3 a:hover,
.news-card.home-news-card h3 a:hover { color: #f4c542; }
.news-card a:focus-visible { outline: 3px solid #f4c542; outline-offset: 3px; }
.news-card .sport-chip { color: #f4c542; background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); }

/* Event posters preserve the complete original on every screen. */
.public-event-visual .event-poster-link { display: block; width: 100%; }
.public-event-visual .event-poster-link img { width: 100%; height: auto; max-height: none; object-fit: contain; }
.event-poster-link span { display: block; margin-top: 8px; font-size: 14px; }
.competition-copy .event-description { white-space: pre-line; overflow-wrap: anywhere; }
