@charset "UTF-8";
@font-face {
  font-family: "Outfit";
  src: url("fonts/outfit-variable.ttf") format("truetype");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}
/* Keep native image gestures disabled on photographs throughout the interface. */
img, picture, .public-activity-photo, [data-activity-preview-photo] {
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
  user-select: none;
}
/* Shared colours and type, following the restrained Mentor interface. */
:root {
  --field-height: 38px;
  --panel-muted: #e7e7e7;
  --paper: #efeee7;
  --white: #fff;
  --ink: #243731;
  --muted: #68736a;
  --accent-ink: #35483d;
  --line: #e4e1db;
  --button-bg: #e8eddf;
  --button-hover-bg: #dce5cf;
  --button-outline-bg: #f1f3ed;
  --button-outline-hover-bg: #e5eadd;
  --menu-active-bg: #e3ead8;
  --menu-hover-bg: #cedcbd;
  --help-bg: color-mix(in srgb, var(--accent-ink) 18%, white);
  --help-hover-bg: color-mix(in srgb, var(--accent-ink) 28%, white);
  --tooltip-bg: #314236;
  --focus-colour: #79844a;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 28px; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 1rem/1.6 var(--sans); -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
svg { width: 20px; height: 20px; flex-shrink: 0; vertical-align: middle; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { line-height: 1.2; font-weight: 550; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid var(--focus-colour); outline-offset: 5px; }
.skip-link { position: absolute; left: 20px; top: -80px; z-index: 99; background: var(--accent-ink); color: white; padding: 10px 20px; }
.skip-link:focus { top: 15px; }
.sr-only { position: absolute; top: 0; left: 0; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
/* Shared header, navigation and buttons. */
.site-header { max-width: 1440px; min-height: 96px; margin: auto; padding: 25px 50px; display: flex; flex-wrap: wrap; align-items: center; gap: 24px; border-bottom: 1px solid var(--line); }
.brand { display: flex; gap: 11px; align-items: center; font-size: 1.438rem; letter-spacing: -.5px; font-weight: 650; line-height: 1; }
.brand-symbol { width: 39px; height: 39px; border-radius: 11px; background: var(--accent-ink); color: #e5edb5; display: grid; place-items: center; }
.brand-symbol img { display: block; width: 100%; height: 100%; }
.header-nav { margin-left: auto; display: flex; align-items: center; gap: 20px; font-size: 1rem; }
.header-nav form { margin: 0; }
.text-link { font-weight: 550; display: inline-flex; gap: 10px; align-items: center; font-size: 1rem; }
.text-link svg { width: 17px; }
.text-link:hover, .text-button:hover, .header-nav a:hover { color: #7b526e; }
.button { border: 1px solid var(--accent-ink); border-radius: 6px; background: var(--accent-ink); color: white; padding: 12px 20px; min-height: 46px; display: inline-flex; align-items: center; justify-content: center; gap: 16px; font-size: 1rem; font-weight: 550; line-height: 1.5; }
.button svg { width: 18px; height: 18px; }
.button:hover { background: #302233; color: white; }
.button-outline { background: transparent; color: var(--accent-ink); border-color: #cec8d0; }
.button-outline:hover { background: #ebe7ec; color: var(--accent-ink); }
.button-small { min-height: 39px; padding: 9px 15px; font-size: 1rem; gap: 10px; }
.button-full { width: 100%; justify-content: space-between; margin-top: 21px; min-height: 50px; }
.text-button { background: transparent; border: 0; padding: 7px 0; color: var(--accent-ink); font-size: 1rem; font-weight: 550; }
.danger { color: #a23c43; }
/* Account forms and validation messages. */
.launch-main { max-width: 1320px; padding: 45px 35px; margin: auto; display: flex; align-items: center; justify-content: center; min-height: calc(100vh - 168px); }
.auth-area { width: 100%; max-width: 460px; }
.auth-card { background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: 30px 34px 27px; }
.auth-tabs { display: flex; flex-wrap: wrap; gap: 12px 18px; margin-bottom: 27px; border-bottom: 1px solid var(--line); font-size: 1rem; }
.auth-tabs a { padding: 0 0 13px; color: var(--muted); position: relative; white-space: nowrap; }
.auth-tabs a.active { font-weight: 650; color: var(--accent-ink); }
.auth-tabs a.active::after { position: absolute; content: ""; height: 2px; background: var(--accent-ink); left: 0; right: 0; bottom: -1px; }
.auth-card h1 { font-size: 1.562rem; letter-spacing: -.6px; }
.auth-card h1 + .stack-form { margin-top: 25px; }
.auth-description { color: var(--muted); font-size: 1rem; line-height: 1.75; margin: 12px 0 27px; }
.stack-form > label, .form-grid label { display: block; margin-top: 17px; margin-bottom: 7px; font-size: 1rem; font-weight: 550; line-height: 1.5; }
.stack-form > label:first-of-type { margin-top: 0; }
.stack-form input:not([type=hidden]), .stack-form select, .stack-form textarea { width: 100%; border: 1px solid #dcd8dc; background: #fdfdfc; border-radius: 5px; padding: 11px 12px; color: var(--ink); line-height: 1.5; font-size: 1rem; min-width: 0; min-height: 44px; }
.stack-form input::placeholder, .stack-form textarea::placeholder { color: #8b848d; font-size: 1rem; }
/* Reserve room for the fixed domain suffix beside the club prefix. */
#club-subdomain .input-group { flex-wrap: nowrap; }
#club-subdomain .input-group > input { width: 1%; flex: 1 1 auto; }
.stack-form input:focus, .stack-form select:focus, .stack-form textarea:focus { outline: 2px solid #80708640; border-color: #827086; }
.stack-form textarea { resize: vertical; display: block; }
.label-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 19px; margin-bottom: 7px; font-size: 1rem; }
.label-row label { font-weight: 550; }
.label-row > a { font-size: 1rem; color: #7a607d; }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 46px !important; }
.password-toggle { border: 0; background: transparent; position: absolute; right: 3px; top: 2px; bottom: 2px; width: 40px; color: #8b848e; padding: 6px; }
.password-toggle svg { width: 17px; height: 17px; }
.field-help { font-size: 1rem; color: var(--muted); margin: 4px 0 0; line-height: 1.35; }
.auth-bottom { text-align: center; font-size: 1rem; color: var(--muted); margin-top: 24px; line-height: 1.9; }
.auth-bottom a { font-weight: 550; color: var(--accent-ink); }
.auth-bottom svg { width: 13px; height: 13px; }
.back-link { display: inline-block; font-size: 1rem; color: #7a647e; margin-bottom: 27px; }
.auth-help { text-align: center; margin-top: 19px; }
.site-footer { max-width: 1440px; margin: auto; border-top: 1px solid var(--line); padding: 22px 50px; display: flex; align-items: center; justify-content: space-between; gap: 20px; color: #796e7c; font-size: 1rem; }
.notice { border: 1px solid #d6dfba; border-radius: 7px; background: #f0f5e5; color: #4d6130; padding: 12px 15px; margin-bottom: 22px; font-size: 1rem; line-height: 1.7; overflow-wrap: anywhere; }
.notice-error { background: #fbf0ef; border-color: #efd6d4; color: #8b3f41; }
.notice-info { background: #f2eff6; border-color: #e4dcec; color: #675477; }
.signed-in { display: flex; align-items: center; gap: 9px; font-size: 1rem; }
.avatar { width: 29px; height: 29px; display: grid; place-items: center; border-radius: 50%; background: #e9e2eb; color: #725b79; }
.app-body .site-header { background: #fff; max-width: none; padding-left: max(36px, calc((100vw - 1250px)/2)); padding-right: max(36px, calc((100vw - 1250px)/2)); min-height: 86px; }
/* Club administration and member activity panels. */
.dashboard { max-width: 1250px; padding: 40px 36px 70px; margin: auto; min-height: calc(100vh - 155px); }
.dashboard-heading { display: flex; align-items: center; justify-content: space-between; gap: 25px; margin-bottom: 32px; }
.dashboard-heading h1 { font-size: 1.875rem; letter-spacing: -.6px; margin: 10px 0; overflow-wrap: anywhere; }
.dashboard-layout { display: grid; grid-template-columns: 235px minmax(0,1fr); gap: 40px; }
.sidebar nav { display: flex; flex-direction: column; gap: 4px; }
.sidebar nav a { padding: 9px 14px; display: flex; align-items: center; gap: 11px; color: #7b707e; font-size: 1rem; border-radius: 6px; }
.sidebar nav a svg { width: 18px; height: 18px; }
.sidebar nav a.active { background: var(--accent-ink); color: white; }
.menu-count { margin-inline-start: auto; min-width: 3ch; text-align: end; font-variant-numeric: tabular-nums; }
.workspace { min-width: 0; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 24px; }
.section-heading h2, .panel h2, .public-content h2 { font-size: 1.438rem; letter-spacing: -.4px; }
.panel { background: white; border: 1px solid var(--line); border-radius: 9px; padding: 27px 28px; margin-bottom: 22px; }
.panel h2 { margin-bottom: 10px; }
.panel h3 { font-size: 1.312rem; margin-bottom: 8px; }
.panel > p { font-size: 1rem; color: var(--muted); margin-bottom: 22px; }
.align-start { margin-top: 22px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-grid:first-of-type label { margin-top: 0; }
.optional { font-size: 1rem; font-weight: 400; color: var(--muted); }
.activity-list { display: grid; gap: 18px; margin-bottom: 25px; }
.activity-card { background: white; border: 1px solid var(--line); border-radius: 9px; padding: 25px 27px; }
.activity-top { display: flex; justify-content: space-between; align-items: center; gap: 15px; margin-bottom: 17px; border-bottom: 1px solid var(--line); padding-bottom: 12px; }
.tag { display: inline-flex; color: var(--muted); font-size: 1rem; white-space: nowrap; }
.activity-state {
  margin-inline-start: auto;
  flex: none;
  width: 15rem;
  box-sizing: border-box;
  padding: 3px 8px;
  border-radius: 5px;
  background: #d6e0da;
  color: #34463b;
  font-size: 1rem;
  font-weight: 700;
  text-align: center;
  overflow-wrap: anywhere;
}
@media (max-width: 640px) {
  .activity-state { width: 10rem; }
  .activity-top .tag { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
}
.activity-card h3 { font-size: 1.312rem; letter-spacing: -.3px; }
.activity-meta { display: flex; flex-wrap: wrap; gap: 15px; color: var(--muted); font-size: 1rem; margin: 13px 0; }
.activity-meta span, .activity-bottom > span { display: flex; align-items: center; gap: 6px; }
.activity-meta svg, .activity-bottom svg { width: 15px; height: 15px; }
.activity-meta .activity-date {
  color: #34463b;
  font-weight: 700;
}
.prose { font-size: 1rem; line-height: 1.85; overflow-wrap: anywhere; }
.activity-card > .prose { color: #776e7a; margin: 17px 0 24px; }
.activity-bottom { display: flex; justify-content: space-between; align-items: center; gap: 15px; border-top: 1px solid #eeeaf0; padding-top: 17px; }
.activity-bottom > span { font-size: 1rem; color: #7e7084; }
.button-row { display: flex; gap: 20px; align-items: center; }
.participant-details { margin-top: 15px; padding-top: 12px; border-top: 1px solid var(--line); font-size: 1rem; color: var(--muted); }
.empty-state { border: 1px dashed #d4cdd4; border-radius: 8px; padding: 40px 30px; text-align: center; margin-bottom: 28px; }
.empty-state > svg { width: 32px; height: 32px; color: #9c8ca2; display: block; margin: 0 auto 19px; }
.empty-state h3 { font-size: 1.312rem; }
.empty-state p { font-size: 1rem; color: var(--muted); max-width: 410px; margin: 12px auto 0; }
.join-code-panel { display: flex; justify-content: space-between; align-items: center; gap: 30px; background: #eeecef; padding: 24px 28px; border: 1px solid var(--line); border-radius: 8px; margin-bottom: 25px; }
.join-code-panel h3 { font-size: 1.25rem; margin-bottom: 10px; }
.join-code-panel p { font-size: 1rem; color: var(--muted); max-width: 380px; }
.join-code-panel > div:last-child { text-align: center; }
.join-code-panel code { display: block; letter-spacing: 2px; font-size: 1.062rem; font-weight: 600; white-space: nowrap; }
.join-code-panel .text-button { font-size: 1rem; }
:is(#judging-api-code, #club-account-code) > div { min-width: 0; }
:is(#judging-api-code, #club-account-code) code { white-space: normal; overflow-wrap: anywhere; letter-spacing: 0; }
.table-wrap { overflow-x: hidden; overflow-y: auto; }
table { width: 100%; border-collapse: collapse; text-align: left; font-size: 1rem; }
th { font-size: 1rem; font-weight: 550; color: #78677d; padding: 15px 12px; border-bottom: 1px solid var(--line); }
td { padding: 15px 12px; border-bottom: 1px solid #f0edf1; vertical-align: middle; }
td strong { font-weight: 550; }
.table-email { display: block; font-size: 1rem; color: var(--muted); overflow-wrap: anywhere; }
.role-form { display: flex; align-items: center; gap: 7px; }
.role-form select { min-width: 150px; max-width: none; border: 1px solid var(--line); background: #fdfdfc; border-radius: 4px; padding: 5px; font-size: 1rem; color: var(--ink); }
.share-panel { background: #eeebf0; border: 1px solid #e1dce5; border-radius: 8px; display: flex; align-items: center; gap: 15px; padding: 19px 24px; margin-bottom: 25px; }
.share-panel > svg { color: #8a7492; width: 25px; height: 25px; }
.share-panel > div { min-width: 0; }
.share-panel strong { font-size: 1rem; display: block; font-weight: 550; }
.share-panel a { font-size: 1rem; color: #765d80; overflow-wrap: anywhere; }
.share-panel button { margin-left: auto; white-space: nowrap; }
/* Keep publication dates equally clear and compact in public and member feeds. */
.club-choices { display: flex; flex-direction: column; }
.club-choices > :is(form, .current-club-row) { display: flex; align-items: center; flex-wrap: wrap; gap: 15px; border-bottom: 1px solid var(--line); padding: 15px 0; }
.club-choices strong { font-size: 1rem; font-weight: 550; }
.club-choices .text-button { margin-left: auto; }
.account-panel .club-choices > :is(form, .current-club-row) { padding-block: 6px; padding-left: 12px; }
.account-choice-list > :is(form, .current-club-row) { padding:6px 12px; }
.account-choice-list .button { width:16rem; max-width:100%; }
.site-directory-filter { display:block; margin:6px 0; }
.site-directory-filter label { margin:0 0 4px; }
.site-directory-filter input { width:100%; min-height:44px; padding:7px 12px; border:1px solid var(--line); border-radius:5px; font-size:1rem; }
.site-directory-filter input:focus { outline:2px solid #80708640; border-color:#827086; }
[data-site-search-status]:empty { display:none; }
.site-record-table { width:100%; table-layout:fixed; margin-bottom:6px; }
.site-record-table th,.site-record-table td { padding:5px 8px; line-height:1.3; overflow-wrap:anywhere; }
.site-record-table td { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.site-directory .site-record-table > tbody > tr > * { background-color:#fff; box-shadow:none; }
.site-directory .site-record-table > tbody > tr:nth-child(even) > * { background-color:#e7eee5; }
.site-count-heading svg { width:20px; height:20px; vertical-align:middle; }
.site-user-table col:nth-child(1) { width:25%; }
.site-user-table col:nth-child(2) { width:35%; }
.site-user-table col:nth-child(3) { width:8%; }
.site-user-table col:nth-child(4),.site-user-table col:nth-child(5) { width:16%; }
.site-club-table col:nth-child(1) { width:40%; }
.site-club-table col:nth-child(2) { width:auto; }
.site-club-table col:nth-child(3),.site-club-table col:nth-child(4) { width:4rem; }
.site-club-table col:nth-child(5) { width:8rem; }
.site-directory-email { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.site-directory > .field-help { margin:4px 0; }
.workspace:has(> .site-directory) { display:flex; flex-direction:column; overflow:hidden; padding-bottom:0; }
.workspace > .site-directory { display:flex; flex-direction:column; flex:1; min-height:0; margin-bottom:0; overflow:hidden; }
[data-site-directory-results] { display:flex; flex-direction:column; flex:1; min-height:0; }
[data-site-list-scroll] { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; scrollbar-gutter:stable; }
.site-record-table thead { position:sticky; top:0; z-index:1; background:var(--paper); }
.site-directory-pages { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:44px; padding-top:4px; }
.site-directory-pages .field-help { margin:0; }
.site-directory-pages .button { min-height:40px; padding:5px 12px; }
@media(max-width:760px) {
  .site-directory-filter { grid-template-columns:1fr; }
  .site-record-table,.site-record-table :is(tbody,tr,td) { display:block; width:100%; }
  .site-record-table thead { display:none; }
  .site-record-table colgroup { display:none; }
  .site-record-table td[data-label]::before { content:attr(data-label) ': '; font-weight:600; }
}
/* Public club information and news. */
.public-page { max-width: 1312px; margin: 30px auto 50px; padding: 0 44px; }
.club-cover { min-height: 180px; border-radius: 9px; background: #eeecef; border: 1px solid var(--line); padding: 35px 40px; display: flex; align-items: center; }
.club-cover h1 { font-size: 2.375rem; letter-spacing: -1px; overflow-wrap: anywhere; }
.club-cover h1, .dashboard-heading h1 { color: color-mix(in srgb, var(--accent-ink) 65%, white); text-shadow: 1px 2px 2px rgba(0, 0, 0, 0.65); }
.club-cover h1, .dashboard-heading h1 { font-family: "Outfit", Arial, sans-serif; font-weight: 800; letter-spacing: .025em; }
.club-cover p { font-size: 1rem; margin-top: 14px; display: flex; gap: 8px; align-items: center; color: var(--muted); }
.club-cover p svg { width: 15px; height: 15px; }
.public-nav { border-bottom: 1px solid var(--line); display: flex; gap: 32px; align-items: center; padding: 23px 8px; font-size: 1rem; }
.public-nav > a:last-child { margin-left: auto; color: #7a5a82; font-size: 1rem; }
.public-nav svg { width: 16px; }
.public-content { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: 65px; padding: 35px 10px; }
.public-content h2 { margin-bottom: 23px; }
.public-about .prose { color: var(--muted); }
.club-postal-address { font-style: normal; font-size: 1rem; line-height: 1.4; margin: 14px 0; color: var(--muted); }
.club-location-map { margin: 0 0 14px; }
.club-location-map iframe { width: 100%; height: 250px; border: 1px solid var(--line); border-radius: 8px; }
.contact-link { font-size: 1rem; display: inline-flex; gap: 20px; align-items: center; margin-top: 24px; border-bottom: 1px solid #ccc0d0; padding-bottom: 7px; }
.contact-link svg { width: 17px; }
.member-note { background: #ebe8e0; padding: 22px; display: flex; gap: 16px; margin-top: 32px; border-radius: 6px; }
.member-note > svg { color: #89768e; }
.member-note strong { font-size: 1rem; font-weight: 550; }
.member-note p { font-size: 1rem; line-height: 1.8; color: var(--muted); margin-top: 8px; }
.member-note a { text-decoration: underline; text-underline-offset: 3px; }
.compact { padding: 32px 25px; }
.error-page { max-width: 800px; min-height: 65vh; padding: 85px 40px; margin: auto; }
.error-page h1 { font-size: 2.188rem; letter-spacing: -1px; margin: 20px 0; }
.error-page p { color: var(--muted); margin-bottom: 30px; }
@media (max-width: 1000px) {
  .site-header, .site-footer { padding-left: 35px; padding-right: 35px; }
  .dashboard-layout { grid-template-columns: 235px minmax(0,1fr); gap: 25px; }
  .public-content { gap: 40px; }
}
@media (max-width: 820px) {
  .dashboard-layout { grid-template-columns: minmax(0,1fr); }
  .sidebar nav { flex-direction: row; gap: 8px; border-bottom: 1px solid var(--line); padding-bottom: 16px; overflow-x: hidden; overflow-y: auto; }
  .sidebar nav a { white-space: nowrap; padding: 9px 12px; }
  .dashboard { padding: 30px 25px 50px; }
  .public-page { padding: 0 25px; }
}
@media (max-width: 640px) {
  .site-header, .app-body .site-header { min-height: 78px; padding: 20px; gap: 15px; }
  .brand { font-size: 1.25rem; gap: 9px; }
  .brand-symbol { width: 32px; height: 32px; border-radius: 10px; }
  .header-nav { gap: 13px; font-size: 1rem; }
  .header-nav .text-link { font-size: 1rem; gap: 6px; }
  .launch-main { padding: 27px 20px 35px; min-height: calc(100vh - 140px); }
  .auth-card { padding: 26px 23px; }
  .auth-tabs { gap: 12px 16px; }
  .stack-form input:not([type=hidden]), .stack-form textarea, .stack-form select { font-size: 1rem; min-height: 46px; }
  .site-footer { padding: 20px; gap: 10px; font-size: 1rem; }
  .form-grid { grid-template-columns: 1fr; gap: 0; }
  .form-grid > div + div label { margin-top: 17px !important; }
  .signed-in { max-width: 90px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 1rem; }
  .avatar { display: none; }
  .dashboard { padding: 25px 20px 45px; }
  .dashboard-heading { display: block; margin-bottom: 27px; }
  .dashboard-heading h1 { font-size: 1.688rem; }
  .dashboard-heading .button { margin-top: 12px; padding: 9px 13px; min-height: 38px; font-size: 1rem; }
  .sidebar nav { gap: 5px; }
  .sidebar nav a { font-size: 1rem; padding: 9px 11px; gap: 7px; }
  .sidebar nav a svg { width: 16px; height: 16px; }
  .dashboard-layout { gap: 25px; }
  .section-heading { align-items: flex-start; gap: 12px; }
  .section-heading .button { font-size: 1rem; gap: 6px; padding: 8px 10px; min-width: 100px; }
  .section-heading .button svg { width: 14px; }
  .panel { padding: 23px 20px; }
  .activity-card { padding: 22px 19px; }
  .activity-meta { font-size: 1rem; gap: 8px; }
  .activity-state { font-size: 1rem; }
  .activity-bottom { align-items: flex-start; gap: 10px; }
  .button-row { gap: 12px; flex-wrap: wrap; justify-content: flex-end; }
  .activity-bottom > span { font-size: 1rem; white-space: nowrap; margin-top: 10px; }
  .activity-bottom .button { padding: 8px 11px; gap: 7px; }
  .join-code-panel { display: block; padding: 23px; }
  .join-code-panel > div:last-child { text-align: left; margin-top: 20px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
  .table-wrap { margin: 0 -8px; }
  td, th { padding: 12px 8px; }
  td { font-size: 1rem; }
  .table-email { font-size: 1rem; min-width: 120px; }
  .role-form { align-items: flex-start; flex-direction: column; }
  .share-panel { padding: 17px; gap: 10px; flex-wrap: wrap; }
  .share-panel > svg { width: 19px; height: 19px; }
  .share-panel > div { flex: 1; }
  .share-panel button { margin-left: 29px; }
  .club-choices > :is(form, .current-club-row) { gap: 8px; }
  .club-choices strong { width: 100%; }
  .public-page { padding: 0 19px; margin-top: 19px; margin-bottom: 20px; }
  .club-cover { padding: 28px 24px; min-height: 145px; }
  .club-cover h1 { font-size: 1.875rem; }
  .public-nav { gap: 18px; font-size: 1rem; padding: 19px 2px; flex-wrap: wrap; }
  .public-nav > a:last-child { font-size: 1rem; }
  .public-content { display: block; padding: 30px 3px; }
  .public-about { margin-bottom: 40px; }
  .member-note { padding: 20px; }
  .error-page { padding: 60px 25px; }
  .empty-state { padding: 30px 24px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}


/* Keep the document inside the browser; only the content panels may scroll. */
html { height: 100%; font-size: 100%; overflow: hidden; }
body {
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  overflow: hidden;
}
.site-header, .app-body .site-header {
  width: 100%;
  max-width: 1440px;
  min-height: 70px;
  margin: 0 auto;
  padding: 14px 30px;
  border: 0;
}
.site-footer { width: 100%; margin: 0 auto; padding: 12px 30px; border: 0; }
main { min-height: 0; min-width: 0; }
.launch-main { width: 100%; min-height: 0; height: 100%; padding: 16px 24px; overflow: hidden; }
.auth-area { max-width: 540px; max-height: 100%; min-height: 0; display: flex; }
.auth-card {
  width: 100%;
  max-height: 100%;
  min-height: 0;
  overflow-x: hidden; overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding: 23px 28px;
  border: 0;
}
.auth-tabs { margin-bottom: 18px; border: 0; gap: 8px; }
.auth-tabs a { padding: 6px 9px; border-radius: 5px; }
.auth-tabs a.active { background: #edf1e4; }
.auth-tabs a.active::after { display: none; }
.auth-card h1 { font-size: 1.5rem; }
.auth-description { margin: 7px 0 17px; }
.auth-bottom { margin-top: 15px; }
.auth-card h1 + .stack-form { margin-top: 20px; }
.auth-card .stack-form > label { margin-top: 12px; margin-bottom: 5px; }
.auth-card .stack-form input:not([type=hidden]) { min-height: 41px; padding: 8px 11px; }
.auth-card .button-full { min-height: 43px; margin-top: 16px; }
.registration-details { gap: 15px; }
.registration-details label { margin-top: 0; margin-bottom: 5px; }
.password-fields { margin-top: 12px; gap: 15px; align-items: end; }
.password-fields label { margin-top: 0 !important; margin-bottom: 5px; }
.registration-form .field-help { margin-top: 6px; }
.dashboard { display: flex; flex-direction: column; height: 100%; min-height: 0; width: 100%; margin: 0 auto; padding: 6px 30px 20px; overflow: hidden; }
.dashboard-heading, .dashboard > .notice { flex: 0 0 auto; }
.dashboard-heading { margin-bottom: 10px; }
.dashboard-heading h1 { margin: 0; }
.dashboard-layout { flex: 1 1 0; min-height: 0; overflow: hidden; }
.sidebar { min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; }
.workspace { min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding: 0 9px 12px 0; }
.public-page { height: 100%; min-height: 0; width: 100%; margin: 0 auto; padding: 20px 30px; display: flex; flex-direction: column; overflow: hidden; }
.club-cover, .public-nav { flex: 0 0 auto; }
.club-cover { min-height: 120px; padding: 24px 30px; border: 0; }
.public-nav { padding: 15px 8px; border: 0; }
.public-content { min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding: 20px 8px; }
.error-page { width: 100%; min-height: 0; height: 100%; overflow-x: hidden; overflow-y: auto; padding: 40px 30px; }

/* Neutral controls and spacing keep the interface close to Mentor. */
.button { background: var(--button-bg); color: var(--ink); border-color: transparent; }
.button:hover { background: var(--button-hover-bg); color: var(--ink); }
.button-outline { background: var(--button-outline-bg); color: var(--ink); border-color: transparent; }
.button-outline:hover { background: var(--button-outline-hover-bg); color: var(--ink); }
.sidebar nav a.active { background: var(--menu-active-bg); color: var(--ink); }
.sidebar nav a:not(.active):is(:hover, :focus-visible) {
  background: var(--menu-hover-bg);
  border-radius: 12px;
}
.sidebar nav, .activity-top, .activity-bottom, .participant-details, .club-choices > :is(form, .current-club-row), th, td { border: 0; }
.panel { border: 0; }
.activity-card { border: 0; }
.tag { color: var(--muted); }

/* Bootstrap confirmation dialog and AJAX state stay outside the scrolling panels. */
.modal-content { border: 0; border-radius: 12px; }
.modal-header, .modal-footer { border: 0; }
.modal-body { line-height: 1.7; }
.ajax-error { position: fixed; z-index: 1080; top: 76px; left: 50%; transform: translateX(-50%); width: min(540px, calc(100vw - 32px)); box-shadow: 0 5px 25px #24373120; }
.ajax-error .text-button { margin-left: 15px; }
.request-busy { cursor: progress; }
.request-busy .site-header { position: relative; }
.request-busy .site-header::after { content: ''; position: absolute; left: 0; bottom: 0; height: 2px; width: 100%; background: #b6c59b; animation: loading-pulse .8s ease-in-out infinite alternate; }
@keyframes loading-pulse { from { opacity: .3; } to { opacity: 1; } }

/* Animate.css reveals headings with a short slide and fade, without moving the shell. */
.reveal-pending { opacity: 0; }
.page-title-enter.animate__fadeInUp { --animate-duration: 550ms; animation-name: heading-fade-in-up; }

@keyframes heading-fade-in-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
.panel-enter { --animate-duration: 300ms; }
@media (max-width: 820px) {
  .dashboard-layout { display: flex; flex-direction: column; gap: 16px; }
  .sidebar { flex: 0 0 auto; }
  .sidebar nav { padding-bottom: 0; }
  .workspace { flex: 1 1 0; }
}
@media (max-width: 640px) {
  .site-header, .app-body .site-header { min-height: 62px; padding: 12px 18px; gap: 10px; }
  .brand { font-size: 1.125rem; }
  .brand-symbol { width: 30px; height: 30px; }
  .site-footer { padding: 10px 18px; }
  .launch-main { min-height: 0; padding: 10px 16px; }
  .auth-card { padding: 19px 20px; }
  .auth-tabs { gap: 5px; font-size: 1rem; }
  .auth-tabs a { padding: 6px 7px; }
  .auth-card h1 { font-size: 1.438rem; }
  .auth-card .stack-form input:not([type=hidden]) { min-height: 42px; font-size: 1rem; }
  .registration-details { gap: 0; }
  .registration-details > div + div label { margin-top: 10px !important; }
  .password-fields { grid-template-columns: 1fr 1fr; gap: 12px; }
  .password-fields > div + div label { margin-top: 0 !important; }
  .dashboard, .public-page { padding: 12px 16px; }
  .dashboard { padding-top: 4px; }
  .dashboard-heading { margin-bottom: 8px; }
  .dashboard-heading h1 { font-size: 1.5rem; }
  .dashboard-heading .button { margin-top: 10px; }
  .club-cover { min-height: 95px; padding: 20px; }
  .club-cover h1 { font-size: 1.688rem; }
  .public-content { display: block; padding-top: 14px; }
  .public-nav { gap: 12px; padding: 12px 3px; }
}
@media (max-width: 360px) {
  .password-fields { grid-template-columns: 1fr; }
  .password-fields > div + div label { margin-top: 7px !important; }
}
@media (max-height: 650px) {
  .site-header, .app-body .site-header { min-height: 52px; padding-top: 8px; padding-bottom: 8px; }
  .site-footer { padding-top: 7px; padding-bottom: 7px; }
  .launch-main { padding-top: 8px; padding-bottom: 8px; }
  .auth-card { padding-top: 17px; padding-bottom: 17px; }
  .club-cover { min-height: 75px; padding-top: 14px; padding-bottom: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .reveal-pending { opacity: 1; }
  .request-busy .site-header::after { animation: none; }
}

/* Clear controls and readable text for members who prefer larger, calmer interfaces. */
body { font-size: 1rem; }
.button { min-height: 46px; font-size: 1rem; }
.button-small { min-height: 44px; font-size: 1rem; }
.text-button, .text-link { font-size: 1rem; }
.text-button { min-height: 44px; padding: 10px 2px; }
.text-link { text-decoration: underline; text-underline-offset: 4px; }
.header-nav { font-size: 1rem; }
.header-nav .text-link { font-size: 1rem; }
.signed-in { font-size: 1rem; }
.site-help { flex-shrink: 0; min-width: 66px; }
.auth-tabs { font-size: 1rem; }
.auth-tabs a { min-height: 44px; display: inline-flex; align-items: center; padding: 8px 10px; }
.auth-card h1 { font-size: 1.625rem; }
.auth-description, .auth-bottom, .panel > p, .section-heading p { font-size: 1rem; }
.stack-form > label, .form-grid label, .label-row { font-size: 1rem; }
.stack-form input:not([type=hidden]), .stack-form select, .stack-form textarea,
.auth-card .stack-form input:not([type=hidden]) { font-size: 1rem; min-height: 46px; }
.stack-form input::placeholder { font-size: 1rem; }
.password-toggle { width: 44px; }
.password-toggle svg { width: 20px; height: 20px; }
.field-help, .optional { font-size: 1rem; }
.label-row > a { font-size: 1rem; padding: 8px 0; }
.notice { font-size: 1rem; }
.sidebar nav a { min-height: 44px; font-size: 1rem; }
.sidebar nav a > span { font-size: 1rem; }
.sidebar nav > a[href="?section=account"]:first-child { margin-top: 40px; }
.activity-meta, .activity-bottom > span, .participant-details { font-size: 1rem; }
.activity-state, .tag { font-size: 1rem; }
.prose { font-size: 1rem; }
.join-code-panel p, .join-code-panel .text-button { font-size: 1rem; }
.table-email, th, td { font-size: 1rem; }
.role-form select { font-size: 1rem; min-height: 44px; }
.share-panel a, .share-panel strong, .member-note p, .member-note strong { font-size: 1rem; }
.public-nav { font-size: 1rem; }
.public-nav > a:last-child { font-size: 1rem; }
.public-nav a { min-height: 40px; display: inline-flex; align-items: center; }
.site-footer { font-size: 1rem; line-height: 1.25; padding-block: 4px; }

/* Small question buttons reveal extra help without permanently lengthening labels. */
.field-label-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 32px; margin: 10px 0 5px; }
.field-label-row label { margin: 0 !important; font-size: 1rem; font-weight: 550; }
.registration-details .field-label-row, .password-fields .field-label-row { margin-top: 0; }
.field-help-button { position: relative; display: inline-grid; place-items: center; width: 24px; height: 24px; flex-shrink: 0; border: 0; border-radius: 50%; background: var(--help-bg); color: var(--accent-ink); box-shadow: 0 2px 4px rgba(28, 40, 35, .18); font-size: 1rem; font-weight: 800; line-height: 1; padding: 0; }
/* Preserve a comfortable 44px hit area around the smaller visible circle. */
.field-help-button::before { content: ''; position: absolute; inset: -10px; }
.field-help-button:hover { background: var(--help-hover-bg); }
/* Heading help sits at the right edge, leaving the title room to wrap. */
:is(h1,h2,h3,h4,h5,h6):has(> .field-help-button) {
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
}
:is(h1,h2,h3,h4,h5,h6) > .field-help-button { margin-inline-start:auto; }
.tooltip { --bs-tooltip-bg: var(--tooltip-bg); --bs-tooltip-max-width: 310px; --bs-tooltip-opacity: 1; font-size: 1rem; }
.tooltip-inner { text-align: left; padding: 13px 16px; line-height: 1.65; }
.club-calendar-preview { --bs-tooltip-max-width: min(340px, 90vw); pointer-events: none; }
.club-calendar-preview .tooltip-inner { white-space: pre-line; overflow-wrap: anywhere; }

/* The help drawer uses plain step-by-step guidance and collapsible questions. */
#help-panel { --bs-offcanvas-width: 430px; max-width: 100vw; color: var(--ink); }
.offcanvas-header { padding: 23px 24px 14px; }
.offcanvas-body { padding: 15px 24px 28px; overscroll-behavior: contain; }
.offcanvas-title { font-size: 1.5rem; }
#page-help h3, .help-subheading { font-size: 1.25rem; margin-bottom: 17px; }
#page-help ol { padding-left: 23px; line-height: 1.75; }
#page-help li { padding-left: 3px; margin-bottom: 16px; }
.help-subheading { margin-top: 30px; }
.help-contact { margin-top: 26px; font-size: 1rem; color: var(--muted); }
#help-panel .accordion-item { border: 0; }
#help-panel .accordion-button { background: #f2f4ed; color: var(--ink); font-size: 1rem; line-height: 1.5; padding: 15px; border-radius: 7px; margin-bottom: 7px; box-shadow: none; }
#help-panel .accordion-body { font-size: 1rem; line-height: 1.75; padding: 12px 15px 21px; }
.btn-close { min-width: 44px; min-height: 44px; padding: 10px; background-size: 16px; box-sizing: border-box; }
@media (max-width: 640px) {
  .auth-tabs { font-size: 1rem; }
  .auth-tabs a { padding: 7px 8px; }
  .auth-card h1 { font-size: 1.5rem; }
  .auth-card { padding: 18px 20px; }
  .site-header, .app-body .site-header { padding: 10px 16px; }
  .header-nav { gap: 10px; }
  .signed-in { max-width: 120px; }
  .activity-bottom { flex-wrap: wrap; }
  .activity-bottom .button { min-height: 44px; font-size: 1rem; }
  .sidebar nav a { font-size: 1rem; }
  .site-footer { font-size: 1rem; }
}

/* Confirmation stays inside the same readable, scrollable account panel. */
.confirmation-steps { padding-left: 23px; margin: 18px 0; line-height: 1.7; }
.confirmation-steps li { padding-left: 3px; margin-bottom: 12px; }
.auth-description strong { overflow-wrap: anywhere; }

/* Project policy: compact form rhythm, readable type and comfortable control sizes. */
.stack-form { line-height: 1.35; }
.stack-form > label, .form-grid label { line-height: 1.3; margin-top: 10px; margin-bottom: 4px; }
.field-label-row { margin-top: 6px; margin-bottom: 4px; }
.registration-details .field-label-row, .password-fields .field-label-row { margin-top: 0; }
.auth-card { padding-top: 18px; padding-bottom: 18px; }
.auth-description { line-height: 1.45; margin-top: 6px; margin-bottom: 12px; }
.auth-bottom { line-height: 1.4; margin-top: 12px; }
.auth-tabs { margin-bottom: 14px; }
.auth-card .button-full { margin-top: 12px; }
.password-fields { margin-top: 8px; }
.auth-card .field-help { line-height: 1.4; margin-top: 6px; }
.confirmation-steps { line-height: 1.5; }
@media (max-width: 640px) {
  .registration-details > div + div label { margin-top: 6px !important; }
}

/* Menu policy: expand panels first; collapse an overflowing bar to one dropdown. */
.auth-area { max-width: 640px; }
.auth-tabs, .public-nav, .sidebar nav { flex-wrap: nowrap; }
.auth-tabs a, .public-nav a, .sidebar nav a { flex-shrink: 0; white-space: nowrap; }
.menu-collapsed { display: none !important; }
.responsive-menu { margin-bottom: 14px; }
.responsive-menu[hidden] { display: none; }
.responsive-menu > .button { width: 100%; justify-content: space-between; }
.responsive-menu .dropdown-menu { width: max-content; min-width: 100%; max-width: calc(100vw - 32px); padding: 7px; border: 0; box-shadow: 0 8px 28px #24373125; }
.responsive-menu .dropdown-item { font-size: 1rem; white-space: normal; padding: 11px 14px; border-radius: 5px; color: var(--ink); }
.responsive-menu .dropdown-item:has(> .menu-count) { display: flex; align-items: baseline; gap: 12px; }
.responsive-menu .dropdown-item.active, .responsive-menu .dropdown-item:hover { background: var(--menu-active-bg); color: var(--ink); }
.site-header, .app-body .site-header, .header-nav { flex-wrap: nowrap; }
.public-content { min-height: 0; }
@media (max-width: 640px) {
  .signed-in { display: none; }
  .header-nav { gap: 8px; }
  .site-header, .app-body .site-header { gap: 8px; }
}
@media (max-width: 380px) {
  .brand > span:last-child { display: none; }
}

/* Expandable schedule forms keep the activity panel compact. */
.schedule-panel { padding: 15px 20px; }
#current-activities:has(~ #new-activity.schedule-panel) { margin-bottom: 6px; }
:is(#new-activity, #activity-types, #weekly-schedules, #closed-dates, .member-settings-panel).schedule-panel {
  margin-bottom: 6px;
  padding-block: 2px;
}
.schedule-panel summary, .public-closures summary, .code-settings-panel > summary { min-height: 44px; font-size: 1rem; font-weight: 600; cursor: pointer; padding: 9px 0; }
.schedule-panel > details > .field-help { margin: 5px 0 14px; }
.schedule-list { margin-top: 18px; }
.schedule-row { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 12px 0; }
.schedule-row p { font-size: 1rem; margin: 3px 0; color: var(--muted); line-height: 1.4; }
.public-activity { display: grid; grid-template-columns: minmax(0, 1fr) 20%; gap: 16px; background: #fff; border-radius: 8px; padding: 18px; margin-bottom: 16px; box-shadow: 0 2px 5px rgba(36, 55, 49, 0.18); }
.public-activity > .public-activity-date-banner {
  grid-column: 1 / -1;
  display: block;
  margin: 0;
  padding: 8px 12px;
  border-radius: 5px;
  background: #627b6e;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.35;
}
.public-activity-date-banner > svg { vertical-align: -0.15em; }
.public-contact { margin: 10px 0; }
.public-contact > summary { color: var(--accent-ink); cursor: pointer; font-weight: 700; }
.public-contact form { margin-top: 8px; }
.public-activity-relative-date { font-size: 0.85em; font-weight: 400; font-style: italic; }
.member-activity-list > .public-activity { margin-bottom: 14px; }
.member-activity-actions {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 14px;
  line-height: 1.4;
}
.member-activity-actions form { margin-bottom: 0; }
.member-activity-state { border-radius: 5px; padding: 5px 10px; background: #627b6e; color: #fff; font-weight: 700; }
.member-public-activity.activity-cancelled .member-activity-state { background: #795761; }
.member-activity-attendance { color: var(--muted); }
.public-activity-preview-actions:not([hidden]) { padding: 0 clamp(16px, 2vw, 28px) 12px; }
.public-activity-preview:has([data-activity-preview-member-actions]:not([hidden])) {
  width: max(40vw, 340px);
  height: max(55dvh, 420px);
}
.public-activity-details {
  display: flex;
  flex-direction: column;
  gap: 5px;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.public-activity-photo {
  width: 100%;
  aspect-ratio: 1;
  align-self: start;
  border-radius: 6px;
  background: url("activity-photos.jpg") var(--photo-x, 0%) var(--photo-y, 0%) / 400% 600% no-repeat;
}
.public-activity-photo[data-photo-column="1"] { --photo-x: 33.333333%; }
.public-activity-photo[data-photo-column="2"] { --photo-x: 66.666667%; }
.public-activity-photo[data-photo-column="3"] { --photo-x: 100%; }
.public-activity-photo[data-photo-row="1"] { --photo-y: 20%; }
.public-activity-photo[data-photo-row="2"] { --photo-y: 40%; }
.public-activity-photo[data-photo-row="3"] { --photo-y: 60%; }
.public-activity-photo[data-photo-row="4"] { --photo-y: 80%; }
.public-activity-photo[data-photo-row="5"] { --photo-y: 100%; }
.public-activity-title {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  column-gap: 10px;
  align-items: center;
}
.public-activity-title > svg { grid-row: span 2; width: 52px; height: 52px; }
.public-activity-title > :is(h3, p) { margin: 0; }
.public-activity h3 { font-size: 1.25rem; }
.public-activity-details > :is(h3, p, .prose) { margin: 0; line-height: inherit; }
.public-closures { margin-bottom: 18px; }
.public-closures p { margin: 8px 0 13px; }
@media (max-width: 820px) { .sidebar { overflow: visible; } }
@media (max-width: 640px) { .schedule-row { display: block; } .schedule-row form { margin-top: 5px; } }

/* Member invitation policy: name, email and action share a single horizontal row. */
.member-invite-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) auto; gap: 12px; align-items: end; }
.member-invite-form > .form-grid { display: contents; }
.member-invite-form > .button { margin: 0; white-space: nowrap; }
.member-invite-form label, .member-invite-form .field-label-row { margin-top: 0 !important; }
.officer-role-fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) auto;
  align-items: end;
  gap: 8px;
}
.officer-role-fields textarea { display: block; }
.officer-role-fields > .button { justify-self: end; margin: 0; }
@media (max-width: 640px) {
  .officer-role-fields { grid-template-columns: minmax(0, 1fr); }
}

/* Compact member tables retain readable text and comfortable row actions. */
.member-list-screen { display: flex; flex-direction: column; }
/* Keep the title and both filters together in one compact heading row. */
.member-list-screen > .section-heading > div:first-child { flex-wrap: nowrap; min-width: 0; }
[data-member-state-filter] { flex-wrap: nowrap; min-width: 0; }
[data-member-state-filter] select { width: auto; min-width: 0; max-width: 100%; }
[data-member-state-filter] { gap: 4px !important; }
[data-member-state-filter] .form-select { padding-left: 8px; padding-right: 26px; background-position: right 7px center; }
.member-list-screen > .section-heading {
  flex: 0 0 auto;
  margin-bottom: 4px;
  padding-bottom: 2px;
}
.member-list-screen > .member-list-panel {
  flex: 0 0 auto;
  padding-inline: 1vw;
  background: var(--panel-muted);
  border-radius: 9px;
  margin-bottom: 8px;
}
.member-list-panel > .table-wrap { height: 40vh; margin-inline: 0; scrollbar-gutter: stable; }
/* The visible headings sit above the scroll box. Keep the native headings for screen readers. */
.member-list-head { overflow: hidden; scrollbar-gutter: stable; }
.member-list-panel > .table-wrap thead {
  position: absolute;
  width: 1px;
  height: 1px;
  clip-path: inset(50%);
  overflow: hidden;
}
@media (min-width: 641px) {
  .member-list-panel .members-table { table-layout: fixed; }
  .member-list-panel .members-table :is(th, td) { width: auto; }
  .members-table .member-role-column { width: 9rem; }
  .members-table .member-subs-column { width: 3.5rem; }
  .members-table .member-status-column { width:8.5rem; }
  .members-table .member-actions-column { width:7.5rem; }
}
.member-league-form { margin:0; }
.member-league-form select { width:100%; min-height:44px; }
.member-state-form { margin:0; }
.member-state-form select { width:100%; min-height:44px; }
.member-state-form [data-member-state-message]:empty { display:none; }
.member-league-form [data-autosave-message]:empty { display:none; }
.league-type-row { margin:0; padding:6px 10px; gap:0; }
.league-type-row:nth-child(odd) { background:#fff; }
.league-type-row:nth-child(even) { background:#edf0eb; }
.league-type-row [data-autosave-message]:empty { display:none; }
@media (max-width: 640px) {
  .member-list-head { display: none; }
}
.members-table th { padding: 3px 4px 5px; line-height: 1.2; }
.members-table td { padding: 5px 4px; line-height: 1.2; }
.members-table .table-email, .members-table td strong { line-height: 1.2; margin: 0; }
.members-table .member-identity-cell { width: 100%; }
.member-identity {
  display: flex;
  align-items: baseline;
  gap: 0.35em;
  contain: inline-size;
  overflow: hidden;
}
.member-identity > strong {
  flex: 0 0 auto;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.members-table .member-email-address {
  display: inline-flex;
  flex: 0 1 auto;
  min-width: 0;
  white-space: nowrap;
}
.member-email-address > span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.members-table .membership-status-cell { width: 1%; white-space: nowrap; text-align: center; }
.members-table .member-access-cell { width: 1%; white-space: nowrap; padding-inline-end: 0; }
.members-table .member-access-cell + .membership-status-cell { padding-inline-start: 0; }
.members-table .membership-status-cell { padding-inline-end: 2px; }
.members-table .role-form { margin: 0; gap: 7px; min-width: 0; }
.members-table .role-form select {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  max-width: 100%;
  min-height: 44px;
  padding-block: 4px;
}
.members-table .text-button { padding-top: 4px; padding-bottom: 4px; }

/* Keep text and rows inside signed-in activity cards compact. */
.activity-list .activity-card { line-height: 1.35; }
.activity-list:not(.admin-activities) .activity-card { padding-block: 12px; }
.activity-list:not(.admin-activities) .activity-top { margin-bottom: 6px; padding-bottom: 5px; }
.activity-list:not(.admin-activities) .activity-meta { margin: 5px 0; row-gap: 3px; }
.activity-list:not(.admin-activities) .activity-card > .prose { margin: 5px 0 8px; line-height: 1.4; }
.activity-list:not(.admin-activities) .activity-bottom { padding-top: 6px; }

@media (min-width: 801px) {
  .activity-list:not(.admin-activities) .activity-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 38%);
    column-gap: 16px;
  }
  .activity-list:not(.admin-activities) :is(.activity-top, .activity-bottom, .participant-details) {
    grid-column: 1 / -1;
  }
  .activity-list:not(.admin-activities) .activity-card > h3 { grid-area: 2 / 1; }
  .activity-list:not(.admin-activities) .activity-meta {
    grid-area: 2 / 2 / span 2;
    margin-top: 0;
    flex-direction: column;
    align-items: flex-end;
    align-self: start;
    text-align: right;
  }
  .activity-list:not(.admin-activities) .activity-date { font-size: calc(1rem - 1pt); }
  .activity-list:not(.admin-activities) .activity-card > .prose { grid-area: 3 / 1; }
}

/* Administrator activities use a few compact lines, with optional longer details. */
.admin-activities { gap: 9px; }
.admin-activities .activity-card { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 3px 14px; align-items: center; padding: 10px 15px; }
.admin-activities .activity-card > h3 { grid-column: 1; grid-row: 2; font-size: 1.125rem; margin: 0; }
.admin-activities .activity-booking-status { grid-column: 1 / -1; }
:is(.activity-card, .competition-summary):has(> .judge-declined-badge) { position: relative; }
.judge-declined-badge {
  position: absolute;
  top: -5px;
  left: calc(-5px - 0.75vw);
  z-index: 1;
  display: inline-flex;
  border-radius: 50%;
  background: #fff;
  color: #b42318;
}
.judge-declined-badge svg { width: 32px; height: 32px; stroke-width: 2.8; }
.judge-request-summary { background-color: #e5e9e1; }
.competition-summary > .judge-declined-badge {
  top: 8px;
  left: auto;
  right: 8px;
}
.competition-summary:has(> .judge-declined-badge) > .d-flex:first-of-type { padding-right: 32px; }
.admin-activities .activity-top { grid-column: 2; grid-row: 1; margin: 0; padding: 0; gap: 12px; }
.admin-activities .activity-meta { grid-column: 1; grid-row: 3; margin: 0; gap: 3px 10px; line-height: 1.35; }
.admin-activities .activity-card-date { grid-row: 1; }
.admin-activities .activity-card-header {
  grid-column: 1 / -1;
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 3px 14px;
}
.admin-activities .activity-card-header .activity-top { margin-left: auto; }
.activity-card-header .activity-date > span { white-space: nowrap; }
.admin-activities .activity-bottom { grid-column: 2; grid-row: 3; padding: 0; gap: 10px; }
.admin-activities .button-row { gap: 10px; }
.admin-activities .activity-card > .prose, .admin-activities .participant-details { grid-column: 1 / -1; margin: 0; padding: 0; }
.admin-activities .participant-details { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.admin-activities .activity-card > .prose { line-height: 1.4; }
@media (max-width: 640px) {
  .admin-activities .activity-card { display: block; }
  .admin-activities .activity-top { justify-content: flex-start; margin: 3px 0; }
  .admin-activities .activity-meta { margin: 4px 0; }
  .admin-activities .activity-bottom { justify-content: space-between; }
}

/* Competition and membership forms follow the same compact, readable rhythm. */
.competition-settings, .judging-settings { margin: 12px 0; padding: 0; border: 0; }
.competition-settings[hidden], .judging-settings[hidden] { display: none; }
.competition-settings legend, .judging-settings legend, .annual-date-fields legend { font-size: 1.125rem; font-weight: 600; margin: 10px 0 5px; }
.form-subheading { font-size: 1.125rem; margin: 12px 0 6px; }
.competition-section-row { display: grid; grid-template-columns: minmax(120px,1fr) minmax(110px,170px) minmax(125px,170px) auto; gap: 10px; align-items: end; margin-bottom: 8px; }
.competition-section-row .text-button { white-space: nowrap; }
.form-save-area { position: sticky; bottom: -12px; display: flex; align-items: center; gap: 18px; background: #fff; padding: 10px 0; margin-top: 8px; }
.competition-information { margin: 12px 0; }
.competition-information summary, .payment-record summary, .record-payment summary { min-height: 44px; padding: 8px 0; cursor: pointer; font-size: 1rem; font-weight: 600; }
.checkbox-label { display: flex !important; align-items: flex-start; gap: 10px; font-size: 1rem; font-weight: 400 !important; line-height: 1.4 !important; margin: 12px 0 !important; }
.stack-form .checkbox-label input[type="checkbox"], .checkbox-label input[type="checkbox"] { width: 22px; min-width: 22px; height: 22px; min-height: 22px; padding: 0; margin-top: 1px; }
.entry-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(190px,1fr)); gap: 14px; margin: 12px 0; }
@media (width > 640px) {
  .entry-section > .entry-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.entry-card { min-width: 0; padding: 12px; border-radius: 7px; background: #f4f5ef; margin: 0; }
.entry-card img { display: block; width: 100%; height: 160px; object-fit: contain; background: #e9ede4; border-radius: 5px; }
.entry-card h4, .entry-card figcaption > strong { display: block; font-size: 1.125rem; line-height: 1.3; margin: 8px 0 5px; overflow-wrap: anywhere; }
.entry-card p { font-size: 1rem; line-height: 1.4; margin: 5px 0; }
.competition-summary > p { line-height: 1.4; margin: 6px 0; }
.entry-section-heading {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin-bottom: 6px;
}
.entry-section-heading > h3 { margin: 0; }
.entry-section-heading > p { margin-inline-start: auto; text-align: right; line-height: 1.4; }
.judging-screen-select {
  width: min(18rem, 100%);
  min-height: 44px;
  margin-left: auto;
  border-color: var(--line);
  color: var(--ink);
}
[data-judging-display] [hidden] { display: none; }
.judging-section-header > .judging-section-name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.judging-section-actions { flex: 0 1 auto; min-width: 0; }
:is(#judging-results, .judging-results-toolbar) .button {
  width: 13rem;
  max-width: 100%;
  min-width: 0;
  padding-inline: 6px;
  justify-content: center;
  text-align: center;
}
@media (max-width: 640px) {
  .judging-section-header { flex-wrap: wrap; }
  .judging-section-header > .judging-section-name { flex-basis: 100%; }
  .judging-section-actions { margin-inline-start: auto; max-width: 100%; }
}
.judging-section-name { font-size: 1.125rem; margin: 18px 0 8px; }
.results-actions { display: flex; align-items: end; flex-wrap: wrap; gap: 15px; margin: 18px 0; }
.results-actions form { margin: 0; }
[data-entry-review] .modal-dialog { max-width: none; margin-inline: var(--bs-modal-margin); }
[data-entry-review] .modal-content { height: 100%; background: #292929; color: #fff; }
[data-entry-review] .modal-header {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "title close" "filters filters";
  gap: 12px;
  border-color: #515151;
}
[data-entry-review] .modal-title { grid-area: title; overflow-wrap: anywhere; }
[data-entry-review] .entry-review-filters { grid-area: filters; }
[data-entry-review] .entry-review-header-end { grid-area: close; }
[data-entry-review] .btn-close { margin: 0; }
@media (min-width: 992px) {
  [data-entry-review] .modal-header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    grid-template-areas: "title filters close";
  }
}
[data-entry-review] .form-select { background-color: #383838; color: #fff; }
[data-entry-review] .form-select:disabled { color: #aaa; }
body:has([data-entry-review].show) > .modal-backdrop { --bs-backdrop-opacity: 0.8; }
.entry-review-grid { display: grid; grid-template-columns: repeat(var(--review-columns, 4), minmax(0, 1fr)); gap: 12px; }
.entry-review-photo { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.entry-review-photo .entry-score { font-size: 150%; }
.entry-review-award-tray { justify-content: flex-start; border-color: #515151; max-height: 35%; overflow-y: auto; }
.entry-review-award-tray [data-review-award-status]:empty { position: absolute; }
.entry-review-award-token, .entry-review-clear { color: #fff; background: #383838; border: 1px solid #888; border-radius: 4px; padding: 4px 8px; }
.entry-review-award-token:not(:disabled) { cursor: grab; }
.entry-review-award-token[aria-pressed="true"] { outline: 2px solid #fff; }
.entry-review-award-token:disabled { opacity: 0.2; }
.entry-review-award-overlay {
  position: absolute;
  z-index: 1;
  filter: drop-shadow(0 3px 3px rgb(0 0 0 / 75%));
  inset: 4px auto auto 4px;
  max-width: calc(100% - 8px);
  display: flex;
  align-items: center;
  gap: 4px;
  pointer-events: none;
}
.entry-review-award-overlay .entry-review-clear { pointer-events: auto; }
.entry-review-award[draggable="true"] { pointer-events: auto; cursor: grab; user-select: none; }
.entry-review-award-bin:not([hidden]) {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 6px;
  border: 1px dashed #aaa;
  border-radius: 4px;
}
.entry-review-award-bin.is-award-drop-target { background: #733d3d; border-color: #fff; }
.entry-review-award {
  padding: 3px 15px 3px 7px;
  background: var(--award-colour, #ddd);
  color: #171717;
  font-weight: 700;
  line-height: 1.15;
  clip-path: polygon(0 0, 100% 0, calc(100% - 8px) 50%, 100% 100%, 0 100%);
}
.entry-review-award:is([data-review-award-label="Gold" i], [data-review-award-label="Silver" i], [data-review-award-label="Bronze" i], [data-review-award-label="1st" i], [data-review-award-label="2nd" i], [data-review-award-label="3rd" i]):not([hidden]) {
  display: grid;
  place-items: center;
  flex: 0 0 3.5rem;
  aspect-ratio: 1;
  padding: 0;
  border-radius: 50%;
  box-shadow: inset 0 0 0 2px rgb(0 0 0 / 20%);
  clip-path: none;
}
.entry-review-award-row {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(5.75rem, 1fr);
  gap: 6px;
  width: calc(100% - var(--bs-modal-footer-gap));
  overflow-x: auto;
  padding: 2px;
}
.entry-review-award-token {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 0;
  background: #383838;
  background: color-mix(in srgb, var(--award-colour, #707070) 50%, black);
  color: #fff;
  font-weight: 700;
}
:is([data-review-award="Gold" i], [data-review-award-label="Gold" i], [data-review-award="1st" i], [data-review-award-label="1st" i]) { --award-colour: #e9bf59; }
:is([data-review-award="Silver" i], [data-review-award-label="Silver" i], [data-review-award="2nd" i], [data-review-award-label="2nd" i]) { --award-colour: #d4dde5; }
:is([data-review-award="Bronze" i], [data-review-award-label="Bronze" i], [data-review-award="3rd" i], [data-review-award-label="3rd" i]) { --award-colour: #d29366; }
:is([data-review-award="Very Highly Commended" i], [data-review-award-label="Very Highly Commended" i]) { --award-colour: #cfb4ec; }
:is([data-review-award="Highly Commended" i], [data-review-award-label="Highly Commended" i]) { --award-colour: #a8c9ee; }
:is([data-review-award="Commended" i], [data-review-award-label="Commended" i]) { --award-colour: #a6d2b6; }
:is([data-review-award="Certificate" i], [data-review-award-label="Certificate" i]) { --award-colour: #e8d7b3; }
.entry-review-photo.is-award-drop-target { outline: 2px solid #fff; }
.entry-review-image { position: relative; display: block; }
.entry-review-fullscreen {
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  padding: 0;
  border: 0;
  background: #000;
}
.entry-review-fullscreen button { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: #000; cursor: zoom-out; }
.entry-review-fullscreen img { display: block; width: 100%; height: 100%; object-fit: contain; }
.entry-review-fullscreen .entry-score { top: 12px; right: 12px; font-size: 150%; }
.entry-review-caption {
  position: absolute;
  inset: auto 0 0;
  padding: 4px 8px;
  background: rgb(0 0 0 / 50%);
  color: #fff;
}
.entry-review-title, .entry-review-author {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.entry-review-author { display: none; font-weight: 700; }
[data-entry-review]:has([data-review-show-authors]:checked) .entry-review-author { display: block; }
.entry-review-photo img { display: block; width: 100%; aspect-ratio: 4 / 3; max-height: 55dvh; object-fit: contain; background: #141414; }
.annual-date-fields { border: 0; padding: 0; min-width: 0; }
.annual-date-fields > .form-grid { grid-template-columns: 70px minmax(0,1fr); gap: 10px; }
.compact-table th, .compact-table td { padding: 5px 8px; line-height: 1.25; }
.payment-record { padding: 9px 0; }
.payment-record p { font-size: 1rem; line-height: 1.4; margin: 3px 0; }
.member-actions { display: flex; align-items: center; justify-content: flex-end; gap: 2px; white-space: nowrap; }
.members-table .member-actions .icon-action { min-width: 34px; width: 34px; padding: 4px; }
.member-actions form { margin: 0; }
.member-actions a { min-height: 44px; display: inline-flex; align-items: center; }
@media (max-width: 640px) {
  .competition-section-row { grid-template-columns: minmax(120px,1fr) 120px; }
  .competition-section-row .text-button { grid-column: 1 / -1; justify-self: start; }
  .entry-grid { grid-template-columns: 1fr; }
  .annual-date-fields > .form-grid { grid-template-columns: 65px minmax(0,1fr); }
  .form-save-area { flex-wrap: wrap; gap: 10px; }
}

/* Officer titles describe responsibilities; assignment controls stay compact. */
.officer-member-picker { display: flex; align-items: center; gap: 10px; }
.officer-member-picker select { flex: 1; min-width: 0; }
.officer-choices { display: grid; grid-template-columns: repeat(auto-fit,minmax(210px,1fr)); gap: 3px 12px; }
.officer-choices legend { float: none; font-size: 1.125rem; margin: 10px 0 4px; }
.officer-choices .checkbox-label { margin: 0 !important; min-height: 44px; align-items: center; }
@media (max-width: 540px) { .officer-member-picker { flex-wrap: wrap; } .officer-member-picker select { flex-basis: 100%; } }

/* Information headers use one row for the title and its date where space allows. */

/* Common link colour and accessible edit/removal icons across the application. */
:root { --link: #5b4265; }
a:not(.button), a:not(.button):visited, a:not(.button):hover, .text-link, .text-button, .text-button.danger, .icon-action { color: var(--link) !important; }
.responsive-menu .dropdown-item.active { background: var(--menu-active-bg); color: var(--link) !important; }
.icon-action { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; min-width: 44px; min-height: 44px; width: 44px; padding: 9px; border: 0; border-radius: 6px; background: transparent; cursor: pointer; text-decoration: none; flex-shrink: 0; }
.icon-action svg { width: 23px; height: 23px; }
.icon-action:hover { background: #ece6ef; }
.icon-action:focus-visible { outline: 3px solid var(--link); outline-offset: 2px; }
.icon-action[aria-disabled="true"] { opacity: .5; cursor: default; background: transparent; }

/* Edit/delete actions form a single group at the right edge of their record. */
.record-actions { display: flex; justify-content: flex-end; align-items: center; gap: 6px; width: 100%; }
.record-actions form { margin: 0; }
@media (min-width: 641px) {
  .activity-type-row > :first-child { flex: 1; min-width: 0; overflow-wrap: anywhere; }
  .activity-type-row > .record-actions { width: auto; flex: 0 0 auto; max-width: 50%; }
}
.membership-type-row {
  display: grid;
  grid-template-columns: fit-content(45%) minmax(0, 1fr) 44px;
  align-items: center;
  gap: 8px;
}
.membership-type-row label { margin: 0; }
/* Keep the optional desktop-download panel as compact as membership expanders. */
.desktop-app-downloads, .membership-renewal-panel { padding: 2px 20px; margin-bottom: 6px; }
.desktop-app-downloads > summary, .membership-renewal-panel > summary { margin: 0; min-height: 44px; padding: 9px 0; font-size: 1rem; font-weight: 600; line-height: 1.6; }
.desktop-app-downloads[open] > summary, .membership-renewal-panel[open] > summary { margin-bottom: 4px; }
.desktop-app-downloads .field-help { margin: 4px 0; line-height: 1.3; }
.desktop-app-downloads .button-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  margin: 4px 0;
  gap: 6px;
}
.desktop-app-downloads .button-row > .button {
  width: 100%;
  min-height: 44px;
  white-space: normal;
  justify-content: center;
  text-align: center;
}
/* Member type and league share a compact card, with separate autosave forms. */
.membership-assignment-panel .membership-type-row { grid-template-columns: 8rem minmax(0, 1fr) 44px; }
.membership-type-row + .membership-type-row { margin-top: 8px; }
.membership-type-row [data-autosave-message] { grid-column: 1 / -1; }
.membership-type-row [data-autosave-message]:empty { display: none; }
.membership-type-row .form-select {
  min-width: 0;
  min-height: 44px;
  border-color: #dcd8dc;
  background-color: #fdfdfc;
  color: var(--ink);
}
.entry-title-row { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.entry-title-row h4 { min-width: 0; }
.entry-title-row .record-actions { width: auto; flex: none; gap: 0; }
.schedule-row > .icon-action { display: flex; margin-left: auto; }
.schedule-row > form:has(.icon-action) { display: flex; justify-content: flex-end; margin-left: auto; }
.competition-summary .button-row > .icon-action { margin-left: auto; }
.competition-summary .button-row > .competition-review-link + .icon-action { margin-left: 0; }
.personal-competition-summary { padding-bottom: 16px; }
.personal-competition-actions { margin-top: 8px; }
.personal-competition-status { display: inline-block; align-self: flex-start; padding: 4px 10px; border-radius: 5px; background: #777; color: #fff; font-size: 1rem; font-weight: 700; line-height: 1.4; text-align: right; }
.section-entry-count { font-size: 1rem; padding: 4px 8px; border-radius: 999px; line-height: 1; vertical-align: baseline; background: #d7dcd8; color: #35423a; }
.button.review-screen-button { background: #353535; color: #fff; border: 0; padding: 0; width: 24px; min-width: 24px; }
.review-screen-button svg { width: 22px; height: 22px; }
.competition-status-badge {
  display: inline-block;
}
/* Keep status badges consistent across personal competitions and activity lists. */
:is(.competition-status-badge, .activity-state, .member-activity-state) {
  padding: 4px 10px;
  border-radius: 5px;
  background: color-mix(in srgb, var(--accent-ink) 50%, white);
  color: #fff;
  font-weight: 700;
  line-height: 1.4;
}
.stack-form > .icon-action { align-self: flex-end; margin-left: auto; }
.competition-section-row > .icon-action { justify-self: end; }
.competition-add-section { clear: both; width: 100%; margin: 6px 0 10px; }
@media (max-width: 640px) { .competition-section-row > .icon-action { grid-column: 1 / -1; justify-self: end; } }

/* A common save icon sits beside compact name inputs. */
.input-save-row { display: flex; align-items: center; gap: 8px; }
.input-save-row > input { flex: 1; min-width: 0; width: auto !important; }
.input-save-row > .icon-action { margin-left: auto; }

/* Reserve the icon and gap first; an input must never consume the full save row. */
.input-save-row { display: flex; flex-wrap: nowrap; width: 100%; min-width: 0; }
.input-save-row > input { flex: 1 1 0; min-width: 0; width: calc(100% - 52px) !important; max-width: calc(100% - 52px); box-sizing: border-box; }
.input-save-row > .icon-action { flex: 0 0 44px; width: 44px; }
.role-form { flex-direction: row; align-items: center; flex-wrap: nowrap; min-width: 175px; }
.role-form select { flex: 1 1 0; min-width: 120px; width: calc(100% - 51px); max-width: calc(100% - 51px); }
.role-form > .icon-action { flex: 0 0 44px; }

/* Activity editing stays inside a roomy, internally scrolling dialog. */
#activity-editor-modal .modal-title { font-size: 1.375rem; }
#activity-editor-modal [data-activity-editor] { padding: 0; margin: 0; }
#activity-editor-modal .modal-header { padding-block: 6px; }
#activity-editor-modal .modal-body { padding: 8px 22px 12px; }
#activity-editor-modal .stack-form { margin: 0; }
[data-activity-editor] .form-grid { row-gap: 4px; }
[data-activity-editor] .stack-form > label,
[data-activity-editor] .form-grid label,
[data-activity-editor] .field-label-row { margin-block: 4px 2px; }
[data-activity-editor] :is(.competition-settings, .judging-settings, .lecture-fields) { margin-block: 6px; }
[data-activity-editor] :is(.competition-settings, .judging-settings) legend { margin-block: 4px 2px; }
[data-activity-editor] .stack-form :is(input:not([type="hidden"], [type="checkbox"], [type="radio"]), select, textarea) {
  padding-block: 6px;
}

/* Keep the competition timeline together, with readable controls on small screens. */
.competition-date-fields { grid-template-columns: repeat(3,minmax(0,1fr)); }
@media (max-width: 760px) { .competition-date-fields { grid-template-columns: 1fr; } }

/* Reserve the same label height with or without a help button. */
.form-grid > div > label:first-child,
.form-grid > div > .field-label-row:first-child {
  min-height: 32px;
  margin: 6px 0 4px !important;
  display: flex;
  align-items: center;
}
.form-grid > div > .field-label-row > label { margin: 0 !important; }

.club-about-grid {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
  gap: 0 12px;
}
.club-about-grid > :first-child,
.club-about-grid > .photograph-upload { display: flex; flex-direction: column; }
.club-about-grid textarea { flex: 1 1 auto; }
.finance-year-header { display: grid; }
.finance-year-header > details, .finance-year-picker { grid-area: 1 / 1; }
.finance-year-header > details > summary {
  min-height: 44px;
  align-content: center;
  max-width: 55%;
}
.finance-year-picker {
  display: flex;
  align-items: center;
  gap: 6px;
  z-index: 1;
  align-self: start;
  justify-self: end;
  margin: 8px 12px 0 0;
  max-width: 42%;
}
.finance-year-picker .icon-action { flex-shrink: 0; }
.finance-account-add-row {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr)) auto;
  align-items: end;
  gap: 8px;
}
.record-edit-dialog { width: min(36rem, 94vw); max-height: 90vh; overflow: auto; }
.record-edit-dialog.member-invite-dialog { width: min(50rem, 94vw); overflow-x: hidden; }
.record-edit-dialog .finance-account-add-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.record-edit-dialog .finance-account-add-row > :last-child { justify-self: end; }
@media (max-width: 760px) {
  .finance-account-add-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finance-account-add-row > :last-child { justify-self: end; }
}
.club-season-row {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
  gap: 0 8px;
}
.club-about-grid > .photograph-progress { grid-column: -2 / -1; }
.club-about-grid .photograph-drop {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 100px;
}
.club-logo-preview { display: block; max-width: 100%; object-fit: contain; }
.club-logo-preview { position: absolute; inset: 4px; width: calc(100% - 8px); height: calc(100% - 8px); pointer-events: none; }
.club-logo-title, .club-logo-picker,
.club-about-grid .photograph-drop > .field-help { position: relative; }
.club-logo-title {
  align-self: center;
  padding: 0 5px;
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.85);
  font-weight: 700;
  text-align: center;
}
.club-logo-picker { display: grid; flex: 1; place-items: center; min-width: 0; }
.club-logo-picker.has-logo .photograph-picker { align-self: end; opacity: 0.75; }
.club-logo-picker.has-logo .photograph-picker:hover,
.club-logo-picker.has-logo input:focus-visible + .photograph-picker { opacity: 1; }
.club-heading-logo { height: 2.25em; width: auto; max-width: 3em; object-fit: contain; vertical-align: middle; }
@media (max-width: 680px) {
  .club-about-grid { grid-template-columns: 1fr; row-gap: 8px; }
}
.club-details-form .form-grid { row-gap: 8px; }
.club-details-form > .form-grid + .form-grid { margin-top: 8px; }
.club-details-form .form-grid > div > label { margin-top: 0 !important; }

/* Distinguish panels with dropdown controls from information panels. */
.panel:is(details, :has(> details, select, .dropdown-toggle)) { background: var(--panel-muted); }

/* Keep the edit and cancel controls together at the end of each activity row. */
.admin-activities .activity-bottom .button-row { justify-content: flex-end; }
.activity-row-actions { display: flex; align-items: center; flex: none; gap: 10px; margin-left: auto; }

/* Match text action widths across activity types while keeping icons compact. */
.activity-list .activity-bottom .button-row .button {
  width: 12rem;
  max-width: 100%;
  justify-content: center;
  text-align: center;
}
.activity-list .activity-bottom .button-row .button:is(.button-activate, .button-competition) {
  width: 9rem;
}
.activity-attendance-row {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 4px 0 0;
}
.activity-attendance-action { flex: none; margin: 0 0 0 auto; }
.activity-attendance-action .button { min-height: 44px; padding: 4px 10px; }

/* Distinguish activation from the other activity actions. */
.activity-list .button.button-activate {
  background: #dbeef8;
  border-color: transparent;
  color: #183e53;
}
.activity-list .button.button-activate:hover {
  background: #c5e3f2;
  border-color: transparent;
}

/* Add a soft shadow to text buttons while leaving compact icons flat. */
.button {
  box-shadow: 0 2px 5px rgba(28, 40, 35, .13);
}

/* Alternate record surfaces without changing navigation or form backgrounds. */
:is(.schedule-list > .schedule-row,
    .activity-list > .activity-card,
    .workspace > .competition-summary,
    .public-activities > .public-activity,
    .club-choices > :is(form, .current-club-row)),
:is(.members-table, .compact-table) > tbody > tr > :is(td, th) {
  background-color: #f8f8f7;
}
:is(.schedule-list > .schedule-row:nth-child(even),
    .activity-list > .activity-card:nth-child(even):not(.activity-club-closed),
    .workspace > .competition-summary:nth-child(even of .competition-summary),
    .public-activities > .public-activity:nth-child(even of .public-activity),
    .club-choices > :is(form, .current-club-row):nth-child(even)),
:is(.members-table, .compact-table) > tbody > tr:nth-child(even) > :is(td, th) {
  background-color: #eff0ee;
}
.schedule-list > .schedule-row { padding-inline: 12px; }
.workspace > .competition-summary:nth-child(even of .competition-summary) {
  background-color: #e5e7e3;
}

/* Make the date lists easy to scan against their grey panels. */
.schedule-date-list > .schedule-row { background-color: #fff; }
.schedule-date-list > .schedule-row:nth-child(even of .schedule-row) { background-color: #f0f0f0; }

#weekly-schedules > details > form,
#closed-dates > details > form {
  background-color: var(--panel-muted);
}
.schedule-date-list:not(:empty) {
  border-top: 1px solid var(--line);
}

.activity-count-badge {
  display: inline-block;
  float: inline-end;
  min-width: 2em;
  margin-inline-start: 8px;
  padding: 1px 8px;
  border-radius: 999px;
  background: #394d36;
  color: #fff;
  font-size: 1rem;
  text-align: center;
  font-variant-numeric: tabular-nums;
}


/* Let narrow panels reflow before content reaches the scroll boundary. */
.workspace, .public-content, .modal-body, .table-wrap { overflow-wrap: anywhere; }
.modal-body { overflow-x: hidden; }
.member-invite-form > .form-grid > div { min-width: 0; }
@media (max-width: 640px) {
  .member-invite-form { grid-template-columns: minmax(0, 1fr); }
  .member-invite-form > .button { justify-self: start; }
  .table-wrap { margin-inline: 0; }
  .table-wrap table, .table-wrap tbody, .table-wrap tr, .table-wrap td { display: block; }
  .members-table .membership-status-cell { width: auto; text-align: left; }
  .members-table .member-access-cell { width: auto; }
  .table-wrap thead { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); overflow: hidden; }
  .table-wrap td[data-label]::before { content: attr(data-label); display: block; font-weight: 600; }
}

/* Mark activities reached from the Activity Types list. */
.activity-list .activity-card.activity-type-match { box-shadow: inset 4px 0 #62794a; }

/* Keep club closures visible on both alternating row shades. */
.activity-list > .activity-card.activity-club-closed { background-color: #fce8ed; }

/* Muted text marks cancellations while keeping the action icons clear. */
.activity-card.activity-cancelled,
.activity-card.activity-cancelled :is(.tag, .activity-meta, .prose, .participant-details, .activity-bottom > span) {
  color: #6b6b6b;
}

/* Keep the lecture fields together below their legend. */
.lecture-fields { min-width: 0; }
.lecture-fields > legend { font-size: 1rem; font-weight: 700; }
.lecture-field-row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

.lecture-field-row > div > label { margin-top: 0 !important; }

.activity-list .activity-top > .tag { font-weight: 700; }

.competition-date-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px 16px;
}
@media (max-width: 560px) {
  .competition-date-summary { grid-template-columns: 1fr; }
}

.competition-information > .entry-section {
  margin-top: 6px;
  padding-top: 4px;
}

#entry-form .form-grid,
.photograph-upload-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.photograph-upload-row {
  align-items: center;
}
@media (max-width: 600px) {
  #entry-form .form-grid,
  .photograph-upload-row { grid-template-columns: 1fr; }
}
.photograph-upload { min-width: 0; }
.photograph-progress { margin-top: 6px; }
.photograph-progress progress { display: block; width: 100%; accent-color: #b51e38; }
.photograph-drop {
  min-width: 0;
  display: grid;
  gap: 6px;
  border: 1px dashed var(--muted);
  border-radius: 6px;
  padding: 10px;
}
.photograph-drop input { min-width: 0; max-width: 100%; }
.photograph-drop > p:first-child { text-align: center; font-weight: 700; }
.photograph-picker { justify-self: center; cursor: pointer; }
.photograph-drop input:focus-visible + .photograph-picker { outline: 2px solid var(--ink); outline-offset: 2px; }
.photograph-filename { min-width: 0; overflow-wrap: anywhere; }
.photograph-filename:empty { display: none; }
.photograph-drop.has-dropped-photo {
  background: #f8d9e2;
  border: 1px solid #aa4661;
}
.photograph-save.is-pulsing {
  outline: 2px solid #b51e38;
  outline-offset: 2px;
}
@media (prefers-reduced-motion: no-preference) {
  .photograph-save.is-pulsing { animation: photograph-save-pulse 1.4s ease-out infinite; }
}
@keyframes photograph-save-pulse {
  0%, 100% { box-shadow: 0 0 0 0 transparent; }
  45% { box-shadow: 0 0 0 7px rgba(202, 32, 57, 0.68); }
}
.photograph-drop.is-dragging {
  background: #e3ead8;
  border-color: #596b60;
  box-shadow: 0 0 0 2px #596b60;
}
.photograph-drop [data-drop-message]:empty { display: none; }

.sidebar #entry-form { margin-top: 12px; padding: 8px 12px; background: var(--panel-muted); }
.sidebar #entry-form :is(.form-grid, .photograph-upload-row) { grid-template-columns: 1fr; }
.sidebar #entry-form .photograph-upload-row { margin-top: 6px; }
@media (max-width: 820px) {
  .sidebar #entry-form > form { max-height: 32vh; overflow-y: auto; }
}

#entry-form .entry-cancel-row { width: 100%; text-align: right; }
#entry-form .entry-finish { width: 100%; justify-content: center; }
#entry-form .entry-cancel { color: var(--muted); }

.header-title-group { display: flex; align-items: center; gap: 6px; min-width: 0; }
.club-cover-copy { flex: 1; min-width: 0; }
.club-cover-actions { align-self: stretch; display: flex; flex: 0 0 auto; flex-direction: column; align-items: flex-end; justify-content: space-between; gap: 8px; margin-inline-start: 6px; }

/* Keep the shared title bar compact while allowing controls to set its height. */
.site-header, .app-body .site-header {
  min-height: 0;
  margin: 0 auto;
  padding: 1vh 8px 8px;
  gap: 6px;
}
.club-cover-copy { position: relative; top: -1vh; }
.site-header .brand { font-size: 1.348125rem; gap: 4px; letter-spacing: normal; }

.site-header {
  position: relative;
  isolation: isolate;
  opacity: .5;
  transition: opacity .15s ease;
}
.site-header::before {
  content: '';
  position: absolute;
  inset: 0 calc(50% - 50vw);
  z-index: -1;
  background: #fff;
}
.site-header:has(.brand:hover), .site-header:focus-within { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .site-header { transition: none; }
}

/* Give each public club column its own vertical scroll area on wider screens. */
@media (min-width: 821px) {
  .public-page > .public-content {
    display: grid;
    flex: 1 1 0;
    grid-template-rows: minmax(0, 1fr);
    overflow: hidden;
    scrollbar-gutter: auto;
  }
  .public-column {
    min-height: 0;
    min-width: 0;
    margin-bottom: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    padding-inline: 4px;
  }
  .public-column-scroll {
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    scrollbar-gutter: stable;
  }
}

.membership-rate-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; align-items: end; }
.membership-rate-grid > div { min-width: 0; }

.member-activity-card { display: grid; grid-template-columns: minmax(0, 1fr) min(16.75%, 80.4px); gap: 12px; align-items: start; }
.member-activity-graphic { display: block; width: 100%; height: 100%; position: absolute; inset: 0; }
.member-activity-graphic-slot { position: relative; align-self: stretch; }

.sticky-section-heading {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--paper);
  padding-block: 6px;
}

.admin-activities [data-date-swap][draggable="true"] { cursor: grab; }
.activity-date-drop-space {
  border: 2px dashed var(--accent-ink);
  border-radius: 8px;
  padding: 10px;
  text-align: center;
}

.activity-date-drop-space.is-drag-over {
  background-color: #e0efe6;
  border-style: solid;
}

.entry-grid.admin-results-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  /* Three 108px thumbnail rows, two gaps and padding for the score badges. */
  grid-auto-rows: 108px;
  max-height: 348px;
  gap: 8px;
  padding: 4px;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior-y: contain;
}

.admin-results-grid .entry-review-award-overlay {
  inset: auto 0 calc((1rem - 1pt) * 1.15 + 4px);
  transform: none;
  max-width: none;
  filter: none;
}
.admin-results-grid .entry-review-award:not([hidden]) {
  display: block;
  flex: initial;
  aspect-ratio: auto;
  padding: 3px 6px;
  border-radius: 0;
  clip-path: none;
  box-shadow: none;
  max-width: 100%;
  width: 100%;
  text-align: center;
  font-size: 0.75rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: color-mix(in srgb, var(--award-colour, #ddd) 75%, transparent);
}

#judging-results { --entry-holder-background: #b8b8b8; }
.admin-results-grid .entry-card {
  --thumbnail-padding: 6px;
  --thumbnail-background: var(--entry-holder-background);
  padding: var(--thumbnail-padding);
  background: var(--thumbnail-background);
  border-radius: 0;
  min-width: 0;
  overflow-wrap: anywhere;
}

.admin-results-grid .entry-card img {
  height: 96px;
  background: var(--thumbnail-background);
  border-radius: 0;
}

.entry-score-holder { position: relative; min-width: 0; overflow: visible; }

.admin-entry-image {
  position: relative;
  display: block;
}

.entry-score {
  position: absolute;
  z-index: 1;
  top: -3px;
  right: -2px;
  pointer-events: none;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgb(0 0 0 / 50%);
  color: #fff;
  font-weight: 700;
}
.admin-entry-author {
  font-size: calc(1rem - 1pt);
  position: absolute;
  inset: calc(-1 * var(--thumbnail-padding)) calc(-1 * var(--thumbnail-padding)) auto;
  padding: 2px 4px;
  color: #fff;
  background: transparent;
  text-shadow: 0 1px 3px #000, 0 0 4px #000;
  line-height: 1.15;
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.admin-entry-title {
  line-height: 1.15;
  position: absolute;
  inset: auto calc(-1 * var(--thumbnail-padding)) calc(-1 * var(--thumbnail-padding));
  padding: 2px 4px;
  color: #fff;
  background: rgb(0 0 0 / 50%);
  font-size: calc(1rem - 1pt);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.site-header .site-help {
  box-shadow: 0 2px 5px rgba(28, 40, 35, .22);
}

/* Admin compact activity list: date and title share a single row. */
.compact-activity-list { list-style: none; margin: 0; padding: 0; }
.compact-activity-list li:not(.activity-date-drop-space) {
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr) 6rem 2.5rem;
  align-items: center;
  gap: .5rem;
  padding: 0 .5rem;
  white-space: nowrap;
  background: #fff;
}
.compact-activity-list li:not(.activity-date-drop-space):nth-child(even) { background: #f5f6f6; }
/* Drafts keep their colour across both alternating admin list styles. */
.activity-list.admin-activities > .activity-card.activity-draft,
.compact-activity-list.admin-activities > li.activity-draft:not(.activity-date-drop-space) {
  background: #f9e4eb;
}
.compact-activity-list li > :last-child { justify-self: end; }
@media (pointer: fine) {
  .compact-activity-list .icon-action { min-height: 32px; padding-block: 4px; }
}

.activity-calendar { width: min(26rem, 94vw); max-height: 90vh; overflow: auto; }
.activity-calendar-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 3px;
  text-align: center;
}
.activity-calendar-days button {
  min-height: 44px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: white;
  color: inherit;
}
.activity-calendar-days .is-occupied { background: #dcdcdc; }
.activity-calendar-days button.is-meeting-day { border: 3px solid var(--accent-ink); font-weight: 700; }
.activity-calendar-days button:disabled { opacity: .45; cursor: default; }
.activity-calendar-days button[aria-pressed="true"] { border: 2px solid currentColor; }


.competition-scoring-options .three-judge-scale,
.competition-scoring-options:has(#judge_count option[value="3"]:checked) .single-judge-scale { display: none; }
.competition-scoring-options:has(#judge_count option[value="3"]:checked) .three-judge-scale { display: block; }

.competition-judge-contact { align-items: end; }
.competition-judge-contact > p { grid-column: 1 / -1; }
@media (min-width: 768px) {
  .form-grid.competition-judge-columns {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) max(10rem, 20%);
  }
}

.public-results-activity > .activity-award-gallery { grid-column: 1 / -1; }
.activity-award-gallery {
  grid-column: 1 / -1;
  min-width: 0;
  margin-top: 8px;
}
.activity-award-gallery > summary {
  padding: 8px 0;
  border-top: 1px solid rgb(0 0 0 / 15%);
  cursor: pointer;
  font-weight: 700;
}
.activity-award-grid.entry-grid {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr));
  margin: 0;
}
.activity-award-section-title { margin: 12px 0 4px; }
.activity-award-gallery-content > .activity-award-grid {
  --award-columns: 4;
  grid-template-columns: repeat(var(--award-columns), minmax(0, 1fr));
  gap: 8px;
  margin-top: 0;
}
.activity-award-gallery-content > .activity-award-grid:not(:has(> :nth-child(4))) {
  --award-columns: 3;
}
.activity-award-gallery-content > .activity-award-grid:not(:has(> :nth-child(3))) {
  --award-columns: 2;
}
.activity-award-gallery .entry-card { position: relative; padding: 0; }
.activity-award-caption { pointer-events: none; }
.award-image-preview {
  box-sizing: border-box;
  width: 50vw;
  max-width: calc(100vw - 24px);
  max-height: 90vh;
  padding: 12px;
  border: 0;
  border-radius: 10px;
  background: #fff;
}
.award-image-preview::backdrop { background: rgb(0 0 0 / 60%); }
.award-image-preview-header {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 8px;
}
.award-image-preview-header .btn-close { flex-shrink: 0; }
.award-image-preview-photo { width: fit-content; max-width: 100%; margin: 0 auto; }
.award-image-preview-photo img { display: block; max-width: 100%; max-height: 70vh; }
.award-image-preview.personal-entry-preview {
  width: 60vw;
  height: 80vh;
  max-width: 60vw;
  max-height: 80vh;
  background: #303030;
  color: #fff;
}
.personal-entry-preview .btn-close { filter: invert(1) grayscale(1) brightness(2); }
.personal-entry-preview[open] { display: flex; flex-direction: column; }
.personal-entry-preview .award-image-preview-photo { flex: 1; min-height: 0; width: 100%; }
.personal-entry-preview .award-image-preview-photo img { width: 100%; height: 100%; max-height: 100%; object-fit: contain; }
.award-image-preview-photo .entry-review-title { white-space: normal; overflow-wrap: anywhere; }
.award-image-preview-nav:not([hidden]) {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 8px;
}
.award-image-preview-nav [aria-disabled="true"] { opacity: 0.4; cursor: default; }
.public-activity[data-public-activity] { cursor: pointer; }
.public-activity-preview-trigger {
  border: 0;
  padding: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
}
.public-activity-preview {
  width: max(30vw, 340px);
  height: max(30dvh, 340px);
  max-height: calc(100dvh - 24px);
  padding: 0;
  overflow: hidden;
}
.public-activity-preview[open] { display: flex; flex-direction: column; }
.public-activity-preview-header {
  position: relative;
  flex: none;
  display: grid;
  place-items: center;
  min-height: 48px;
  padding: 6px 48px;
  background: #40584d;
}
.public-activity-preview-close {
  --link: #fff;
  position: absolute;
  top: 50%;
  right: 3px;
  transform: translateY(-50%);
  box-sizing: border-box;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  font-size: 1.5rem;
  line-height: 1;
}
.public-activity-preview-close:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }
.public-activity-preview h2 {
  margin: 0 0 12px;
  font-size: clamp(1.2rem, 1.65vw, 1.65rem);
  overflow-wrap: anywhere;
}
.public-activity-preview-date {
  text-align: center;
  overflow-wrap: anywhere;
}
.public-activity-preview-date .activity-meta {
  display: block;
  margin: 0;
  color: #fff;
  font-size: clamp(0.875rem, 1.1vw, 1.1rem);
  font-weight: 700;
  line-height: 1.25;
}
.public-activity-preview-body {
  position: relative;
  isolation: isolate;
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 18px clamp(16px, 2vw, 28px);
}
.public-activity-preview [data-activity-preview-nav] {
  flex: none;
  margin: 0;
  padding: 0 clamp(16px, 2vw, 28px) 12px;
}
[data-activity-preview-photo] {
  float: right;
  width: clamp(56px, 32%, 180px);
  margin: 0 0 8px 12px;
}
.public-activity-preview-graphic {
  position: absolute;
  z-index: -1;
  inset: 0 auto 0 25%;
  width: 60%;
  height: 100%;
  opacity: 0.09;
  pointer-events: none;
}
.public-activity-preview-body .public-activity-details { display: block; }
.public-activity-preview-body .public-activity-details > * {
  margin-bottom: 0.65em;
  font-size: clamp(0.95rem, 1.1vw, 1.1rem);
}
@media (prefers-reduced-motion: no-preference) {
  .activity-award-gallery[open] > .activity-award-gallery-content {
    animation: activity-gallery-slide-in 180ms ease-out;
  }
}
@keyframes activity-gallery-slide-in {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 540px) {
  .award-image-preview { width: calc(100vw - 24px); }
  .public-activity-preview { width: calc(100vw - 24px); }
  .activity-award-gallery-content > .activity-award-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.activity-photo-drop {
  display: grid;
  gap: 6px;
  padding: 12px;
  border: 2px dashed var(--line);
  border-radius: 6px;
  cursor: pointer;
}
.activity-photo-drop input { max-width: 100%; }
.activity-photo-upload-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
}
.activity-photo-upload-row .button { white-space: nowrap; }
.activity-photo-manager-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr));
  gap: 8px;
}
[data-activity-editor] .activity-photo-manager-grid {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, max(100px, calc((100% - 40px) / 6))), 1fr));
  width: 100%;
}
[data-activity-editor] .activity-photo-manager-item img {
  max-width: 100px;
}
.activity-photo-manager-item { min-width: 0; cursor: pointer; }
.activity-photos-form .activity-photo-manager-item input[type="checkbox"] {
  width: 22px;
  height: 22px;
  min-height: 0;
  padding: 0;
  vertical-align: middle;
}
.activity-photo-manager-item img, .activity-uploaded-photos img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 6px;
}
.activity-uploaded-photos.public-activity-photo { aspect-ratio: auto; background: none; }
.public-activity > .activity-uploaded-photos > img:not(:first-child) { display: none; }
[data-activity-preview-photo] .activity-uploaded-photos { display: grid; gap: 6px; }
.public-activity-preview.has-photo-gallery {
  width: min(740px, calc(100vw - 24px));
  height: min(660px, calc(100dvh - 24px));
}
.public-activity-preview-gallery:not([hidden]) {
  clear: both;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding-top: 12px;
}

.dashboard[data-section="calendar"] { max-width: none; }
.club-calendar { display: flex; flex-direction: column; min-height: 100%; }
.club-calendar:is(.club-calendar-month, .club-calendar-year-view) { height: 100%; min-height: 0; }
/* Give both calendar grids the available space above the footer. */
.dashboard:has(.workspace > .club-calendar) { padding-bottom: 8px; }
.workspace:has(> .club-calendar) { padding-bottom: 0; }
.club-calendar > :not(.club-calendar-grid, .club-calendar-year, dialog) { flex-shrink: 0; }
.club-calendar-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.club-calendar-header h2 { margin: 0; }
.club-calendar-heading { display: flex; align-items: center; gap: 8px; }
.club-calendar-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.club-calendar-fullscreen,
.club-calendar-fullscreen > span:last-child,
:fullscreen .club-calendar-fullscreen > span:first-child { display: none; }
.calendar-fullscreen-available .club-calendar-fullscreen { display: inline-flex; }
:fullscreen .club-calendar-fullscreen > span:last-child { display: inline; }
.club-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  grid-template-rows: auto;
  grid-auto-rows: minmax(0, 1fr);
  flex: 1 1 0;
  min-height: 0;
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}
.club-calendar-weekday, .club-calendar-day { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 6px; }
.club-calendar-weekday { background: #e8eddf; text-align: center; font-weight: 700; }
.club-calendar-day { min-width: 0; background: #fff; }
.club-calendar-month .club-calendar-day { min-height: 0; overflow: hidden auto; padding-top: 4px; }
.club-calendar-outside { background: #f0f2ee; }
.club-calendar-today { box-shadow: inset 0 0 0 2px var(--accent-ink); }
.club-calendar-day > time { display: block; font-weight: 700; }
.club-calendar-full-date { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.club-calendar :is(.club-calendar-day, .club-calendar-year-month) ul { display: grid; gap: 5px; margin: 5px 0 0; padding: 0; list-style: none; }
.club-calendar :is(.club-calendar-day, .club-calendar-year-month) li { padding: 5px 6px; border-radius: 5px; background: #e8eddf; overflow-wrap: anywhere; }
.club-calendar :is(.club-calendar-day, .club-calendar-year-month) a { color: var(--accent-ink); font-weight: 700; }
.club-calendar-month .club-calendar-day ul { margin-top: 3px; }
.club-calendar-month .club-calendar-day li { padding-block: 2px; }
@media (min-width: 701px) {
  .club-calendar-month .club-calendar-day li {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}
.club-calendar-event-time, .club-calendar-event-status { display: block; }
.club-calendar-month .club-calendar-event-time { display: inline; margin-right: 0.25em; }
.club-calendar-event-status { font-style: italic; }
.club-calendar-month .club-calendar-event-status { display: inline; }
.club-calendar-year .club-calendar-event-status { display: inline; font-weight: 400; font-style: normal; }
.club-calendar-event-dialog { width: clamp(360px, 40vw, 720px); padding: 18px; overflow-wrap: anywhere; }
.club-calendar-event-datebar {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 52px;
  margin: -18px -18px 16px;
  padding: 8px 52px;
  border-radius: 10px 10px 0 0;
  background: #000;
  color: #fff;
  text-align: center;
}
.club-calendar-event-date > p { margin: 0; }
.club-calendar-event-close {
  position: absolute;
  top: 50%;
  right: 4px;
  transform: translateY(-50%);
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #fff;
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
}
.club-calendar-event-close:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }
.club-calendar-event-description { font-style: italic; margin-bottom: 8px; }
.club-calendar-event-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.club-calendar-event-header h2 { min-width: 0; margin: 0; flex: 1; }
.club-calendar-event-type {
  max-width: 100%;
  border-radius: 5px;
  padding: 5px 10px;
  background: #627b6e;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
}
.club-calendar-event-graphic { width: 2.5rem; height: 2.5rem; flex-shrink: 0; }
.club-calendar-event-graphic[hidden] { display: none; }
.club-calendar-member-layout { display: flow-root; }
.club-calendar-member-photo-holder {
  float: right;
  width: 32%;
  margin: 0 0 12px 18px;
  padding: 7px;
  background: #45494c;
}
.club-calendar-member-photo { display: block; width: 100%; max-height: 40dvh; object-fit: contain; }
@media (max-width: 540px) {
  .club-calendar-member-photo-holder { float: none; width: 100%; margin: 0 0 12px; }
  .club-calendar-member-photo { max-height: 30dvh; }
}
.club-calendar-action-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: end;
  gap: 8px;
}
.club-calendar-action-row .button { width: 100%; min-height: 44px; padding: 8px; gap: 6px; }
:is(.status-message, .notice, .field-help[role="status"], [data-calendar-save-message], [data-finance-filter-status], [data-weekly-slots], [data-review-award-status], #officer-load-status, #judging-status, #judging-display-status):not(:empty) {
  background: #eee8f5;
  color: #514064;
  border-radius: 6px;
  padding: 4px 8px;
  border: 0;
  font-size: 1rem;
  font-weight: 400;
  font-style: italic;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
:is(.status-message, .notice, [role="status"]).notice-error:not(:empty) {
  background: #fbf0ef;
  color: #8b3f41;
}
[data-calendar-save-message]:empty { display: none; }
/* Show explicit workflow buttons only when there is something to apply. */
form[data-autosave-ready] button[type="submit"]:not([name], [data-explicit-action], [data-upload-action], [data-activity-conversion], [data-competition-structure-action]),
tr:has(form[data-autosave-ready="1"][data-autosave="award"]) button[type="submit"][form],
form[data-autosave-ready]:not([data-upload-pending="1"]) [data-upload-action],
form[data-autosave-ready]:not([data-activity-conversion="1"]) [data-activity-conversion],
form[data-autosave-ready]:not([data-sections-changed="1"], [data-judging-change="1"]) [data-competition-structure-action] {
  display: none;
}
.club-calendar-action-row .club-calendar-delete { background: #f4c5d6; border-color: #e6a4bd; color: #60243e; }
.club-calendar-action-row .club-calendar-delete:hover { background: #ecadc5; color: #60243e; }
#current-activities [id^="activity-"] { scroll-margin-top: 20px; }
@media (max-width: 900px) {
  .club-calendar-month :is(.club-calendar-day, .club-calendar-weekday) { padding: 3px; }
  .club-calendar-month .club-calendar-day li { padding: 2px 3px; }
  .club-calendar-month .club-calendar-day a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .club-calendar-month .club-calendar-day :is(.club-calendar-event-time, .club-calendar-event-status) { display: none; }
}

.club-calendar li.club-calendar-event-draft { background: #fff0cc; }
.club-calendar li.club-calendar-event-confirmed { background: #e0eedc; }
.club-calendar li.club-calendar-event-cancelled { background: #f0eeeb; }
.club-calendar :is(.club-calendar-event-draft, .club-calendar-event-cancelled)[data-calendar-drag] { cursor: grab; }
.club-calendar-event-confirmed[data-calendar-drag] { cursor: not-allowed; }
.club-calendar .club-calendar-drop-target { outline: 2px dashed var(--accent-ink); outline-offset: -3px; }
.club-calendar-year {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: minmax(0, 1fr);
  flex: 1 1 0;
  min-height: 0;
  gap: 6px;
}
.club-calendar-year-month {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  padding: 0 6px 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
}
.club-calendar-year-month h3 {
  position: sticky;
  top: 0;
  z-index: 1;
  margin: 0;
  padding: 3px 0;
  background: #fff;
  font-size: 1.05rem;
}
.club-calendar-year .club-calendar-year-month ul { gap: 3px; margin-top: 2px; }
.club-calendar-year .club-calendar-year-month li { padding: 2px 4px; line-height: 1.2; }
@media (max-width: 700px) {
  .club-calendar-year { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.club-calendar .club-calendar-closed-day,
.club-calendar .club-calendar-year-month li.club-calendar-closure { background: #fce5e6; }
.club-calendar-closure-label {
  color: #722c36;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.club-calendar-year-month li.club-calendar-closure { color: #722c36; }
.club-calendar .club-calendar-year-month li.club-calendar-empty-meeting {
  background: transparent;
  border: 1px dashed var(--line);
  color: var(--muted);
}

/* Keep each expense on one line, with fixed space for the date and actions. */
.expenditure-row {
  display: grid;
  grid-template-columns: 11ch minmax(0, 1fr) 12ch 12ch 88px;
  align-items: center;
  gap: 0.35rem;
}
.expenditure-date { white-space: nowrap; font-variant-numeric: tabular-nums; }
.expenditure-details { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.expenditure-actions { display: flex; flex-wrap: nowrap; align-items: center; white-space: nowrap; }
.expenditure-actions form { margin: 0; }
[data-expenditure-list] .list-group-item > .expenditure-row { height: 44px; }
[data-expenditure-list] .list-group-flush > .list-group-item:last-child { border-bottom-width: 1px; border-bottom-color: transparent; }
@media (hover: hover) and (pointer: fine) {
  [data-expenditure-list] .list-group-item > .expenditure-row { height: 34px; }
  .expenditure-actions .icon-action { min-height: 34px; height: 34px; padding-block: 4px; }
}

.finance-add-actions { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.finance-column-headings { padding-inline: var(--bs-list-group-item-padding-x, 1rem); }
.finance-column-headings > :nth-child(3), .finance-column-headings > :nth-child(4),
.finance-amount { text-align: right; white-space: nowrap; }
@media (max-width: 560px) {
  .expenditure-row { grid-template-columns: 10ch minmax(0, 1fr) 9ch 9ch 88px; font-size: 0.82rem; }
}

/* Club palettes set the page, panel and accent colours. */
body[data-club-palette="grey"] {
  --paper: #eeeff0;
  --panel-muted: #dde0e3;
  --line: #d0d4d8;
  --ink: #25282c;
  --muted: #535b63;
  --accent-ink: #414a54;
  --link: #354653;
}
body[data-club-palette="blue"] {
  --paper: #eaf1f8;
  --panel-muted: #dae6f3;
  --line: #c9d9ea;
  --ink: #21364d;
  --muted: #465e78;
  --accent-ink: #28557d;
  --link: #24537e;
}
body[data-club-palette="green"] {
  --paper: #edf3e8;
  --panel-muted: #dce9d5;
  --line: #cadcc2;
  --ink: #233b2a;
  --muted: #4b6350;
  --accent-ink: #365d3d;
  --link: #315936;
}
body[data-club-palette="pink"] {
  --paper: #f8edf2;
  --panel-muted: #f1dde7;
  --line: #e6cbd9;
  --ink: #482b39;
  --muted: #705263;
  --accent-ink: #803f60;
  --link: #783651;
}
body[data-club-palette="purple"] {
  --paper: #f2edf8;
  --panel-muted: #e7ddf1;
  --line: #dacbe7;
  --ink: #392b4b;
  --muted: #625174;
  --accent-ink: #634782;
  --link: #5f3d83;
}
body[data-club-palette="warm"] {
  --paper: #f7efe5;
  --panel-muted: #efdfcd;
  --line: #e5d0b8;
  --ink: #422f22;
  --muted: #6b5544;
  --accent-ink: #794f33;
  --link: #78472c;
}
body[data-club-palette]:not([data-club-palette="default"]) .club-cover {
  background: var(--panel-muted);
}
/* Derive control surfaces from each palette instead of retaining default green. */
body[data-club-palette]:not([data-club-palette="default"]) {
  --button-bg: color-mix(in srgb, var(--accent-ink) 12%, white);
  --button-hover-bg: color-mix(in srgb, var(--accent-ink) 22%, white);
  --button-outline-bg: color-mix(in srgb, var(--accent-ink) 6%, white);
  --button-outline-hover-bg: color-mix(in srgb, var(--accent-ink) 14%, white);
  --menu-active-bg: color-mix(in srgb, var(--accent-ink) 16%, white);
  --menu-hover-bg: color-mix(in srgb, var(--accent-ink) 24%, white);
  --help-bg: color-mix(in srgb, var(--accent-ink) 18%, white);
  --help-hover-bg: color-mix(in srgb, var(--accent-ink) 28%, white);
  --tooltip-bg: var(--accent-ink);
  --focus-colour: var(--accent-ink);
}

.activity-details-input {
  min-height: calc(9em + 16px);
  max-height: 40vh;
  overflow-y: auto;
  overflow-wrap: anywhere;
  border: 1px solid #dcd8dc;
  border-radius: 5px;
  padding: 7px 12px;
  background: #fdfdfc;
  line-height: 1.5;
}
.stack-form textarea[hidden] { display: none; }

/* Club accounts: compact controls, readable tables and vertically scrolling details. */
.finance-tabs { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.finance-period-bar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; margin-bottom:12px; }
.finance-period-bar form { margin:0; }
.finance-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
.finance-summary > div { padding:12px; background:#edf3ef; border-radius:6px; }
.finance-summary strong { display:block; font-size:1.4rem; }
.finance-form { margin-block:10px; }
.finance-form .form-grid { gap:8px 12px; }
.finance-form label { margin-bottom:2px; }
.finance-filter { display:flex; flex-wrap:wrap; align-items:end; gap:8px 12px; margin-bottom:10px; }
.finance-filter > div { flex:1 1 180px; }
.finance-filter > label { padding-bottom:8px; }
.finance-record, .finance-bank-row { padding-block:8px; border-bottom:1px solid var(--line); }
.finance-record > summary, .finance-bank-row > summary { cursor:pointer; padding-block:6px; }
.finance-entry-details { min-width:min(350px,60vw); max-width:650px; padding-block:8px; white-space:normal; }
.finance-entry-details details { margin-block:8px; }
.finance-match-list { display:flex; flex-direction:column; gap:8px; max-height:260px; overflow-y:auto; }
.finance-match-list label { display:flex; gap:8px; align-items:baseline; }
.finance-audit-values { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.finance-audit-values pre { white-space:pre-wrap; overflow-wrap:anywhere; font-size:1rem; }
.finance-transactions td { vertical-align:top; }
@media(max-width:640px) {
  .finance-summary, .finance-audit-values { grid-template-columns:1fr; }
  .finance-entry-details { min-width:0; max-width:100%; }
  .finance-transactions { display:block; }
  .finance-transactions :is(thead) { display:none; }
  .finance-transactions :is(tbody,tr,td) { display:block; width:100%; }
  .finance-transactions tr { padding:10px 0; border-bottom:1px solid var(--line); }
}
.finance-screen .table-wrap { overflow-x:hidden; }
.finance-screen td { overflow-wrap:anywhere; }
.finance-transactions { display:block; }
.finance-transactions thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.finance-transactions tbody { display:block; }
.finance-transactions tr { display:grid; grid-template-columns:110px minmax(0,1fr) minmax(0,.65fr) max-content; padding:8px 0; }
.finance-transactions td:last-child { grid-column:1 / -1; }
.finance-entry-details { min-width:0; width:100%; }
@media(max-width:640px) {
  .finance-transactions tr { display:block; }
  .finance-screen table:not(.finance-transactions), .finance-screen table:not(.finance-transactions) :is(tbody,tr,td) { display:block; width:100%; }
  .finance-screen table:not(.finance-transactions) thead { display:none; }
  .finance-screen td[data-label]:not([data-label=""])::before { content:attr(data-label) ": "; font-weight:700; }
}

.finance-tabs { flex-wrap:nowrap; }
.finance-tabs > a { flex-shrink:0; white-space:nowrap; }
.finance-screen .panel { padding:14px 16px; margin-bottom:12px; }
.finance-screen .panel > p { margin-bottom:8px; }

/* Keep every accounts section visible; compact desktop tabs never become a dropdown. */
.finance-tabs { gap:4px; }
.finance-tabs > .button { padding:7px 8px; font-size:1rem; min-height:44px; }
@media(max-width:900px) { .finance-tabs { flex-wrap:wrap; } }

/* Shared select styling also covers controls outside .stack-form, such as report filters. */
body select:not([multiple]) {
  min-height:44px; min-width:0; font-size:1rem; line-height:1.5;
  padding:8px 36px 8px 12px; border:1px solid var(--line, #dcd8dc); border-radius:5px;
  color:var(--ink, #29352d); background-color:#fdfdfc; appearance:none;
  background-image:url("select-chevron.svg"); background-repeat:no-repeat;
  background-position:right 12px center; background-size:12px 8px;
}
body select:not([multiple]):focus { outline:2px solid #627b6e40; border-color:#627b6e; }
.app-body [data-entry-review] select:not([multiple]) { background-color:#383838; color:#fff; background-image:url("select-chevron-light.svg"); }
.finance-screen .finance-year-picker { max-width:100%; margin:0; gap:8px; }
.finance-screen .finance-year-picker label { white-space:nowrap; }
.finance-screen .finance-year-picker select { width:auto; min-width:170px; max-width:100%; }

/* Keep finance forms compact without reducing readable text or touch targets. */
.finance-screen .panel { padding:12px 14px; margin-bottom:10px; }
.finance-screen .panel h3 { margin-bottom:6px; }
.finance-screen .panel p.field-help { margin:4px 0 0; }
.finance-screen .table-wrap:has(+ .field-help) .table { margin-bottom:0; }
.finance-form { margin-block:6px; gap:6px; }
.finance-form .form-grid { gap:6px 10px; }
.finance-form .form-grid > div > :is(label,.field-label-row):first-child { min-height:26px; margin:2px 0 !important; }
.finance-form :is(input:not([type=hidden]),select,textarea) { padding-block:7px; }
.finance-entry-details details { margin-block:4px; }
.finance-record,.finance-bank-row { padding-block:4px; }
.finance-screen .finance-year-picker { flex-wrap:wrap; }

.finance-screen .button { width:16rem; max-width:100%; min-height:44px; padding:8px 12px; gap:8px; }
.finance-screen .button-row { flex-wrap:wrap; gap:8px; }
.finance-screen .finance-tabs > .button { width:auto; padding:7px 8px; }
.finance-form .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.finance-form .form-grid > div { min-width:0; }
.finance-filter { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:6px 10px; }
.finance-filter:has(input[name="from"]) { grid-template-columns:repeat(3,minmax(0,1fr)); }
.finance-filter > div { min-width:0; }
.finance-filter > label { display:flex; align-items:center; min-height:44px; gap:6px; margin:0; padding:0; }
.finance-filter .button { width:100%; }
@media(max-width:640px) {
  .finance-form .form-grid,.finance-filter,.finance-filter:has(input[name="from"]) { grid-template-columns:1fr; }
}

.finance-history .finance-record { border:0; margin:0; padding:0 8px; }
.finance-outstanding-items > .finance-record,
.finance-recurring-bills > .finance-record,
.finance-budgets > .finance-record { border-bottom:0; }
/* Compact planning lists; keep the creation forms separate from striped records. */
.finance-outstanding-items > .finance-planning-row,
.finance-recurring-bills > .finance-planning-row { margin:0; padding:0 8px; }
.finance-planning-row:nth-of-type(odd) { background:#fff; }
.finance-planning-row:nth-of-type(even) { background:#f1f3f0; }
.finance-planning-row > summary {
  display:list-item;
  align-content:center;
  min-height:44px;
  padding:4px 0;
  line-height:1.25;
}
.finance-planning-row[open] { padding-bottom:6px; }
.finance-budgets .table > :not(caption) > * > * { border-bottom:0; }
.finance-budgets .finance-budget-action { width:44px; padding:0; text-align:right; }
.finance-budgets .finance-form {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  align-items:end;
  gap:6px 10px;
}
.finance-budgets .finance-form > .form-grid { display:contents; }
.finance-budgets .finance-form > .d-flex .button { width:100%; }
.finance-budgets .finance-form[data-autosave] { grid-template-columns:repeat(3,minmax(0,1fr)); }
.finance-budgets .finance-form > [data-autosave-message] { grid-column:1 / -1; }
.finance-budgets .finance-form > [data-autosave-message]:empty { display:none; }
.finance-access-settings .finance-form {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  align-items:end;
  gap:6px 10px;
}
.finance-access-settings .finance-form > .form-grid { display:contents; }
.finance-access-settings .finance-form > .d-flex .button { width:100%; }
.finance-period-settings .finance-form {
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  align-items:end;
  gap:6px 10px;
}
.finance-period-settings .finance-form > .form-grid { display:contents; }
.finance-period-settings .finance-form > .d-flex .button { width:100%; }
@media(max-width:1100px) {
  .finance-period-settings .finance-form { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .finance-period-settings .finance-form > .d-flex { grid-column:1 / -1; }
}
@media(max-width:640px) {
  .finance-budgets .finance-form,
  .finance-budgets .finance-form[data-autosave],
  .finance-access-settings .finance-form,
  .finance-period-settings .finance-form { grid-template-columns:1fr; }
}
.finance-history .finance-record:nth-of-type(odd) { background:#fff; }
.finance-history .finance-record:nth-of-type(even) { background:#f1f3f0; }
.finance-history .finance-record > summary { padding:6px 0; line-height:1.3; }
.finance-history .finance-audit-values { padding:4px 0 8px; }

.finance-filter input:not([type="checkbox"]):not([type="hidden"]) {
  box-sizing:border-box; width:100%; min-width:0; min-height:44px;
  padding:8px 12px; border:1px solid var(--line, #dcd8dc); border-radius:5px;
  background:#fdfdfc; color:var(--ink); font-size:1rem; line-height:1.5;
}
.finance-filter input:not([type="checkbox"]):focus { outline:2px solid #627b6e40; border-color:#627b6e; }

.finance-entry-title { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.finance-toolbar {
  position:sticky;
  top:0;
  z-index:3;
  padding-bottom:4px;
  margin-bottom:6px;
  background:var(--paper);
}
.finance-toolbar .finance-period-bar { margin-bottom:0; }
.finance-account-balances .table { margin-bottom:0; }
.finance-screen .finance-account-balances > .field-help { margin:4px 0 0; }

/* Each transaction is one aligned row; its full-width contents expand underneath. */
.finance-transaction-row { background:#fff; margin:0; padding:0; }
.finance-transaction-row:nth-child(even) { background:#f1f3f0; }
.finance-transaction-summary {
  display:grid; grid-template-columns:28px 100px minmax(0,1fr) 150px 100px;
  align-items:center; gap:8px; min-height:36px; padding:2px 8px;
  list-style:none; cursor:pointer; line-height:1.25;
}
.finance-transaction-summary::-webkit-details-marker { display:none; }
.finance-transaction-summary::before { content:"▸"; text-align:center; font-size:1.75rem; font-weight:700; line-height:1; }
.finance-transaction-row[open] > .finance-transaction-summary::before { content:"▾"; }
.finance-entry-account { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.finance-entry-amount { text-align:right; white-space:nowrap; }
.finance-transaction-summary time { white-space:nowrap; }
.finance-date-short { display:none; }
.finance-transaction-row > .finance-entry-details { max-width:none; padding:4px 12px 10px; }
@media(max-width:640px) {
  .finance-transaction-summary { grid-template-columns:28px 70px minmax(0,1fr) 80px; gap:6px; padding-inline:4px; }
  .finance-transaction-summary .finance-entry-account,.finance-date-full { display:none; }
  .finance-date-short { display:inline; }
}

/* Keep confirmation pending visible without adding another line to member rows. */
.members-table > tbody > tr.member-email-unconfirmed > td { background-color: #fce6ec; }

/* Reveal desktop credentials beneath the card content, across the whole card. */
:is(#judging-api-code, #club-account-code) { display: block; padding: 2px 20px; margin-bottom: 6px; }
.code-settings-panel > summary { margin: 0; }
.code-settings-panel[open] > summary { margin-bottom: 6px; }
/* Public Information uses the Club leagues dimensions for every settings panel. */
main[data-section="public"] .workspace > :is(.schedule-panel, .code-settings-panel) {
  padding: 2px 20px;
  margin-bottom: 6px;
}
main[data-section="public"] .workspace > :is(.schedule-panel > details, .code-settings-panel) > summary {
  min-height: 44px;
  margin: 0;
  padding: 9px 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.6;
}
.code-settings-content { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); gap: 8px 20px; }
.code-settings-content > div { min-width: 0; }
.code-settings-content > div:nth-child(2) { text-align: right; }
.code-settings-content > details { grid-column: 1 / -1; min-width: 0; }
.code-settings-content p { margin: 4px 0; line-height: 1.3; }
:is(#judging-api-code, #club-account-code) p { max-width: none; }
:is(#judging-api-code, #club-account-code) > details { grid-column: 1 / -1; width: 100%; min-width: 0; }
:is(#judging-api-code, #club-account-code) code { display: block; width: 100%; margin-block: 6px; font-size: 1.062rem; font-weight: 600; }
.code-copy-row { display: flex; align-items: center; gap: 8px; }
.code-copy-row code { flex: 1; min-width: 0; }
@media (max-width: 640px) {
  .code-settings-content { grid-template-columns: minmax(0, 1fr); }
  :is(#judging-api-code, #club-account-code) > div:last-of-type { margin-top: 0; }
}

/* Keep section league eligibility compact beneath the section settings. */
.competition-section-row > .section-league-options { grid-column: 1 / -1; grid-row: 2; display: flex; flex-wrap: wrap; gap: 4px 18px; min-width: 0; margin: 0; padding: 4px 0; border: 0; }
.section-league-options { align-items: center; }
.section-league-label { flex-shrink: 0; }
.section-league-options .checkbox-label { margin: 0; }
.competition-section-row > [data-remove-section] { grid-column: 4; grid-row: 1; }
@media (max-width: 640px) {
  .competition-section-row > .section-league-options { grid-row: auto; }
  .competition-section-row > [data-remove-section] { grid-column: 2; grid-row: auto; }
}

/* A shared height keeps single-line fields and selects aligned across forms. */
html body :is(select, textarea[rows="1"], input:not([type="hidden"], [type="checkbox"], [type="radio"], [type="file"], [type="range"], [type="color"], [type="button"], [type="submit"], [type="reset"], [type="image"])) {
  height: var(--field-height) !important;
  min-height: var(--field-height) !important;
  padding-top: 5px !important;
  padding-bottom: 5px !important;
  font-size: 1rem;
  line-height: 1.5;
  box-sizing: border-box;
}

/* Match form actions to the shared compact field height. */
html body :is(.button, .btn, .text-button, .icon-action) {
  height: var(--field-height) !important;
  min-height: var(--field-height) !important;
  padding-top: 5px !important;
  padding-bottom: 5px !important;
  box-sizing: border-box;
}
html body .icon-action {
  width: var(--field-height);
  min-width: var(--field-height);
  padding-inline: 7px;
}

/* Keep officer role descriptions and actions in compact list rows. */
#officer-roles .schedule-list { margin-top: 8px; }
#officer-roles .schedule-row { padding-block: 3px; gap: 8px; line-height: 1.3; }
#officer-roles .schedule-row > div { min-width: 0; }
#officer-roles .schedule-row p { margin: 1px 0 0; line-height: 1.3; }

/* The screen toggle is a compact icon control within the award lightbox. */
html body #judging-results .button.review-screen-button {
  width: 24px;
  min-width: 24px;
  max-width: 24px;
  flex: 0 0 24px;
  gap: 0;
  height: 24px !important;
  min-height: 24px !important;
  padding: 0 !important;
}
.review-screen-button > span:not([hidden]) { display: flex; }

/* Keep competition editing rows evenly spaced within the scrolling panel. */
.competition-editor > .stack-form > label,
.competition-editor .competition-settings > label { margin: 6px 0 2px; line-height: 1.3; }
.competition-editor .form-grid { gap: 4px 12px; }
.competition-editor .form-grid > div > label:first-child {
  min-height: 22px;
  margin: 4px 0 2px !important;
  line-height: 1.3;
}
.competition-editor .competition-settings { margin-block: 6px; }
.competition-editor .competition-settings > legend,
.competition-editor .form-subheading { margin: 6px 0 3px; }
.competition-editor .competition-settings > .field-label-row { min-height: 22px; margin: 6px 0 2px; }
.competition-editor .competition-section-row { gap: 4px 10px; margin-bottom: 6px; }
.competition-editor .competition-section-row > .section-league-options { padding-block: 0; margin-top: -2px; }
.competition-editor .section-league-options .checkbox-label { min-height: 26px; margin: 0 !important; padding: 0; line-height: 1.2 !important; }
.competition-editor .competition-section-row > div > label { display: block; margin: 3px 0 2px; line-height: 1.3; }
.competition-editor .competition-judge-contact > .field-help { margin-block: 3px; line-height: 1.3; }
.competition-editor .stack-form textarea:not([rows="1"]) { padding-block: 6px; }

/* Keep account choices on one row on tablets, reserving space for each action. */
.account-choice-list > form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
}
.account-choice-list > form > strong {
  width: auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.account-choice-list > form > .tag { white-space: nowrap; }
.account-choice-list > form > .button { width: 13rem; white-space: nowrap; gap: 8px; padding-inline: 10px; }
@media (max-width: 1100px) {
  main[data-section="choose_club"] .dashboard-layout { display: block; }
  main[data-section="choose_club"] .sidebar { display: none; }
  main[data-section="choose_club"] .workspace { height: 100%; }
}

/* Keep the public-page action compact, aligned and readable beside the club name. */
.dashboard-heading > div:first-child { min-width: 0; }
.dashboard-heading .club-public-page-button {
  display: inline-flex;
  flex: 0 0 auto;
  width: max-content;
  max-width: 100%;
  gap: 8px;
  padding-inline: 12px;
  white-space: nowrap;
  line-height: 1.2;
  margin-left: auto;
}
.club-public-page-button svg { width: 18px; height: 18px; flex: 0 0 18px; }
@media (max-width: 900px) {
  .dashboard-heading .club-public-page-button { display: flex; }
}

/* Keep the password-reset action on one line beside personal account details. */
.account-panel > .section-heading { flex-wrap: wrap; gap: 8px 16px; }
.account-panel .account-password-reset { flex: 0 0 auto; white-space: nowrap; gap: 8px; padding-inline: 12px; margin-left: auto; }
.account-password-reset svg { flex: 0 0 18px; width: 18px; height: 18px; }

/* Isolate tooltip instances from Bootstrap controls without changing layout. */
.control-help-host { position: relative; }
[data-control-help-anchor] { position: absolute; inset: 0; pointer-events: none; }

/* Communications keep long recipient lists inside the content area. */
.communications-scroll { overflow-y: auto; overflow-x: hidden; min-height: 0; }
.communication-body { white-space: pre-wrap; overflow-wrap: anywhere; padding: 14px 0; }
.communication-recipients { max-height: 230px; overflow-y: auto; overflow-x: hidden; }
.communication-recipient { display: flex; justify-content: space-between; gap: 12px; padding: 8px 4px; overflow-wrap: anywhere; }
.communication-recipient:nth-child(even), .communication-choice:nth-child(even) { background: #f6f6f6; }
.stack-form .communication-choice { display: flex; align-items: center; gap: 10px; padding: 6px; min-height: 44px; }
.stack-form .communication-choice[hidden] { display: none; }
.stack-form .communication-choice input { width: 20px; height: 20px; min-height: 20px; flex: 0 0 20px; }
.communication-progress { font-size: 1.1rem; font-weight: 600; }
@media (max-width: 650px) { .communication-recipient { flex-wrap: wrap; } }

/* Keep each recipient and status together on one compact row. */
.communication-recipient.communication-status-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) auto; align-items: center; width: 100%; padding: 3px 4px; line-height: 1.35; }
.communication-status-row > span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.communication-status-row > span:last-child { text-align: right; }

/* Match the compact expanders on Club Information and My account. */
.communication-history { padding: 2px 20px; margin-bottom: 6px; }
.communication-history > details > summary { margin: 0; min-height: 44px; padding: 9px 0; font-size: 1rem; font-weight: 600; line-height: 1.6; }
.communication-history > details[open] > summary { margin-bottom: 4px; }

/* Compact the description-only card above the administrator's entries list. */
main[data-section="competition"] .competition-information { padding: 8px 28px; margin: 6px 0 8px; }
main[data-section="competition"] .competition-information > .prose { margin: 0; line-height: 1.4; }
main[data-section="competition"] .section-heading:has(+ .competition-information) { margin-bottom: 6px; }
main[data-section="competition"] .section-heading + .competition-information { margin-top: 0; }

/* Keep competition details and judging controls visible; scroll the sections. */
main[data-section="competition"] .workspace:has(> #judging-results) { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 0; }
main[data-section="competition"] .workspace:has(> #judging-results) > :not(#judging-results) { flex: 0 0 auto; }
#judging-results { display: flex; flex-direction: column; flex: 1 1 0; min-height: 0; margin-bottom: 0; padding-top: 16px; padding-bottom: 12px; overflow: hidden; }
.judging-results-toolbar { flex: 0 0 auto; padding-bottom: 6px; }
.judging-sections-scroll { flex: 1 1 0; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-gutter: stable; }

/* The entry controls share the fixed details card beneath its text. */
main[data-section="competition"] .competition-information { background: #f5f5f5; }
.competition-information .judging-results-toolbar { margin-top: 6px; padding-bottom: 0; }
.competition-information .judging-results-toolbar h3 { margin-bottom: 0; }

.section-heading .competition-header-description { margin: 4px 0 0; font-style: italic; line-height: 1.4; }
.competition-information .judging-results-toolbar:first-child { margin-top: 0; }

.judging-results-toolbar .checkbox-label { margin: 0 !important; }
.judging-results-toolbar [data-judging-display] > [role="status"]:empty { display: none; }

/* Readable, consistent actions alongside each competition section. */
#judging-results .section-action-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  width: 110px; height: 38px; min-height: 38px; padding: 4px 6px;
  border: 1px solid transparent; border-radius: 6px;
  background: var(--entry-holder-background); color: #fff; cursor: pointer;
  font: 550 0.9375rem/1.3 var(--sans); white-space: nowrap;
}
#judging-results .section-action-button svg { width: 28px; height: 28px; flex-shrink: 0; }
#judging-results .section-action-button:hover { background: color-mix(in srgb, var(--entry-holder-background) 65%, black); }
#judging-results .section-action-button:focus-visible { outline: 3px solid var(--accent-ink); outline-offset: 3px; }

.judging-section-name strong { font-weight: 700; }
.judging-section-name .judging-section-format { font-weight: 400; }

/* Give the fixed section controls a little breathing room below the row. */
main[data-section="competition"] .competition-information:has(.judging-results-toolbar) { padding-bottom: 16px; }

.judging-speech-label { display: inline-flex; align-items: center; gap: 4px; }
.judging-speech-label svg { width: 28px; height: 28px; flex-shrink: 0; stroke-width: 2.4; }

/* Publishing stays visible beneath the independently scrolling sections. */
#judging-results > .results-actions { flex: 0 0 auto; margin: 0; padding-top: 8px; }

main[data-section="competition"] .section-heading .competition-heading-edit { width: 48px; min-width: 48px; min-height: 48px; padding: 8px; }
.competition-heading-edit svg { width: 32px; height: 32px; stroke-width: 2.4; }

/* Transient messages sit over the shared header, without moving page content. */
.header-notification-source { display: none !important; }
.header-notification {
  position: fixed; inset: 6px auto auto 50%; transform: translateX(-50%);
  margin: 0; width: max-content; max-width: min(780px, calc(100vw - 24px));
  max-height: calc(100vh - 24px); overflow-y: auto; z-index: 10000;
  padding: 10px 20px; border: 1px solid #d4c5e5; border-radius: 8px;
  background: #eee8f5; color: #514064; box-shadow: 0 3px 14px rgb(0 0 0 / 18%);
  font: 700 1.125rem/1.4 var(--sans); text-align: center; overflow-wrap: anywhere;
  opacity: 1; transition: opacity 400ms ease; pointer-events: none;
}
.header-notification-error { background: #fbf0ef; color: #8b3f41; border-color: #efd6d4; }
.header-notification.is-fading { opacity: 0; }
.header-notification[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) { .header-notification { transition: none; } }

/* Keep each Club Information help circle on the same line as its disclosure. */
summary .field-help-button {
  float: right; margin: 1px 10px 0 16px; vertical-align: middle;
}
summary:has(.field-help-button):not(.finance-transaction-summary)::after { content: ""; display: block; clear: both; }

/* Finance rows reserve a help column rather than squeezing the amount. */
.finance-transaction-summary { grid-template-columns: 28px 108px minmax(0,1fr) 150px 100px 44px; }
.finance-transaction-summary .field-help-button { float: none; margin: 0; justify-self: center; }
@media (max-width: 640px) {
  .finance-transaction-summary { grid-template-columns: 28px 70px minmax(0,1fr) 80px 44px; }
}

[data-mail-compose] > [data-mail-picker] { margin-top: 12px; }
