html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

.portal-shell > .footer { position: static; white-space: normal; line-height: 1.6; padding: 20px 0; }
.footer-credit { margin: 6px 0 0; font-size: .8rem; line-height: 1.6; }

.portal-shell {
  min-height: 100vh;
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  background: #f5f7fb;
}

.portal-background {
  position: fixed;
  inset: 0;
  z-index: -1;
  background: url("../images/logo.png") center 72px / cover no-repeat;
}

.portal-shell > header,
.portal-content,
.portal-shell > footer {
  position: relative;
  z-index: 1;
}

.portal-content { flex: 1; }

.portal-shell > header {
  z-index: 1100;
}

.portal-shell .dropdown-menu {
  z-index: 1200;
}

.portal-shell .navbar-brand {
  white-space: nowrap;
}

.brand-logo {
  width: 72px;
  height: 48px;
  object-fit: contain;
}

.admin-menu-item {
  color: #111827 !important;
  font-weight: 400;
}

.admin-menu-item:hover,
.admin-menu-item:focus {
  color: #ffffff !important;
  background-color: #0d6efd;
}

.user-role-badge {
  display: inline-block;
  border-radius: 999px;
  padding: 0.25rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1;
}

.user-role-admin {
  color: #ffffff;
  background-color: #0d6efd;
}

.user-role-consigliere {
  color: #052c65;
  background-color: #9ec5fe;
}

.user-role-socio {
  color: #ffffff;
  background-color: #6c757d;
}

.html-editor {
  min-height: 280px;
  height: auto;
  overflow: auto;
  background: #ffffff;
}

.html-editor:focus {
  border-color: #86b7fe;
  box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
  outline: 0;
}

.communication-item,
.communication-body {
  background: rgba(255, 255, 255, .92);
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: 8px;
  padding: 1rem;
}

.communication-body img,
.html-editor img {
  height: auto;
  max-width: 100%;
}

.communication-item .communication-body {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
}

.section-heading h1 {
  letter-spacing: 0;
}

.communication-filters {
  background: rgba(255, 255, 255, .68);
  border: 1px solid rgba(17, 24, 39, .08);
  border-radius: 8px;
  padding: .9rem;
}

.communication-filters .form-label {
  color: #4b5563;
  font-size: .85rem;
  font-weight: 600;
}

.communication-list {
  display: grid;
  gap: .65rem;
}

.communication-list-toolbar {
  align-items: center;
  background: rgba(255, 255, 255, .78);
  border: 1px solid rgba(17, 24, 39, .08);
  border-radius: 8px;
  display: flex;
  justify-content: space-between;
  padding: .7rem .85rem;
}

.communication-sort {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}

.communication-sort span {
  color: #6b7280;
  font-size: .85rem;
}

.communication-sort a {
  background: #ffffff;
  border: 1px solid rgba(17, 24, 39, .12);
  border-radius: 999px;
  color: #374151;
  font-size: .85rem;
  padding: .28rem .65rem;
  text-decoration: none;
}

.communication-sort a.active,
.communication-sort a:hover {
  background: #0d6efd;
  border-color: #0d6efd;
  color: #ffffff;
}

.communication-row {
  align-items: center;
  background: rgba(255, 255, 255, .92);
  border: 1px solid rgba(17, 24, 39, .08);
  border-radius: 8px;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  padding: 1rem;
}

.communication-row:hover {
  border-color: rgba(13, 110, 253, .28);
  box-shadow: 0 8px 22px rgba(17, 24, 39, .08);
}

.communication-row-main {
  min-width: 0;
}

.communication-row-title {
  color: #111827;
  display: inline-block;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.25;
  text-decoration: none;
}

.communication-row-title:hover {
  color: #0d6efd;
}

.communication-row-meta {
  color: #6b7280;
  display: flex;
  flex-wrap: wrap;
  font-size: .88rem;
  gap: .75rem;
  margin-top: .25rem;
}

.communication-row-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  justify-content: flex-end;
}

.communication-row-actions form {
  margin: 0;
}

.communication-footer {
  align-items: center;
  display: flex;
  flex-direction: column;
  gap: .75rem;
  justify-content: space-between;
  margin-top: 1rem;
}

@media (min-width: 768px) {
  .communication-footer {
    flex-direction: row;
  }
}

.portal-content {
  background: rgba(255, 255, 255, 0.82);
  border-radius: 8px;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.portal-nav-groups {
  align-items: stretch;
  display: flex;
  gap: .75rem;
  margin-left: .75rem;
}

.portal-nav-group {
  align-items: center;
  border-radius: 9px;
  display: flex;
  padding: .15rem .45rem .15rem .65rem;
}

.portal-nav-user {
  background: rgba(13, 110, 253, .055);
  border: 1px solid rgba(13, 110, 253, .12);
}

.portal-nav-admin {
  background: rgba(146, 93, 17, .09);
  border: 1px solid rgba(146, 93, 17, .22);
}

.portal-nav-label {
  color: #64748b;
  font-size: .63rem;
  font-weight: 800;
  letter-spacing: .075em;
  line-height: 1.05;
  margin-right: .35rem;
  min-width: 5.8rem;
  text-transform: uppercase;
}

.portal-nav-admin .portal-nav-label,
.portal-nav-admin .nav-link {
  color: #744b10;
}

.portal-nav-admin .portal-nav-label {
  margin-right: .7rem;
  min-width: 7.8rem;
  white-space: nowrap;
}

.portal-nav-group .nav-link {
  border-radius: 6px;
  color: #27364a;
  padding: .55rem .52rem;
  white-space: nowrap;
}

.portal-nav-group .nav-link:hover,
.portal-nav-group .nav-link:focus {
  background: rgba(255, 255, 255, .8);
  color: #0d6efd;
}

.portal-nav-admin .nav-link:hover,
.portal-nav-admin .nav-link:focus {
  color: #4f330b;
}

@media (max-width: 1199.98px) {
  .portal-nav-groups {
    align-items: stretch;
    flex-direction: column;
    margin: .75rem 0;
  }

  .portal-nav-group {
    align-items: flex-start;
    flex-direction: column;
    padding: .55rem;
  }

  .portal-nav-group .navbar-nav {
    width: 100%;
  }

  .portal-nav-label {
    margin: 0 0 .25rem .5rem;
    max-width: none;
  }
}

@media (max-width: 575.98px) {
  .portal-shell .navbar-brand {
    font-size: 1rem;
  }

  .brand-logo {
    width: 56px;
    height: 40px;
  }
}

/* Club home: welcome, shortcuts and news. */
.portal-shell.portal-home {
  --club-green: #123f32;
  --club-ink: #203c32;
  --club-muted: #68746c;
  --club-gold: #f3cf73;
  min-height: 100vh;
  margin-bottom: 0;
  color: var(--club-ink);
  background: #f7f7f0;
  display: flex;
  flex-direction: column;
  font-family: "Segoe UI", system-ui, sans-serif;
}

.portal-home .portal-background { display: none; }
.portal-home .portal-content {
  max-width: 1280px;
  width: 100%;
  flex: 1;
  padding: 32px 32px 56px;
  border-radius: 0;
  background: transparent;
}
.portal-shell.portal-home .footer {
  position: static;
  line-height: 1.6;
  white-space: normal;
  padding: 22px 0;
  background: #f0f2eb;
  font-size: .8rem;
}
.portal-home header .navbar {
  padding: 15px 24px;
  margin-bottom: 0 !important;
  box-shadow: none;
  border-color: #e4e8df !important;
}
.portal-home .brand-logo { border-radius: 7px; }
.portal-home .navbar-brand { font-size: .95rem; color: var(--club-green); }
.portal-home .portal-nav-group { background: #f4f6f1; border-color: #e5e9df; }
.portal-home .portal-nav-admin { background: #faf7ed; border-color: #eee7d5; }
.portal-home .portal-nav-label { font-size: .6rem; }
.portal-home .portal-nav-group .nav-link { font-size: .82rem; padding: .4rem .48rem; }

.home-eyebrow { margin: 0 0 7px; color: #596852; font-size: .64rem; font-weight: 700; letter-spacing: .16em; line-height: 1.5; }
.home-welcome { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 24px; }
.home-greeting { margin: 0; font-size: 1.2rem; font-weight: 600; letter-spacing: -.025em; }
.home-member-label { display: inline-flex; align-items: center; gap: 8px; color: #68796a; font-size: .76rem; }
.home-member-label > span { width: 6px; height: 6px; border-radius: 50%; background: #678560; }

.home-hero { position: relative; overflow: hidden; isolation: isolate; min-height: 425px; border-radius: 20px; color: #fff; background: #113a2e; box-shadow: 0 16px 44px #25493415; }
.home-hero-photo { position: absolute; inset: 0 0 0 31%; z-index: -2; }
.home-hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 52% 48%; }
.home-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, #10392efc 0%, #10392ef2 29%, #10392ed9 40%, #10392e42 65%, #10392e08 100%); }
.home-hero::after { content: ""; position: absolute; inset: auto 0 0; height: 100px; z-index: -1; background: linear-gradient(0deg, #08281c70, transparent); }
.home-hero-copy { position: relative; padding: 48px 48px 46px; max-width: 680px; }
.home-hero-eyebrow { display: flex; align-items: center; gap: 12px; margin: 0 0 20px; color: #e2d9b8; letter-spacing: .17em; font-size: .65rem; font-weight: 600; }
.home-hero-eyebrow > span { display: inline-block; width: 22px; height: 1px; background: var(--club-gold); }
.home-hero h1 { margin: 0 0 22px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.8rem, 4.6vw, 4.6rem); font-weight: 400; line-height: 1.07; letter-spacing: -.045em; }
.home-hero h1 em { color: #f6da92; font-weight: 400; }
.home-hero-copy > p:not(.home-hero-eyebrow) { color: #e0e9de; font-size: .97rem; line-height: 1.75; margin: 0; max-width: 425px; }
.home-hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 25px; margin-top: 29px; }
.home-button { display: inline-flex; align-items: center; justify-content: center; gap: 28px; min-height: 47px; padding: 12px 19px; border-radius: 7px; text-decoration: none; font-size: .8rem; font-weight: 650; transition: background .2s, transform .2s; }
.home-button-gold { color: #163d2e; background: var(--club-gold); border: 1px solid #f3cf73; }
.home-button-gold:hover { color: #123625; background: #ffe3a0; transform: translateY(-2px); }
.home-button > span { font-size: 1.05rem; font-weight: 400; }
.home-hero-link { display: inline-flex; align-items: center; gap: 13px; color: #f0f3e9; font-size: .8rem; text-decoration: none; padding: 10px 0; }
.home-hero-link:hover { color: var(--club-gold); }
.home-hero-signature { position: absolute; right: 30px; bottom: 24px; font-size: .68rem; line-height: 1.6; color: #f7f0d9; text-align: right; text-shadow: 0 1px 6px #07241c; }
.home-hero-signature > span { display: block; margin-bottom: 5px; color: #f3d075; font-family: Georgia, serif; font-size: 1.4rem; letter-spacing: .08em; }

.home-shortcuts { margin-top: 39px; }
.home-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-bottom: 20px; }
.home-section-heading h2 { margin: 0; color: #243e31; font-size: 1.38rem; font-weight: 600; letter-spacing: -.035em; line-height: 1.3; }
.home-section-note { color: #7b8577; font-size: .76rem; padding-bottom: 2px; }
.home-shortcut-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.home-shortcut { display: flex; flex-direction: column; min-width: 0; padding: 22px; color: var(--club-ink); background: #fff; border: 1px solid #e4e8dd; border-radius: 12px; text-decoration: none; transition: border-color .2s, box-shadow .2s, transform .2s; }
a.home-shortcut:hover { color: var(--club-ink); transform: translateY(-4px); border-color: #a4b8a2; box-shadow: 0 12px 24px #2448340d; }
.home-shortcut-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 22px; }
.home-icon { width: 41px; height: 41px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; border-radius: 10px; background: #eff4ed; color: #355b41; }
.home-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.home-shortcut-arrow { align-self: start; color: #7d8b77; font-size: 1.15rem; }
.home-shortcut h3 { font-size: 1rem; font-weight: 650; margin: 0 0 9px; letter-spacing: -.025em; }
.home-shortcut p { font-size: .84rem; line-height: 1.65; color: #596852; margin: 0 0 23px; }
.home-shortcut-action { margin-top: auto; font-size: .73rem; font-weight: 600; color: #355e3e; }
.home-shortcut-featured { background: #eaf0e3; border-color: #d7e1ce; }
.home-shortcut-featured .home-icon { background: #dbe6d1; }
.home-shortcut-coming { background: #f0f1e9; border-color: #e7e8df; }
.home-shortcut-coming .home-icon { color: #7d8572; background: #e8eadf; }
.home-coming-label { background: #e4e7db; padding: 5px 8px; border-radius: 5px; color: #4c5c40; font-size: 10px; font-weight: 600; }
.home-shortcut-coming .home-shortcut-action { color: #737e64; }

.home-bottom-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 22px; margin-top: 32px; align-items: stretch; }
.home-board { background: #fff; border: 1px solid #e5e8df; border-radius: 14px; padding: 28px; }
.home-board .home-section-heading { gap: 12px; margin-bottom: 26px; }
.home-board .home-section-heading h2 { font-size: 1.24rem; }
.home-text-link { display: inline-flex; align-items: center; gap: 10px; color: #496143; text-decoration: none; font-size: .75rem; white-space: nowrap; padding: 5px 0; }
.home-text-link:hover { color: #183f2e; }
.home-news-list { display: grid; gap: 8px; }
.home-news-item { display: flex; align-items: center; gap: 17px; padding: 16px 0; color: var(--club-ink); text-decoration: none; border-top: 1px solid #eef0e8; }
.home-news-date { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 68px; min-height: 68px; flex-shrink: 0; background: #f4f5ee; border-radius: 8px; }
.home-news-date strong { font-family: Georgia, serif; font-size: 1.8rem; line-height: 1.2; font-weight: 400; }
.home-news-date > span { font-size: .63rem; color: #7a8573; text-transform: uppercase; }
.home-news-copy { display: flex; flex-direction: column; gap: 7px; min-width: 0; flex: 1; }
.home-news-category { font-size: 10px; color: #596852; letter-spacing: .06em; font-weight: 700; }
.home-news-title { font-size: .95rem; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.home-news-arrow { color: #7b8b75; font-size: 1.15rem; flex-shrink: 0; }
.home-news-item:hover { color: #183f2e; }
.home-news-item:hover .home-news-title { text-decoration: underline; text-underline-offset: 4px; }
.home-news-empty { padding: 16px 0 25px; color: #657861; }
.home-empty-symbol { display: block; font-size: 1.8rem; color: #afbe99; margin-bottom: 8px; }
.home-news-empty p { font-size: 1rem; font-weight: 600; margin: 0 0 8px; }
.home-news-empty > span:last-child { font-size: .8rem; line-height: 1.6; }

.home-community { position: relative; overflow: hidden; border-radius: 14px; padding: 30px; background: #e9eee1; border: 1px solid #e1e8d7; }
.home-community-mark { position: absolute; right: 18px; bottom: 0; color: #dbe4cf; font-family: Georgia, serif; font-size: 8rem; line-height: 1; pointer-events: none; }
.home-community > :not(.home-community-mark) { position: relative; }
.home-community h2 { margin: 21px 0 17px; font-family: Georgia, serif; font-size: 1.85rem; font-weight: 400; line-height: 1.24; letter-spacing: -.035em; }
.home-community > p:not(.home-eyebrow) { max-width: 325px; color: #596852; font-size: .84rem; line-height: 1.8; margin: 0; }
.home-community-footer { display: flex; align-items: center; gap: 10px; margin-top: 26px; font-size: .67rem; color: #4c6344; font-weight: 600; }
.home-community-line { width: 22px; height: 1px; background: #889d74; }

.home-mediateca { display: flex; flex-direction: column; align-items: flex-start; background: linear-gradient(135deg, #edf2e5, #e5eddb); }
.home-mediateca .home-mediateca-art { position: absolute; right: -22px; bottom: -30px; width: 195px; height: 195px; fill: none; stroke: #bccdac; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; opacity: .38; pointer-events: none; }
.home-mediateca h2 { margin: 14px 0; }
.home-mediateca h2 em { color: #4f6a3d; font-weight: 400; }
.home-mediateca > p:not(.home-eyebrow) { max-width: 360px; }
.home-mediateca-collections { display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 18px 0 22px; list-style: none; }
.home-mediateca-collections li { padding: 5px 8px; border: 1px solid #d1ddc5; border-radius: 5px; background: #ffffff70; color: #506643; font-size: .66rem; line-height: 1.4; }
.home-mediateca-button { margin-top: auto; color: #fff; background: #234d35; border: 1px solid #234d35; }
.home-mediateca-button:hover { color: #fff; background: #315f42; border-color: #315f42; transform: translateY(-2px); }
.home-mediateca > p.home-mediateca-note { margin: 10px 0 0; color: #65745a; font-size: .72rem; line-height: 1.5; }

.home-management { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 27px; padding: 22px 25px; border: 1px solid #e1e5d9; border-radius: 12px; background: #f0f2e8; scroll-margin-top: 24px; }
.home-management-heading { display: flex; align-items: center; gap: 14px; }
.home-management-heading .home-icon { background: #e1e7d6; }
.home-management h2 { font-size: .95rem; font-weight: 600; margin: 0 0 5px; }
.home-management p { font-size: .73rem; color: #79846e; margin: 0; }
.home-management-links { display: flex; flex-wrap: wrap; gap: 8px; }
.home-management-links a { display: inline-flex; align-items: center; justify-content: space-between; gap: 15px; font-size: .72rem; color: #43603a; background: #fff; border: 1px solid #dee5d4; padding: 9px 12px; border-radius: 6px; text-decoration: none; }
.home-management-links a:hover { border-color: #8ea981; background: #fafff6; color: #234425; }
.club-home a:focus-visible { outline: 3px solid #b59138; outline-offset: 5px; }

@media (max-width: 991.98px) {
  .portal-home .portal-content { padding: 25px 24px 40px; }
  .home-hero { min-height: 410px; }
  .home-hero-copy { padding: 38px 34px; max-width: 590px; }
  .home-hero-photo { left: 22%; }
  .home-hero::before { background: linear-gradient(90deg, #10392efc, #10392eeb 37%, #10392e70 65%, #10392e10); }
  .home-hero-signature { display: none; }
  .home-shortcut-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-bottom-grid { grid-template-columns: 1.2fr 1fr; gap: 16px; }
  .home-board, .home-community { padding: 23px; }
  .home-community h2 { font-size: 1.6rem; }
  .home-management { align-items: flex-start; flex-direction: column; gap: 18px; }
}
@media (max-width: 767.98px) {
  .home-bottom-grid { grid-template-columns: minmax(0, 1fr); }
  .home-section-note { display: none; }
  .home-community-mark { right: 27px; }
  .home-community > p:not(.home-eyebrow) { max-width: 90%; }
}
@media (max-width: 575.98px) {
  .portal-home header .navbar { padding: 12px 9px; }
  .portal-home .portal-content { padding: 24px 17px 32px; }
  .portal-home .navbar-brand { font-size: .82rem; }
  .home-welcome { margin-bottom: 20px; }
  .home-welcome .home-eyebrow { font-size: .58rem; letter-spacing: .12em; }
  .home-greeting { font-size: 1.04rem; }
  .home-member-label { display: none; }
  .home-hero { min-height: 565px; border-radius: 15px; }
  .home-hero-photo { inset: 220px -65px -40px 0; }
  .home-hero-photo img { object-position: 48% 45%; }
  .home-hero::before { background: linear-gradient(180deg, #10392efc 0%, #10392ef7 38%, #10392e5c 63%, #10392e05 90%); }
  .home-hero-copy { padding: 30px 25px; }
  .home-hero-eyebrow { font-size: .54rem; letter-spacing: .12em; gap: 8px; margin-bottom: 17px; }
  .home-hero h1 { font-size: clamp(2.5rem, 10.8vw, 3.6rem); margin-bottom: 17px; }
  .home-hero-copy > p:not(.home-hero-eyebrow) { font-size: .86rem; line-height: 1.7; max-width: 290px; }
  .home-desktop-break { display: none; }
  .home-hero-actions { gap: 14px; margin-top: 22px; }
  .home-button { min-height: 45px; padding: 11px 14px; gap: 14px; font-size: .74rem; }
  .home-hero-link { font-size: .73rem; gap: 8px; }
  .home-shortcuts { margin-top: 30px; }
  .home-section-heading h2 { font-size: 1.25rem; }
  .home-eyebrow { font-size: .58rem; letter-spacing: .12em; }
  .home-shortcut-grid { gap: 12px; }
  .home-shortcut { padding: 17px 14px; }
  .home-shortcut-top { margin-bottom: 18px; align-items: flex-start; }
  .home-icon { width: 36px; height: 36px; border-radius: 9px; }
  .home-icon svg { width: 20px; height: 20px; }
  .home-shortcut h3 { font-size: .98rem; }
  .home-shortcut p { font-size: .9rem; line-height: 1.6; margin-bottom: 18px; }
  .home-shortcut-action { font-size: .8rem; line-height: 1.5; }
  .home-coming-label { font-size: 10px; padding: 4px 5px; }
  .home-bottom-grid { margin-top: 24px; gap: 18px; }
  .home-board, .home-community { padding: 23px 20px; }
  .home-board .home-section-heading h2 { font-size: 1.12rem; }
  .home-news-item { gap: 13px; }
  .home-news-date { width: 59px; min-height: 64px; }
  .home-news-title { font-size: .97rem; }
  .home-news-category { font-size: 10px; }
  .home-community h2 { font-size: 1.8rem; }
  .home-management { padding: 20px; margin-top: 21px; }
  .home-management-links { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 359.98px) {
  .home-shortcut-grid { grid-template-columns: minmax(0, 1fr); }
  .home-shortcut-coming .home-shortcut-top { align-items: center; }
  .home-hero { min-height: 610px; }
}
@media (prefers-reduced-motion: reduce) {
  .club-home a { transition: none; }
  .club-home a:hover { transform: none; }
}

/* Sign in, in the same Club palette as the member home. */
.portal-shell.portal-login {
  min-height: 100vh;
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  background: #f7f7f0;
  color: #203c32;
  font-family: "Segoe UI", system-ui, sans-serif;
}
.portal-login .portal-background { display: none; }
.portal-login .portal-content { width: 100%; max-width: 1160px; flex: 1; display: flex; align-items: center; padding: 44px 24px; background: transparent; border-radius: 0; }
.portal-login .portal-content > main { width: 100%; }
.portal-login header .navbar { padding: 16px 26px; margin-bottom: 0 !important; box-shadow: none; border-color: #e4e8df !important; }
.portal-login .navbar > .container-fluid { max-width: 1280px; }
.portal-login .brand-logo { border-radius: 7px; }
.portal-login .navbar-brand { font-size: .95rem; }
.portal-shell.portal-login .footer { position: static; line-height: 1.6; white-space: normal; padding: 20px 0; background: #f0f2eb; font-size: .8rem; }
.club-login { display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; min-height: 655px; background: #fff; border: 1px solid #e0e6d9; border-radius: 20px; box-shadow: 0 20px 65px #24473412; }
.login-story { position: relative; overflow: hidden; isolation: isolate; color: #fff; background: #123d2f; }
.login-story-photo { position: absolute; inset: 205px -130px -40px -40px; z-index: -2; }
.login-story-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 44% 48%; }
.login-story::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, #103b2ffb 0%, #103b2ff2 31%, #103b2f5a 63%, #103b2f10 82%, #103b2f70 100%); }
.login-story-copy { padding: 43px 40px; }
.login-eyebrow { display: flex; align-items: center; gap: 11px; color: #e8dab0; font-size: 10px; font-weight: 600; letter-spacing: .13em; line-height: 1.6; margin: 0 0 31px; }
.login-eyebrow > span { display: block; width: 22px; height: 1px; flex-shrink: 0; background: #f3cf73; }
.login-story h2 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.5rem, 3.4vw, 3.5rem); line-height: 1.15; font-weight: 400; letter-spacing: -.04em; margin: 0 0 22px; }
.login-story h2 em { color: #f6da92; }
.login-story-copy > p:last-child { color: #e0e9de; font-size: .9rem; line-height: 1.75; margin: 0; }
.login-story-signature { position: absolute; bottom: 33px; left: 40px; text-shadow: 0 1px 5px #103525; }
.login-story-signature > span { display: block; color: #f6da92; font-family: Georgia, serif; font-size: 1.6rem; letter-spacing: .1em; margin-bottom: 6px; }
.login-story-signature p { font-size: .72rem; line-height: 1.6; margin: 0; color: #f4f1e4; }
.login-form-panel { display: flex; align-items: center; padding: 49px 48px; min-width: 0; }
.login-form-content { width: 100%; max-width: 385px; margin: 0 auto; }
.login-access-label { display: inline-flex; align-items: center; gap: 8px; color: #64765a; font-size: 10px; font-weight: 700; letter-spacing: .14em; }
.login-access-label svg, .login-privacy > svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.login-form-panel h1 { margin: 17px 0 13px; color: #1a3c2e; font-family: Georgia, "Times New Roman", serif; font-size: 2.75rem; font-weight: 400; line-height: 1.15; letter-spacing: -.04em; }
.login-intro { color: #64705e; font-size: .86rem; line-height: 1.7; margin: 0 0 28px; }
.login-field { margin-bottom: 20px; }
.login-label { display: block; margin-bottom: 8px; color: #31462e; font-size: .8rem; font-weight: 600; }
.login-input-wrap { position: relative; }
.login-input-icon { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 19px; height: 19px; fill: none; stroke: #748568; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.login-input.form-control { min-height: 51px; border: 1px solid #dce3d4; border-radius: 7px; padding: 12px 14px 12px 46px; color: #24432f; background: #fbfcf8; font-size: 16px; line-height: 1.5; }
.login-input::placeholder { color: #697861; font-size: .83rem; }
.login-input.form-control:focus { background: #fff; border-color: #648453; box-shadow: 0 0 0 3px #63844f23; }
.login-password-input.form-control { padding-right: 51px; }
.login-password-toggle { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 5px; background: transparent; color: #62745a; }
.login-password-toggle[hidden] { display: none; }
.login-password-toggle svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.login-password-toggle:hover { background: #edf2e7; color: #35552b; }
.login-eye-cross { display: none; }
.login-password-toggle[aria-pressed="true"] .login-eye-cross { display: block; }
.login-remember { display: flex; align-items: center; gap: 9px; padding-left: 0; min-height: 32px; margin: 0 0 20px; }
.login-remember .form-check-input { width: 17px; height: 17px; flex-shrink: 0; margin: 0; border-color: #b8c6ac; cursor: pointer; }
.login-remember .form-check-input:checked { border-color: #365c3f; background-color: #365c3f; }
.login-remember .form-check-input:focus { border-color: #658550; box-shadow: 0 0 0 3px #63844f23; }
.login-remember label { color: #5c6b52; font-size: .79rem; cursor: pointer; line-height: 1.5; }
.login-submit { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 51px; padding: 13px 19px; border: 1px solid #163e2e; border-radius: 7px; color: #fff; background: #163e2e; font-size: .86rem; font-weight: 600; transition: background .2s, box-shadow .2s; }
.login-submit > span { color: #f3cf73; font-size: 1.2rem; font-weight: 400; }
.login-submit:hover { background: #25553d; box-shadow: 0 5px 15px #24473414; }
.login-validation.validation-summary-valid { display: none; }
.login-validation.validation-summary-errors { padding: 13px 15px; margin-bottom: 20px; border: 1px solid #e8bdb0; border-radius: 7px; background: #fff5f1; color: #9a3926; font-size: .82rem; line-height: 1.6; }
.login-validation ul { list-style: none; padding: 0; margin: 0; }
.login-field-error { display: block; color: #a33f2d; font-size: .78rem; line-height: 1.5; margin-top: 6px; }
.login-field-error.field-validation-valid { display: none; }
.login-input.input-validation-error { border-color: #cb8b79; background: #fffaf7; }
.login-support { margin-top: 26px; padding-top: 22px; border-top: 1px solid #e9ede3; }
.login-support p { color: #48603c; font-size: .78rem; font-weight: 600; margin: 0 0 7px; }
.login-support > span { display: block; color: #68765d; font-size: .75rem; line-height: 1.7; }
.login-privacy { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 21px; color: #67765b; font-size: .67rem; line-height: 1.6; text-decoration: none; }
.login-privacy > span { margin-left: auto; color: #426039; }
.login-privacy:hover { color: #375c30; }
.club-login :is(a, button):focus-visible { outline: 3px solid #957025; outline-offset: 4px; }
@media (max-width: 991.98px) {
  .portal-login .portal-content { padding: 32px 24px; }
  .club-login { grid-template-columns: .95fr 1fr; min-height: 620px; }
  .login-story-copy { padding: 38px 28px; }
  .login-eyebrow { font-size: 9px; gap: 8px; letter-spacing: .08em; }
  .login-form-panel { padding: 38px 30px; }
  .login-story-signature { left: 28px; }
}
@media (max-width: 767.98px) {
  .portal-login .portal-content { max-width: 520px; padding: 25px 18px; }
  .club-login { grid-template-columns: minmax(0, 1fr); min-height: 0; border-radius: 15px; }
  .login-story { min-height: 205px; }
  .login-story-copy { padding: 27px 26px; }
  .login-story-photo { inset: -40px -95px -15px 38%; }
  .login-story::before { background: linear-gradient(90deg, #103b2ffc, #103b2ff2 37%, #103b2f8c 66%, #103b2f10); }
  .login-eyebrow { font-size: 9px; letter-spacing: .07em; margin-bottom: 17px; }
  .login-eyebrow > span { width: 15px; }
  .login-story h2 { font-size: 2.15rem; margin-bottom: 0; line-height: 1.2; }
  .login-story-copy > p:last-child, .login-story-signature { display: none; }
  .login-form-panel { padding: 31px 26px 30px; }
  .login-form-panel h1 { font-size: 2.25rem; margin: 14px 0 12px; }
  .login-intro { font-size: .95rem; margin-bottom: 25px; }
  .login-label { font-size: .93rem; }
  .login-input::placeholder { font-size: 14px; }
  .login-remember label { font-size: .9rem; }
  .login-submit { font-size: 1rem; }
  .login-field-error { font-size: .88rem; }
  .login-validation.validation-summary-errors { font-size: .95rem; }
  .login-support p { font-size: .93rem; }
  .login-support > span { font-size: .87rem; }
  .login-privacy { font-size: .79rem; }
  .login-privacy > span { margin-left: 0; }
}
@media (max-width: 575.98px) {
  .portal-login header .navbar { padding: 12px 9px; }
  .portal-login .navbar-brand { font-size: .82rem; }
  .portal-login .portal-content { padding: 21px 16px 27px; }
  .login-story { min-height: 183px; }
  .login-story h2 { font-size: 2.1rem; }
  .portal-shell.portal-login .footer { padding: 17px 0; }
}
@media (prefers-reduced-motion: reduce) { .login-submit { transition: none; } }
[data-admin-readonly] button, [data-admin-readonly] input[type="submit"] { display: none !important; }
