:root {
  --blue: #07579a;
  --blue-dark: #063d6b;
  --yellow: #f3c600;
  --ink: #17212b;
  --muted: #647384;
  --line: #d9e0e7;
  --bg: #f4f7fa;
  --ok: #18794e;
  --warn: #a15c00;
  --bad: #b42318;
}
* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--bg); font: 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
a { color: var(--blue); }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 280px minmax(0, 1fr); }
.page-column { min-width: 0; display: flex; flex-direction: column; min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; padding: 20px 17px 16px; border-top: 7px solid var(--yellow); background: var(--blue-dark); color: white; box-shadow: 2px 0 12px rgba(6,39,68,.12); }
.sidebar-brand { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.brand { color: white; font-size: 20px; font-weight: 750; text-decoration: none; white-space: nowrap; }
.nav-version { display: inline-block; margin-left: 5px; padding: 2px 6px; border: 1px solid rgba(255,255,255,.5); border-radius: 999px; font-size: 11px; font-weight: 750; line-height: 1.2; vertical-align: middle; }
.global-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; width: 100%; }
.global-search input { min-width: 0; background: white; }
.global-search button { white-space: nowrap; }
.side-nav { display: grid; gap: 14px; }
.side-nav-group { display: grid; gap: 2px; }
.side-nav-group h2 { margin: 0 8px 4px; color: #b9d2e7; font-size: 10px; letter-spacing: .09em; text-transform: uppercase; }
.side-nav-group a { display: block; padding: 7px 9px; border-radius: 6px; color: white; font-size: 13px; font-weight: 650; text-decoration: none; }
.side-nav-group a:hover, .side-nav-group a:focus-visible { background: rgba(255,255,255,.12); outline: none; }
.side-nav-group a.active { background: white; color: var(--blue-dark); }
.sidebar-tools { margin-top: auto; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.18); }
.sidebar-user { display: grid; gap: 3px; padding: 12px; border-radius: 8px; background: rgba(255,255,255,.09); }
.sidebar-user span, .sidebar-user small { color: #d7e6f2; font-size: 11px; }
.sidebar-user strong { font-size: 14px; }
.sidebar-user form { margin-top: 7px; }
.sidebar-toggle { display: none; }
.inactive-toggle { white-space: nowrap; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.container { width: 100%; max-width: 1480px; margin: 0 auto; padding: 24px; }
.app-footer { width: 100%; max-width: 1480px; margin: auto auto 0; padding: 20px 24px 18px; color: var(--muted); font-size: 12px; text-align: right; }
h1 { font-size: 28px; margin: 0 0 20px; }
h2 { font-size: 20px; margin: 0 0 14px; }
h3 { font-size: 16px; margin: 0 0 10px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.card { background: white; border: 1px solid var(--line); border-radius: 10px; padding: 18px; box-shadow: 0 1px 2px rgba(15,35,55,.04); }
.grid { display: grid; gap: 16px; }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 20px; }
.stat { background: white; border: 1px solid var(--line); border-left: 4px solid var(--blue); border-radius: 8px; padding: 14px; }
.stat:is(a, button) { position: relative; color: var(--ink); text-decoration: none; cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.stat:is(a, button)::after { content: "Details ›"; display: block; margin-top: 9px; color: var(--blue); font-size: 12px; font-weight: 750; text-transform: none; letter-spacing: 0; }
.stat:is(a, button):hover, .stat:is(a, button):focus-visible { border-color: var(--blue); box-shadow: 0 5px 16px rgba(6,61,107,.14); transform: translateY(-1px); outline: none; }
.stat span { display: block; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.stat strong { display: block; font-size: 24px; margin-top: 4px; }
.metric-explanation { display: grid; grid-template-columns: minmax(110px, .25fr) 1fr auto; align-items: center; gap: 18px; border-left: 6px solid var(--blue); }
.metric-explanation > span { color: var(--muted); font-size: 12px; font-weight: 750; text-transform: uppercase; letter-spacing: .04em; }
.metric-explanation p { margin: 0; }
.metric-explanation strong { white-space: nowrap; color: var(--blue-dark); font-size: 24px; }
.toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.toolbar .grow { flex: 1; }
.space-top { margin-top: 24px; }
.space-top-small { margin-top: 8px; }
.space-bottom { margin-bottom: 16px; }
button, .button { appearance: none; border: 1px solid var(--blue); border-radius: 6px; background: var(--blue); color: white; padding: 8px 12px; font: inherit; font-weight: 650; text-decoration: none; cursor: pointer; display: inline-block; }
button:hover, .button:hover { background: var(--blue-dark); }
.button.secondary, button.secondary { background: white; color: var(--blue); }
.button.danger, button.danger { background: white; color: var(--bad); border-color: var(--bad); }
.button.small, button.small { padding: 5px 8px; font-size: 12px; }
label { display: block; font-weight: 650; margin-bottom: 4px; }
input, select, textarea { width: 100%; border: 1px solid #b9c4cf; border-radius: 6px; background: white; color: var(--ink); padding: 8px 9px; font: inherit; }
.select-search-input { margin-bottom: 5px; }
.search-field { min-width: min(380px, 100%); }
input[type="checkbox"], input[type="radio"] { width: auto; }
textarea { min-height: 90px; resize: vertical; }
.field { margin-bottom: 12px; }
.checkbox { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; }
.inline-form { display: flex; flex-wrap: wrap; align-items: end; gap: 8px; }
.inline-form .field { margin: 0; min-width: 130px; flex: 1; }
.table-wrap { overflow-x: auto; background: white; border: 1px solid var(--line); border-radius: 9px; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 9px 10px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
th { background: #edf3f8; font-size: 12px; text-transform: uppercase; letter-spacing: .025em; color: #435367; }
.sortable-column { cursor: pointer; user-select: none; }
.sortable-column::after { content: " ↕"; color: #8391a2; font-size: 11px; }
.sortable-column[aria-sort="ascending"]::after { content: " ↑"; color: var(--blue); }
.sortable-column[aria-sort="descending"]::after { content: " ↓"; color: var(--blue); }
.open-invoices { min-width: 640px; text-align: left; }
.open-invoices summary { white-space: nowrap; }
.payment-dialog { width: min(680px, calc(100vw - 32px)); max-height: 90vh; padding: 0; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); }
.payment-dialog::backdrop { background: rgba(6, 27, 48, .55); }
.payment-dialog-header { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 12px; padding: 14px 18px; background: white; border-bottom: 1px solid var(--line); }
.payment-dialog-header h2 { flex: 1; margin: 0; }
.payment-dialog-body { padding: 18px; overflow-y: auto; }
.payment-dialog-body form + form { padding-top: 14px; border-top: 1px solid var(--line); }
tr:last-child td { border-bottom: 0; }
.acquirer-row, .acquirer-card { --acq-bg: #f5f7f9; --acq-border: #8794a3; --acq-ink: #344252; }
tr.acquirer-row > td { background-color: var(--acq-bg); }
tr.acquirer-row > td:first-child { box-shadow: inset 5px 0 var(--acq-border); }
details.acquirer-card { background-color: var(--acq-bg); border-left: 6px solid var(--acq-border); }
.acquirer-chip { display: inline-block; padding: 3px 8px; border: 1px solid var(--acq-border); border-radius: 5px; color: var(--acq-ink); background: var(--acq-bg); font-weight: 750; white-space: nowrap; }
.acq-open { --acq-bg: #f4f5f6; --acq-border: #8a949f; --acq-ink: #596570; }
.acq-multi { --acq-bg: #efe8fb; --acq-border: #7352a8; --acq-ink: #4b3373; }
.acq-0, .acq-12, .acq-24 { --acq-bg: #e5f4ff; --acq-border: #2682bd; --acq-ink: #15577f; }
.acq-1, .acq-13, .acq-25 { --acq-bg: #e8f7ed; --acq-border: #358a55; --acq-ink: #1e5e37; }
.acq-2, .acq-14, .acq-26 { --acq-bg: #fff1dc; --acq-border: #c17a17; --acq-ink: #7a4b0b; }
.acq-3, .acq-15, .acq-27 { --acq-bg: #f4eaff; --acq-border: #8354bd; --acq-ink: #573181; }
.acq-4, .acq-16, .acq-28 { --acq-bg: #ffe8eb; --acq-border: #bd5261; --acq-ink: #7f303c; }
.acq-5, .acq-17, .acq-29 { --acq-bg: #e4f7f4; --acq-border: #21867c; --acq-ink: #125b54; }
.acq-6, .acq-18, .acq-30 { --acq-bg: #fff9d9; --acq-border: #ae8d16; --acq-ink: #6e5909; }
.acq-7, .acq-19, .acq-31 { --acq-bg: #e9ecff; --acq-border: #5269bd; --acq-ink: #334589; }
.acq-8, .acq-20, .acq-32 { --acq-bg: #fce8f5; --acq-border: #b24d91; --acq-ink: #793263; }
.acq-9, .acq-21, .acq-33 { --acq-bg: #edf5dc; --acq-border: #708f2e; --acq-ink: #49601b; }
.acq-10, .acq-22, .acq-34 { --acq-bg: #ffeadf; --acq-border: #b8653c; --acq-ink: #7a3e23; }
.acq-11, .acq-23, .acq-35 { --acq-bg: #e2f3f7; --acq-border: #287f91; --acq-ink: #175768; }
tr.acq-pattern-1 > td, details.acq-pattern-1 { background-image: repeating-linear-gradient(135deg, transparent 0, transparent 9px, color-mix(in srgb, var(--acq-border) 10%, transparent) 9px, color-mix(in srgb, var(--acq-border) 10%, transparent) 12px); }
tr.acq-pattern-2 > td, details.acq-pattern-2 { background-image: radial-gradient(color-mix(in srgb, var(--acq-border) 18%, transparent) .8px, transparent .8px); background-size: 7px 7px; }
.year-inactive { color: #8a949f; }
tr.year-inactive > td, details.year-inactive { background-color: #f1f3f5 !important; background-image: none !important; }
.year-inactive a { color: #788590; }
.year-inactive summary { color: #8a949f; }
.year-inactive .acquirer-chip { filter: grayscale(.65); opacity: .78; }
.hide-inactive .year-inactive, .hide-inactive .member-inactive { display: none !important; }
.result-stat { border-left-color: var(--ok); }
.number { text-align: right; white-space: nowrap; }
.badge { display: inline-block; border-radius: 999px; padding: 3px 8px; background: #e8eef5; font-size: 12px; white-space: nowrap; }
.badge.ok { color: var(--ok); background: #e9f7f0; }
.badge.warn { color: var(--warn); background: #fff4df; }
.badge.bad { color: var(--bad); background: #ffefed; }
.flash { padding: 11px 14px; border-radius: 7px; margin-bottom: 14px; background: #e8eef5; }
.flash.success { color: var(--ok); background: #e9f7f0; }
.flash.error { color: var(--bad); background: #ffefed; }
details { background: white; border: 1px solid var(--line); border-radius: 8px; margin: 10px 0; }
summary { cursor: pointer; padding: 12px 14px; font-weight: 700; }
details > .details-body { padding: 0 14px 14px; }
.danger-link { color: var(--bad); font-size: 12px; padding: 7px 9px; white-space: nowrap; }
.compact-form { min-width: 250px; padding: 0 10px 10px; }
.compact-form textarea { min-height: 68px; }
.logo-thumb { width: 120px; height: 70px; object-fit: contain; object-position: center; background: white; border: 1px solid var(--line); border-radius: 5px; }
.thank-you-photo-thumb { width: min(100%, 420px); max-height: 230px; object-fit: contain; object-position: center; background: white; border: 1px solid var(--line); border-radius: 6px; }
.auth-page { min-height: 100vh; display: grid; place-items: center; padding: 20px; background: linear-gradient(150deg, #063d6b, #07579a); }
.auth-card { width: min(430px, 100%); background: white; border-top: 8px solid var(--yellow); border-radius: 10px; padding: 28px; box-shadow: 0 18px 60px rgba(0,0,0,.25); }
.auth-card h1 { color: var(--blue-dark); }
.qr { display: block; width: 220px; max-width: 100%; margin: 14px auto; }
.recovery-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 18px 0; }
.recovery-codes code { display: block; padding: 9px; text-align: center; font-size: 15px; letter-spacing: .04em; }
.recovery-sheet { max-width: 720px; margin: 0 auto; }
.invoice-preview { max-width: 800px; margin: auto; background: white; padding: 30px; border: 1px solid var(--line); }
.invoice-preview .amount { text-align: center; font-weight: 800; font-size: 24px; margin: 30px; }
.historical-invoice-preview { padding: 0 42px 34px; overflow: hidden; }
.invoice-header-banner { display: block; width: calc(100% + 84px); height: auto; margin: 0 -42px 42px; }
.invoice-preview-officers { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; min-height: 145px; font-size: 13px; }
.invoice-address-box { width: 56%; min-height: 120px; border: 1px solid #9aa3ad; padding: 14px; margin-bottom: 18px; }
.historical-invoice-preview h2 { text-align: center; margin: 30px 0; }
.invoice-preview-footer { border-top: 2px solid var(--blue); margin-top: 34px; padding-top: 8px; font-size: 12px; font-weight: 700; }
.logo-wall { height: 100vh; overflow: hidden; background: white; padding: 3vh 3vw; display: flex; flex-direction: column; }
.logo-wall h1 { text-align: center; color: var(--blue); }
.logo-grid { flex: 1; min-height: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); grid-auto-rows: minmax(0, 1fr); align-items: stretch; gap: clamp(6px, 1.5vw, 24px); }
.logo-cell { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 0; }
.logo-cell img { width: 100%; height: 100%; min-height: 0; object-fit: contain; object-position: center; }
.portal { max-width: 680px; margin: 40px auto; }
code { background: #eef2f6; padding: 2px 5px; border-radius: 4px; }
fieldset { border: 1px solid var(--line); border-radius: 7px; padding: 10px 12px; margin: 0 0 12px; }
legend { color: var(--muted); font-weight: 700; padding: 0 5px; }
.error-text { color: var(--bad); }
.compact-card { margin-top: 12px; padding: 12px; box-shadow: none; }
.member-summary { font-size: 13px; }
.member-primary-icon { display: inline-grid; place-items: center; min-width: 26px; min-height: 26px; border-radius: 50%; background: #edf3f8; color: var(--blue-dark); }
.role-icon { display: inline-grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; background: #edf3f8; border: 1px solid #c4d0dc; }
.role-icon.medal-gold { background: #fff3b8; border-color: #c49b00; }
.role-icon.medal-red { background: #ffe1df; border-color: #b42318; }
.role-icon.medal-green { background: #ddf3e6; border-color: #18794e; }
.role-icon.medal-gray { background: #e7eaed; border-color: #647384; }
.role-icon.award { background: #fff3b8; border-color: #c49b00; }
.role-icon.founder { background: #fff3b8; border-color: #c49b00; }
.member-display { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px; vertical-align: middle; }
.member-functions, .member-awards { display: inline-flex; align-items: center; gap: 2px; }
.member-display .role-icon { width: 23px; height: 23px; font-size: 13px; }
.color-dot { display: inline-block; width: 13px; height: 13px; border-radius: 50%; margin-right: 6px; background: var(--dot-color); vertical-align: -1px; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; padding: 1px; background: var(--line); overflow-x: auto; }
.calendar-weekday { background: var(--blue-dark); color: white; font-weight: 750; text-align: center; padding: 8px; }
.calendar-day { min-width: 128px; min-height: 126px; background: white; padding: 7px; }
.calendar-day.outside { background: #f0f2f4; color: #8a949f; }
.calendar-day.today { box-shadow: inset 0 0 0 3px var(--yellow); }
.calendar-event { display: block; margin-top: 5px; padding: 4px 5px; border-left: 5px solid var(--event-color); border-radius: 4px; background: color-mix(in srgb, var(--event-color) 12%, white); color: var(--ink); font-size: 12px; line-height: 1.25; text-decoration: none; }
.calendar-event span { color: var(--muted); font-size: 10px; }
.calendar-note { display: block; margin-top: 4px; color: #7a4b0b; font-size: 11px; }
.dashboard-heading { margin-bottom: 14px; }
.dashboard-upcoming { border-top: 5px solid var(--blue); }
.appointment-list { display: grid; }
.appointment-row { display: grid; grid-template-columns: 105px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 11px 12px; border-bottom: 1px solid var(--line); border-left: 6px solid var(--event-color); color: var(--ink); text-decoration: none; }
.appointment-row:hover { background: #f4f8fb; }
.appointment-row:last-child { border-bottom: 0; }
.appointment-row time { display: grid; }
.appointment-row time strong { font-size: 17px; }
.appointment-row time span, .appointment-main small { color: var(--muted); font-size: 12px; }
.appointment-main { display: grid; gap: 2px; }
.appointment-status { color: var(--muted); font-size: 12px; text-align: right; }
.more-appointments { margin-top: 12px; }
.calendar-jump .field { min-width: 110px; }
.calendar-jump input { width: 95px; }
.view-switch { display: flex; gap: 3px; }
.central-calendar .calendar-day.outside { color: #758293; background: #f3f5f7; }
.central-calendar .calendar-day.outside .calendar-event { opacity: .86; }
.year-calendar { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.mini-month { border: 1px solid var(--line); border-radius: 8px; padding: 11px; background: white; }
.mini-month h3 { margin-bottom: 8px; }
.mini-month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.mini-weekday { text-align: center; color: var(--muted); font-size: 10px; font-weight: 750; }
.mini-day { position: relative; min-height: 27px; display: grid; place-items: center; border-radius: 4px; color: var(--ink); text-decoration: none; font-size: 11px; }
.mini-day:hover { background: #e9f2fa; }
.mini-day.outside { color: #bdc4cb; }
.mini-day.today { box-shadow: inset 0 0 0 2px var(--yellow); }
.mini-day i { position: absolute; bottom: 2px; width: 5px; height: 5px; border-radius: 50%; background: var(--event-color); }
.mini-event-list { display: grid; gap: 3px; margin-top: 8px; }
.mini-event-list a { overflow: hidden; color: var(--ink); text-decoration: none; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.mini-event-list a span { display: inline-block; margin-right: 3px; border-left: 4px solid var(--event-color); padding-left: 4px; color: var(--muted); }
.favorite-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 9px; }
.favorite-links a { display: flex; align-items: center; gap: 9px; min-height: 54px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); text-decoration: none; background: #f8fafc; }
.favorite-links a:hover { border-color: var(--blue); background: #eef6fc; }
.favorite-links a span { font-size: 22px; }
.favorite-editor { margin-top: 12px; }
.favorite-options { display: flex; flex-wrap: wrap; gap: 9px 18px; margin-bottom: 12px; }
.activity-heading { padding-top: 6px; }
.activity-card { border-top: 6px solid var(--blue); }
.advent-activity { border-top-color: #b42318; }
.activity-card-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.activity-card-header > div { display: flex; align-items: center; gap: 9px; }
.activity-card-header h2 { margin: 0; }
.activity-icon { font-size: 28px; }
.compact-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.compact-stats .stat strong { font-size: 18px; }
.compact-stats .stat { padding: 10px; }
.compact-meeting-list { display: grid; gap: 6px; }
.compact-meeting-list a { display: grid; padding: 7px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.compact-meeting-list a span { color: var(--muted); font-size: 12px; }
.meeting-section-nav { position: sticky; top: 0; z-index: 5; display: flex; gap: 5px; margin-bottom: 14px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,.95); }
.meeting-section-nav a { padding: 6px 10px; border-radius: 5px; text-decoration: none; font-weight: 700; }
.meeting-section-nav a:hover { background: #edf3f8; }
.document-list { display: grid; gap: 8px; }
.document-list article { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.document-list article > div:first-child { display: grid; }
.document-list article span { color: var(--muted); font-size: 12px; }
.search-groups { display: grid; gap: 14px; margin-top: 14px; }
.search-results { display: grid; }
.search-results > a { display: grid; gap: 2px; padding: 10px 4px; border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; }
.search-results > a:hover { background: #f4f8fb; }
.search-results > a span { color: var(--muted); font-size: 12px; }
.search-summary { margin: 18px 0 0; }
.advent-day > summary { border-left: 7px solid #b42318; }
.role-board { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; overflow-x: auto; }
.role-column { min-width: 155px; border: 1px solid var(--role-color); border-top: 6px solid var(--role-color); border-radius: 7px; padding: 9px; background: color-mix(in srgb, var(--role-color) 8%, white); }
.role-column h3 { min-height: 42px; }
.assignment { padding: 7px; margin-top: 6px; border-radius: 5px; background: white; border: 1px solid color-mix(in srgb, var(--role-color) 35%, #d9e0e7); }
.assignment form { display: inline; }
.dynamic-row { display: grid; grid-template-columns: 2fr 1fr 1.2fr 2fr auto; gap: 7px; margin-bottom: 7px; align-items: center; }
.calculator-link { background: #8d1b2a; border-color: #8d1b2a; }
.calculator-page { min-height: 100vh; background: #12202d; padding: 14px; }
.calculator-shell { max-width: 920px; margin: 0 auto; color: white; }
.calculator-header { display: flex; align-items: center; gap: 15px; background: #063d6b; border-top: 7px solid var(--yellow); padding: 15px; border-radius: 12px; }
.calculator-header div { flex: 1; }
.calculator-header h1 { margin: 0; }
.calculator-header p { margin: 3px 0 0; color: #dbe8f4; }
.product-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 14px 0; }
.product-button { min-height: 112px; display: grid; grid-template-areas: "name count" "price count"; text-align: left; padding: 14px; border: 0; border-radius: 11px; background: var(--product-color); color: white; box-shadow: inset 0 -4px rgba(0,0,0,.16); }
.product-button:hover { background: color-mix(in srgb, var(--product-color) 86%, black); }
.product-button span { grid-area: name; font-size: 19px; font-weight: 800; }
.product-button strong { grid-area: price; font-size: 17px; }
.product-button em { grid-area: count; align-self: center; justify-self: end; min-width: 48px; text-align: center; padding: 8px; border-radius: 9px; background: rgba(0,0,0,.22); font-style: normal; font-size: 20px; }
.calculator-summary { display: grid; grid-template-columns: 1.2fr 1fr 1.2fr; gap: 10px; padding: 14px; border-radius: 12px; background: white; color: var(--ink); }
.calculator-summary > div, .calculator-summary > label { display: flex; flex-direction: column; gap: 3px; }
.calculator-summary strong { font-size: 30px; color: var(--blue-dark); }
.calculator-summary input { font-size: 24px; }
.calculator-method { grid-column: 1 / -1; flex-direction: row !important; align-items: center; }
.calculator-method .active { background: var(--blue); color: white; }
.wide-auth { width: min(920px, 100%); }
.help-intro { border-top: 5px solid var(--yellow); }
.help-grid { grid-template-columns: repeat(auto-fit, minmax(285px, 1fr)); }
.help-card { display: flex; flex-direction: column; }
.help-card h2 { color: var(--blue-dark); }
.help-card ul { margin: 0; padding-left: 20px; }
.help-card li + li { margin-top: 6px; }
.help-card .button { align-self: flex-start; margin-top: auto; }
.security-note { border-left: 6px solid var(--ok); }
.trusted-device-list { display: grid; gap: 10px; }
.trusted-device { display: grid; gap: 3px; padding: 12px; border: 1px solid var(--line); border-radius: 7px; background: #f8fafc; }
@media (max-width: 900px) {
  .app-shell { display: block; }
  .page-column { padding-top: 54px; }
  .sidebar-toggle { position: fixed; z-index: 60; top: 9px; left: 12px; display: inline-block; box-shadow: 0 3px 10px rgba(0,0,0,.2); }
  .sidebar { position: fixed; z-index: 55; top: 0; left: 0; width: min(310px, 88vw); height: 100vh; transform: translateX(-105%); transition: transform .2s ease; box-shadow: 6px 0 28px rgba(0,0,0,.3); }
  body.sidebar-open { overflow: hidden; }
  body.sidebar-open .sidebar { transform: translateX(0); }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .container { padding: 16px; }
  .calendar-grid { grid-template-columns: repeat(7, minmax(115px, 1fr)); }
  .role-board { grid-template-columns: repeat(5, minmax(150px, 1fr)); }
  .dynamic-row { grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
  .product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calculator-summary { grid-template-columns: 1fr; }
  .calculator-method { grid-column: 1; }
  .metric-explanation { grid-template-columns: 1fr; gap: 6px; }
  .year-calendar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .appointment-row { grid-template-columns: 90px minmax(0, 1fr); }
  .appointment-status { display: none; }
  .document-list article { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 520px) {
  .year-calendar { grid-template-columns: 1fr; }
  .calendar-toolbar { align-items: stretch; }
  .calendar-jump { width: 100%; }
  .appointment-row { grid-template-columns: 72px minmax(0, 1fr); gap: 8px; padding: 9px 7px; }
  .favorite-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .meeting-section-nav { overflow-x: auto; }
  .product-grid { grid-template-columns: 1fr 1fr; gap: 7px; }
  .product-button { min-height: 96px; padding: 10px; }
  .product-button span { font-size: 16px; }
  .product-button em { font-size: 17px; min-width: 42px; }
  .calculator-summary strong { font-size: 26px; }
}
@media print {
  .sidebar, .sidebar-toggle, .toolbar, button, .button, .no-print, .app-footer { display: none !important; }
  .app-shell, .page-column { display: block; min-height: 0; padding: 0; }
  body, .container { background: white; padding: 0; }
  .card, .table-wrap { box-shadow: none; border: 0; }
}

.list-row { padding: .75rem 0; border-bottom: 1px solid var(--line); }
.list-row:last-child { border-bottom: 0; }
.pre-wrap { white-space: pre-wrap; line-height: 1.55; }
.minutes-editor { min-height: 28rem; }
.agenda-item { margin-bottom: .7rem; border-left: 4px solid #07579a; }
.agenda-heading-row { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.agenda-heading-row h2 { margin-bottom:4px; }
.agenda-plus { flex:0 0 auto; min-width:76px; font-weight:700; }
.agenda-summary { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.agenda-summary > span { min-width:0; }
.agenda-minus { width:30px; height:30px; min-width:30px; padding:0; border-radius:50%; background:white; color:var(--bad); border:1px solid var(--bad); font-size:20px; font-weight:700; line-height:1; }
.agenda-minus:hover { background:var(--bad); color:white; }
.agenda-item-new { border-left-color:#4c7f3b; }
.agenda-add-bottom { display:flex; justify-content:flex-start; margin:.25rem 0 .85rem; }
@media (max-width: 700px) { .agenda-heading-row { align-items:stretch; flex-direction:column; } .agenda-plus { align-self:flex-start; } }
.textarea-tools { display: flex; justify-content: flex-end; margin-bottom: .35rem; }

/* Lions Commander 0.17: readable history, documents and club-wide navigation. */
.sidebar-brand { display:block; }
.sidebar-brand .brand { white-space:normal; line-height:1.15; }
.sidebar-brand .brand small { display:block; font-size:11px; margin-top:8px; color:#d8e5f0; font-weight:500; }
.sidebar-brand .nav-version { margin:10px 0 0; }
.commander-heading { display:flex; justify-content:space-between; gap:20px; align-items:center; margin-bottom:22px; }
.commander-heading h1 { margin:4px 0 8px; }
.commander-heading p { margin:5px 0; }
.eyebrow { font-size:11px; font-weight:750; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.commander-tabs { display:flex; gap:6px; flex-wrap:wrap; border-bottom:1px solid var(--line); padding-bottom:12px; margin:0 0 24px; }
.commander-tabs a { text-decoration:none; padding:8px 13px; border-radius:6px; font-weight:650; background:white; }
.commander-tabs a.selected { background:var(--blue-dark); color:white; }
.commander-notice { padding:14px 17px; border-left:4px solid #8296ac; background:#edf3f8; border-radius:0 6px 6px 0; }
.commander-notice.warning { border-color:#b07812; background:#fff7e7; }
.commander-badge { display:inline-block; padding:5px 9px; border:1px solid #c6d5df; border-radius:5px; font-size:12px; }
.badge-current { color:#225b43; border-color:#b7d8c5; background:#eff8f2; }
.badge-pending { color:#784b09; background:#fff6e5; border-color:#e6cd9d; }
.commander-filter { display:flex; gap:16px; flex-wrap:wrap; align-items:end; margin:16px 0; }
.commander-filter label { flex:1 1 190px; }
.commander-result-title { margin:24px 0 12px; }
.commander-result-title h2 { margin-bottom:3px; }
.commander-result-title p { margin:0; color:var(--muted); }
.commander-record { margin-bottom:10px; scroll-margin-top:12px; }
.commander-record summary { cursor:pointer; font-weight:650; line-height:1.6; }
.commander-record[open] summary { margin-bottom:14px; }
.commander-form { display:grid; gap:16px; }
.commander-form label { font-size:14px; margin:0; }
.commander-form label input,.commander-form label textarea,.commander-form label select { margin-top:6px; font-weight:400; }
.commander-form .checkbox input { margin:0; }
.commander-form button { justify-self:start; }
.commander-meta { display:flex; flex-wrap:wrap; gap:12px 24px; font-size:13px; }
.commander-hash,.commander-diff { overflow-wrap:anywhere; white-space:pre-wrap; font-size:12px; line-height:1.7; max-width:100%; }
.commander-diff { max-height:480px; overflow:auto; background:#f3f6f8; padding:14px; border-radius:6px; }
.statute-text { font:inherit; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.8; margin:14px 0; }
.statute-editor { min-height:380px; line-height:1.6; }
.honour-board { background:linear-gradient(135deg,#102d47,#183f59); color:#fbf7e9; padding:34px; border:1px solid #aa8945; border-radius:12px; }
.honour-intro { text-align:center; margin-bottom:30px; }
.honour-intro .eyebrow { color:#e0c080; }
.honour-intro h2 { margin:12px 0 6px; font-size:24px; font-weight:550; }
.honour-intro p { color:#cedae3; font-size:13px; }
.honour-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:20px; }
.honour-card { border:1px solid #b9a16e; border-radius:8px; background:#fcfaf3; color:#243948; padding:26px 20px; text-align:center; display:flex; flex-direction:column; align-items:center; }
.honour-initials { display:grid; place-items:center; width:72px; height:72px; border:2px solid #b99b56; outline:5px solid #f1eadb; border-radius:50%; background:#e9dfc8; color:#584725; font:600 24px Georgia,serif; margin-bottom:20px; }
.honour-card .honour-year { letter-spacing:.06em; color:#776037; font-size:14px; font-weight:750; margin:2px 0 13px; }
.honour-card h3 { font:600 23px/1.3 Georgia,serif; margin:0 0 6px; overflow-wrap:anywhere; }
.honour-card p { margin:6px 0; }
.honour-card a { margin-top:18px; font-size:12px; }
.honour-source { font-size:12px; color:#596673; overflow-wrap:anywhere; }
.honour-card .commander-badge { margin-top:12px; }
.commander-empty { padding:25px; text-align:center; grid-column:1 / -1; }
@media (min-width:1200px) { .honour-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:700px) {
 .commander-heading { align-items:start; flex-direction:column; gap:10px; }
 .commander-heading h1 { font-size:26px; }
 .commander-form .grid { grid-template-columns:1fr; }
 .honour-board { padding:20px 16px; }
 .honour-grid { grid-template-columns:1fr; }
 .honour-intro h2 { font-size:22px; }
 .commander-filter button { width:100%; }
 .commander-meta { display:grid; gap:7px; }
}
@media print {
 .honour-board { color:#17212b; background:white; padding:10px; }
 .honour-intro .eyebrow,.honour-intro p { color:#555; }
 .honour-grid { grid-template-columns:repeat(3,1fr); }
 .honour-card { break-inside:avoid; }
 .commander-tabs,.commander-filter,.commander-form { display:none!important; }
}

/* Commander: bounded navigation and readable system disclosure. */
.sidebar { overflow:hidden; gap:10px; }
.sidebar-brand,.global-search,.sidebar-tools,.sidebar-user { flex-shrink:0; }
.side-nav { display:block; flex:1; min-height:0; overflow-y:auto; margin-right:-8px; padding-right:8px; }
.side-nav-group { margin-bottom:14px; }
.side-nav details.side-nav-group { display:block; background:transparent; color:white; border-color:rgba(255,255,255,.3); }
.side-nav details.side-nav-group > summary { color:white; padding:10px 9px; font-size:13px; }
.side-nav details.side-nav-group > summary:focus-visible { outline:2px solid var(--yellow); outline-offset:-2px; }
.sidebar-tools { margin-top:0; }
@media print { .side-nav { overflow:visible; } }

/* 0.18: supplied branding, compact dashboard, private birthday projections. */
.brand-with-logo { display:flex; align-items:center; gap:12px; }
.sidebar-logo { width:76px; height:76px; flex:0 0 76px; object-fit:contain; border-radius:14px; background:#fff; }
.sidebar-brand .brand { font-size:17px; }
.sidebar-brand .brand small { margin-top:5px; font-size:10px; }
.login-logo { display:block; width:min(260px,78%); height:auto; margin:0 auto 18px; border-radius:20px; }
.auth-card h1,.auth-card > .muted { text-align:center; }
.quick-access { margin-bottom:18px; padding:15px 18px; }
.quick-access h2 { font-size:16px; margin:0 0 10px; }
.quick-access .favorite-links a { min-height:43px; padding:7px 11px; }
.quick-access .favorite-links a span { font-size:18px; }
.quick-access .favorite-editor { margin-top:10px; }
.quick-access .favorite-editor > summary { font-size:12px; padding:6px; }
.dashboard-heading { margin-bottom:12px; }
.dashboard-heading h1 { margin:0; }
.dashboard-upcoming { padding:10px 18px; }
.appointment-row { padding:9px 10px; }
.calendar-toolbar h2 { margin:0; }
.calendar-birthday { display:block; margin-top:4px; padding:5px 6px; background:#fff4ce; border-left:3px solid #bd8b19; color:#543d09; border-radius:4px; text-decoration:none; font-size:12px; line-height:1.3; overflow-wrap:anywhere; }
.calendar-birthday small { display:block; color:#695323; font-size:10px; }
.calendar-birthday:focus-visible { outline:2px solid #07579a; }
.birthday-symbol { color:#a17612; }
.birthday-row { border-left:3px solid #bd8b19; background:#fffbef; }
.mini-day .event-dot { background:#07579a; left:calc(50% - 6px); }
.mini-day .birthday-dot { position:absolute; bottom:2px; left:calc(50% + 2px); width:5px; height:5px; border-radius:50%; background:#a17612; }
.mini-day.has-birthdays { background:#fff4ce; }
.mini-event-list .birthday-list-item { color:#695323; }
.project-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.project-card h2 { font-size:20px; margin-top:16px; }
.project-card h2 a { text-decoration:none; color:var(--ink); }
.project-card-values,.project-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.project-card-values { margin-top:20px; padding-top:14px; border-top:1px solid var(--line); }
.project-card-values span,.project-meta span { color:var(--muted); font-size:12px; }
.project-card-values strong,.project-meta strong { display:block; color:var(--ink); font-size:17px; }
.project-meta { grid-template-columns:repeat(4,minmax(0,1fr)); }
.project-filters { align-items:end; }
.grant-record { padding:16px 0; border-top:1px solid var(--line); }
.grant-record.voided { opacity:.7; }
.grant-record.voided > .toolbar strong { text-decoration:line-through; }
.preserve-lines { white-space:pre-wrap; overflow-wrap:anywhere; }
#favorites,#calendar,#grants,#partners { scroll-margin-top:20px; }
@media (max-width:700px) {
 .project-grid,.project-meta { grid-template-columns:1fr; }
 .birthday-filter { min-width:120px; }
 .central-calendar { grid-template-columns:repeat(7,minmax(0,1fr)); }
 .central-calendar .calendar-day { min-height:96px; padding:4px 2px; min-width:0; }
 .calendar-event,.calendar-birthday { font-size:10px; padding:4px 3px; overflow-wrap:anywhere; }
 .calendar-birthday small { font-size:9px; }
 .calendar-toolbar { gap:8px; }
 .calendar-jump { flex-wrap:wrap; }
 .calendar-jump .field { min-width:0; }
 .quick-access .favorite-links { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .appointment-row { gap:6px; }
 .project-card-values { grid-template-columns:1fr; }
}

/* Readable narrow screens: date grid markers plus complete monthly agenda. */
.favorite-links a { min-width:0; }
.favorite-links a strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.quick-access > .toolbar { margin-bottom:5px; }
.calendar-event { --event-color:#07579a; }
.calendar-event .event-name { color:var(--ink); font-size:inherit; }
.mobile-month-agenda { display:none; }
@media (max-width:600px) {
 .calendar-jump { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; }
 .calendar-jump .field { min-width:0; width:100%; }
 .calendar-jump .birthday-filter { min-width:0; }
 .central-calendar .calendar-day { min-height:70px; padding:5px 3px; }
 .central-calendar .calendar-event { min-height:18px; text-align:center; border-left-width:2px; padding:0; }
 .central-calendar .calendar-event::before { content:"\2022"; color:#07579a; font-size:16px; }
 .central-calendar .event-time,.central-calendar .event-name { display:none; }
 .central-calendar .calendar-birthday { min-height:20px; padding:0 1px; text-align:center; border-left-width:2px; font-size:14px; }
 .central-calendar .calendar-birthday .birthday-name,.central-calendar .calendar-birthday small { display:none; }
 .mobile-month-agenda { display:block; margin-top:18px; }
 .mobile-month-agenda h3 { font-size:15px; }
 .mobile-month-agenda .appointment-row { grid-template-columns:65px minmax(0,1fr); padding:9px 5px; }
 .mobile-month-agenda .appointment-row time strong { font-size:13px; }
 .mobile-month-agenda .appointment-main { font-size:12px; }
 .mobile-month-agenda .appointment-status { display:none; }
}

/* 0.19 document workflows */
.actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.button-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
