:root {
  color-scheme: light;
  --ink: #18202a;
  --muted: #5c6875;
  --line: #dfe4e8;
  --paper: #fff;
  --canvas: #f4f6f7;
  --brand: #163f68;
  --blue: #163f68;
  --brand-light: #e9f1f8;
  --yes: #17633a;
  --no: #8f2d28;
  --pending: #785d12;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--canvas); line-height: 1.55; }
a { color: var(--brand); }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.site-header {
  min-height: 3.5rem;
  padding: .6rem max(1rem, calc((100vw - 76rem) / 2));
  display: flex;
  align-items: center;
  gap: 1.5rem;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.brand { color: var(--ink); font-size: .95rem; font-weight: 800; text-decoration: none; letter-spacing: .04em; }
.brand span { color: var(--brand); font-weight: 650; letter-spacing: 0; }
.brand .beta-badge {
  margin-left: .35rem;
  padding: .1rem .32rem;
  color: #704c00;
  background: #fff3c4;
  border-radius: 999px;
  font-size: .58rem;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
  vertical-align: .12rem;
}
.site-header nav { display: flex; gap: 1rem; }
.site-header nav a { color: var(--ink); font-size: .9rem; text-decoration: none; font-weight: 650; }
.site-header nav a:hover, .site-header nav a:focus-visible { color: var(--brand); text-decoration: underline; }
.user-session { margin-left: auto; display: flex; align-items: center; gap: .6rem; white-space: nowrap; }
.user-name { color: var(--muted); font-size: .85rem; text-decoration: none; }
.user-name:hover, .user-name:focus-visible { color: var(--brand); text-decoration: underline; }
.logout-form { margin: 0; }
.logout-link {
  padding: 0;
  color: var(--muted);
  background: transparent;
  border: 0;
  font: inherit;
  font-size: .76rem;
  text-decoration: underline;
  cursor: pointer;
}
.logout-link:hover, .logout-link:focus-visible { color: var(--brand); }
.content { width: min(76rem, calc(100% - 2rem)); margin: 0 auto; padding: clamp(1.25rem, 3vw, 2.25rem) 0; }
.content.narrow { width: min(44rem, calc(100% - 2rem)); }
.site-footer {
  width: min(76rem, calc(100% - 2rem));
  margin: 0 auto;
  padding: .4rem 0 1rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .7rem;
  color: var(--muted);
  font-size: .66rem;
}
.eyebrow { margin: 0; text-transform: uppercase; letter-spacing: .1em; font-size: .78rem; font-weight: 800; }
.personal-dashboard { display: grid; gap: .8rem; }
.personal-dashboard-heading h1 { margin: .08rem 0; font-size: clamp(1.75rem, 3vw, 2.25rem); line-height: 1.1; }
.personal-dashboard-heading p:last-child { margin: .15rem 0 0; color: var(--muted); }
.dashboard-overview-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(17rem, .6fr); gap: .8rem; }
.dashboard-panel { min-width: 0; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .75rem; }
.dashboard-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: .7rem; }
.dashboard-panel h2 { margin: .06rem 0 0; font-size: 1.15rem; line-height: 1.2; }
.dashboard-panel .text-link { flex: none; font-size: .78rem; }
.dashboard-event-list, .dashboard-registration-list { display: grid; gap: .4rem; }
.dashboard-event-row {
  display: grid;
  grid-template-columns: minmax(7.5rem, 10.5rem) minmax(0, 1fr) auto;
  align-items: center;
  gap: .7rem;
  padding: .58rem .65rem;
  color: var(--ink);
  background: var(--canvas);
  border: 1px solid transparent;
  border-radius: .48rem;
  text-decoration: none;
}
.dashboard-event-row:hover, .dashboard-event-row:focus-visible { color: var(--brand); border-color: var(--brand); }
.dashboard-event-row time, .dashboard-registration-row time { color: var(--muted); font-size: .72rem; font-weight: 700; }
.dashboard-event-row > span { display: grid; min-width: 0; }
.dashboard-event-row strong { overflow: hidden; font-size: .88rem; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-event-row > b { color: var(--brand); }
.dashboard-response { width: max-content; margin-top: .08rem; font-size: .67rem; font-weight: 800; }
.dashboard-response.yes { color: var(--yes); }
.dashboard-response.no { color: var(--no); }
.dashboard-response.pending { color: var(--pending); }
.dashboard-section-title { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem .55rem; }
.dashboard-attention-count { padding: .13rem .42rem; color: #6b4f00; background: #fff1b8; border-radius: 999px; font-size: .68rem; font-weight: 800; }
.dashboard-registration-panel.has-attention { border-color: #dfc467; }
.dashboard-registration-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .65rem .7rem; background: var(--canvas); border-left: .22rem solid transparent; border-radius: .45rem; }
.dashboard-registration-row.needs-attention { background: #fffaf0; border-left-color: #d2a61e; }
.dashboard-registration-row h3 { margin: .06rem 0 0; font-size: .9rem; line-height: 1.25; }
.dashboard-registration-row h3 a { color: var(--ink); text-decoration: none; }
.dashboard-registration-row h3 a:hover, .dashboard-registration-row h3 a:focus-visible { color: var(--brand); text-decoration: underline; }
.dashboard-registration-action { display: flex; flex: none; align-items: center; gap: .45rem; }
.dashboard-registration-action .status { font-size: .7rem; }
.dashboard-attendance-comparison { display: grid; gap: .8rem; }
.dashboard-attendance-metric > div { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.dashboard-attendance-metric > div strong { font-size: .85rem; }
.dashboard-attendance-metric > div span { color: var(--brand); font-size: 1.18rem; font-weight: 850; }
.dashboard-attendance-metric progress { width: 100%; height: .48rem; overflow: hidden; border: 0; border-radius: 999px; background: var(--line); accent-color: var(--brand); }
.dashboard-attendance-metric progress::-webkit-progress-bar { background: var(--line); border-radius: 999px; }
.dashboard-attendance-metric progress::-webkit-progress-value { background: var(--brand); border-radius: 999px; }
.dashboard-attendance-metric progress::-moz-progress-bar { background: var(--brand); border-radius: 999px; }
.dashboard-attendance-metric small { display: block; margin-top: .14rem; color: var(--muted); font-size: .68rem; }
.dashboard-attendance-note { margin: .8rem 0 0; color: var(--muted); font-size: .68rem; line-height: 1.45; }
.dashboard-empty { padding: .75rem; color: var(--muted); background: var(--canvas); border-radius: .48rem; font-size: .82rem; }
.dashboard-empty p { margin: 0; }
.page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.page-heading h1 { margin: .1rem 0; font-size: clamp(1.9rem, 3.5vw, 2.5rem); line-height: 1.08; }
.page-heading p:last-child { color: var(--muted); margin: 0; }
.page-title-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .75rem; }
.heading-actions { flex: none; display: flex; flex-wrap: wrap; gap: .45rem; }
.event-view-switch { display: flex; width: max-content; margin: 0 0 .65rem auto; padding: .18rem; background: #e7ebee; border-radius: .42rem; }
.event-view-switch a { padding: .3rem .65rem; color: var(--muted); border-radius: .3rem; font-size: .76rem; font-weight: 750; text-decoration: none; }
.event-view-switch a:hover, .event-view-switch a:focus-visible { color: var(--brand); }
.event-view-switch a[aria-current="page"] { color: var(--brand); background: var(--paper); box-shadow: 0 1px 3px rgb(24 32 42 / 12%); }
.event-density { margin-bottom: .7rem; padding: .75rem .85rem .6rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.event-density > header { display: flex; align-items: end; justify-content: space-between; gap: .75rem; }
.event-density h2 { margin: .05rem 0 0; font-size: 1rem; }
.event-density > header > p { margin: 0; color: var(--muted); font-size: .75rem; font-weight: 700; }
.event-density-scroll { margin-top: .55rem; overflow-x: auto; scrollbar-width: thin; }
.event-density-weeks { display: flex; align-items: stretch; min-width: max-content; padding: .1rem .05rem .3rem; }
.event-density-week {
  display: grid;
  grid-template-rows: .9rem 2.2rem 1rem .75rem;
  align-items: end;
  width: 2.65rem;
  min-width: 2.65rem;
  padding: .12rem .22rem;
  color: var(--muted);
  border-radius: .3rem;
  text-align: center;
  text-decoration: none;
}
a.event-density-week:hover, a.event-density-week:focus-visible { color: var(--brand); background: var(--brand-light); outline: none; }
.event-density-week.is-current { box-shadow: inset 0 0 0 2px #d0a21b; }
.event-density-month { align-self: center; min-height: .9rem; font-size: .58rem; font-weight: 850; text-transform: uppercase; }
.event-density-bar { display: block; width: 100%; height: .22rem; background: #edf1f4; border-radius: .22rem .22rem .12rem .12rem; }
.event-density-week.level-1 .event-density-bar { height: .65rem; background: #b8d0e5; }
.event-density-week.level-2 .event-density-bar { height: 1.25rem; background: #6497c2; }
.event-density-week.level-3 .event-density-bar { height: 2rem; background: var(--brand); }
.event-density-dates { align-self: center; overflow: hidden; font-size: .52rem; line-height: 1; text-overflow: ellipsis; white-space: nowrap; }
.event-density-today { align-self: center; color: #866400; font-size: .55rem; font-weight: 850; }
.event-density-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .4rem 1rem; margin-top: .25rem; color: var(--muted); font-size: .67rem; }
.event-density-footer p { margin: 0; }
.event-density-legend { display: flex; gap: .65rem; }
.event-density-legend span { display: flex; align-items: center; gap: .22rem; }
.event-density-legend i { display: inline-block; width: .75rem; height: .55rem; background: #edf1f4; border-radius: .15rem; }
.event-density-legend i.level-1 { background: #b8d0e5; }
.event-density-legend i.level-2 { background: #6497c2; }
.event-density-legend i.level-3 { background: var(--brand); }
.event-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(29rem, 1fr)); gap: .7rem; }
.event-month { min-width: 0; padding: .8rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.event-month > header { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; margin-bottom: .45rem; }
.event-month > header h2 { margin: 0; font-size: 1.05rem; text-transform: capitalize; }
.event-month > header span { color: var(--muted); font-size: .7rem; font-weight: 700; }
.event-calendar-weekdays, .event-calendar-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.event-calendar-weekdays { color: var(--muted); font-size: .61rem; font-weight: 800; text-align: center; }
.event-calendar-weekdays span { padding: .18rem; }
.event-calendar-day { min-height: 3rem; padding: .23rem; border-top: 1px solid var(--line); border-left: 1px solid var(--line); background: #fbfcfc; }
.event-calendar-day:nth-child(7n) { border-right: 1px solid var(--line); }
.event-calendar-day.is-outside { background: transparent; border-color: transparent; }
.event-calendar-day.is-today { background: #fff8df; box-shadow: inset 0 0 0 2px #d0a21b; }
.event-calendar-date { display: block; color: var(--muted); font-size: .64rem; font-weight: 750; }
.event-calendar-markers { display: flex; flex-wrap: wrap; gap: .14rem; margin-top: .15rem; }
.event-calendar-marker, .event-calendar-number { display: inline-flex; align-items: center; justify-content: center; width: 1.12rem; height: 1.12rem; border-radius: 999px; font-size: .59rem; font-style: normal; font-weight: 850; line-height: 1; }
.event-calendar-marker { color: white; text-decoration: none; }
.event-calendar-marker:hover, .event-calendar-marker:focus-visible { filter: brightness(1.2); outline: 2px solid var(--brand); outline-offset: 1px; }
.event-calendar-marker.is-event, .event-calendar-number.is-event { color: white; background: var(--brand); }
.event-calendar-marker.is-yes, .event-calendar-number.is-yes { color: white; background: var(--yes); }
.event-calendar-marker.is-no, .event-calendar-number.is-no { color: white; background: var(--no); }
.event-calendar-marker.is-pending, .event-calendar-number.is-pending { color: #4d3b00; background: #f1d364; }
.event-calendar-agenda { display: grid; gap: .28rem; margin: .55rem 0 0; padding: .5rem 0 0; border-top: 1px solid var(--line); list-style: none; }
.event-calendar-agenda li { display: grid; grid-template-columns: 1.2rem minmax(0, 1fr) auto; align-items: center; gap: .45rem; }
.event-calendar-agenda li > div { display: grid; min-width: 0; }
.event-calendar-agenda li > div > a { overflow: hidden; color: var(--ink); font-size: .78rem; font-weight: 750; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.event-calendar-agenda li > div > a:hover, .event-calendar-agenda li > div > a:focus-visible { color: var(--brand); text-decoration: underline; }
.event-calendar-agenda small { overflow: hidden; color: var(--muted); font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.event-calendar-edit { font-size: .65rem; }
.event-calendar-empty { display: block !important; color: var(--muted); font-size: .72rem; }
.event-calendar-unpositioned { margin-top: 1rem; }
.event-calendar-unpositioned > h2 { margin-bottom: .1rem; font-size: 1.05rem; }
.event-calendar-unpositioned > p { margin: 0 0 .55rem; color: var(--muted); font-size: .75rem; }
.event-list { display: grid; gap: .65rem; }
.events-calendar-link { margin: .8rem 0 0; text-align: right; font-size: .78rem; }
.events-calendar-link a { color: var(--muted); }
.events-calendar-link a:hover, .events-calendar-link a:focus-visible { color: var(--brand); }
.event-card { display: grid; grid-template-columns: minmax(8rem, 12rem) 1fr; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; overflow: hidden; }
.event-date { padding: 1rem; background: var(--brand-light); color: var(--brand); font-size: .92rem; font-weight: 750; }
.event-body { min-width: 0; padding: 1rem; }
.event-body h2 { margin: 0; font-size: 1.1rem; }
.event-body h2 a { color: var(--ink); text-decoration: none; }
.event-body h2 a:hover, .event-body h2 a:focus-visible { color: var(--brand); text-decoration: underline; }
.event-details { white-space: normal; color: #35414d; }
.event-summary { max-width: 60rem; margin: .55rem 0; color: #35414d; font-size: .92rem; }
.compact-meta { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; color: var(--muted); font-size: .925rem; }
.compact-meta strong { color: var(--ink); }
.event-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1.5rem; margin: 1.25rem 0 0; }
.event-meta div { padding-top: .75rem; border-top: 1px solid var(--line); }
.event-meta dt { color: var(--muted); font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.event-meta dd { margin: .2rem 0 0; }
.card-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin-top: .75rem; }
.button { display: inline-block; padding: .65rem 1rem; border: 1px solid transparent; border-radius: .45rem; background: var(--brand); color: white; text-decoration: none; font: inherit; font-weight: 750; cursor: pointer; }
.button:hover, .button:focus-visible { filter: brightness(1.12); }
.button.secondary { background: var(--paper); color: var(--brand); border: 1px solid var(--brand); }
.button.small { padding: .4rem .68rem; font-size: .85rem; }
.deleted-filter { align-self: center; padding: .2rem .4rem; color: var(--muted); background: transparent; border: 1px solid #c8d0d6; border-radius: .3rem; font-size: .68rem; font-weight: 750; line-height: 1.2; letter-spacing: .03em; text-decoration: none; }
.deleted-filter:hover, .deleted-filter:focus-visible { color: var(--no); border-color: var(--no); }
.text-link { font-weight: 650; }
.title-row { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.status { flex: none; padding: .25rem .6rem; border-radius: 999px; font-size: .8rem; font-weight: 800; }
.status.yes { color: var(--yes); background: #e8f5ed; }
.status.no { color: var(--no); background: #fbeceb; }
.status.pending { color: var(--pending); background: #fff6d9; }
.status.deleted { color: white; background: var(--no); }
.status-list { display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; }
.response-details, .closed-note, .migration-note { color: var(--muted); }
.closed-note { font-weight: 650; }
.migration-note { max-width: 55rem; margin: 1.5rem 0 0; font-size: .9rem; }
.auth-hero { max-width: 42rem; }
.auth-providers { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1.25rem; }
.passkey-setup-note { max-width: 38rem; margin: .75rem 0 0; color: var(--muted); font-size: .95rem; }
.auth-provider { min-width: 10rem; text-align: center; }
.registration-action { font-size: .82rem; font-weight: 700; text-decoration: none; }
.registration-action:hover, .registration-action:focus-visible { text-decoration: underline; }
.empty-state { padding: 2rem; background: var(--paper); border: 1px dashed #b9c1c8; border-radius: .85rem; text-align: center; }
.empty-state h1, .empty-state h2 { margin-top: 0; }
.period-navigation {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 1rem;
  margin: 0 0 1rem;
  padding: .65rem .85rem;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .7rem;
}
.period-navigation a { font-size: .9rem; font-weight: 700; text-decoration: none; }
.period-navigation a:last-child { text-align: right; }
.period-navigation span { color: var(--muted); font-size: .9rem; }
.breadcrumbs { width: min(100%, 66rem); display: flex; gap: .55rem; align-items: center; margin: 0 auto .8rem; color: var(--muted); font-size: .85rem; }
.breadcrumbs a { font-weight: 700; }
.breadcrumbs span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.event-detail { width: min(100%, 66rem); margin: 0 auto; padding: clamp(1.25rem, 3vw, 2rem); background: var(--paper); border: 1px solid var(--line); border-radius: 1rem; }
.event-detail > header { padding-bottom: .85rem; border-bottom: 1px solid var(--line); }
.event-topline { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem 1.5rem; }
.event-detail h1 { max-width: 50rem; margin: .2rem 0 .45rem; font-size: clamp(1.65rem, 2.5vw, 2.15rem); line-height: 1.15; letter-spacing: -.02em; }
.event-kicker { margin: 0; color: var(--brand); font-weight: 800; }
.tag-list { display: flex; flex-wrap: wrap; gap: .45rem; }
.tag { display: inline-block; padding: .28rem .65rem; color: var(--brand); background: var(--brand-light); border-radius: 999px; font-size: .78rem; font-weight: 800; }
.tag.muted { color: var(--muted); background: var(--canvas); }
.detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(15rem, 18rem); gap: clamp(1.5rem, 3vw, 2.5rem); margin-top: 1.5rem; align-items: start; }
.event-copy { max-width: 68ch; font-size: 1rem; line-height: 1.65; }
.event-copy > :first-child { margin-top: 0; }
.event-copy > :last-child { margin-bottom: 0; }
.event-copy p { margin: 0 0 1rem; }
.event-copy ul, .event-copy ol { margin: .75rem 0 1rem; padding-left: 1.5rem; }
.event-copy li + li { margin-top: .25rem; }
.event-copy a { overflow-wrap: anywhere; }
.event-copy blockquote { margin: 1rem 0; padding-left: 1rem; border-left: .2rem solid var(--line); color: var(--muted); }
.event-copy h2, .event-copy h3, .event-copy h4, .event-copy h5, .event-copy h6 { margin: 1.35rem 0 .5rem; line-height: 1.25; }
.event-copy table { display: block; max-width: 100%; margin: 1rem 0; overflow-x: auto; border-collapse: collapse; }
.event-copy th, .event-copy td { padding: .45rem .6rem; border: 1px solid var(--line); text-align: left; }
.muted-text { color: var(--muted); }
.detail-meta { display: flex; flex-wrap: wrap; gap: .6rem 2rem; margin: 1rem 0 0; }
.detail-meta div { min-width: 8rem; }
.detail-meta dt, .answer-list dt { color: var(--muted); font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.detail-meta dd, .answer-list dd { margin: .25rem 0 0; }
.info-panel { padding: 1.15rem; background: var(--brand-light); border-radius: .75rem; }
.info-panel h2 { margin: .2rem 0 .55rem; font-size: 1.25rem; }
.info-panel > p { margin: .6rem 0; }
.info-panel .status { display: inline-block; font-size: .9rem; }
.registration-stats { display: flex; flex-wrap: wrap; gap: .2rem .85rem; margin: .55rem 0 .7rem; color: var(--muted); font-size: .85rem; }
.registration-stats strong { color: var(--brand); font-size: 1rem; }
.event-registration-roster { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.event-registration-roster > header { margin-bottom: .75rem; }
.event-registration-roster h2 { margin: .1rem 0 0; font-size: 1.2rem; line-height: 1.25; }
.registration-voice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .6rem; }
.registration-voice-group { min-width: 0; padding: .7rem .8rem; background: var(--canvas); border: 1px solid var(--line); border-radius: .55rem; }
.registration-voice-group > header { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.registration-voice-group h3 { margin: 0; font-size: .92rem; }
.registration-voice-count { min-width: 1.55rem; padding: .08rem .4rem; color: white; background: var(--brand); border-radius: 999px; font-size: .75rem; font-weight: 800; text-align: center; }
.registration-voice-group ul { display: grid; gap: .18rem; margin: .55rem 0 0; padding: 0; list-style: none; }
.registration-voice-group li { min-width: 0; overflow-wrap: anywhere; font-size: .82rem; }
.registration-voice-group li a { color: var(--ink); text-decoration: none; }
.registration-voice-group li a:hover, .registration-voice-group li a:focus-visible { color: var(--brand); text-decoration: underline; }
.registration-voice-group .muted-text { margin: .45rem 0 0; font-size: .78rem; }
.personal-response { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgb(22 63 104 / 14%); }
.personal-response > p { margin: .55rem 0; }
.panel-note { margin-bottom: 0; color: var(--muted); font-size: .82rem; }
.response-success { padding: .45rem .6rem; color: var(--yes); background: #e8f5ed; border-radius: .4rem; font-size: .85rem; font-weight: 750; }
.response-form { margin-top: .85rem; padding-top: .85rem; border-top: 1px solid rgb(22 63 104 / 14%); }
.response-form fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.response-form legend { margin-bottom: .55rem; font-size: .78rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.response-options { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; }
.response-options label { display: flex; align-items: center; gap: .3rem; padding: .35rem .55rem; background: var(--paper); border: 1px solid #bdc9d3; border-radius: .4rem; font-size: .9rem; font-weight: 700; cursor: pointer; }
.response-options input { margin: 0; accent-color: var(--brand); }
.response-options label:has(input:checked) { color: var(--brand); border-color: var(--brand); }
.response-options label:has(input:disabled) { cursor: not-allowed; opacity: .55; }
.response-field { margin: .65rem 0; }
.response-field label { display: block; margin-bottom: .2rem; font-size: .82rem; font-weight: 750; }
.response-field label span { color: var(--muted); font-weight: 500; }
.response-field input, .response-field textarea { width: 100%; padding: .45rem .55rem; color: var(--ink); background: var(--paper); border: 1px solid #aeb8c1; border-radius: .4rem; font: inherit; font-size: .9rem; }
.response-field input:focus, .response-field textarea:focus { outline: .18rem solid rgb(22 63 104 / 18%); border-color: var(--brand); }
.response-errors { margin-bottom: .7rem; padding: .6rem; color: #6f211d; background: #fbeceb; border-radius: .4rem; font-size: .82rem; }
.response-errors ul { margin: .25rem 0 0; padding-left: 1.15rem; }
.legacy-answer-block { margin-top: 1rem; padding-top: .85rem; border-top: 1px solid rgb(22 63 104 / 14%); }
.answer-list { margin: 1.25rem 0; }
.answer-list div { padding: .65rem 0; border-top: 1px solid rgb(22 63 104 / 14%); }
.detail-actions { display: flex; flex-wrap: wrap; gap: .45rem; margin: .45rem 0; }
.event-participant-report { width: min(100%, 62rem); margin: 0 auto; }
.event-participant-report .page-heading h1 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.sensitive-data-notice { margin: 0 0 .8rem; padding: .65rem .75rem; color: #704c00; background: #fff3c4; border: 1px solid #e4cb71; border-radius: .45rem; font-size: .82rem; }
.participant-report-summary { margin: .7rem 0; color: var(--muted); font-size: .85rem; }
.participant-report-summary strong { color: var(--ink); }
.participant-table-wrap { overflow-x: auto; background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; }
.participant-table { width: 100%; border-collapse: collapse; font-size: .86rem; }
.participant-table th, .participant-table td { padding: .5rem .65rem; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.participant-table thead th { color: var(--muted); background: var(--canvas); font-size: .7rem; letter-spacing: .04em; text-transform: uppercase; }
.participant-table tbody tr:last-child > * { border-bottom: 0; }
.participant-table td:first-child { color: var(--muted); text-align: right; }
.participant-table code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .84rem; }
.deleted-notice { display: flex; align-items: center; gap: .55rem; color: var(--muted); font-size: .9rem; }
.event-audit { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .15rem .9rem; margin: 0; color: var(--muted); font-size: .72rem; }
.event-audit div { display: flex; gap: .25rem; white-space: nowrap; }
.event-audit dt { font-weight: 750; }
.event-audit dd { margin: 0; }
.form-breadcrumbs { width: min(100%, 58rem); }
.form-heading, .event-form, .form-errors, .form-notice { width: min(100%, 58rem); margin-right: auto; margin-left: auto; }
.form-heading { margin-bottom: 1rem; }
.form-heading-top { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem 1.5rem; }
.form-heading h1 { margin: .1rem 0; font-size: clamp(1.8rem, 3.5vw, 2.4rem); line-height: 1.1; }
.form-heading p:last-child { margin: .4rem 0 0; color: var(--muted); }
.event-form { display: grid; gap: 1rem; }
.form-section { padding: clamp(1.15rem, 3vw, 1.75rem); background: var(--paper); border: 1px solid var(--line); border-radius: .85rem; }
.form-section h2 { margin: 0 0 1.25rem; font-size: 1.3rem; }
.form-section h3 { margin: 1.5rem 0 .8rem; font-size: 1rem; }
.form-grid { display: grid; gap: 1rem; }
.form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.field { margin-bottom: 1rem; }
.field:last-child { margin-bottom: 0; }
.field > label, .field-label { display: block; margin-bottom: .35rem; font-weight: 750; }
.field input, .field select, .field textarea, .form-section select {
  width: 100%; min-height: 2.75rem; padding: .65rem .75rem; color: var(--ink); background: var(--paper);
  border: 1px solid #aeb8c1; border-radius: .45rem; font: inherit;
}
.field input:focus, .field select:focus, .field textarea:focus, .form-section select:focus, .editor-surface:focus {
  outline: .18rem solid rgb(22 63 104 / 18%); border-color: var(--brand);
}
.field input[aria-invalid="true"] { border-color: var(--no); }
.field-help { margin: -.15rem 0 .65rem; color: var(--muted); font-size: .88rem; }
.field-error { margin: .35rem 0 0; color: var(--no); font-size: .88rem; font-weight: 650; }
.checkbox-field { display: flex; align-items: flex-start; gap: .6rem; margin: .8rem 0; font-weight: 650; cursor: pointer; }
.checkbox-field input { width: 1.15rem; height: 1.15rem; margin-top: .2rem; accent-color: var(--brand); }
.education-editor { display: grid; gap: .75rem; margin-bottom: .75rem; }
.education-editor-row { padding: .85rem; border: 1px solid var(--line); border-radius: .6rem; background: #fafbfb; }
.education-editor-row .field { margin-bottom: 0; }
.education-remove { margin-top: .25rem; color: var(--no); }
.person-education-summary article { display: grid; gap: .12rem; padding: .45rem 0; border-bottom: 1px solid var(--line); }
.person-education-summary article:last-child { border-bottom: 0; }
.person-education-summary article span { color: var(--muted); font-size: .84rem; }
.registration-help { margin: .25rem 0 1.25rem 1.75rem; }
.form-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.form-errors { margin-bottom: 1rem; padding: 1rem 1.25rem; color: #6f211d; background: #fbeceb; border: 1px solid #e7b8b5; border-radius: .65rem; }
.form-errors h2 { margin: 0; font-size: 1.05rem; }
.form-errors ul { margin: .5rem 0 0; }
.form-errors a { color: inherit; }
.form-notice { margin-bottom: 1rem; padding: 1rem 1.25rem; color: #59450d; background: #fff6d9; border: 1px solid #e8d694; border-radius: .65rem; }
.deletion-section { border-color: #e7b8b5; }
.calendar-subscription { width: min(100%, 48rem); padding: 1.25rem; background: var(--paper); border: 1px solid var(--line); border-radius: .75rem; }
.calendar-subscription > header { padding-bottom: .8rem; border-bottom: 1px solid var(--line); }
.calendar-subscription h1 { margin: .1rem 0; font-size: clamp(1.75rem, 3.5vw, 2.25rem); line-height: 1.1; }
.calendar-subscription h2 { margin: 0 0 .35rem; font-size: 1.05rem; }
.calendar-subscription p { margin: .3rem 0; color: var(--muted); }
.calendar-status, .calendar-link-result, .calendar-instructions { padding: .9rem 0; border-bottom: 1px solid var(--line); }
.calendar-instructions ol { margin: .5rem 0; padding-left: 1.3rem; }
.copy-field { display: flex; gap: .45rem; margin-top: .65rem; }
.copy-field input { min-width: 0; flex: 1; padding: .5rem .6rem; border: 1px solid #aeb8c1; border-radius: .4rem; font: inherit; font-size: .85rem; }
.static-copy-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.static-copy-row + .static-copy-row { margin-top: .35rem; }
.static-copy-value { min-width: 0; overflow-wrap: anywhere; }
.copy-action {
  flex: none; padding: .25rem .45rem; color: var(--brand); background: var(--paper);
  border: 1px solid var(--brand); border-radius: .35rem; font: inherit; font-size: .72rem;
  font-weight: 750; cursor: pointer;
}
.copy-action:hover, .copy-action:focus-visible { color: white; background: var(--brand); }
.calendar-actions { display: flex; flex-wrap: wrap; gap: .45rem; padding-top: .9rem; }
.calendar-actions form { margin: 0; }
.calendar-notice { padding: .55rem .7rem; border-radius: .4rem; background: var(--brand-light); }
.calendar-notice.success { color: var(--yes); background: #e8f5ed; }
.calendar-notice.error { color: var(--no); background: #fbeceb; }
.button.danger { color: var(--no); border-color: var(--no); }
.editor-toolbar, .editor-surface { display: none; }
.rich-editor.enhanced > textarea { display: none; }
.rich-editor.enhanced .editor-toolbar { display: flex; flex-wrap: wrap; gap: .35rem; padding: .45rem; background: var(--canvas); border: 1px solid #aeb8c1; border-bottom: 0; border-radius: .45rem .45rem 0 0; }
.editor-toolbar button { min-height: 2.25rem; padding: .35rem .6rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: .3rem; font: inherit; cursor: pointer; }
.editor-toolbar button:hover, .editor-toolbar button:focus-visible { border-color: var(--brand); color: var(--brand); }
.rich-editor.enhanced .editor-surface { display: block; min-height: 15rem; max-width: none; padding: .85rem; overflow-y: auto; background: var(--paper); border: 1px solid #aeb8c1; border-radius: 0 0 .45rem .45rem; }
.editor-surface:empty::before { content: "Kirjuta sündmuse kirjeldus…"; color: var(--muted); pointer-events: none; }

.directory-filters {
  display: grid; grid-template-columns: minmax(14rem, 2fr) minmax(10rem, 1fr) auto;
  align-items: end; gap: .65rem; margin-bottom: .8rem; padding: .75rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: .65rem;
}
.directory-filters label > span { display: block; margin-bottom: .2rem; color: var(--muted); font-size: .72rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.directory-filters input[type="search"], .directory-filters select { width: 100%; min-height: 2.25rem; padding: .4rem .55rem; border: 1px solid #aeb8c1; border-radius: .4rem; background: var(--paper); font: inherit; font-size: .9rem; }
.directory-status-filter { grid-column: 1 / -1; min-width: 0; margin: 0; padding: .45rem .55rem .55rem; border: 1px solid var(--line); border-radius: .45rem; }
.directory-status-filter legend { padding: 0 .2rem; color: var(--muted); font-size: .72rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.status-filter-options { display: flex; flex-wrap: wrap; gap: .35rem .7rem; }
.status-filter-check { display: inline-flex; align-items: center; gap: .3rem; font-size: .8rem; cursor: pointer; }
.status-filter-check input { margin: 0; }
.directory-filters .status-filter-check > span { display: inline; margin: 0; color: var(--ink); font-size: inherit; font-weight: 500; text-transform: none; letter-spacing: normal; }
.people-view-nav { display: flex; gap: .25rem; margin: -.25rem 0 .7rem; overflow-x: auto; scrollbar-width: none; }
.people-view-nav::-webkit-scrollbar { display: none; }
.people-view-nav a { flex: none; padding: .32rem .58rem; color: var(--muted); border-radius: 999px; font-size: .76rem; font-weight: 750; text-decoration: none; }
.people-view-nav a:hover { color: var(--brand); background: var(--paper); }
.people-view-nav a[aria-current="page"] { color: white; background: var(--brand); }
.people-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); gap: .55rem; }
.person-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: .7rem; min-width: 0; padding: .7rem .8rem; background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; }
.person-card-copy { min-width: 0; }
.person-card h2 { margin: 0; font-size: 1rem; line-height: 1.25; }
.person-card h2 a { color: var(--ink); text-decoration: none; }
.person-card h2 a:hover { color: var(--brand); text-decoration: underline; }
.person-card p { margin: .15rem 0; color: var(--muted); font-size: .82rem; }
.person-card small { display: block; overflow: hidden; color: #35414d; font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.person-card-actions { flex: none; display: flex; align-items: center; gap: .45rem; font-size: .78rem; }
.management-links { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; font-size: .82rem; }
.bulk-membership-window {
  display: flex; align-items: end; flex-wrap: wrap; gap: .5rem .65rem;
  margin-bottom: .75rem; padding: .65rem .75rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: .55rem;
}
.bulk-membership-window label span { display: block; margin-bottom: .18rem; color: var(--muted); font-size: .7rem; font-weight: 750; text-transform: uppercase; letter-spacing: .05em; }
.bulk-membership-window input { width: 6.4rem; min-height: 2.1rem; padding: .35rem .45rem; border: 1px solid #aeb8c1; border-radius: .35rem; font: inherit; }
.bulk-membership-window small { align-self: center; color: var(--muted); font-size: .75rem; }
.bulk-membership-table-wrap {
  max-height: 70vh; overflow: auto; background: var(--paper);
  border: 1px solid var(--line); border-radius: .55rem;
}
.bulk-membership-table { width: max-content; min-width: 100%; border-spacing: 0; font-size: .78rem; }
.bulk-membership-table th, .bulk-membership-table td { height: 2.45rem; padding: .3rem .42rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: center; white-space: nowrap; }
.bulk-membership-table thead th { position: sticky; top: 0; z-index: 3; color: var(--muted); background: #f4f7fa; font-size: .68rem; text-transform: uppercase; }
.bulk-membership-table tbody th { position: sticky; left: 0; z-index: 2; min-width: 13rem; max-width: 13rem; text-align: left; background: var(--paper); }
.bulk-membership-table thead th:first-child { left: 0; z-index: 5; min-width: 13rem; text-align: left; }
.bulk-membership-table tbody td:nth-child(2) { position: sticky; left: 13rem; z-index: 2; min-width: 12rem; background: var(--paper); }
.bulk-membership-table thead th:nth-child(2) { left: 13rem; z-index: 5; min-width: 12rem; text-align: left; }
.bulk-membership-table tbody tr.is-changed th,
.bulk-membership-table tbody tr.is-changed td { background: #fff8df; }
.bulk-membership-table tbody tr:hover th,
.bulk-membership-table tbody tr:hover td { box-shadow: inset 0 1px rgb(22 63 104 / 18%), inset 0 -1px rgb(22 63 104 / 18%); }
.bulk-membership-table tbody th a { display: block; overflow: hidden; color: var(--ink); font-weight: 750; text-decoration: none; text-overflow: ellipsis; }
.bulk-membership-table tbody th a:hover { color: var(--brand); text-decoration: underline; }
.bulk-membership-table tbody th small { display: block; overflow: hidden; color: var(--muted); font-size: .68rem; font-weight: 500; text-overflow: ellipsis; }
.bulk-membership-table select { width: 100%; min-height: 1.8rem; padding: .2rem .3rem; border: 1px solid #aeb8c1; border-radius: .3rem; background: var(--paper); font: inherit; }
.bulk-membership-table input[type="checkbox"] { width: 1.05rem; height: 1.05rem; margin: 0; accent-color: var(--brand); cursor: pointer; }
.bulk-semester-toggle-all { padding: .22rem .3rem; color: var(--brand); background: transparent; border: 0; border-radius: .25rem; font: inherit; font-weight: 800; cursor: pointer; }
.bulk-semester-toggle-all:hover, .bulk-semester-toggle-all:focus-visible { background: var(--brand-light); outline: none; }
.bulk-membership-savebar {
  position: sticky; bottom: 0; z-index: 6; display: flex; justify-content: flex-end; align-items: center; gap: .8rem;
  margin-top: .55rem; padding: .55rem .65rem; background: rgb(255 255 255 / 94%);
  border: 1px solid var(--line); border-radius: .5rem; box-shadow: 0 -.25rem .7rem rgb(18 35 52 / 7%);
  backdrop-filter: blur(.25rem);
}
.bulk-membership-savebar span { color: var(--muted); font-size: .78rem; }
.person-detail { width: min(100%, 66rem); margin: 0 auto; padding: clamp(1.15rem, 3vw, 1.75rem); background: var(--paper); border: 1px solid var(--line); border-radius: .8rem; }
.person-detail > header { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.person-detail h1 { margin: .1rem 0; font-size: clamp(1.7rem, 3vw, 2.25rem); line-height: 1.1; }
.person-role { margin: .25rem 0 0; color: var(--muted); }
.portrait-link { display: block; flex: none; border-radius: .45rem; }
.portrait-link:focus-visible { outline: .18rem solid rgb(22 63 104 / 25%); outline-offset: .12rem; }
.person-portrait, .directory-portrait { display: grid; place-items: center; flex: none; object-fit: cover; border-radius: .45rem; }
.person-portrait { width: 5rem; height: 5rem; }
.directory-portrait { width: 2.8rem; height: 2.8rem; }
.portrait-placeholder { color: var(--brand); background: #e6f0f7; font-size: .8rem; font-weight: 800; letter-spacing: .03em; }
.person-detail-grid { display: flow-root; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.person-detail-grid > section { width: calc(50% - 1rem); margin-bottom: 1.25rem; }
.person-detail-personal, .person-detail-choir, .person-education-summary { float: left; clear: left; }
.person-detail-contact, .person-semester-summary { float: right; clear: right; }
.person-detail-grid-public .person-detail-contact, .person-detail-grid-public .person-semester-summary { float: left; clear: left; }
.person-detail-grid-public .person-detail-choir, .person-detail-grid-public .person-education-summary { float: right; clear: right; }
.person-detail-grid section h2, .person-comment h2 { margin: 0 0 .45rem; font-size: 1rem; }
.person-detail-grid dl { margin: 0; }
.person-detail-grid dl div { display: grid; grid-template-columns: minmax(7rem, .7fr) minmax(0, 1.3fr); gap: .6rem; padding: .28rem 0; border-top: 1px solid #eef0f2; }
.person-detail-grid dt { color: var(--muted); font-size: .76rem; font-weight: 700; }
.person-detail-grid dd { min-width: 0; margin: 0; overflow-wrap: anywhere; font-size: .86rem; }
.person-semester-summary p { display: flex; align-items: baseline; gap: .3rem; margin: 0 0 .45rem; color: var(--muted); font-size: .82rem; }
.person-semester-summary p strong { color: var(--brand); font-size: 1.35rem; }
.person-semester-summary small { color: var(--muted); }
.semester-chips, .semester-picker, .job-picker { display: flex; flex-wrap: wrap; gap: .35rem; }
.semester-chips span { padding: .18rem .45rem; color: var(--brand); background: var(--canvas); border-radius: 999px; font-size: .72rem; font-weight: 750; }
.semester-picker { max-height: 13rem; overflow-y: auto; padding: .15rem; }
.semester-toggle, .job-toggle { position: relative; cursor: pointer; }
.semester-toggle input, .job-toggle input { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; }
.semester-toggle span, .job-toggle span { display: block; padding: .32rem .58rem; color: var(--brand); background: var(--paper); border: 1px solid #aeb8c1; border-radius: 999px; font-size: .78rem; font-weight: 750; }
.semester-toggle input:checked + span, .job-toggle input:checked + span { color: white; background: var(--brand); border-color: var(--brand); }
.semester-toggle input:focus-visible + span, .job-toggle input:focus-visible + span { outline: .18rem solid rgb(22 63 104 / 18%); outline-offset: .08rem; }
.semester-toggle input:disabled + span, .job-toggle input:disabled + span { cursor: default; opacity: .72; }
.semester-picker[aria-invalid="true"], .job-picker[aria-invalid="true"] { outline: .12rem solid var(--no); border-radius: .35rem; }
.job-field { margin-top: .25rem; }
.job-field .field-help { margin: -.1rem 0 .55rem; }
.person-comment { margin-top: 1.25rem; padding: .8rem; background: var(--canvas); border-radius: .5rem; }
.person-comment p { margin: 0; font-size: .88rem; }
.person-audit { display: flex; flex-wrap: wrap; gap: .3rem 1rem; margin: 1.25rem 0 0; padding-top: .75rem; border-top: 1px solid var(--line); color: var(--muted); font-size: .72rem; }
.person-audit div { display: flex; gap: .25rem; }
.person-audit dt { font-weight: 750; }
.person-audit dd { margin: 0; }
.person-audit.compact { justify-content: flex-end; margin: 0; padding: 0; border: 0; }
.person-form details.form-section > summary { cursor: pointer; font-size: 1.1rem; font-weight: 750; }
.person-form details.form-section[open] > summary { margin-bottom: 1.25rem; }
.compact-directory { display: grid; gap: .35rem; }
.compact-directory > a { display: grid; grid-template-columns: 4.5rem minmax(12rem, 1fr) minmax(8rem, .6fr) minmax(10rem, .8fr); align-items: baseline; gap: .75rem; padding: .55rem .7rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: .4rem; text-decoration: none; }
.compact-directory > a:hover { border-color: var(--brand); }
.compact-directory time { color: var(--brand); font-weight: 750; }
.compact-directory span, .compact-directory small { color: var(--muted); }
.official-group + .official-group { margin-top: 1.25rem; }
.official-group h2 { margin-bottom: .5rem; font-size: 1.15rem; }
.official-directory { overflow: hidden; background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; }
.official-role { display: grid; grid-template-columns: minmax(10rem, .32fr) minmax(0, 1fr); align-items: center; min-height: 3.6rem; }
.official-role + .official-role { border-top: 1px solid var(--line); }
.official-role > h3 { align-self: stretch; display: flex; align-items: center; margin: 0; padding: .65rem .75rem; color: var(--brand); background: var(--brand-soft); font-size: .82rem; }
.official-role-people { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: .25rem .75rem; min-width: 0; padding: .35rem .55rem; }
.official-vacant { padding: .45rem; color: var(--muted); }
.official-card { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: .55rem; min-width: 0; padding: .3rem; }
.official-card h4 { margin: 0; font-size: .9rem; line-height: 1.2; }
.official-card h4 a { color: var(--ink); text-decoration: none; }
.official-card h4 a:hover { color: var(--brand); text-decoration: underline; }
.official-card small { display: block; min-width: 0; margin-top: .12rem; overflow: hidden; color: var(--muted); font-size: .72rem; text-overflow: ellipsis; white-space: nowrap; }
.official-card small a { color: inherit; }
.info-heading { margin-bottom: .8rem; }
.info-heading > div { max-width: 48rem; }
.info-primary-grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: .75rem; }
.info-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-width: 0;
  padding: 1rem;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .7rem;
}
.info-card h2, .info-section h2 { margin: .08rem 0; font-size: 1.2rem; }
.info-card p:not(.eyebrow), .info-section > header p:not(.eyebrow) { margin: .25rem 0 0; color: var(--muted); font-size: .84rem; }
.info-requisites-card {
  color: white;
  background: linear-gradient(145deg, var(--brand), #234f78);
  border-color: transparent;
}
.info-requisites-card .eyebrow, .info-requisites-card p:not(.eyebrow) { color: rgb(255 255 255 / 76%); }
.info-card-action { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-top: 1.25rem; color: inherit; font-weight: 800; text-decoration: none; }
.info-card-action:hover { color: inherit; text-decoration: underline; }
.info-external-links { display: grid; gap: .35rem; margin-top: .75rem; }
.info-external-links > a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  min-width: 0;
  padding: .55rem .65rem;
  color: var(--ink);
  background: var(--canvas);
  border: 1px solid var(--line);
  border-radius: .45rem;
  text-decoration: none;
}
.info-external-links > a:hover { color: var(--brand); border-color: var(--brand); }
.info-external-links > a > span:first-child { display: grid; min-width: 0; }
.info-external-links small { color: var(--muted); font-size: .72rem; }
.external-link-service { flex: none; color: var(--muted); font-size: .68rem; font-weight: 700; }
.info-section { margin-top: .8rem; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .7rem; }
.info-section > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: .75rem; }
.archive-category-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
.archive-category-card { min-width: 0; padding: .75rem; background: var(--canvas); border: 1px solid var(--line); border-radius: .55rem; }
.archive-category-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: .55rem; }
.archive-category-card h3 { margin: 0; color: var(--ink); font-size: .92rem; }
.archive-category-card header p { margin: .15rem 0 0; color: var(--muted); font-size: .7rem; }
.archive-category-count { display: grid; flex: none; place-items: center; min-width: 1.75rem; height: 1.75rem; padding: 0 .3rem; color: var(--brand); background: var(--paper); border: 1px solid var(--line); border-radius: 999px; font-size: .72rem; font-weight: 800; }
.archive-category-card .archive-item-list { grid-template-columns: 1fr; margin-top: 0; }
.archive-category-card .archive-item-card { background: var(--paper); }
.archive-category-empty { margin: .7rem 0 .15rem; color: var(--muted); font-size: .75rem; }
.info-calendar-section { margin-bottom: 1rem; }
.archive-heading { max-width: 54rem; }
.archive-section { margin-top: 1rem; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.archive-section h2 { margin: 0; font-size: 1.15rem; }
.archive-intro { margin: .2rem 0 .8rem; color: var(--muted); font-size: .85rem; }
.archive-calendar-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); gap: .35rem; }
.archive-calendar-list a, .archive-item-card > a:first-child { display: flex; align-items: center; justify-content: space-between; gap: .65rem; color: var(--ink); text-decoration: none; }
.archive-calendar-list a { padding: .5rem .6rem; }
.archive-calendar-list a { border: 1px solid var(--line); border-radius: .4rem; }
.archive-calendar-list a:hover, .archive-item-card > a:first-child:hover { color: var(--brand); }
.archive-calendar-list a > span:first-child { display: grid; min-width: 0; }
.archive-calendar-list small { color: var(--muted); font-size: .68rem; text-transform: uppercase; }
.archive-groups { display: grid; gap: 1rem; margin-top: .7rem; }
.archive-group h3 { margin: 0 0 .35rem; color: var(--brand); font-size: .92rem; }
.archive-item-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .4rem; margin-top: .7rem; }
.archive-group .archive-item-list { margin-top: 0; }
.archive-item-card { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; min-width: 0; border: 1px solid var(--line); border-radius: .4rem; }
.archive-item-card:hover { border-color: var(--brand); }
.archive-item-card.is-archived, .archive-calendar-list a.is-archived { background: #f6f7f8; border-color: #cbd2d8; }
.archive-item-card.is-archived strong, .archive-calendar-list a.is-archived strong { color: var(--muted); }
.archive-item-card > a:first-child { min-width: 0; padding: .6rem .7rem; }
.archive-item-card > a:first-child > span:first-child { display: grid; min-width: 0; }
.archive-item-list small { color: var(--muted); font-size: .72rem; }
.archive-card-edit { align-self: center; margin-right: .45rem; padding: .18rem .35rem; color: var(--muted); font-size: .68rem; text-decoration: none; }
.archive-card-edit:hover { color: var(--brand); text-decoration: underline; }
.archive-item-time { margin-top: .12rem; }
.archive-detail { width: min(100%, 76rem); margin: 0 auto; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.archive-detail > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: .75rem; }
.archive-detail-title { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem .6rem; }
.archive-detail h1 { margin: .1rem 0; font-size: clamp(1.45rem, 3vw, 2rem); }
.archive-status-badge { display: inline-block; padding: .18rem .45rem; color: #4c5964; background: #e7eaed; border: 1px solid #b9c1c8; border-radius: 999px; font-size: .68rem; font-weight: 800; line-height: 1.25; }
.archive-status-badge.compact { width: max-content; margin-top: .2rem; padding: .1rem .35rem; font-size: .6rem; }
.archive-status-badge.deleted { color: #7a2525; background: #fbeaea; border-color: #e5b8b8; }
.archive-state-field { margin-top: .85rem; padding: .7rem; background: var(--canvas); border: 1px solid var(--line); border-radius: .45rem; }
.archive-state-field .field-help { margin: .25rem 0 0 1.7rem; }
.archive-delete-field { background: #fff8f8; border-color: #e5b8b8; }
.archive-deleted-items { margin-top: 1rem; }
.archive-deleted-list { display: grid; gap: .4rem; margin-top: .7rem; }
.archive-deleted-list article { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .6rem .7rem; background: var(--canvas); border: 1px solid var(--line); border-radius: .45rem; }
.archive-deleted-list article > div { display: grid; gap: .15rem; min-width: 0; }
.archive-deleted-list small { color: var(--muted); font-size: .7rem; }
.archive-detail-time { margin: .2rem 0 0; color: var(--muted); font-size: .78rem; font-weight: 700; }
.archive-frame { display: block; width: 100%; min-height: 70vh; border: 1px solid var(--line); background: white; }
.archive-download { padding: 1rem; background: var(--canvas); border-radius: .45rem; }
.archive-upload-form + .archive-legacy-import { margin-top: 1rem; }
.archive-upload-form input[type="file"] { padding: .5rem; }
.archive-import-report { color: var(--ink); background: #e8f5ed; border-color: #b9dcc7; }
.archive-import-report h2 { margin: 0 0 .6rem; font-size: 1.05rem; }
.archive-import-report dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .45rem .9rem; margin: 0; }
.archive-import-report dl div { display: grid; }
.archive-import-report dt { color: var(--muted); font-size: .72rem; }
.archive-import-report dd { margin: 0; color: var(--brand); font-weight: 800; }
.static-page { width: min(100%, 48rem); margin: 0 auto; padding: clamp(1rem, 3vw, 1.5rem); background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.static-page > header { margin-bottom: 1rem; }
.static-page h1 { margin: .1rem 0; font-size: clamp(1.65rem, 3vw, 2.1rem); line-height: 1.1; }
.static-page > header > p:last-child { margin: .2rem 0 0; color: var(--muted); }
.static-data { margin: 0; border-top: 1px solid var(--line); }
.static-data > div { display: grid; grid-template-columns: minmax(11rem, .8fr) minmax(0, 1.2fr); gap: .8rem; padding: .7rem 0; border-bottom: 1px solid var(--line); }
.static-data dt { color: var(--muted); font-size: .8rem; font-weight: 700; }
.static-data dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.static-data dd > span { display: block; margin-top: .1rem; color: var(--muted); font-size: .82rem; }
.static-data dd > .static-copy-row {
  display: flex; margin-top: 0; color: inherit; font-size: inherit;
}
.static-data dd > .static-copy-row + .static-copy-row { margin-top: .35rem; }
.account-number { color: var(--brand); font-variant-numeric: tabular-nums; letter-spacing: .025em; }
.empty-state.compact { padding: .75rem; margin-top: .7rem; text-align: left; }
.empty-state.compact p { margin: 0; }
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: .6rem; }
.stat-grid section { display: grid; gap: .1rem; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; }
.stat-grid strong { color: var(--brand); font-size: 1.6rem; }
.stat-grid span { color: var(--muted); font-size: .8rem; }
.stat-distributions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin-top: .75rem; }
.stat-distributions section { padding: .8rem; background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; }
.stat-distributions h2 { margin: 0 0 .45rem; font-size: 1rem; }
.stat-distributions table { width: 100%; border-collapse: collapse; font-size: .8rem; }
.stat-distributions th, .stat-distributions td { padding: .25rem .35rem; border-top: 1px solid var(--line); text-align: left; }
.statistics-scope { margin: 0 0 .7rem; color: var(--muted); font-size: .84rem; }
.people-statistics-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin-top: .75rem; }
.people-stat-panel { min-width: 0; padding: .9rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.people-stat-panel > header { margin-bottom: .7rem; }
.people-stat-panel h2 { margin: 0; font-size: 1.05rem; }
.people-stat-panel header p { margin: .15rem 0 0; color: var(--muted); font-size: .75rem; line-height: 1.4; }
.people-pie-layout { display: grid; grid-template-columns: minmax(8rem, 11rem) minmax(0, 1fr); align-items: center; gap: .9rem; }
.people-pie-wrap { position: relative; display: grid; place-items: center; width: min(100%, 11rem); aspect-ratio: 1; margin: 0 auto; }
.people-pie { display: block; width: 100%; height: 100%; }
.people-pie circle { fill: none; stroke-width: 6; }
.people-pie-base { stroke: #e8ecef; }
.people-pie-wrap > span { position: absolute; inset: 31%; display: grid; place-content: center; text-align: center; pointer-events: none; }
.people-pie-wrap > span strong { color: var(--brand); font-size: 1.55rem; line-height: 1; }
.people-pie-wrap > span small { margin-top: .15rem; color: var(--muted); font-size: .68rem; }
.people-chart-legend { display: grid; gap: .4rem; min-width: 0; margin: 0; padding: 0; list-style: none; }
.people-chart-legend li { display: grid; grid-template-columns: .65rem minmax(0, 1fr) auto 3.2rem; align-items: center; gap: .4rem; min-width: 0; font-size: .78rem; }
.people-chart-legend li > span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.people-chart-legend strong { color: var(--ink); font-variant-numeric: tabular-nums; text-align: right; }
.people-chart-legend small { color: var(--muted); font-variant-numeric: tabular-nums; text-align: right; }
.people-chart-legend .people-chart-empty { display: block; color: var(--muted); }
.people-chart-swatch { width: .58rem; height: .58rem; border-radius: 50%; }
.people-chart-color-1 { stroke: #174f7a; background: #174f7a; }
.people-chart-color-2 { stroke: #2e7d68; background: #2e7d68; }
.people-chart-color-3 { stroke: #d18b31; background: #d18b31; }
.people-chart-color-4 { stroke: #8b5e9b; background: #8b5e9b; }
.people-chart-color-5 { stroke: #4f83cc; background: #4f83cc; }
.people-chart-color-6 { stroke: #a85a5a; background: #a85a5a; }
.people-chart-color-7 { stroke: #759348; background: #759348; }
.people-chart-color-8 { stroke: #8a7a6a; background: #8a7a6a; }
.people-bar-chart { display: grid; gap: .48rem; margin: 0; padding: 0; list-style: none; }
.people-bar-chart li { display: grid; grid-template-columns: 4.5rem minmax(5rem, 1fr) 2rem 3rem; align-items: center; gap: .45rem; font-size: .77rem; }
.people-bar-chart progress { width: 100%; height: .65rem; overflow: hidden; accent-color: var(--brand); border: 0; border-radius: 999px; background: #e8ecef; }
.people-bar-chart progress::-webkit-progress-bar { background: #e8ecef; border-radius: 999px; }
.people-bar-chart progress::-webkit-progress-value { background: var(--brand); border-radius: 999px; }
.people-bar-chart progress::-moz-progress-bar { background: var(--brand); border-radius: 999px; }
.people-bar-chart strong, .people-bar-chart small { font-variant-numeric: tabular-nums; text-align: right; }
.people-bar-chart small { color: var(--muted); }
.signature-sheet { width: min(100%, 48rem); margin: 0 auto; background: white; }
.signature-sheet h1 { font-size: 1.4rem; }
.signature-sheet table { width: 100%; border-collapse: collapse; }
.signature-sheet th, .signature-sheet td { height: 2.2rem; padding: .35rem .5rem; border: 1px solid #555; text-align: left; }
.attendance-heading { margin-bottom: .65rem; }
.attendance-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(8rem, 1fr)) auto;
  align-items: end;
  gap: .55rem;
  margin-bottom: .8rem;
  padding: .65rem;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .55rem;
}
.attendance-filters label { display: grid; gap: .15rem; }
.attendance-filters label span { color: var(--muted); font-size: .72rem; font-weight: 700; }
.attendance-filters input, .attendance-filters select {
  width: 100%;
  min-height: 2.35rem;
  padding: .35rem .45rem;
  border: 1px solid #aeb8c1;
  border-radius: .35rem;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  font-size: .82rem;
}
.attendance-report-nav {
  display: flex;
  gap: .2rem;
  width: max-content;
  max-width: 100%;
  margin: 0 0 .7rem;
  padding: .18rem;
  overflow-x: auto;
  background: #e6ebef;
  border-radius: .4rem;
}
.attendance-report-nav a {
  flex: none;
  padding: .3rem .6rem;
  color: var(--muted);
  border-radius: .3rem;
  font-size: .75rem;
  font-weight: 700;
  text-decoration: none;
}
.attendance-report-nav a[aria-current="page"] { color: var(--ink); background: var(--paper); box-shadow: 0 1px 2px rgb(14 36 54 / 10%); }
.attendance-layout { display: grid; grid-template-columns: minmax(17rem, .7fr) minmax(30rem, 1.3fr); gap: .85rem; align-items: start; }
.section-title { margin: 0 0 .4rem; font-size: 1rem; }
.section-title-line { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; }
.attendance-session-list { display: grid; gap: .35rem; }
.attendance-session-card {
  display: grid;
  grid-template-columns: 7.5rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .6rem;
  padding: .55rem .65rem;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .4rem;
  text-decoration: none;
}
.attendance-session-card:hover, .attendance-session-card:focus-visible { border-color: var(--brand); }
.attendance-session-card time { color: var(--brand); font-size: .72rem; font-weight: 750; }
.attendance-session-card span { display: grid; min-width: 0; }
.attendance-session-card strong { overflow: hidden; font-size: .83rem; text-overflow: ellipsis; white-space: nowrap; }
.attendance-session-card small { color: var(--muted); font-size: .68rem; }
.attendance-session-card b { color: var(--brand); }
.attendance-report-table { max-height: 68vh; overflow: auto; background: var(--paper); border: 1px solid var(--line); border-radius: .4rem; }
.attendance-report-table table { width: 100%; border-collapse: collapse; font-size: .72rem; }
.attendance-report-table th, .attendance-report-table td { padding: .35rem .45rem; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
.attendance-report-table th:first-child, .attendance-report-table td:first-child,
.attendance-report-table th:nth-child(2), .attendance-report-table td:nth-child(2) { text-align: left; }
.attendance-report-table thead th { position: sticky; top: 0; z-index: 1; background: var(--canvas); }
.attendance-report-table tbody th { font-weight: 650; }
.attendance-matrix { max-height: 72vh; }
.attendance-matrix table { width: max-content; min-width: 100%; }
.attendance-matrix thead th:first-child, .attendance-matrix tbody th {
  position: sticky;
  left: 0;
  z-index: 2;
  min-width: 10rem;
  background: var(--paper);
}
.attendance-matrix thead th:first-child { z-index: 4; background: var(--canvas); }
.attendance-matrix thead th:nth-child(2), .attendance-matrix tbody td:nth-child(2) {
  position: sticky;
  left: 10rem;
  z-index: 2;
  min-width: 5rem;
  background: var(--paper);
}
.attendance-matrix thead th:nth-child(2) { z-index: 4; background: var(--canvas); }
.attendance-matrix thead th a { display: grid; gap: .05rem; color: inherit; text-decoration: none; }
.attendance-matrix thead th small { color: var(--muted); font-size: .6rem; }
.attendance-matrix .attendance-state { min-width: 2.4rem; text-align: center; font-weight: 800; }
.attendance-state.present { color: #17653a; background: #e7f5ec; }
.attendance-state.late { color: #805e00; background: #fff5cf; }
.attendance-state.notified { color: #725200; background: #fff0bd; }
.attendance-state.absent { color: #922c2c; background: #fdeaea; }
.attendance-state.exempt { color: #4e6170; background: #edf1f4; }
.attendance-state.unmarked, .attendance-state.not-listed { color: var(--muted); }
.attendance-legend { display: flex; flex-wrap: wrap; gap: .3rem .8rem; margin: .45rem 0 0; color: var(--muted); font-size: .68rem; }
.attendance-legend span { white-space: nowrap; }
.attendance-leaderboard { max-width: 52rem; max-height: 72vh; }
.attendance-detail { width: min(100%, 60rem); margin: 0 auto; padding: 1rem; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.attendance-detail h1 { margin: .1rem 0; font-size: clamp(1.45rem, 3vw, 2rem); }
.attendance-session-meta { margin: .15rem 0 0; color: var(--muted); font-size: .78rem; }
.attendance-session-navigation { display: flex; justify-content: space-between; gap: .75rem; margin-top: .65rem; font-size: .72rem; font-weight: 700; }
.attendance-session-navigation a { color: var(--brand); }
.attendance-session-navigation span { color: #a0aab2; }
.attendance-voice-nav { display: flex; gap: .25rem; margin: .75rem 0; overflow-x: auto; }
.attendance-voice-nav a { flex: none; padding: .28rem .5rem; color: var(--muted); border-radius: .3rem; font-size: .75rem; font-weight: 700; text-decoration: none; }
.attendance-voice-nav a[aria-current="page"] { color: white; background: var(--brand); }
.attendance-roster { border: 1px solid var(--line); border-radius: .4rem; overflow: hidden; }
.attendance-member { display: grid; grid-template-columns: minmax(9rem, 1fr) minmax(30rem, 2fr); align-items: center; gap: .6rem; padding: .42rem .55rem; }
.attendance-member + .attendance-member { border-top: 1px solid var(--line); }
.attendance-member > span { display: grid; min-width: 0; }
.attendance-member strong { overflow: hidden; font-size: .83rem; text-overflow: ellipsis; white-space: nowrap; }
.attendance-member small { color: var(--muted); font-size: .68rem; }
.attendance-status-options { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .22rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.attendance-status-choice { display: flex; align-items: center; justify-content: center; gap: .2rem; min-width: 0; padding: .3rem .22rem; color: var(--muted); border: 1px solid #aeb8c1; border-radius: .3rem; background: white; font-size: .68rem; font-weight: 700; cursor: pointer; }
.attendance-status-choice input { flex: none; width: .8rem; height: .8rem; margin: 0; accent-color: var(--brand); }
.attendance-status-choice span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attendance-status-choice:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--brand) 35%, transparent); outline-offset: 1px; }
.attendance-status-choice.unmarked:has(input:checked) { color: #34434f; border-color: #9aa7b1; background: #edf1f4; }
.attendance-status-choice.present:has(input:checked) { color: #155b35; border-color: #7fb795; background: #e7f5ec; }
.attendance-status-choice.late:has(input:checked) { color: #765700; border-color: #d9b84b; background: #fff5cf; }
.attendance-status-choice.notified:has(input:checked) { color: #6c4d00; border-color: #d4aa36; background: #fff0bd; }
.attendance-status-choice.absent:has(input:checked) { color: #892929; border-color: #d79898; background: #fdeaea; }
.attendance-status-choice.exempt:has(input:checked) { color: #455865; border-color: #aebbc5; background: #edf1f4; }
.attendance-status-options:disabled .attendance-status-choice { cursor: default; opacity: .68; }
.attendance-roster-summary {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .8rem;
  margin: -.3rem 0 .55rem;
  color: var(--muted);
  font-size: .68rem;
}
.attendance-roster-summary > div { display: flex; gap: .2rem; }
.attendance-roster-summary dt { font-weight: 650; }
.attendance-roster-summary dd { margin: 0; color: var(--ink); font-weight: 800; }
.finalize-check { margin-top: .75rem; }

@media (max-width: 720px) {
  .site-header { min-height: 3rem; flex-wrap: nowrap; gap: .75rem; padding-block: .5rem; }
  .brand .brand-product, .user-name { display: none; }
  .site-header nav { min-width: 0; margin-left: auto; gap: .75rem; overflow-x: auto; white-space: nowrap; }
  .site-header nav a { font-size: .82rem; }
  .page-heading { align-items: flex-start; flex-direction: column; }
  .event-months { grid-template-columns: 1fr; }
  .event-card { grid-template-columns: 1fr; }
  .event-date { padding: .45rem .7rem; font-size: .8rem; }
  .event-body { padding: .65rem .7rem; }
  .event-body h2 { font-size: 1rem; line-height: 1.25; }
  .event-summary {
    display: -webkit-box;
    margin: .4rem 0 0;
    overflow: hidden;
    font-size: .85rem;
    line-height: 1.4;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
  }
  .event-meta { grid-template-columns: 1fr; }
  .title-row { align-items: flex-start; flex-direction: column; }
  .period-navigation { grid-template-columns: 1fr 1fr; }
  .period-navigation span { display: none; }
  .detail-layout { grid-template-columns: 1fr; }
  .event-topline { align-items: flex-start; flex-direction: column; }
  .form-heading-top { align-items: flex-start; flex-direction: column; }
  .event-audit { justify-content: flex-start; }
  .event-detail { padding: 1.15rem; }
  .form-grid.two, .form-grid.three { grid-template-columns: 1fr; }
  .calendar-card .card-actions { display: none; }
  .directory-filters { grid-template-columns: 1fr 1fr; }
  .person-detail-grid > section { float: none; clear: none; width: 100%; }
  .person-detail-grid-public .person-detail-contact,
  .person-detail-grid-public .person-semester-summary,
  .person-detail-grid-public .person-detail-choir,
  .person-detail-grid-public .person-education-summary { float: none; clear: none; }
  .person-audit.compact { justify-content: flex-start; }
  .compact-directory > a { grid-template-columns: 3.5rem minmax(0, 1fr); }
  .compact-directory > a span, .compact-directory > a small { display: none; }
  .official-role { grid-template-columns: 1fr; }
  .official-role > h3 { padding: .45rem .65rem; }
  .official-role-people { grid-template-columns: 1fr; padding: .35rem .45rem; }
  .stat-distributions { grid-template-columns: 1fr; }
  .people-statistics-grid { grid-template-columns: 1fr; }
  .dashboard-overview-grid { grid-template-columns: 1fr; }
  .dashboard-registration-row { align-items: flex-start; flex-direction: column; }
  .dashboard-registration-action { width: 100%; justify-content: space-between; }
  .info-primary-grid, .archive-category-grid { grid-template-columns: 1fr; }
  .info-card, .info-section { padding: .75rem; }
  .info-external-links > a { align-items: flex-start; }
  .external-link-service { padding-top: .1rem; }
  .archive-calendar-list, .archive-item-list { grid-template-columns: 1fr; }
  .archive-detail { padding: .65rem; }
  .archive-detail > header { flex-direction: column; }
  .archive-frame { min-height: 76vh; }
  .archive-import-report dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .static-data > div { grid-template-columns: 1fr; gap: .15rem; }
  .copy-field { align-items: stretch; flex-direction: column; }
  .attendance-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .attendance-filters .button { width: max-content; }
  .attendance-layout { grid-template-columns: 1fr; }
  .attendance-report-table { max-height: none; }
  .attendance-matrix { max-height: 72vh; }
  .attendance-member { grid-template-columns: 1fr; gap: .35rem; }
  .attendance-status-options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 480px) {
  .content { width: min(100% - 1rem, 76rem); padding: .65rem 0; }
  .personal-dashboard { gap: .55rem; }
  .personal-dashboard-heading .eyebrow { display: none; }
  .personal-dashboard-heading h1 { font-size: 1.3rem; }
  .personal-dashboard-heading p:last-child { font-size: .8rem; }
  .dashboard-panel { padding: .7rem; }
  .dashboard-event-row { grid-template-columns: 1fr auto; gap: .12rem .5rem; }
  .dashboard-event-row time { grid-column: 1 / -1; }
  .dashboard-event-row > b { grid-column: 2; grid-row: 2; }
  .people-pie-layout { grid-template-columns: 8.5rem minmax(0, 1fr); gap: .55rem; }
  .people-chart-legend li { grid-template-columns: .55rem minmax(0, 1fr) auto; }
  .people-chart-legend small { display: none; }
  .people-bar-chart li { grid-template-columns: 3.6rem minmax(4rem, 1fr) 1.7rem; gap: .35rem; }
  .people-bar-chart small { display: none; }
  .feature-copy small { font-size: .8rem; }
  .event-page-heading { gap: .45rem; margin-bottom: .45rem; }
  .event-page-heading .eyebrow { display: none; }
  .event-page-heading .page-title-line { gap: .2rem .6rem; }
  .event-page-heading h1 { margin: 0; font-size: 1.3rem; }
  .event-page-heading .page-title-line p { font-size: .8rem; }
  .event-page-heading .heading-actions {
    width: 100%;
    flex-wrap: nowrap;
    gap: .3rem;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .event-page-heading .heading-actions::-webkit-scrollbar { display: none; }
  .event-page-heading .button.small { flex: none; padding: .32rem .5rem; font-size: .72rem; }
  .period-navigation { gap: .5rem; margin-bottom: .5rem; padding: .42rem .55rem; border-radius: .45rem; }
  .period-navigation a { font-size: .75rem; }
  .event-view-switch { margin-bottom: .5rem; }
  .event-density { padding: .6rem .65rem .48rem; }
  .event-density > header { align-items: flex-start; }
  .event-density h2 { font-size: .9rem; }
  .event-density .eyebrow { display: none; }
  .event-density-footer { align-items: flex-start; flex-direction: column; }
  .event-month { padding: .6rem; }
  .event-calendar-day { min-height: 2.65rem; padding: .16rem; }
  .event-calendar-marker, .event-calendar-number { width: 1rem; height: 1rem; font-size: .54rem; }
  .event-calendar-agenda li { gap: .35rem; }
  .event-calendar-edit { display: none; }
  .event-list { gap: .5rem; }
  .event-card { border-radius: .5rem; }
  .people-heading { gap: .45rem; margin-bottom: .45rem; }
  .people-heading .eyebrow { display: none; }
  .people-heading h1 { font-size: 1.3rem; }
  .people-heading .heading-actions { width: 100%; flex-wrap: nowrap; overflow-x: auto; }
  .directory-filters { grid-template-columns: 1fr; gap: .4rem; padding: .55rem; }
  .directory-status-filter { grid-column: auto; }
  .people-list { grid-template-columns: 1fr; }
  .person-card { padding: .6rem .65rem; }
  .directory-portrait { width: 2.45rem; height: 2.45rem; }
  .person-detail { padding: .9rem; }
  .bulk-membership-window { align-items: end; padding: .5rem; }
  .bulk-membership-window small { width: 100%; }
  .bulk-membership-table-wrap { max-height: 74vh; }
  .bulk-membership-table tbody th, .bulk-membership-table thead th:first-child { min-width: 10rem; max-width: 10rem; }
  .bulk-membership-table tbody td:nth-child(2), .bulk-membership-table thead th:nth-child(2) { left: 10rem; min-width: 10rem; }
  .bulk-membership-savebar { justify-content: space-between; }
  .attendance-heading .eyebrow { display: none; }
  .attendance-heading h1 { font-size: 1.3rem; }
  .attendance-filters { gap: .4rem; padding: .5rem; }
  .attendance-session-card { grid-template-columns: 5.4rem minmax(0, 1fr) auto; padding: .45rem .5rem; }
  .attendance-member { padding: .45rem; }
  .attendance-detail { padding: .65rem; }
}

@media print {
  .signature-sheet .site-header, .signature-sheet + * { display: none; }
  .site-header:has(+ .content .signature-sheet) { display: none; }
  body:has(.signature-sheet) { background: white; }
  .content:has(.signature-sheet) { width: 100%; padding: 0; }
  body:has(.event-participant-report) { background: white; }
  body:has(.event-participant-report) > .site-header,
  body:has(.event-participant-report) > .site-footer,
  .content:has(.event-participant-report) > .breadcrumbs,
  .event-participant-report .heading-actions { display: none; }
  .content:has(.event-participant-report) { width: 100%; max-width: none; padding: 0; }
  .event-participant-report { width: 100%; max-width: none; }
  .event-participant-report .page-heading { margin-bottom: .6rem; }
  .participant-table-wrap { overflow: visible; border-color: #777; }
  .participant-table { font-size: 9pt; }
  .participant-table thead { display: table-header-group; }
  .participant-table tr { break-inside: avoid; }
  .participant-table th, .participant-table td { padding: .28rem .4rem; border-color: #aaa; }
}

.log-heading { margin-bottom: .8rem; }
.log-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
  margin-bottom: .65rem;
}
.log-summary > div {
  background: white;
  border: 1px solid var(--border);
  border-radius: .6rem;
  padding: .65rem .8rem;
}
.log-summary strong { display: block; color: var(--blue); font-size: 1.3rem; }
.log-summary span { color: var(--muted); font-size: .78rem; }
.log-distribution-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .75rem;
  margin: .9rem 0;
}
.log-distribution-card {
  padding: .9rem;
  background: var(--paper);
  border: 1px solid var(--border, #dfe4e8);
  border-radius: .65rem;
}
.log-distribution-card--wide {
  grid-column: 1 / -1;
}
.log-distribution-card h2 {
  margin: 0 0 .65rem;
  color: var(--ink);
  font-size: .95rem;
}
.log-distribution-empty {
  margin: 0;
  color: var(--muted);
  font-size: .82rem;
}
.log-pie-wrap {
  display: grid;
  grid-template-columns: minmax(0, 10rem) minmax(0, 1fr);
  align-items: center;
  gap: .85rem;
}
.log-pie-chart {
  --pie-size: 10rem;
  width: var(--pie-size);
  height: var(--pie-size);
  border-radius: 50%;
  background: conic-gradient(var(--pie-segments, var(--brand) 0% 100%));
  border: 1px solid #dde4eb;
}
.log-pie-chart::after {
  content: "";
  display: block;
  width: 45%;
  height: 45%;
  margin: 27.5%;
  border-radius: 50%;
  background: var(--paper);
}
.log-distribution-legend {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: .44rem;
  font-size: .76rem;
  color: var(--ink);
}
.log-distribution-legend li {
  display: grid;
  grid-template-columns: 1rem auto minmax(0, 1fr);
  align-items: baseline;
  gap: .42rem .5rem;
}
.log-legend-swatch {
  width: .83rem;
  height: .83rem;
  border-radius: .18rem;
  background: var(--dot-color, var(--brand));
  box-shadow: 0 0 0 1px #f4f7fa inset;
}
.log-legend-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.log-legend-stats {
  justify-self: end;
  color: var(--muted);
  font-size: .72rem;
  white-space: nowrap;
}
.log-line-chart-wrap {
  overflow: auto;
  padding-bottom: .25rem;
}
.log-line-chart {
  display: block;
  width: 100%;
  min-width: 680px;
  height: 190px;
}
.log-line-chart-bg { fill: var(--paper); }
.log-line-grid { stroke: #edf1f5; stroke-width: 1; }
.log-line-path {
  stroke: var(--brand);
  stroke-width: 2.2;
  stroke-linejoin: round;
  stroke-linecap: round;
}
.log-line-path-desktop {
  stroke: #163f68;
}
.log-line-path-mobile {
  stroke: #d67c2a;
}
.log-line-dot-group { pointer-events: none; }
.log-line-dot {
  fill: var(--brand);
  stroke: var(--paper);
  stroke-width: 1;
}
.log-line-dot-desktop {
  fill: #163f68;
  stroke: var(--paper);
  stroke-width: 1;
}
.log-line-dot-mobile {
  fill: #d67c2a;
  stroke: var(--paper);
  stroke-width: 1;
}
.log-line-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .75rem;
  margin-top: .42rem;
  font-size: .72rem;
  color: var(--muted);
}
.log-line-legend .log-line-legend-swatch {
  width: .7rem;
  height: .7rem;
  border-radius: 999px;
  background: var(--log-series-color);
  display: inline-block;
  margin-right: .34rem;
}
.log-line-label {
  fill: var(--muted);
  font-size: .67rem;
  text-anchor: middle;
}
.log-line-label-y {
  fill: #6b7786;
  text-anchor: start;
}
.log-line-axis-labels { pointer-events: none; }
.log-tabs { display: flex; gap: .35rem; margin-bottom: .55rem; }
.log-tabs a {
  border: 1px solid var(--border);
  border-radius: .45rem;
  color: var(--brand);
  font-size: .82rem;
  font-weight: 700;
  padding: .38rem .62rem;
  text-decoration: none;
}
.log-tabs a[aria-current="page"] { background: var(--blue); border-color: var(--blue); color: white; }
.log-range-filter {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  margin: .25rem 0 1rem;
}
.log-range-filter a {
  border: 1px solid var(--border);
  border-radius: .45rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 700;
  padding: .31rem .58rem;
  text-decoration: none;
}
.log-range-filter a[aria-current="page"] {
  background: var(--blue);
  border-color: var(--blue);
  color: white;
}
.log-search-filters {
  background: #f9fbfd;
  border: 1px solid var(--border);
  border-radius: .65rem;
  padding: .55rem;
}
.log-search-filters-grid {
  display: grid;
  gap: .45rem;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  margin-bottom: .55rem;
}
.log-search-filter {
  color: var(--muted);
  display: flex;
  flex-direction: column;
  gap: .24rem;
  font-size: .74rem;
}
.log-search-row {
  display: flex;
  gap: .25rem;
}
.log-search-row input,
.log-search-row select {
  border: 1px solid var(--border);
  border-radius: .35rem;
  padding: .33rem .4rem;
  font: inherit;
  min-height: 2rem;
}
.log-search-row input { min-width: 0; flex: 2; }
.log-search-row select { background: white; min-width: 8.5rem; }
.log-filter-hint { color: var(--muted); font-size: .74rem; margin: 0 0 .45rem; }
.log-filter-actions {
  display: flex;
  gap: .4rem;
}
.log-table-wrap {
  background: white;
  border: 1px solid var(--border);
  border-radius: .65rem;
  overflow: auto;
}
.log-table { border-collapse: collapse; font-size: .76rem; min-width: 60rem; width: 100%; }
.log-table th, .log-table td {
  border-bottom: 1px solid var(--border);
  padding: .48rem .55rem;
  text-align: left;
  vertical-align: top;
}
.log-table th { background: #f4f7fa; color: var(--muted); font-size: .68rem; text-transform: uppercase; }
.log-table tbody tr:last-child td { border-bottom: 0; }
.log-table small { color: var(--muted); display: block; margin-top: .12rem; max-width: 28rem; overflow-wrap: anywhere; }
.log-table code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .7rem; white-space: normal; }
.log-time { white-space: nowrap; }
.log-status {
  border-radius: 999px;
  display: inline-block;
  font-weight: 800;
  min-width: 2.8rem;
  padding: .15rem .4rem;
  text-align: center;
}
.status-success, .status-redirect { background: #e8f5ec; color: #17663a; }
.status-client_error { background: #fff4d6; color: #7a5600; }
.status-server_error, .status-fatal_error { background: #fde8e8; color: #972d2d; }
.log-pager {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  justify-content: flex-end;
  margin-top: .55rem;
}
.log-pager-count { color: var(--muted); font-size: .76rem; margin-right: .25rem; }
.log-pager .is-current {
  background: var(--ink);
  border-color: var(--ink);
  color: white;
  cursor: default;
}
.log-retention-note { color: var(--muted); font-size: .72rem; margin: .65rem 0 0; }

.queue-heading { margin-bottom: .7rem; }
.queue-notice { margin: .65rem 0; padding: .65rem .8rem; color: var(--muted); background: var(--paper); border: 1px solid var(--line); border-radius: .5rem; }
.queue-notice.success { color: #17663a; background: #e8f5ec; border-color: #b9dcc7; }
.queue-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .55rem; margin: .7rem 0; }
.queue-summary a { display: grid; padding: .7rem; color: var(--muted); background: var(--paper); border: 1px solid var(--line); border-radius: .55rem; text-decoration: none; }
.queue-summary a:hover, .queue-summary a[aria-current="page"] { color: var(--brand); border-color: var(--brand); }
.queue-summary strong { color: var(--brand); font-size: 1.25rem; line-height: 1; }
.queue-summary span { margin-top: .2rem; font-size: .72rem; }
.queue-filters { display: flex; flex-wrap: wrap; gap: .35rem; margin: .6rem 0; }
.queue-filters .is-current { color: white; background: var(--brand); }
.queue-table-wrap { overflow: auto; background: var(--paper); border: 1px solid var(--line); border-radius: .65rem; }
.queue-table { width: 100%; min-width: 70rem; border-collapse: collapse; font-size: .76rem; }
.queue-table th, .queue-table td { padding: .5rem .55rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.queue-table th { color: var(--muted); background: #f4f7fa; font-size: .68rem; text-transform: uppercase; }
.queue-table tbody tr:last-child td { border-bottom: 0; }
.queue-table small { display: block; margin-top: .15rem; color: var(--muted); overflow-wrap: anywhere; }
.queue-table details { margin-top: .35rem; }
.queue-table summary { color: var(--brand); cursor: pointer; font-weight: 700; }
.queue-table pre { max-width: 32rem; margin: .35rem 0 0; padding: .45rem; overflow: auto; background: var(--canvas); border-radius: .35rem; font-size: .68rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.queue-change { display: grid; gap: .2rem; max-width: 28rem; overflow-wrap: anywhere; }
.queue-status { display: inline-block; padding: .17rem .42rem; border-radius: 999px; font-size: .68rem; font-weight: 800; }
.queue-status.pending { color: #7a5600; background: #fff4d6; }
.queue-status.failed { color: #972d2d; background: #fde8e8; }
.queue-status.processed { color: #17663a; background: #e8f5ec; }
.queue-status.cancelled { color: var(--muted); background: #e9edf0; }
.queue-error { max-width: 26rem; color: #972d2d !important; }
.queue-actions { display: flex; flex-wrap: wrap; gap: .35rem; min-width: 9rem; }
.queue-actions form { margin: 0; }
.queue-worker-note { margin: .7rem 0 0; color: var(--muted); font-size: .74rem; }
.queue-worker-note code { color: var(--ink); }

@media (max-width: 720px) {
  .log-distribution-grid { grid-template-columns: 1fr; }
  .log-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .log-summary > div { padding: .5rem; }
  .log-summary strong { font-size: 1rem; }
  .log-pie-wrap { grid-template-columns: minmax(0, 1fr); }
  .log-pie-chart { margin-inline: auto; }
  .log-pie-chart::after { margin: 25%; width: 50%; height: 50%; }
  .log-distribution-legend li { grid-template-columns: 1rem auto 1fr; }
  .log-line-chart { min-width: 100%; }
  .log-table { min-width: 50rem; }
  .queue-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.account-link {
  color: var(--muted);
  font-size: .82rem;
  text-decoration: none;
}

.security-heading {
  margin-bottom: 1rem;
}

.security-method-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: .7rem;
  margin-bottom: 1.5rem;
}

.security-method,
.security-registration,
.security-management,
.security-step-up {
  border: 1px solid var(--line);
  border-radius: .75rem;
  background: var(--paper);
  padding: .9rem 1rem;
}

.security-method h3,
.security-row h3 {
  font-size: 1rem;
  margin: 0 0 .25rem;
}

.security-method p,
.security-row p {
  color: var(--muted);
  font-size: .86rem;
  margin: .15rem 0 0;
}

.security-registration,
.security-management {
  margin: 1rem 0 1.5rem;
}

.security-registration form,
.security-management form,
.security-inline-form,
.section-title-row {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
}

.security-registration label,
.security-management label {
  display: grid;
  gap: .25rem;
}

.security-list {
  border-top: 1px solid var(--line);
  margin-bottom: 1.5rem;
}

.security-row {
  align-items: center;
  border-bottom: 1px solid var(--line);
  display: flex;
  gap: .75rem;
  justify-content: space-between;
  padding: .7rem 0;
}

.security-row.revoked {
  opacity: .68;
}

.security-inline-form input {
  max-width: 14rem;
}

.security-inline-form.destructive {
  margin-left: auto;
}

.section-title-row {
  justify-content: space-between;
}

.section-title-row h2 {
  margin-right: auto;
}

.person-account-summary {
  align-items: center;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: .7rem;
  display: flex;
  gap: 1rem;
  justify-content: space-between;
  margin: 1rem 0;
  padding: .8rem 1rem;
}

.person-account-summary h2,
.person-account-summary p {
  margin: 0;
}

.person-account-summary p {
  color: var(--muted);
  font-size: .86rem;
}

.danger-button {
  background: #9f2828;
  border-color: #9f2828;
  color: #fff;
}

.status.success {
  background: #e5f5ea;
  color: #23653a;
}

.status.muted {
  background: #edf0f2;
  color: var(--muted);
}

.form-status {
  color: var(--muted);
  min-height: 1.3em;
}

@media (max-width: 42rem) {
  .security-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .security-inline-form.destructive {
    margin-left: 0;
  }

  .person-account-summary {
    align-items: flex-start;
    flex-direction: column;
  }
}
