:root { color-scheme: light; font-family: system-ui, sans-serif; line-height: 1.5; }
body { margin: 0; color: #18231c; background: #f5f7f5; }
main { box-sizing: border-box; width: min(92%, 34rem); margin: 2rem auto; padding: 1.25rem; background: white; border-radius: .5rem; box-shadow: 0 2px 12px #0001; }
label { display: block; margin-top: 1rem; font-weight: 600; }
input, textarea { box-sizing: border-box; width: 100%; padding: .7rem; margin-top: .25rem; border: 1px solid #9aa59d; border-radius: .3rem; font: inherit; }
textarea { resize: vertical; }
select { box-sizing: border-box; width: 100%; padding: .7rem; margin-top: .25rem; border: 1px solid #9aa59d; border-radius: .3rem; background: white; font: inherit; }
button { min-height: 2.75rem; margin-top: 1.25rem; padding: .65rem 1rem; border: 0; border-radius: .3rem; background: #176b3a; color: white; font: inherit; cursor: pointer; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible { outline: 3px solid #0b63ce; outline-offset: 3px; }
button:disabled, input:disabled { cursor: not-allowed; }
.button-link { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-height: 2.75rem; padding: .65rem 1rem; border-radius: .3rem; background: #176b3a; color: white; font-weight: 600; text-decoration: none; }
.button-link.secondary { border: 1px solid #7e8b82; background: white; color: #253b2c; }
.error { padding: .75rem; background: #fee; color: #8b1717; }
.success { padding: .75rem; background: #e9f8ed; color: #135c2e; }
nav { margin-top: 1.5rem; display: flex; gap: 1rem; flex-wrap: wrap; }
.home-page { width: min(92%, 52rem); text-align: center; }
.home-page .app-menu { text-align: left; }
.home-page h1 { margin-bottom: .5rem; }
.home-tagline { margin: 0 auto 1.5rem; color: #405047; font-size: 1.15rem; }
.home-photo { display: block; width: 100%; max-height: 32rem; margin: 1.5rem auto; border-radius: .65rem; object-fit: cover; }
.home-call-to-action { margin-top: 2rem; font-size: 1.25rem; }
.home-call-to-action a, .home-events-link a, .home-install-action a { font-weight: 800; }
.home-events-link { margin-top: 2rem; font-size: 1.25rem; }
.home-install-action { margin: 1.5rem 0 0; font-size: 1.1rem; }
.inline { display: inline; } .inline button { margin: 0; }
.app-menu { position: fixed; top: max(1rem, env(safe-area-inset-top)); right: max(1rem, env(safe-area-inset-right)); z-index: 90; }
.app-menu-toggle { display: grid; place-items: center; box-sizing: border-box; width: 3rem; height: 3rem; min-height: 3rem; margin: 0; padding: 0; border: 1px solid #bdc9c0; border-radius: .5rem; background: #fff; color: #174c2d; cursor: pointer; box-shadow: 0 .15rem .6rem #10241924; }
.app-menu-toggle:hover { background: #f0f6f2; }
.app-menu.is-open > .app-menu-toggle { background: #e5f1e9; }
.hamburger-symbol { font-size: 1.75rem; line-height: 1; }
.app-menu-panel { position: absolute; top: calc(100% + .5rem); right: 0; display: grid; box-sizing: border-box; width: min(18rem, calc(100vw - 2rem)); margin: 0; padding: .5rem; gap: .15rem; border: 1px solid #cbd5cd; border-radius: .6rem; background: #fff; box-shadow: 0 .8rem 2rem #10241930; }
.app-menu-panel[hidden] { display: none; }
.app-menu-panel a, .app-menu-panel button { box-sizing: border-box; width: 100%; min-height: 2.75rem; margin: 0; padding: .7rem .85rem; border: 0; border-radius: .35rem; background: transparent; color: #173d27; font: inherit; font-weight: 700; text-align: left; text-decoration: none; cursor: pointer; }
.app-menu-panel a:hover, .app-menu-panel a:focus-visible, .app-menu-panel button:hover, .app-menu-panel button:focus-visible { background: #edf5ef; }
.app-menu-panel a[aria-current="page"] { background: #dceee2; color: #0d542b; }
.app-menu-panel .app-install-button { color: #173d27; }
.app-menu-panel form { margin: .35rem 0 0; padding-top: .35rem; border-top: 1px solid #dce3de; }
.app-menu-panel button { color: #8b1717; }
.app-install-backdrop { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; box-sizing: border-box; padding: 1rem; background: #10241999; }
.app-install-backdrop[hidden] { display: none; }
.app-install-dialog { width: min(100%, 28rem); box-sizing: border-box; padding: 1.25rem; border-radius: .65rem; background: #fff; color: #18231c; box-shadow: 0 1rem 3rem #0005; }
.app-install-dialog h2 { margin-top: 0; }
.app-install-dialog p { margin-bottom: 0; }
.app-install-dialog button { width: 100%; }
.app-menu + h1 { min-height: 3rem; padding-right: 3.5rem; }
.guests-page { width: min(92%, 42rem); }
.guests-page section { margin-top: 2rem; }
.guest-list { display: grid; gap: 1rem; margin-top: 1rem; }
.guest-card { padding: 1rem; border: 1px solid #d8ded9; border-radius: .5rem; background: #fbfcfb; }
.guest-create-form, .guest-edit-form, .guest-card-controls { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; align-items: end; gap: .65rem; }
.guest-name-field { min-width: 0; }
.guest-name-field label { margin-top: 0; }
.guest-card-controls { grid-template-columns: minmax(0, 1fr) auto; }
.guest-card-controls form { margin: 0; }
.guest-card label { margin-top: 0; }
.guest-edit-form input { min-width: 0; margin-top: 0; }
.icon-button { display: inline-grid; place-items: center; width: 2.75rem; padding: 0; margin-top: 0; font-size: 1.75rem; font-weight: 700; line-height: 1; }
.icon-button svg { width: 1.35rem; height: 1.35rem; fill: currentColor; }
.guest-deactivate-form { align-self: end; }
.button-danger { background: #a32626; }
.checkbox-label { display: flex; align-items: center; gap: .65rem; font-weight: 600; }
.checkbox-label input { width: 1.25rem; height: 1.25rem; margin: 0; }
.profile-page { width: min(92%, 46rem); padding: 0; overflow: hidden; }
.profile-page .app-menu { top: max(1.5rem, env(safe-area-inset-top)); right: max(1.5rem, env(safe-area-inset-right)); }
.profile-hero { display: flex; align-items: center; gap: 1.15rem; min-height: 8rem; padding: 2rem 5rem 2rem 2rem; background: linear-gradient(135deg, #e3f1e7 0%, #f5faf6 55%, #edf5ef 100%); border-bottom: 1px solid #d5e2d8; }
.profile-avatar { display: grid; flex: 0 0 auto; place-items: center; width: 4.75rem; height: 4.75rem; border-radius: 50%; background: #176b3a; color: white; box-shadow: 0 .3rem 1rem #174c2d26; }
.profile-avatar svg { width: 2.45rem; height: 2.45rem; fill: currentColor; }
.profile-eyebrow { margin: 0 0 .15rem; color: #3f6250; font-size: .78rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.profile-hero h1 { min-height: 0; margin: 0; padding: 0; font-size: clamp(1.65rem, 5vw, 2.15rem); line-height: 1.2; overflow-wrap: anywhere; }
.profile-role { display: inline-block; margin-top: .55rem; padding: .2rem .65rem; border: 1px solid #b8d2c0; border-radius: 999px; background: #fff9; color: #185934; font-size: .82rem; font-weight: 750; }
.profile-page > .success, .profile-page > .error { margin: 1.5rem 2rem 0; border-radius: .45rem; }
.profile-card { margin: 1.5rem 2rem; padding: 1.25rem; border: 1px solid #d8e0da; border-radius: .7rem; background: #fff; box-shadow: 0 .15rem .65rem #1024190a; }
.profile-section-heading { display: flex; align-items: center; gap: .85rem; padding-bottom: 1rem; border-bottom: 1px solid #e2e8e3; }
.profile-section-icon { display: grid; flex: 0 0 auto; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: .6rem; background: #e8f4eb; color: #176b3a; }
.profile-section-icon svg { width: 1.35rem; height: 1.35rem; fill: currentColor; }
.profile-section-heading h2 { margin: 0; font-size: 1.1rem; }
.profile-section-heading p { margin: .15rem 0 0; color: #58675e; font-size: .9rem; }
.profile-details { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0; }
.profile-details > div { min-width: 0; padding: 1rem 0; border-bottom: 1px solid #edf0ee; }
.profile-details > div:nth-child(odd):not(.profile-detail-wide) { padding-right: 1rem; }
.profile-details > div:nth-child(even):not(.profile-detail-wide) { padding-left: 1rem; border-left: 1px solid #edf0ee; }
.profile-details > div:last-child { border-bottom: 0; }
.profile-details > .profile-detail-wide { grid-column: 1 / -1; }
.profile-details dt { margin-bottom: .2rem; color: #68756d; font-size: .78rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; }
.profile-details dd { margin: 0; color: #1d3023; font-weight: 650; overflow-wrap: anywhere; }
.profile-settings { margin-top: 0; }
.profile-settings-form { margin-top: 1rem; }
.profile-notification-group { display: grid; gap: .65rem; margin: 0 0 1rem; padding: 0; border: 0; }
.profile-notification-group legend { width: 100%; margin-bottom: .15rem; color: #31513c; font-size: .88rem; font-weight: 800; letter-spacing: .035em; text-transform: uppercase; }
.profile-notification-option { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0; padding: .9rem; border-radius: .55rem; background: #f5f8f6; cursor: pointer; }
.profile-notification-option span { min-width: 0; }
.profile-notification-option strong, .profile-notification-option small { display: block; }
.profile-notification-option small { margin-top: .2rem; color: #59675e; font-weight: 400; line-height: 1.4; }
.profile-notification-option input { flex: 0 0 auto; width: 1.4rem; height: 1.4rem; margin: 0; accent-color: #176b3a; }
.profile-settings-form button { display: block; margin-left: auto; font-weight: 700; }
.push-device-status { margin: 1rem 0; color: #31513c; line-height: 1.5; }
.push-device-status.error { color: #8a1f17; }
.push-device-actions { display: flex; flex-wrap: wrap; gap: .65rem; }
.push-device-actions button { margin: 0; font-weight: 700; }
.verification-status, .verification-progress { margin: 1rem 0 0; }
.verification-card button { font-weight: 700; }
.verification-action { margin: 1rem 0 0; }
.verification-code-panel { display: grid; justify-items: center; gap: .75rem; margin-top: 1rem; padding: 1rem; border: 1px solid #d8e0da; border-radius: .55rem; background: #f7faf8; }
.verification-code-panel[hidden] { display: none; }
.verification-qr { display: grid; place-items: center; box-sizing: content-box; width: 224px; height: 224px; padding: .65rem; background: #fff; }
.verification-qr img, .verification-qr canvas { display: block; width: 224px; height: 224px; }
.verification-code-panel label { justify-self: stretch; font-size: .85rem; font-weight: 700; }
.verification-code-panel input { box-sizing: border-box; width: 100%; font-family: monospace; font-size: .85rem; }
.verification-message { min-height: 1.5rem; margin: .8rem 0 0; }
.secondary-button { border: 1px solid #7e8b82; background: white; color: #253b2c; }
.verify-user-page { width: min(92%, 42rem); padding: 1.5rem 2rem 2rem; }
.verify-user-heading { padding-right: 3.5rem; }
.verify-user-heading h1 { margin-bottom: .25rem; }
.verify-user-heading p { margin: 0; color: #52645a; font-weight: 700; }
.scanner-panel, .confirmation-panel { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid #d8e0da; }
.scanner-panel h2, .confirmation-panel h2 { margin-top: 0; font-size: 1.2rem; }
.scanner-viewport { width: 100%; margin-bottom: 1rem; overflow: hidden; border-radius: .55rem; background: #111; aspect-ratio: 4 / 3; }
.scanner-viewport[hidden] { display: none; }
.scanner-viewport video { display: block; width: 100%; height: 100%; object-fit: cover; }
.manual-code-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .65rem; margin-top: 1.25rem; }
.manual-code-form label { grid-column: 1 / -1; font-weight: 700; }
.manual-code-form input { min-width: 0; font-family: monospace; }
.confirmation-panel { padding: 1rem; border: 1px solid #bed2c3; border-radius: .55rem; background: #f2f8f4; }
.confirmation-panel[hidden] { display: none; }
.confirmation-actions { display: flex; flex-wrap: wrap; gap: .65rem; }
@media (max-width: 35.99rem) {
    .profile-page { width: 100%; margin: 0; min-height: 100vh; border-radius: 0; }
    .profile-page .app-menu { top: max(1rem, env(safe-area-inset-top)); right: max(1rem, env(safe-area-inset-right)); }
    .profile-hero { align-items: flex-start; min-height: 7rem; padding: 1.5rem 4.5rem 1.5rem 1.25rem; }
    .profile-avatar { width: 3.5rem; height: 3.5rem; }
    .profile-avatar svg { width: 1.8rem; height: 1.8rem; }
    .profile-page > .success, .profile-page > .error, .profile-card { margin-left: 1rem; margin-right: 1rem; }
    .profile-card { padding: 1rem; }
    .profile-details { grid-template-columns: 1fr; }
    .profile-details > div, .profile-details > div:nth-child(odd):not(.profile-detail-wide), .profile-details > div:nth-child(even):not(.profile-detail-wide) { grid-column: 1; padding: .85rem 0; border-left: 0; }
    .profile-notification-option { align-items: flex-start; }
    .profile-settings-form button { width: 100%; }
    .verification-qr { width: min(224px, calc(100vw - 6rem)); height: min(224px, calc(100vw - 6rem)); }
    .verification-qr img, .verification-qr canvas { width: 100% !important; height: 100% !important; }
    .verify-user-page { box-sizing: border-box; width: 100%; min-height: 100vh; margin: 0; padding: 1.25rem 1rem; border-radius: 0; }
    .manual-code-form { grid-template-columns: 1fr; }
    .manual-code-form label { grid-column: 1; }
    .manual-code-form button, .confirmation-actions button { width: 100%; }
}
.event-action-controls, .admin-event-actions { display: flex; align-items: center; gap: .65rem; flex-wrap: wrap; }
.event-action-controls form, .admin-event-actions form { margin: 0; }
.event-action-controls button, .admin-event-actions button { margin: 0; }
.event-participation-form { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin-top: 1rem; padding-top: .85rem; border-top: 1px solid #d8ded9; }
.event-participation-option { display: inline-flex; align-items: center; gap: .55rem; margin: 0; font-weight: 800; cursor: pointer; }
.event-participation-option input { width: 1.35rem; height: 1.35rem; margin: 0; accent-color: #176b3a; }
.event-participation-option:has(input:disabled) { cursor: not-allowed; opacity: .72; }
.event-participation-submit { margin: 0; }
.js .event-participation-submit { display: none; }
.event-participation-state { flex-basis: 100%; color: #526057; font-size: .9rem; }
.event-participant-count { display: inline-block; margin: .4rem 0 0; font-weight: 800; }
.admin-event-participation-page { width: min(94%, 48rem); padding: 1rem; }
.admin-event-participation-page section { margin-top: 1.5rem; }
.admin-event-participation-page select { max-width: 32rem; }
.event-participant-admin-list { display: grid; gap: .55rem; padding: 0; list-style: none; }
.event-participant-admin-list li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .65rem 0; border-bottom: 1px solid #d8ded9; }
.event-participant-admin-list button { margin: 0; }
.event-participation-message:empty { display: none; }
.event-participation-message { position: fixed; left: 50%; bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 100; box-sizing: border-box; width: max-content; max-width: calc(100vw - 2rem); margin: 0; border: 1px solid currentColor; border-radius: .5rem; box-shadow: 0 .5rem 1.5rem #10241938; transform: translateX(-50%); }
.admin-event-actions .event-overlap-form { display: flex; align-items: center; gap: .65rem; padding: .45rem .6rem; border: 1px solid #cdd7d0; border-radius: .4rem; }
.event-overlap-form .checkbox-label { margin: 0; }
.event-summary, .admin-event-card dl { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; }
.event-summary dt, .admin-event-card dt { font-weight: 700; }
.event-summary dd, .admin-event-card dd { margin: 0; }
.admin-events-page { width: min(96%, 72rem); }
.event-status-tabs { gap: .35rem; border-bottom: 1px solid #cdd7d0; }
.event-status-tabs a { padding: .65rem .85rem; border-radius: .4rem .4rem 0 0; text-decoration: none; font-weight: 700; }
.event-status-tabs a[aria-current="page"] { background: #dceee2; color: #0d542b; }
.admin-event-list { display: grid; gap: 1rem; }
.admin-event-card, .event-edit-panel { padding: 1rem; border: 1px solid #d8ded9; border-radius: .55rem; background: #fbfcfb; }
.admin-event-card header { display: flex; justify-content: space-between; gap: 1rem; }
.admin-event-card h3 { margin: 0 0 .35rem; }
.event-status { display: inline-block; padding: .2rem .55rem; border-radius: 999px; background: #e7ece8; font-size: .85rem; font-weight: 700; }
.event-status.status-approved { background: #d8f1df; color: #135c2e; }
.event-status.status-rejected, .event-status.status-cancelled { background: #f7dddd; color: #8b1717; }
.event-edit-panel { margin: 1.5rem 0; background: #f5faf6; }
.event-edit-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: .75rem; }
.recurrence-summary { padding: .55rem .7rem; border-left: .25rem solid #176b3a; background: #eaf5ed; }
.recurrence-management form + form { margin-top: 1.25rem; }
.recurrence-end-form { display: grid; grid-template-columns: minmax(12rem, 1fr) auto; align-items: end; gap: .75rem; }
.recurrence-end-form label, .recurrence-end-form button { margin: 0; }
.recurrence-cancel-form fieldset { margin-bottom: .75rem; padding: .8rem; border: 1px solid #cdd7d0; border-radius: .45rem; }
.recurrence-cancel-form legend { padding: 0 .35rem; font-weight: 700; }
.recurrence-date { padding: .55rem; border-radius: .35rem; }
.recurrence-date + .recurrence-date { margin-top: .25rem; }
.recurrence-date-cancelled { background: #f7dddd; color: #741515; }
.recurrence-activate { flex-basis: 100%; padding: .6rem .75rem; border: 1px solid #cdd7d0; border-radius: .4rem; }
.recurrence-activate summary { cursor: pointer; font-weight: 700; }
.recurrence-activate form { display: grid; grid-template-columns: minmax(12rem, 1fr) auto; align-items: end; gap: .65rem; margin-top: .65rem; }
.recurrence-activate label, .recurrence-activate button { margin: 0; }
@media (max-width: 42rem) { .event-edit-grid { grid-template-columns: 1fr; } .admin-event-card header { display: block; } }
@media (max-width: 42rem) { .recurrence-end-form, .recurrence-activate form { grid-template-columns: 1fr; } }
.availability-page { width: min(96%, 72rem); padding: 1rem; }
.availability-person-picker { max-width: 28rem; margin-top: 1.25rem; }
.availability-person-picker label { margin-top: 0; }
.day-navigation { display: grid; grid-template-columns: 2.75rem 1fr 2.75rem; align-items: center; text-align: center; gap: .5rem; }
.day-navigation strong { font-size: 1.05rem; }
.day-arrow { display: grid; place-items: center; min-height: 2.75rem; border: 1px solid #c7d0c9; border-radius: .4rem; font-size: 2rem; line-height: 1; text-decoration: none; }
.today-link { grid-column: 1 / -1; justify-self: center; }
.availability-message:empty { display: none; }
.availability-message { position: fixed; left: 50%; bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 100; box-sizing: border-box; width: max-content; max-width: calc(100vw - 2rem); margin: 0; border: 1px solid currentColor; border-radius: .5rem; box-shadow: 0 .5rem 1.5rem #10241938; transform: translateX(-50%); }
.availability-table-scroll { margin-top: 1.25rem; overflow-x: auto; border-radius: .65rem; }
.availability-table { width: calc(100% + .85rem); min-width: calc(37rem + .85rem); margin-left: -.85rem; border-spacing: .85rem .25rem; }
.availability-table th { white-space: nowrap; text-align: center; }
.availability-table thead th { padding: .3rem .25rem; color: #31483a; font-size: .9rem; letter-spacing: .035em; }
.availability-table thead th:first-child, .availability-table tbody th { position: sticky; left: 0; z-index: 1; background: white; }
.availability-table thead th:first-child, .availability-table tbody th { width: 1%; }
.availability-table tbody th { padding: .3rem .2rem; border-radius: .4rem; box-shadow: 0 0 0 1px #d6ddd8; font-size: .95rem; }
.availability-table .overnight-row th, .availability-table .overnight-row td { border-top: .2rem solid #7c9284; }
.availability-table .overnight-row th { font-weight: 700; }
.availability-cell { box-sizing: border-box; min-width: 2.7rem; height: 2.6rem; padding: .25rem; border-radius: .45rem; text-align: center; box-shadow: inset 0 0 0 1px #0002; transition: background-color .15s ease; }
.availability-cell.status-red { background: #f8cccc; }
.availability-cell.status-yellow { background: #ffe999; }
.availability-cell.status-green { background: #bde7c8; }
.availability-cell input[type="checkbox"] { width: 1.7rem; height: 1.7rem; margin: 0; padding: 0; accent-color: #176b3a; vertical-align: middle; }
.availability-cell:has(input:disabled) { filter: saturate(.6); }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (min-width: 36rem) {
    .availability-page { padding: 1.5rem; }
    .day-navigation strong { font-size: 1.2rem; }
}
.admin-dashboard { width: min(94%, 52rem); padding: 1rem; }
.window-navigation { justify-content: space-between; align-items: center; }
.window-caption { color: #566159; }
.admin-days { display: grid; gap: 1rem; margin-top: 1.25rem; }
.admin-dashboard > .day-navigation { margin-top: 1.25rem; }
.admin-day { border: 1px solid #ced7d0; border-radius: .65rem; background: #fbfcfb; overflow: hidden; }
.admin-day > summary { padding: 1rem; cursor: pointer; list-style-position: outside; }
.admin-day.minimum-status-red > summary { background: #f8cccc; }
.admin-day.minimum-status-yellow > summary { background: #ffe999; }
.admin-day.minimum-status-green > summary { background: #bde7c8; }
.admin-day-summary { display: inline-flex; align-items: center; gap: .8rem; max-width: calc(100% - 1rem); white-space: nowrap; }
.admin-day-title { font-size: 1.05rem; font-weight: 800; }
.count-button { min-height: 0; margin: 0; padding: 0; border: 0; background: transparent; color: #125b32; font-weight: 800; text-decoration: underline; text-underline-offset: .15rem; }
.count-button:hover, .count-button:focus-visible { background: #e8f7ed; }
.admin-slots-table-scroll { overflow-x: auto; border-top: 1px solid #dfe5e0; background: white; }
.admin-slots-table { width: 100%; min-width: 31rem; border-collapse: collapse; }
.admin-slots-table th, .admin-slots-table td { padding: .35rem 1rem; border-bottom: 1px solid #e5e9e6; text-align: left; }
.admin-slots-table thead th { color: #405047; font-size: .82rem; letter-spacing: .04em; text-transform: uppercase; }
.admin-slots-table th:first-child, .admin-slots-table td:first-child { width: 1%; white-space: nowrap; }
.admin-slots-table tbody tr:last-child > * { border-bottom: 0; }
.admin-slots-table .overnight-row > * { border-top: .2rem solid #7c9284; }
.histogram-track { height: 1rem; min-width: 10rem; border-radius: 999px; background: #e5e9e6; overflow: hidden; }
.histogram-bar { display: block; height: 100%; min-width: 0; border-radius: inherit; }
.status-red .histogram-bar { background: #b3261e; }
.status-yellow .histogram-bar { background: #c58b00; }
.status-green .histogram-bar { background: #17823b; }
.modal-open { overflow: hidden; }
.modal-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 1rem; background: #08150db8; }
.modal-backdrop[hidden] { display: none; }
.names-modal { box-sizing: border-box; width: min(100%, 31rem); max-height: min(80vh, 42rem); display: flex; flex-direction: column; border-radius: .65rem; background: white; box-shadow: 0 1rem 3rem #0005; }
.names-modal header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem; border-bottom: 1px solid #dfe5e0; }
.names-modal h2 { margin: 0; font-size: 1.15rem; }
.short-url-qr-modal { width: min(100%, 25rem); }
.short-url-qr-content { display: grid; justify-items: center; gap: 1rem; padding: 1rem; }
.short-url-qr-content #short-url-qr-image { width: min(100%, 20rem); min-height: 20rem; }
.short-url-qr-content #short-url-qr-image canvas,
.short-url-qr-content #short-url-qr-image img { width: 100%; height: auto; image-rendering: pixelated; }
.short-url-qr-content p { margin: 0; overflow-wrap: anywhere; text-align: center; }
.short-url-tools { min-width: 0; overflow: hidden; }
.short-url-tools code { overflow-wrap: anywhere; }
.short-url-table-scroll, .short-url-history-scroll { width: 100%; max-width: 100%; overflow-x: auto; }
.short-url-table { width: 100%; min-width: 58rem; table-layout: fixed; }
.short-url-table th, .short-url-table td { vertical-align: top; }
.short-url-table td:first-child { min-width: 17rem; overflow-wrap: anywhere; }
.short-url-table td:nth-child(2) { overflow-wrap: anywhere; }
.short-url-table td:nth-child(4), .short-url-table td:nth-child(5) { white-space: nowrap; }
.short-url-table th:nth-child(3), .short-url-table td:nth-child(3) { width: 3.5rem; text-align: center; }
.short-url-table th:nth-child(5), .short-url-table td:nth-child(5) { width: 5.5rem; text-align: center; }
.short-url-table th:nth-child(6), .short-url-table td:nth-child(6) { width: 11rem; }
.short-url-history { width: 100%; min-width: 0; table-layout: fixed; }
.short-url-history th:first-child, .short-url-history td:first-child { width: 55%; overflow-wrap: anywhere; word-break: break-all; }
.short-url-copy { min-width: 2.25rem; min-height: 2.25rem; margin-right: .35rem; padding: .25rem; font-size: 1.1rem; line-height: 1; }
.short-url-actions { display: flex; flex-wrap: nowrap; align-items: center; gap: .3rem; }
.short-url-actions form { display: contents; }
.short-url-icon-button { display: grid; place-items: center; box-sizing: border-box; width: 2.35rem; min-width: 2.35rem; height: 2.35rem; min-height: 2.35rem; margin: 0; padding: .2rem; border: 1px solid #176b3a; border-radius: .3rem; background: white; color: #176b3a; font-size: 1.15rem; line-height: 1; text-decoration: none; }
.short-url-icon-button:hover { background: #e8f4eb; }
.short-url-qr-mini { display: block; width: 1.45rem; height: 1.45rem; }
.short-url-qr-mini canvas { display: block; width: 100%; height: 100%; image-rendering: pixelated; }
.short-url-qr-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: .65rem; }
.modal-close { flex: 0 0 auto; margin: 0; padding: .25rem .65rem; font-size: 1.5rem; line-height: 1; }
.modal-content { overflow-y: auto; padding: 1rem; }
.modal-content > :first-child { margin-top: 0; }
.modal-content > :last-child { margin-bottom: 0; }
.names-list { margin: 0; padding-left: 1.4rem; }
.names-list li + li { margin-top: .65rem; }
@media (min-width: 36rem) {
    .admin-dashboard { padding: 1.5rem; }
    .admin-day > summary { padding: 1.25rem; }
}
@media (max-width: 35.99rem) {
    .admin-day-summary { gap: .5rem; font-size: .9rem; }
    .admin-day-title { font-size: .95rem; }
    .admin-slots-table { min-width: 0; }
    .admin-slots-table th, .admin-slots-table td { padding: .25rem .2rem; }
    .admin-slots-table thead th { font-size: .72rem; letter-spacing: .02em; }
    .admin-slots-table tbody th { font-size: .8rem; }
    .histogram-track { width: 100%; min-width: 0; }
}
.person-admin-page { width: min(94%, 46rem); padding: 1rem; }
.person-admin-page > section { margin-top: 2rem; }
.person-details dl { display: grid; grid-template-columns: minmax(7rem, auto) 1fr; gap: .45rem 1rem; }
.person-details dt { font-weight: 700; }
.person-details dd { margin: 0; overflow-wrap: anywhere; }
.state-active { color: #126132; }
.state-inactive { color: #8b1717; }
.state-pending { color: #7a5900; }
.notice { padding: .75rem; border-left: .3rem solid #a16d00; background: #fff8dc; }
.person-slot-list, .outside-slots { margin-top: 1rem; border: 1px solid #d6ddd8; border-radius: .65rem; overflow: hidden; }
.person-slot-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 3.25rem; margin: 0; padding: .35rem 1rem; border-top: 1px solid #e5e9e6; font-weight: 600; }
.person-slot-row:first-child, .outside-slots > h3 + p + .person-slot-row { border-top: 0; }
.person-slot-row input[type="checkbox"] { flex: 0 0 auto; width: 1.7rem; height: 1.7rem; margin: 0; accent-color: #176b3a; }
.person-slot-row.overnight-row { border-top: .2rem solid #7c9284; }
.outside-slots > h3, .outside-slots > p { margin: 0; padding: .75rem 1rem; }
.outside-slots > h3 { background: #fff4d6; }
.outside-slots > p { border-bottom: 1px solid #e5e9e6; }
.outside-slots small, .future-availability small { display: inline-block; color: #795b00; font-weight: 700; }
.future-availability { display: grid; gap: 1rem; }
.future-availability section { padding: .8rem 1rem; border: 1px solid #d6ddd8; border-radius: .65rem; background: #fbfcfb; }
.future-availability h3 { margin: 0; }
.future-availability ul { margin-bottom: 0; padding-left: 1.4rem; }
@media (min-width: 36rem) { .person-admin-page { padding: 1.5rem; } }
.admin-users-page { width: min(94%, 46rem); padding: 1rem; }
.usage-summary { margin: 1.5rem 0; padding: 1rem; border: 1px solid #cddbcf; border-radius: .65rem; background: #f4faf5; }
.usage-summary summary { cursor: pointer; color: #173c28; font-weight: 800; }
.usage-summary-content { margin-top: 1rem; }
.usage-summary-content > p { margin-top: 0; }
.usage-summary dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 1rem 0; border-block: 1px solid #d6ddd8; }
.usage-summary dl div { min-width: 0; padding: .7rem .55rem; }
.usage-summary dt { color: #566159; font-size: .85rem; font-weight: 700; }
.usage-summary dd { margin: .15rem 0 0; color: #173c28; font-size: 1.5rem; font-weight: 800; }
.usage-summary .usage-summary-note { margin: 0; color: #566159; font-size: .85rem; }
.admin-user-report { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 1.5rem 0; border-block: 1px solid #d6ddd8; }
.admin-user-report div { min-width: 0; padding: .8rem .65rem; }
.admin-user-report dt { color: #566159; font-size: .85rem; font-weight: 700; }
.admin-user-report dd { margin: .15rem 0 0; color: #173c28; font-size: 1.5rem; font-weight: 800; }
.user-search { margin-top: 1.5rem; }
.user-search-controls { display: grid; gap: .65rem; }
.user-search-controls button { margin: 0; }
.admin-user-list { display: grid; gap: 1rem; }
.admin-user-card { padding: 1rem; border: 1px solid #d6ddd8; border-radius: .65rem; background: #fbfcfb; }
.admin-user-card-inactive { border-color: #e8b8c2; background: #fff0f3; }
.admin-user-card h2 { display: flex; align-items: center; gap: .4rem; margin: 0 0 .75rem; font-size: 1.15rem; overflow-wrap: anywhere; }
.admin-user-card h2 a { min-width: 0; }
.community-verification-mark { display: inline-grid; flex: 0 0 auto; place-items: center; width: 1.2rem; height: 1.2rem; border-radius: 50%; color: #fff; background: #18733c; }
.community-verification-mark svg { width: 1rem; height: 1rem; fill: currentColor; }
.email-verification-mark { display: inline-grid; flex: 0 0 auto; place-items: center; width: 1.2rem; height: 1.2rem; border-radius: 50%; }
.email-verification-mark svg { width: 1rem; height: 1rem; fill: currentColor; }
.email-unverified { color: #7a5900; background: #fff1bd; }
.admin-user-states { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: 0; padding: 0; list-style: none; }
.last-availability { color: #566159; }
.admin-user-friends { margin: .75rem 0 0; overflow-wrap: anywhere; }
.person-user-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .65rem; align-items: start; }
.person-user-actions form, .person-user-actions button { width: 100%; margin: 0; }
.button-link { display: inline-grid; place-items: center; box-sizing: border-box; min-height: 2.75rem; padding: .65rem 1rem; border: 1px solid #176b3a; border-radius: .3rem; text-align: center; }
.promotion-unavailable { margin: 0; color: #566159; font-size: .9rem; }
@media (min-width: 36rem) {
    .usage-summary dl { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .admin-users-page { padding: 1.5rem; }
    .admin-user-report { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .user-search-controls { grid-template-columns: 1fr auto; align-items: end; }
    .promotion-unavailable { align-self: center; }
}
.event-form-page { width: min(92%, 42rem); }
.event-form-grid { display: grid; gap: 0 1rem; }
.support-message { margin-top: 2rem; padding: 1rem; border-left: .3rem solid #176b3a; background: #edf7f0; }
.events-page { width: min(96%, 74rem); padding: 1rem; }
.events-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; }
.events-heading h1, .events-heading p { margin: 0; }
.events-heading .button-link { flex: 0 0 auto; }
.event-day-navigation { display: grid; grid-template-columns: 2.75rem minmax(0, 1fr) 2.75rem; align-items: center; gap: .75rem; margin: 1.5rem 0; text-align: center; }
.event-day-navigation strong { font-size: 1.05rem; }
.day-arrow.disabled { opacity: .3; }
.events-layout { display: grid; gap: 1.5rem; }
.event-timeline-section { min-width: 0; }
.event-timeline { position: relative; height: var(--timeline-height); margin-left: 3.65rem; border: 1px solid #d3dcd5; border-radius: .5rem; background: #fff; }
.timeline-marker { position: absolute; z-index: 0; top: var(--marker-top); right: 0; left: 0; border-top: 1px solid #dce3de; pointer-events: none; }
.timeline-hour { position: absolute; right: calc(100% + .6rem); top: var(--marker-top); width: 3rem; color: #526159; font-size: .78rem; text-align: right; transform: translateY(-.65em); }
.timeline-events { position: absolute; z-index: 1; inset: 0 .3rem; }
.timeline-event { position: absolute; top: var(--event-top); left: calc(var(--event-left) + .15rem); width: calc(var(--event-width) - .3rem); height: max(var(--event-height), 1.5rem); box-sizing: border-box; padding: .3rem .4rem; border: 1px solid #0002; border-left: .35rem solid var(--event-color); border-left-color: color-mix(in srgb, var(--event-color), #000 20%); border-radius: .35rem; background: var(--event-color); background: color-mix(in srgb, var(--event-color), white 28%); color: #17231b; overflow: hidden; text-decoration: none; box-shadow: 0 .12rem .35rem #10241918; }
.timeline-event:focus-visible { outline: .2rem solid #176b3a; outline-offset: .15rem; }
.timeline-event strong, .timeline-event small { display: block; font-size: .72rem; line-height: 1.2; }
.timeline-event strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.event-list h2 { margin-top: 0; }
.event-list { min-width: 0; }
.event-card { margin-top: 1rem; padding: 1rem; border: 1px solid #d5ddd7; border-radius: .6rem; background: #fbfcfb; scroll-margin-top: 1rem; box-shadow: 0 .15rem .5rem #1024190c; }
.event-card:target { outline: .2rem solid transparent; animation: event-card-highlight 2s ease-out; }
@keyframes event-card-highlight {
    0%, 35% { outline-color: var(--event-color); box-shadow: 0 0 0 .4rem color-mix(in srgb, var(--event-color), transparent 70%); }
    100% { outline-color: transparent; box-shadow: 0 .15rem .5rem #1024190c; }
}
@media (prefers-reduced-motion: reduce) {
    .event-card:target { outline-color: var(--event-color); animation: none; }
}
.event-card h3 { margin: .35rem 0; overflow-wrap: anywhere; }
.event-time { margin: 0; font-weight: 800; }
.event-time span { display: inline-block; width: .8rem; height: .8rem; margin-right: .5rem; border-radius: 999px; background: var(--event-color); vertical-align: -.05rem; }
.event-description { overflow-wrap: anywhere; white-space: normal; }
.event-private { margin-top: 1rem; padding: .75rem; border: 1px solid #dec36c; border-radius: .4rem; background: #fff8dc; }
.event-private summary { cursor: pointer; font-weight: 700; }
.event-private summary:hover { color: #705500; }
.event-private dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .3rem .75rem; margin: .5rem 0 0; }
.event-private dt { font-weight: 700; }
.event-private dd { margin: 0; overflow-wrap: anywhere; }
.events-empty { padding: 1rem; border-radius: .5rem; background: #f0f4f1; color: #526159; }
@media (min-width: 34rem) {
    .event-form-grid { grid-template-columns: 1.25fr 1fr 1fr; }
}
@media (min-width: 52rem) {
    .events-page { padding: 1.5rem; }
    .events-layout { grid-template-columns: minmax(18rem, .9fr) minmax(22rem, 1.1fr); align-items: start; }
    .event-list { max-height: 52rem; overflow-y: auto; padding-right: .3rem; }
}
@media (max-width: 33.99rem) {
    .events-heading { align-items: stretch; flex-direction: column; }
    .events-heading .button-link { align-self: start; }
    .event-day-navigation strong { font-size: .9rem; }
}
.settings-page { position: relative; width: min(96%, 72rem); padding: 1rem; }
.settings-page > form { max-width: 38rem; }
.settings-page fieldset { box-sizing: border-box; min-width: 0; max-width: 100%; margin: 1.5rem 0 0; padding: 1rem; border: 1px solid #d6ddd8; border-radius: .5rem; }
.settings-page legend { padding: 0 .35rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.settings-checkbox { display: flex; align-items: center; gap: .65rem; }
.settings-checkbox input[type="checkbox"] { flex: 0 0 auto; width: 1.35rem; height: 1.35rem; margin: 0; accent-color: #176b3a; }
.settings-facts { display: grid; grid-template-columns: auto 1fr; gap: .35rem 1rem; margin: 1.25rem 0; }
.settings-facts dt { font-weight: 700; }
.settings-facts dd { margin: 0; }
.settings-preview { padding: .75rem; background: #f0f5f1; border-radius: .35rem; }
.settings-warning { margin-top: 1.5rem; }
.settings-home-photo { display: block; width: min(100%, 24rem); max-height: 16rem; margin-top: 1rem; border-radius: .5rem; object-fit: cover; }
.settings-pwa-icon { display: block; width: 8rem; height: 8rem; margin: 1rem 0; border: 1px solid #d6ddd8; border-radius: 1.25rem; object-fit: contain; }
.settings-current-default { color: #526159; }
.layout-debug { max-width: 100%; padding: .75rem; border: 2px solid #a45f00; background: #fff8e8; }
.layout-debug button { margin-top: 0; }
.layout-debug pre { max-width: 100%; overflow-wrap: anywhere; white-space: pre-wrap; font-size: .75rem; }
.slot-settings { margin: 2rem 0; }
.slot-settings-table-scroll { contain: inline-size layout paint; margin-top: 1rem; overflow-x: auto; border: 1px solid #d5d8d2; border-radius: .6rem; background: #fff; }
.slot-settings-table { width: 100%; min-width: 42rem; border-spacing: 0; }
.slot-settings-table th, .slot-settings-table td { padding: .2rem .35rem; border-bottom: 1px solid #e1e6e2; text-align: left; vertical-align: middle; }
.slot-settings-table thead th { padding-top: .35rem; padding-bottom: .35rem; background: #f0f5f1; color: #405047; font-size: .78rem; letter-spacing: .03em; text-transform: uppercase; white-space: nowrap; }
.slot-settings-table thead th:first-child, .slot-settings-table tbody tr > :first-child { position: sticky; left: 0; z-index: 1; background: #fff; box-shadow: .3rem 0 .45rem -.4rem #10241980; }
.slot-settings-table thead th:first-child { z-index: 2; background: #f0f5f1; }
.slot-settings-table thead .slot-settings-compact-heading { text-align: center; line-height: 1.15; white-space: normal; }
.slot-settings-table tbody tr:last-child > * { border-bottom: 0; }
.slot-settings-table input { min-width: 7rem; margin: 0; padding: .28rem .4rem; line-height: 1.15; }
.slot-settings-table .slot-settings-title-cell input { width: 7.7rem; min-width: 7.7rem; }
.slot-settings-title-cell input.is-dirty { border-color: #b98500; background: #fff3b0; box-shadow: 0 0 0 1px #b98500; }
.slot-settings-table input.is-invalid { border-color: #a32626; background: #fff0f0; }
.slot-settings-table input[type="time"] { width: 5.0rem; min-width: 5.0rem; padding: .2rem; }
.slot-settings-table input[type="number"] { width: 3.2rem; min-width: 3.2rem; padding: .2rem; text-align: center; }
.slot-settings-table .slot-settings-checkbox-cell { text-align: center; }
.slot-settings-table input[type="checkbox"] { width: 1.15rem; min-width: 0; height: 1.15rem; margin: 0; padding: 0; accent-color: #176b3a; }
.slot-settings-actions form { display: flex; gap: .4rem; }
.slot-settings-actions button { min-height: 2rem; margin: 0; padding: .35rem .6rem; white-space: nowrap; }
.slot-settings-actions .slot-settings-icon-button { display: inline-grid; place-items: center; width: 2rem; padding: 0; font-size: 1rem; line-height: 1; }
.slot-settings-actions .slot-settings-icon-button[hidden] { display: none !important; }
.slot-settings-table tr.is-saving { opacity: .7; }
.settings-ajax-message { margin: .5rem 0; padding: .55rem .75rem; border-radius: .35rem; }
.settings-ajax-message:empty { display: none; }
.slot-create-row > * { border-top: .2rem solid #7c9284; background: #f8faf8; }
.slot-settings-table .slot-create-row > :first-child { background: #f8faf8; }
@media (min-width: 36rem) { .settings-page { padding: 1.5rem; } }
.danger-button { background: #8b1e1e; color: #fff; }

/* Cerchie e ruoli */
.roles-admin-page { width: min(94%, 72rem); padding: 1rem; }
.roles-admin-page > section { margin-top: 2rem; }
.roles-admin-grid { display: grid; gap: 1rem; align-items: start; }
.roles-admin-card { min-width: 0; padding: 1rem; border: 1px solid #d6ddd8; border-radius: .65rem; background: #fbfcfb; }
.roles-admin-card h3 { margin-top: 0; overflow-wrap: anywhere; }
.roles-admin-card fieldset { min-width: 0; margin: 1rem 0; padding: .75rem; border: 1px solid #d6ddd8; border-radius: .4rem; }
.roles-create-card { border-style: dashed; background: #f4faf5; }
.roles-check-list { display: grid; gap: .45rem; max-height: 14rem; overflow-y: auto; }
.roles-check-list label { display: flex; align-items: start; gap: .45rem; margin: 0; font-weight: 500; }
.roles-check-list input[type="checkbox"] { flex: 0 0 auto; width: 1.15rem; height: 1.15rem; margin: .1rem 0 0; accent-color: #176b3a; }
.roles-check-list [hidden] { display: none; }
.circle-user-row { display: flex; align-items: center; gap: .45rem; }
.circle-user-search { margin: 0 0 .65rem; }
.circle-user-search input { margin-bottom: 0; }
.roles-check-list a { min-width: 0; overflow-wrap: anywhere; }
.roles-card-actions { display: flex; flex-wrap: wrap; gap: .65rem; }
.roles-card-actions button { margin: 0; }
.role-name-grid { display: grid; grid-template-columns: minmax(0, 1fr) 6.5rem; gap: .75rem; }
.role-abbreviation { display: inline-block; padding: .15rem .4rem; border-radius: .3rem; background: #e2f1e7; color: #135d32; font-weight: 800; }
.archived-association { color: #68736b; }
.archived-items { margin-top: 1rem; padding: .75rem 1rem; border: 1px solid #d6ddd8; border-radius: .5rem; background: #f5f6f5; }
.archived-items summary { cursor: pointer; font-weight: 700; }
.profile-circle-list { display: grid; gap: .55rem; margin: 1rem 0; }
.profile-circle-list label { display: flex; align-items: center; gap: .55rem; margin: 0; }
.profile-circle-list input { flex: 0 0 auto; width: 1.2rem; height: 1.2rem; margin: 0; accent-color: #176b3a; }
@media (min-width: 48rem) {
    .roles-admin-page { padding: 1.5rem; }
    .roles-admin-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Selezione ruoli utente e configurazione fascia/ruolo */
.availability-role-modal, .slot-roles-modal { width: min(100%, 35rem); }
.availability-role-option { display: flex; align-items: start; gap: .65rem; margin: 0; padding: .7rem .25rem; border-bottom: 1px solid #e3e8e4; }
.availability-role-option input { flex: 0 0 auto; width: 1.35rem; height: 1.35rem; margin: .1rem 0 0; accent-color: #176b3a; }
.availability-role-option span, .availability-role-option small { display: block; }
.availability-role-option small { margin-top: .2rem; color: #566159; }
.availability-general-option { padding-top: 0; }
.availability-role-actions { display: flex; justify-content: end; gap: .65rem; margin-top: 1rem; }
.availability-role-actions button { margin: 0; }
#availability-role-error:empty { display: none; }
.secondary-button { border: 1px solid #64736a; background: white; color: #32433a; }
.slot-roles-badge { min-height: 2rem; margin: 0; padding: .3rem .55rem; border: 1px solid #176b3a; border-radius: 999px; background: #edf7f0; color: #125b32; font-size: .82rem; white-space: nowrap; }
.slot-roles-empty { color: #68736b; font-size: .82rem; white-space: nowrap; }
.slot-roles-copy { display: grid; gap: .25rem; margin: 0 0 1rem; font-size: .9rem; font-weight: 700; }
.slot-roles-copy select { margin: 0; font-weight: 400; }
.slot-role-option { display: grid; grid-template-columns: minmax(0, 1fr) 8rem; align-items: center; gap: .75rem; padding: .6rem 0; border-bottom: 1px solid #e3e8e4; }
.slot-role-option > label:first-child { display: flex; align-items: center; gap: .55rem; margin: 0; }
.slot-role-option input[type="checkbox"] { flex: 0 0 auto; width: 1.2rem; height: 1.2rem; margin: 0; accent-color: #176b3a; }
.slot-role-option > label:last-child { margin: 0; font-size: .85rem; }
.slot-role-option input[type="number"] { width: 100%; margin: .2rem 0 0; }
.slot-settings-table { min-width: 49rem; }

/* Conteggi compatti nella copertura amministrativa */
.coverage-layout { display: flex; align-items: end; gap: .3rem; }
.coverage-table { width: auto; border-collapse: collapse; }
.coverage-table th, .coverage-table td { box-sizing: border-box; width: 2.2rem; min-width: 2.2rem; max-width: 2.2rem; padding: .04rem .06rem; border: 0; text-align: center; }
.coverage-table th:first-child, .coverage-table td:first-child { width: 2.1rem; min-width: 2.1rem; max-width: 2.1rem; }
.coverage-table th { overflow: hidden; color: #405047; font-size: .68rem; letter-spacing: 0; line-height: 1.15; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.coverage-present-heading { padding: 0; }
.role-coverage-indicator { box-sizing: border-box; display: inline-flex; min-width: 1.8rem; min-height: 1.55rem; align-items: center; justify-content: center; margin: 0; padding: .1rem .2rem; border: 1px solid currentColor; border-radius: 999px; font-size: .78rem; font-weight: 800; line-height: 1; white-space: nowrap; }
.coverage-present-indicator { flex: 0 0 auto; }
.empty-count { font-weight: 800; }
.role-status-green { background: #bde7c8; color: #125f30; }
.role-status-yellow { background: #ffe999; color: #725400; }
.role-status-red { background: #f8cccc; color: #8b1e1e; }
.pantry-meal { border: 1px solid #d5e2d8; border-radius: .6rem; padding: .5rem .6rem; margin: .6rem 0; }
.pantry-section > summary { cursor: pointer; margin: 1rem 0; font-size: 1.5rem; font-weight: 700; }
.pantry-section > summary h2 { display: inline; margin: 0; font-size: inherit; }
.pantry-create > summary { box-sizing: border-box; display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; margin: .5rem 0; border: 1px solid #176b3a; border-radius: .3rem; background: #edf7f0; color: #125b32; font-size: 1.75rem; font-weight: 700; cursor: pointer; list-style: none; }
.pantry-create > summary::-webkit-details-marker { display: none; }
.pantry-create > summary::before { content: '+'; line-height: 1; }
.pantry-create[open] > summary { display: none; }
.pantry-upcoming-more > summary { cursor: pointer; font-weight: 700; margin: 1rem 0; }
.pantry-meal > summary { cursor: pointer; font-size: 1.17rem; font-weight: 700; }
.pantry-coverage p { margin: .25rem 0; }
.pantry-meal form { margin: .4rem 0; }
.pantry-meal input[type="checkbox"], .pantry-meal input[type="radio"] { width: auto; margin-right: .35rem; }
.pantry-contribute-modal { width: min(100%, 36rem); }
.pantry-contribute-modal input[type="checkbox"], .pantry-contribute-modal input[type="radio"] { width: auto; margin-right: .35rem; }
.pantry-page input[type="time"], .pantry-page input[type="date"] { width: 85%; padding: .6rem; font-size: .85em; }
.pantry-snapshot-form, .pantry-category-actions { display: flex; align-items: end; gap: .25rem; }
.pantry-snapshot-form label { flex: 0 1 9rem; min-width: 0; margin: 0; }
.pantry-snapshot-form button, .pantry-category-actions button { flex: 0 0 auto; margin: 0; }
.pantry-estimate-form label { margin: 0; }
.pantry-estimate-controls { display: flex; align-items: end; gap: .25rem; margin-top: .25rem; }
.pantry-estimate-controls input { width: 6rem; margin: 0; }
.pantry-estimate-controls button { flex: 0 0 auto; margin: 0; }
.pantry-category-actions { margin-top: .5rem; }
.pantry-category-actions label { flex: 0 1 4.25rem; min-width: 3.75rem; margin: 0; }
.pantry-category-actions button { padding-inline: .5rem; font-size: .9rem; }
.pantry-category-actions .icon-button { padding: 0; font-size: 1.75rem; }
.pantry-category-new input[name="sort_order"] { max-width: 5rem; }
.pantry-template-actions, .pantry-extra-times { display: flex; align-items: end; gap: .25rem; overflow-x: auto; padding-bottom: .2rem; }
.pantry-template-actions { margin-top: .5rem; }
.pantry-template-actions label, .pantry-extra-times label { flex: 0 0 6.5rem; min-width: 0; margin: 0; }
.pantry-template-actions input, .pantry-extra-times input { min-width: 0; }
.pantry-template-actions button { flex: 0 0 auto; margin: 0; padding-inline: .5rem; font-size: .9rem; }
.pantry-template-actions .icon-button { padding: 0; font-size: 1.75rem; }
.pantry-extra-times { margin-top: .5rem; }
.pantry-extra-times label:first-child { flex-basis: 9rem; }
.pantry-contribution { border-top: 1px solid #e0e8e1; padding: .5rem 0; }
