/* Shared Club palette and controls, used throughout the portal. */
.portal-shell.portal-ui {
  --ui-green: #163e2e;
  --ui-green-deep: #123326;
  --ui-ink: #213e30;
  --ui-muted: #64715e;
  --ui-gold: #ead6a2;
  --ui-line: #e0e5d8;
  --ui-cream: #f5f5ed;
  background: var(--ui-cream);
  color: var(--ui-ink);
  font-family: "Segoe UI", system-ui, sans-serif;
}
.portal-ui .portal-background { display: none; }
.portal-ui:where(:not(.portal-home, .portal-login)) .portal-content {
  width: 100%; max-width: 1280px; padding: 32px 28px 44px;
  background: transparent; border-radius: 0;
}
.portal-ui > header .navbar { padding: 15px 24px; margin-bottom: 0 !important; box-shadow: none; border-color: var(--ui-line) !important; }
.portal-ui .navbar-brand { color: var(--ui-green); font-size: .95rem; text-align: left; word-break: normal; }
.portal-ui .brand-logo { border-radius: 7px; }
.portal-ui .portal-nav-group { background: #f4f6f1; border: 1px solid #e5e9df; }
.portal-ui .portal-nav-admin { background: #faf7ed; border-color: #eee7d5; }
.portal-ui .portal-nav-label { color: #65725c; font-size: .6rem; }
.portal-ui .portal-nav-admin .portal-nav-label { color: #745a24; }
.portal-ui .portal-nav-group .nav-link { color: #334c3b; font-size: .82rem; padding: .4rem .48rem; }
.portal-ui .portal-nav-group .nav-link:hover, .portal-ui .portal-nav-group .nav-link:focus { background: #e6edde; color: #143d2c; }
.portal-ui .portal-account { display: flex; align-items: center; gap: 14px; min-width: 0; }
.portal-ui .portal-account-identity { display: flex; flex: 1 1 auto; flex-direction: column; align-items: flex-end; gap: 7px; min-width: 0; text-align: right; }
.portal-ui .portal-account-name { max-width: 100%; color: var(--ui-muted); font-size: .8rem; line-height: 1.4; overflow-wrap: anywhere; }
.portal-ui .portal-account .user-role-badge { flex: none; white-space: nowrap; }
.portal-ui .portal-account-logout { flex: none; margin: 0; }
.portal-ui .portal-account-logout .btn { white-space: nowrap; }
.portal-ui .user-role-admin { background: #234d35; color: #fff; }
.portal-ui .user-role-consigliere { background: #ead6a2; color: #4f3e1c; }
.portal-ui .user-role-socio { background: #e8eddf; color: #3b5536; }
.portal-ui .admin-menu-item:hover, .portal-ui .admin-menu-item:focus { background: #234d35; color: #fff !important; }
.portal-ui .dropdown-menu { border-color: #dce3d4; border-radius: 9px; box-shadow: 0 12px 32px #173e2a12; }
.portal-ui > .footer { position: static; line-height: 1.7; white-space: normal; padding: 20px 0; background: #edf0e6; font-size: .8rem; }
.portal-ui .footer a { color: #254b32; text-underline-offset: 3px; }
.portal-ui main { min-width: 0; }
.portal-ui main a:not(.btn) { text-underline-offset: 3px; }
.portal-ui main a:where(:not([class])) { color: #285537; }
.portal-ui .btn { min-height: 40px; padding: 10px 16px; border-radius: 7px; font-size: .85rem; font-weight: 600; line-height: 1.4; white-space: normal; }
.portal-ui .btn-sm { min-height: 34px; padding: 7px 11px; font-size: .78rem; }
.portal-ui .btn-primary { --bs-btn-bg: #234d35; --bs-btn-border-color: #234d35; --bs-btn-color: #fff; --bs-btn-hover-bg: #315f42; --bs-btn-hover-border-color: #315f42; --bs-btn-active-bg: #173d29; --bs-btn-active-border-color: #173d29; --bs-btn-disabled-bg: #5e7962; --bs-btn-disabled-border-color: #5e7962; background: #234d35; border-color: #234d35; color: #fff; }
.portal-ui .btn-primary:hover { background: #315f42; border-color: #315f42; color: #fff; }
.portal-ui .btn-outline-primary, .portal-ui .btn-outline-secondary { --bs-btn-hover-bg: #eaf0e2; --bs-btn-hover-color: #193d2b; --bs-btn-active-bg: #e0e8d7; --bs-btn-active-color: #193d2b; color: #365537; background: transparent; border-color: #cbd7c1; }
.portal-ui :is(.btn-outline-primary, .btn-outline-secondary):hover { color: #193d2b; background: #eaf0e2; border-color: #92a888; }
.portal-ui .btn-info { --bs-btn-bg: #edf2e5; --bs-btn-border-color: #d2ddc7; --bs-btn-hover-bg: #dfe8d4; --bs-btn-hover-border-color: #9daf8e; color: #345632; background: #edf2e5; border-color: #d2ddc7; }
.portal-ui .btn-danger { --bs-btn-bg: #a7463d; --bs-btn-border-color: #a7463d; --bs-btn-hover-bg: #8e352d; --bs-btn-hover-border-color: #8e352d; background: #a7463d; border-color: #a7463d; }
.portal-ui .btn-outline-danger { color: #a04439; border-color: #dbb6ae; --bs-btn-hover-bg: #a7463d; --bs-btn-hover-border-color: #a7463d; }
.portal-ui :is(.form-control, .form-select) { min-height: 44px; border-color: #d7dfce; border-radius: 7px; font-size: 16px; color: #294332; }
.portal-ui :is(.form-control, .form-select):focus { border-color: #7d956c; box-shadow: 0 0 0 3px #64845324; }
.portal-ui :is(.form-control, .form-select):disabled, .portal-ui .form-control[readonly] { background: #f0f2e9; color: #5a6b53; }
.portal-ui .form-check-input:checked { background-color: #234d35; border-color: #234d35; }
.portal-ui .form-check-input:focus { border-color: #7d956c; box-shadow: 0 0 0 3px #64845324; }
.portal-ui .form-label { color: #3f563c; font-size: .83rem; font-weight: 600; margin-bottom: 8px; }
.portal-ui .form-text { color: #67745c; line-height: 1.6; }
.portal-ui .text-muted { color: #65725f !important; }
.portal-ui .text-primary { color: #285537 !important; }
.portal-ui .bg-primary { background-color: #285537 !important; }
.portal-ui .card { border-color: var(--ui-line); border-radius: 12px; box-shadow: 0 7px 26px #27473504; overflow: hidden; }
.portal-ui .card-header { padding: 16px 22px; background: #f8f9f3; border-color: var(--ui-line); color: #2d4c32; }
.portal-ui .card-body { padding: 22px; }
.portal-ui .alert { border-radius: 10px; line-height: 1.65; font-size: .9rem; overflow-wrap: anywhere; }
.portal-ui .alert-info { color: #395d38; background: #edf3e6; border-color: #d6e2ca; }
.portal-ui .alert-success { color: #2e5a37; background: #e9f2e4; border-color: #cdddbe; }
.portal-ui .alert-warning { color: #705723; background: #fbf2db; border-color: #ecdcb4; }
.portal-ui .alert-danger { color: #863c34; background: #fbefec; border-color: #e7c6bf; }
.portal-ui .table { --bs-table-color: #344b38; --bs-table-border-color: #e4e9de; --bs-table-striped-bg: #f7f9f3; --bs-table-hover-bg: #eff4e8; --bs-table-active-bg: #e6eddd; font-size: .87rem; }
.portal-ui .table > thead > tr > th { padding: 14px 15px; background: #f3f6ed; color: #5c7052; font-size: .73rem; font-weight: 700; border-bottom-width: 1px; vertical-align: middle; }
.portal-ui .table > tbody > tr > :is(td, th) { padding: 14px 15px; vertical-align: middle; }
.portal-ui .table thead a { color: #365537; text-decoration: none; }
.portal-ui .table thead a:hover { text-decoration: underline; }
.portal-ui .table-responsive { overscroll-behavior-x: contain; }
.portal-ui .page-link { background: #fff; border-color: #dce4d3; color: #315432; border-radius: 6px; font-size: .8rem; }
.portal-ui .page-item.active .page-link { color: #fff; background: #234d35; border-color: #234d35; }
.portal-ui .page-link:hover { color: #193d2b; background: #eaf0e2; }
.portal-ui .pagination { gap: 4px; flex-wrap: wrap; }
.portal-ui :is(a, button, input, select, textarea, [tabindex], [contenteditable]):focus-visible { outline: 3px solid #9b792e; outline-offset: 3px; }
.ui-eyebrow { margin: 0 0 12px; font-size: .67rem; font-weight: 700; letter-spacing: .13em; line-height: 1.6; color: #687759; text-transform: uppercase; }
.ui-hero { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 28px; padding: 36px 43px; margin-bottom: 25px; overflow: hidden; border-radius: 15px; background: var(--ui-green); color: #fffcef; }
.ui-hero::after { content: ""; position: absolute; right: -110px; bottom: -230px; width: 530px; height: 530px; border: 1px solid #ead6a21a; border-radius: 50%; pointer-events: none; }
.ui-hero-copy { position: relative; z-index: 1; min-width: 0; }
.ui-hero .ui-eyebrow { color: var(--ui-gold); }
.ui-hero h1 { margin: 0 0 13px; font: 400 clamp(2.25rem, 4vw, 3.3rem)/1.12 Georgia, "Times New Roman", serif; letter-spacing: -.03em; overflow-wrap: anywhere; }
.ui-hero-copy > p:last-child { max-width: 660px; margin: 0; color: #dfe7d6; font-size: .97rem; line-height: 1.7; }
.ui-hero-icon { position: relative; flex-shrink: 0; display: grid; place-items: center; width: 110px; height: 110px; border: 1px solid #ead6a244; border-radius: 50%; background: #ffffff05; }
.ui-hero-icon svg { width: 51px; height: 51px; fill: none; stroke: #ead6a2; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.ui-panel { margin-bottom: 22px; padding: 27px 30px; border: 1px solid var(--ui-line); border-radius: 12px; background: #fff; box-shadow: 0 7px 26px #27473504; }
.ui-panel-heading { margin-bottom: 23px; }
.ui-panel-heading h2, .ui-form-section h2 { margin: 0 0 9px; font: 400 1.7rem/1.25 Georgia, serif; color: #2a4c30; }
.ui-panel-heading p, .ui-form-section p { color: var(--ui-muted); margin: 0; font-size: .87rem; line-height: 1.7; }
.ui-form-section { margin-top: 16px; padding-bottom: 13px; border-bottom: 1px solid #e5ebde; }
.ui-form-section:first-child { margin-top: 0; }
.ui-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.ui-status { display: inline-flex; align-items: center; padding: 7px 11px; border: 1px solid #d4deca; border-radius: 99px; color: #3f5e35; background: #edf3e5; font-size: .76rem; font-weight: 600; }
.ui-table-hint { display: none; color: #67755e; font-size: .8rem; margin: 12px 0; }
.ui-empty { padding: 46px 28px; text-align: center; background: #fff; border: 1px solid var(--ui-line); border-radius: 13px; }
.ui-empty h2 { font: 400 1.95rem/1.25 Georgia, serif; color: #264a30; }
.ui-empty p { max-width: 650px; margin: 14px auto 0; color: #65735b; line-height: 1.8; }
.ui-empty .ui-actions { justify-content: center; }
.ui-back-link { display: inline-flex; align-items: center; gap: 9px; min-height: 36px; margin-bottom: 19px; color: #4f6d43; font-size: .84rem; font-weight: 600; text-decoration: none; }
.ui-back-link:hover { color: #193e2b; text-decoration: underline; }
.portal-profile .profile-details-form { background: #fff; border-radius: 12px; box-shadow: 0 7px 26px #27473504; }
.portal-ui .profile-page-heading { margin-bottom: 25px; }
.portal-ui .account-settings { max-width: 640px; margin: 0 auto; }
.account-settings h2 { font: 400 1.75rem/1.3 Georgia, serif; margin-bottom: 13px; }
.account-settings .password-rules { padding: 16px 19px; margin-bottom: 24px; border: 1px solid #dce4d3; border-radius: 9px; background: #f6f8f1; color: #5b6e50; font-size: .87rem; line-height: 1.75; }
.account-settings .password-rules strong { display: block; color: #345137; margin-bottom: 4px; }
.portal-import .import-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 23px; align-items: start; }
.portal-import .import-grid > * { min-width: 0; }
.portal-import .import-instructions { padding-left: 20px; font-size: .9rem; line-height: 1.9; color: #5a6d51; }
.portal-import .import-count { font: 400 3rem/1.2 Georgia, serif; color: #264c32; margin: 12px 0 18px; }
.portal-import #loadingSpinner { color: #315b3a; }
@media (min-width: 1200px) {
  .portal-ui .navbar > .container-fluid { max-width: 1800px; align-items: center; gap: 18px; }
  .portal-ui .navbar-brand { flex: none; margin-right: 0; padding: 0; }
  .portal-ui .navbar-brand > span { max-width: 150px; white-space: normal; line-height: 1.3; }
  .portal-ui .navbar-collapse { display: grid !important; grid-template-columns: minmax(0, 1fr) 220px; align-items: center; flex: 1 1 0; gap: 18px; min-width: 0; }
  .portal-ui .portal-nav-groups { flex-direction: column; min-width: 0; max-width: none; gap: 6px; margin: 0; }
  .portal-ui .portal-nav-group { display: grid; grid-template-columns: 116px minmax(0, 1fr); align-items: center; gap: 8px; padding: 5px 12px; }
  .portal-ui .portal-nav-label { min-width: 0; margin: 0; }
  .portal-ui .portal-nav-group .navbar-nav { flex-wrap: wrap; }
}
@media (max-width: 1199.98px) {
  .portal-ui .navbar-collapse { min-width: 0; }
  .portal-ui .portal-nav-label { margin: 0 0 6px 7px; }
  .portal-ui .portal-account { padding: 14px 8px 5px; border-top: 1px solid var(--ui-line); }
  .portal-ui .portal-account-identity { align-items: flex-start; text-align: left; }
}
@media (max-width: 991.98px) {
  .portal-ui:where(:not(.portal-home, .portal-login)) .portal-content { padding: 26px 23px 36px; }
  .ui-hero { padding: 31px 33px; }
  .ui-hero-icon { width: 88px; height: 88px; }
  .ui-panel { padding: 25px; }
  .portal-import .import-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 575.98px) {
  .portal-ui > header .navbar { padding: 12px 9px; }
  .portal-ui .navbar-brand { font-size: .82rem; }
  .portal-ui:where(:not(.portal-home, .portal-login)) .portal-content { padding: 21px 16px 30px; }
  .ui-hero { padding: 28px 25px; border-radius: 12px; gap: 10px; }
  .ui-hero h1 { font-size: 2.35rem; }
  .ui-hero-copy > p:last-child { font-size: .94rem; }
  .ui-hero .ui-eyebrow { font-size: .62rem; }
  .ui-hero-icon { position: absolute; right: -20px; top: 22px; width: 83px; height: 83px; opacity: .25; }
  .ui-hero-icon svg { width: 39px; height: 39px; }
  .ui-panel { padding: 23px 21px; }
  .ui-table-hint { display: block; }
  .portal-ui .btn { font-size: .93rem; }
  .portal-ui .btn-sm { font-size: .82rem; }
  .portal-ui .ui-actions .btn { flex: 1 1 auto; }
}
@media print {
  .portal-shell.portal-ui { display: block; min-height: auto; background: #fff; color: #000; }
  .portal-ui > header, .portal-ui > .footer, .portal-ui > .cookie-notice, .portal-ui .no-print { display: none !important; }
  .portal-ui:where(:not(.portal-home, .portal-login)) .portal-content { padding: 0; margin: 0; max-width: none; }
  .portal-ui .ui-hero { background: #fff; color: #000; padding: 0 0 15px; border-radius: 0; }
  .portal-ui .ui-hero::after, .ui-hero-icon { display: none; }
  .portal-ui .ui-hero p { color: #333; }
  .portal-ui .ui-panel, .portal-ui .card { border: 0; padding: 0; box-shadow: none; }
  .portal-ui .table-responsive { overflow: visible; }
  .portal-ui .table { font-size: 9pt; }
}
