:root {
    color-scheme: light;
    --ink: #17324d;
    --muted: #5f6b76;
    --paper: #ffffff;
    --canvas: #f3f6f8;
    --line: #d8e0e7;
    --brand: #0b659f;
    --brand-dark: #074e7d;
    --danger: #a83c3c;
    --success: #2f7651;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--canvas); line-height: var(--site-line-height, 1.4); }
a { color: var(--brand-dark); }
button, input, select { font: inherit; }

.site-header { color: var(--site-header-text, var(--ink)); background: var(--site-header-background, var(--paper)); border-bottom: 1px solid var(--line); }
.header-inner { width: min(1120px, calc(100% - 2rem)); min-height: 4.2rem; margin: auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.brand { color: inherit; text-decoration: none; font-size: 1.2rem; font-weight: 750; }
.account-nav { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: .75rem; font-size: .92rem; }
.site-header .account-name, .site-header .account-nav a, .site-header .account-nav .link-button { color: inherit; }
.storage-capacity-status { padding: .22rem .48rem; color: inherit; background: color-mix(in srgb, currentColor 8%, transparent); border: 1px solid color-mix(in srgb, currentColor 20%, transparent); border-radius: 999px; font-size: .76rem; font-variant-numeric: tabular-nums; line-height: 1.25; white-space: nowrap; }
.inline-form { display: inline; margin: 0; }
.link-button { padding: 0; color: var(--brand-dark); background: none; border: 0; text-decoration: underline; cursor: pointer; }
.page-shell { width: min(1600px, calc(100% - 2rem)); margin: 1.5rem auto 2.5rem; }
.page-shell.admin-page-shell, .page-shell.forum-topic-editor-shell { width: var(--admin-layout-width, 75%); max-width: none; }
.home-banner + .site-menu-bar + .page-shell, .home-banner + .page-shell { margin-top: .8rem; }
.site-footer { border-top: 1px solid var(--line); padding: 1.5rem 1rem; color: var(--muted); text-align: center; font-size: .88rem; }

.hero-card, .content-card, .login-card, .dashboard-card { background: var(--paper); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 6px 24px rgba(18, 47, 73, .06); }
.hero-card { max-width: 760px; padding: clamp(1.5rem, 5vw, 3rem); }
.content-card { padding: clamp(1rem, 3vw, 2rem); }
.narrow-card { max-width: 640px; }
.eyebrow { margin: 0 0 .4rem; color: var(--brand); font-size: .83rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.muted, .field-help { color: var(--muted); }
.field-help { margin: .35rem 0 0; font-size: .88rem; }

.button { display: inline-block; margin-top: .5rem; padding: .65rem 1rem; color: #fff; background: var(--brand); border: 1px solid var(--brand); border-radius: 7px; text-decoration: none; cursor: pointer; font-weight: 650; }
.button:hover, .button:focus { background: var(--brand-dark); border-color: var(--brand-dark); }
.button-secondary { color: var(--ink); background: #fff; border-color: var(--line); }
.button-secondary:hover, .button-secondary:focus { color: #fff; }
.button-danger { background: var(--danger); border-color: var(--danger); }
.button-full { width: 100%; }
.form-actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: 1.25rem; }
.page-toolbar { justify-content: space-between; }

.form-field { margin: 1rem 0; }
.form-field label { display: block; margin-bottom: .35rem; font-weight: 700; }
.form-field input, .form-field select { width: 100%; min-height: 2.65rem; padding: .55rem .65rem; border: 1px solid #aebdc8; border-radius: 6px; color: var(--ink); background: #fff; }
.form-field input:focus, .form-field select:focus { border-color: var(--brand); outline: 3px solid rgba(11, 101, 159, .16); }
.fixed-form-value { display: flex; align-items: center; width: 100%; min-height: 2.65rem; padding: .55rem .65rem; color: var(--ink); background: #f4f8fa; border: 1px solid #aebdc8; border-radius: 6px; font-weight: 700; }
.captcha-image { display: block; margin: .2rem 0 .5rem; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.flash { margin: 0 0 1rem; padding: .8rem 1rem; border-radius: 7px; border: 1px solid; }
.flash-success { color: #174a31; background: #eaf6ee; border-color: #9dc9ac; }
.flash-error { color: #7d2222; background: #fbecec; border-color: #e5aaaa; }
.flash-info { color: #204b70; background: #eaf3fa; border-color: #a8c6df; }
.flash-warning { color: #70510a; background: #fff8df; border-color: #e8ca72; }
.storage-capacity-warning { font-weight: 650; }

.login-page {
    display: flex;
    min-height: 100vh;
    padding: 2rem 1.25rem;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(circle at 15% 12%, rgba(39, 131, 183, .18), transparent 35rem),
        radial-gradient(circle at 85% 90%, rgba(56, 152, 115, .13), transparent 30rem),
        #edf3f6;
}
.login-shell { width: min(100%, 460px); margin: auto; }
.login-brand { margin: 0 auto 1.2rem; text-align: center; }
.login-brand-link { display: inline-flex; align-items: center; gap: .75rem; color: var(--ink); text-align: left; text-decoration: none; }
.login-brand-link strong, .login-brand-link small { display: block; }
.login-brand-link strong { font-size: 1.05rem; letter-spacing: .01em; }
.login-brand-link small { margin-top: .05rem; color: var(--muted); font-size: .8rem; }
.login-mark {
    display: grid;
    width: 2.7rem;
    height: 2.7rem;
    place-items: center;
    color: #fff;
    background: linear-gradient(135deg, #0b659f, #0a4b76);
    border-radius: .8rem;
    box-shadow: 0 8px 18px rgba(7, 78, 125, .2);
    font-size: .9rem;
    font-weight: 800;
    letter-spacing: .05em;
}
.login-card { width: 100%; padding: clamp(1.5rem, 6vw, 2.5rem); border: 0; border-radius: 18px; box-shadow: 0 20px 55px rgba(26, 59, 82, .15); }
.login-card-heading { margin-bottom: 1.7rem; }
.login-card-heading .eyebrow { margin-bottom: .55rem; font-size: .72rem; }
.login-card-heading h1 { margin: 0; font-size: clamp(1.65rem, 5vw, 2rem); letter-spacing: -.025em; }
.login-card-heading p:not(.eyebrow) { margin: .5rem 0 0; color: var(--muted); font-size: .94rem; }
.login-card .form-field { margin: 1.15rem 0; }
.login-card .form-field label { margin-bottom: .45rem; color: #294258; font-size: .92rem; }
.login-card .form-field input { min-height: 3rem; padding: .68rem .8rem; border-color: #c5d2db; border-radius: 8px; }
.login-card .form-field input::placeholder { color: #8b9aa5; }
.captcha-row { display: flex; align-items: center; gap: .7rem; margin: .2rem 0 .6rem; }
.login-card .captcha-image { flex: 0 0 auto; margin: 0; border-radius: 7px; }
.captcha-refresh { display: inline-flex; align-items: center; gap: .3rem; min-height: 2.4rem; padding: .4rem .55rem; border: 1px solid var(--line); border-radius: 7px; color: var(--brand-dark); font-size: .86rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.captcha-refresh:hover, .captcha-refresh:focus { background: #f1f7fa; border-color: #aac4d4; }
.login-card .field-help { margin-top: .4rem; font-size: .8rem; }
.login-submit { min-height: 3rem; margin-top: .55rem; border-radius: 8px; box-shadow: 0 8px 14px rgba(11, 101, 159, .16); }
.login-card-footer { margin-top: 1.5rem; padding-top: 1.2rem; border-top: 1px solid #e6edf1; text-align: center; font-size: .88rem; }
.login-card-footer a { color: var(--muted); text-decoration: none; }
.login-card-footer a:hover, .login-card-footer a:focus { color: var(--brand-dark); text-decoration: underline; }
.login-security-note { margin: 1.15rem 0 0; color: #71818c; text-align: center; font-size: .76rem; }

.dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1rem; }
.dashboard-card { padding: 1.25rem; }
.dashboard-card h2 { margin-top: 0; font-size: 1.1rem; }
.dashboard-card h3 { margin: 0 0 .4rem; font-size: 1.05rem; }
.dashboard-card p { margin: 0; color: var(--muted); font-size: .92rem; }
.admin-dashboard { display: grid; gap: 1.5rem; }
.admin-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    padding: clamp(1.35rem, 4vw, 2.25rem);
    color: #fff;
    background: linear-gradient(125deg, #083f63, #0b659f 65%, #147a87);
    border-radius: 16px;
    box-shadow: 0 12px 30px rgba(18, 75, 109, .19);
}
.admin-hero .eyebrow { color: #b9e4f3; }
.admin-hero h1 { margin: 0; color: #fff; font-size: clamp(1.5rem, 4vw, 2rem); }
.admin-hero p:not(.eyebrow) { margin: .55rem 0 0; color: #e3f2f7; }
.admin-identity { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem .8rem; margin-top: 1rem; color: #eaf7fb; font-size: .9rem; }
.role-badge { display: inline-block; padding: .18rem .58rem; color: #083f63; background: #d9f3fb; border-radius: 999px; font-size: .78rem; font-weight: 800; }
.admin-hero-actions { flex: 0 0 auto; }
.admin-hero .button-secondary { margin: 0; border-color: rgba(255, 255, 255, .65); color: #fff; background: rgba(255, 255, 255, .12); }
.admin-hero .button-secondary:hover, .admin-hero .button-secondary:focus { color: #083f63; background: #fff; border-color: #fff; }
.admin-stat-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.admin-stat-card { padding: 1.15rem 1.25rem; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 5px 16px rgba(18, 47, 73, .045); }
.admin-stat-label, .admin-stat-card small { display: block; color: var(--muted); }
.admin-stat-label { font-size: .85rem; font-weight: 700; }
.admin-stat-card strong { display: block; margin: .2rem 0; color: var(--brand-dark); font-size: 1.8rem; line-height: 1.2; }
.admin-stat-card small { font-size: .78rem; }
.admin-section { padding: clamp(1.15rem, 3vw, 1.75rem); background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 5px 16px rgba(18, 47, 73, .04); }
.admin-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.1rem; }
.admin-section-heading .eyebrow { margin-bottom: .25rem; font-size: .72rem; }
.admin-section-heading h2 { margin: 0; font-size: 1.2rem; }
.admin-section-heading > p { max-width: 24rem; margin: 0; color: var(--muted); font-size: .86rem; text-align: right; }
.dashboard-action-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: .85rem; }
.dashboard-action-card { display: flex; align-items: center; gap: .85rem; min-height: 7rem; padding: 1rem; color: var(--ink); background: #f8fbfc; border: 1px solid #dce7ec; border-radius: 10px; text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.dashboard-action-card:hover, .dashboard-action-card:focus { border-color: #8cb8cf; box-shadow: 0 7px 18px rgba(11, 101, 159, .1); transform: translateY(-1px); }
.dashboard-action-icon { display: grid; flex: 0 0 auto; width: 2.65rem; height: 2.65rem; place-items: center; color: #075381; background: #dff1f8; border-radius: .7rem; font-size: .9rem; font-weight: 800; }
.dashboard-action-content { min-width: 0; flex: 1; }
.dashboard-action-content strong, .dashboard-action-content small { display: block; }
.dashboard-action-content strong { margin-bottom: .2rem; font-size: 1rem; }
.dashboard-action-content small { color: var(--muted); font-size: .84rem; line-height: 1.45; }
.dashboard-arrow { color: var(--brand); font-size: 1.3rem; }
.dashboard-notice { padding: 1rem 1.1rem; color: #30566c; background: #eef7fa; border: 1px solid #cce3ec; border-radius: 10px; }
.dashboard-notice h3 { margin: 0 0 .35rem; font-size: 1rem; }
.dashboard-notice p { margin: 0; font-size: .9rem; }
.admin-upcoming { background: #fbfcfd; }
.table-wrap { overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 9px; }
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th, td { padding: .75rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { background: #f7fafc; font-size: .9rem; }
.status { display: inline-block; padding: .12rem .45rem; border-radius: 999px; background: #eaf3fa; color: #204b70; font-size: .8rem; font-weight: 650; }
.status-disabled { background: #f8ecec; color: #7d2222; }
.checkbox-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: .55rem; padding: .75rem; border: 1px solid var(--line); border-radius: 7px; }
.checkbox-list label { display: flex; align-items: flex-start; gap: .45rem; font-weight: 500; }
.checkbox-list input { width: auto; min-height: auto; margin-top: .25rem; }
.permission-section-title { margin: 1rem 0 .45rem; font-size: 1rem; color: var(--heading); }
.menu-sort-order { display: inline-block; margin-left: .35rem; color: var(--muted); font-size: .72em; font-weight: 500; white-space: nowrap; }
.danger-zone { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.settings-card, .files-card { max-width: none; }
.form-field-small { max-width: 22rem; }
.settings-fieldset { margin: 1.5rem 0; padding: 1rem; border: 1px solid var(--line); border-radius: 9px; }
.settings-fieldset legend { padding: 0 .35rem; color: var(--ink); font-weight: 750; }
.settings-holiday-import { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.settings-holiday-import h2 { margin: 0; font-size: 1.15rem; }
.settings-holiday-import p { margin: .35rem 0 .65rem; }
.security-note { margin: 1.25rem 0; padding: .85rem 1rem; color: #624c14; background: #fff8df; border: 1px solid #ebd58a; border-radius: 8px; font-size: .9rem; }
.upload-form { margin: 1.4rem 0 2rem; }
.upload-dropzone { padding: clamp(1rem, 3vw, 1.6rem); background: #f7fbfd; border: 2px dashed #9fc3d5; border-radius: 11px; }
.upload-dropzone label { display: block; margin-bottom: .55rem; color: var(--ink); font-weight: 750; }
.upload-dropzone input[type="file"] { max-width: 100%; padding: .55rem; background: #fff; border: 1px solid var(--line); border-radius: 7px; }
.upload-dropzone p { margin: .55rem 0 0; color: var(--muted); font-size: .86rem; }
.file-list-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-top: 1rem; }
.file-list-heading h2 { margin: 0; font-size: 1.15rem; }
.file-list-heading p { margin: 0; font-size: .84rem; }
.file-name { min-width: 15rem; overflow-wrap: anywhere; }
.site-menu-bar { width: var(--public-layout-width, 90%); margin: 0 auto; background: #0a527f; box-shadow: 0 3px 10px rgba(18, 47, 73, .09); }
.site-menu-inner { width: min(1120px, calc(100% - 2rem)); margin: auto; display: flex; align-items: stretch; gap: .35rem 1rem; }
.site-mobile-navigation { display: contents; }
.site-mobile-navigation > summary { display: none; }
.site-menu-groups { display: flex; flex-wrap: wrap; gap: .35rem 1rem; }
.site-menu-group { position: relative; min-height: 2.8rem; }
.site-menu-group-heading { display: flex; align-items: stretch; min-height: 2.8rem; }
.site-menu-group-link { display: flex; align-items: center; min-height: 2.8rem; padding: 0 .75rem; color: #fff; font-size: 1.08rem; font-weight: 750; text-decoration: none; white-space: nowrap; }
.site-menu-group-link:hover, .site-menu-group-link:focus { background: rgba(255, 255, 255, .14); }
.site-menu-group-heading .site-menu-group-link { padding-right: 2.45rem; }
.site-menu-group-toggle { position: absolute; z-index: 1; top: 0; right: 0; display: flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.8rem; padding: 0; color: #bfe3f2; cursor: pointer; list-style: none; }
.site-menu-group-toggle::-webkit-details-marker { display: none; }
.site-menu-group-toggle::after { content: "⌄"; font-size: .8rem; transition: transform .15s ease; }
.site-menu-group-name { display: flex; align-items: center; min-height: 2.8rem; padding: 0 .75rem; color: #fff; cursor: pointer; font-size: 1.08rem; font-weight: 750; list-style: none; white-space: nowrap; }
.site-menu-group-name::-webkit-details-marker { display: none; }
.site-menu-group-name::after { margin-left: .5rem; content: "⌄"; color: #bfe3f2; font-size: .8rem; transition: transform .15s ease; }
.site-menu-group[open] .site-menu-group-name, .site-menu-group[open] .site-menu-group-heading { background: rgba(255, 255, 255, .14); }
.site-menu-group[open] .site-menu-group-name::after { transform: rotate(180deg); }
.site-menu-group[open] .site-menu-group-toggle::after { transform: rotate(180deg); }
.site-menu-group > .site-menu-list { display: none; position: absolute; z-index: 20; top: 100%; left: 0; min-width: 12rem; padding: .35rem; background: #fff; border: 1px solid var(--line); border-radius: 0 0 8px 8px; box-shadow: 0 9px 22px rgba(18, 47, 73, .16); }
.site-menu-group[open] > .site-menu-list { display: block; }
.site-menu-group > .site-menu-list > .site-menu-item > a, .site-menu-group > .site-menu-list > .site-menu-item > span { color: var(--ink); }
.site-menu-group > .site-menu-list > .site-menu-item > a:hover, .site-menu-group > .site-menu-list > .site-menu-item > a:focus { color: #fff; background: var(--brand); border-radius: 5px; }
.site-menu-list { display: flex; flex-wrap: wrap; gap: .1rem; margin: 0; padding: 0; list-style: none; }
.site-menu-item { position: relative; }
.site-menu-item > a, .site-menu-item > span { display: block; padding: .38rem .6rem; color: #fff; font-size: .9rem; text-decoration: none; white-space: nowrap; }
.site-menu-item > a:hover, .site-menu-item > a:focus { background: rgba(255, 255, 255, .14); border-radius: 5px; }
.site-menu-item > .site-menu-list { display: none; position: absolute; z-index: 10; top: 100%; left: 0; min-width: 11rem; padding: .3rem; background: #fff; border: 1px solid var(--line); border-radius: 0 0 8px 8px; box-shadow: 0 9px 22px rgba(18, 47, 73, .16); }
.site-menu-item:hover > .site-menu-list, .site-menu-item:focus-within > .site-menu-list { display: block; }
.site-menu-item > .site-menu-list a, .site-menu-item > .site-menu-list span { color: var(--ink); }
.site-menu-item > .site-menu-list a:hover, .site-menu-item > .site-menu-list a:focus { color: #fff; background: var(--brand); }
.site-menu-item > .site-menu-list .site-menu-list { top: 0; left: 100%; border-radius: 8px; }
.page-shell.public-page-shell { width: var(--public-layout-width, 90%); max-width: none; }
.public-page-content { max-width: none; }
.public-page-content h1 { margin-top: 0; }
.public-page-heading { position: relative; min-height: 2.75rem; margin-bottom: 1.25rem; }
.public-page-heading h1 { margin: 0; font-size: var(--article-title-font-size, 24px); text-align: center; }
.page-edit-link { position: absolute; top: 0; right: 0; margin: 0; }
.page-html-content { overflow-x: hidden; overflow-wrap: anywhere; }
.page-html-content img, .page-html-content iframe, .page-html-content table { box-sizing: border-box; max-width: 100% !important; }
.page-html-content table { min-width: 0; }
.home-announcements, .home-focus-announcement, .home-news-discussion { margin-bottom: 1.25rem; }
.home-calendar { margin-bottom: 1.25rem; }
.home-registrations { margin-bottom: 1.25rem; }
.home-announcements, .home-focus-announcement, .home-news-discussion, .home-calendar, .home-registrations, .home-focus-video, .home-focus-album, .home-menu-panel, .custom-content-block, .site-module-block, .hero-card, .album-marquee-card { position: relative; }
.front-block-edit { position: absolute; z-index: 8; top: .55rem; right: .55rem; margin: 0; padding: .25rem .45rem; color: #075381; background: #fff; border: 1px solid #a8c7d6; border-radius: 5px; box-shadow: 0 1px 4px rgba(18, 47, 73, .12); font-size: .76rem; font-weight: 750; line-height: 1.2; text-decoration: none; }
.front-block-edit:hover, .front-block-edit:focus { color: #fff; background: var(--brand); border-color: var(--brand); outline: none; }
.home-banner .front-block-edit { top: .65rem; right: .65rem; }
.home-announcements h1, .home-focus-announcement h1, .home-news-discussion h1, .home-calendar h1, .home-registrations h1, .home-main-content > .hero-card h1 { margin: 0; font-size: 1.35rem; }
.home-news-filter-summary { margin: -.25rem 0 .65rem; font-size: .88rem; }
.home-news-table td:last-child, .home-news-table th:last-child { white-space: nowrap; }
.home-focus-announcement > h2 { margin: .45rem 0 0; font-size: clamp(1.2rem, 2.5vw, 1.55rem); }
.home-focus-announcement > h2 a { color: var(--brand-dark); text-decoration: none; }
.home-focus-announcement > h2 a:hover, .home-focus-announcement > h2 a:focus { color: var(--brand); text-decoration: underline; }
.home-focus-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.home-focus-heading .eyebrow { margin-bottom: .2rem; }
.home-focus-edit { flex: 0 0 auto; margin: 0; }
.home-focus-video { margin-bottom: 1.25rem; }
.home-focus-video h1 { margin: 0; font-size: 1.35rem; }
.home-focus-video h2 { margin: .45rem 0 0; color: var(--brand-dark); font-size: 1.08rem; }
.home-focus-video-frame { display: flex; justify-content: center; margin: .75rem 0; overflow: hidden; }
.home-focus-video-frame iframe { display: block; max-width: 100%; margin: 0; border: 0; }
.home-focus-video-description { margin: .6rem 0; color: var(--muted); font-size: .88rem; overflow-wrap: anywhere; }
.home-focus-video-link { color: var(--brand-dark); font-size: .86rem; font-weight: 750; }
.home-focus-album { margin-bottom: 1.25rem; }
.home-focus-album h1 { margin: 0; font-size: 1.35rem; }
.home-focus-album h2 { margin: .65rem 0 0; color: var(--brand-dark); font-size: 1.08rem; }
.home-focus-album-link { display: flex; justify-content: center; margin: .75rem 0 0; overflow: hidden; }
.home-focus-album-link img { display: block; max-width: 100%; object-fit: cover; border: 1px solid var(--line); border-radius: 6px; background: #e9f0f4; }
.home-registration-table { min-width: 680px; }
.home-registration-table td:nth-child(2), .home-registration-table td:nth-child(3), .home-registration-table td:nth-child(4), .home-registration-table th:nth-child(2), .home-registration-table th:nth-child(3), .home-registration-table th:nth-child(4) { white-space: nowrap; }
.home-calendar-month { margin: -.4rem 0 1rem; color: var(--muted); font-weight: 750; text-align: center; }
.home-calendar .calendar-day { min-height: 7rem; }
.home-content-layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 1.25rem; }
.home-content-layout .eyebrow { display: none; }
.home-content-layout.has-right-column { grid-template-columns: minmax(0, 1fr) minmax(15rem, 22rem); }
.home-content-layout.has-left-column { grid-template-columns: minmax(13rem, 19rem) minmax(0, 1fr); }
.home-content-layout.has-left-column.has-right-column { grid-template-columns: minmax(13rem, 19rem) minmax(0, 1fr) minmax(13rem, 19rem); }
.public-content-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(15rem, 22rem); align-items: start; gap: 1.25rem; }
.home-left-content, .home-middle-content, .home-main-content, .home-right-content, .public-main-content { min-width: 0; }
.home-left-content > * + *, .home-right-content > * + * { margin-top: 1.25rem; }
.home-middle-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.home-middle-top { margin-bottom: 1.25rem; }
.home-middle-bottom { margin-top: 1.25rem; }
.home-middle-row > div > * + * { margin-top: 1.25rem; }
.site-module-block { margin-bottom: 1.25rem; }
.site-module-block h2 { margin: 0; font-size: 1.12rem; }
.site-module-block p { margin: .45rem 0 .7rem; color: var(--muted); font-size: .88rem; }
.site-module-block .button { margin-top: 0; }
.home-menu-panel { padding: .9rem; }
.home-menu-panel > h2 { margin: 0 0 .5rem; font-size: 1.2rem; }
.home-menu-group + .home-menu-group { margin-top: .55rem; padding-top: .55rem; border-top: 1px solid var(--line); }
.home-menu-group h3 { margin: 0 0 .25rem; color: var(--brand-dark); font-size: 1rem; line-height: 1.3; }
.home-menu-group summary { display: flex; align-items: center; justify-content: space-between; padding: .3rem .4rem; color: var(--brand-dark); border-radius: 5px; cursor: pointer; font-size: 1rem; font-weight: 750; line-height: 1.3; list-style: none; }
.home-menu-group summary::-webkit-details-marker { display: none; }
.home-menu-group summary::after { content: "＋"; color: var(--brand); font-size: 1.15rem; }
.home-menu-group[open] summary { background: #eaf3f8; }
.home-menu-group[open] summary::after { content: "−"; }
.home-menu-group > summary + .home-menu-list { margin-top: .2rem; }
.home-menu-list { margin: 0; padding: 0; list-style: none; }
.home-menu-list .home-menu-list { margin: .16rem 0 .1rem .7rem; padding-left: .6rem; border-left: 2px solid #dce7ec; }
.home-menu-list li + li { margin-top: .06rem; }
.home-menu-list a, .home-menu-list span { display: block; padding: .25rem .4rem; border-radius: 5px; line-height: 1.3; }
.home-menu-list a { color: var(--ink); text-decoration: none; }
.home-menu-list a:hover, .home-menu-list a:focus { color: #fff; background: var(--brand); }
.home-menu-list span { color: var(--muted); font-weight: 700; }
.block-manager-card { max-width: none; }
.block-template-adder { display: grid; gap: .45rem; margin-top: 1.5rem; padding: 1rem; background: #f3f8fb; border: 1px solid #cddfe8; border-radius: 10px; }
.block-template-adder h2 { flex: 0 0 auto; margin: 0; font-size: 1.05rem; white-space: nowrap; }
.block-template-adder > p { margin: 0; color: var(--muted); font-size: .87rem; }
.block-template-controls { display: flex; flex-wrap: nowrap; align-items: center; gap: .55rem; }
.block-template-controls label { display: inline-flex; align-items: center; gap: .38rem; color: var(--ink); font-size: .84rem; font-weight: 750; white-space: nowrap; }
.block-template-controls select { min-height: 2.3rem; padding: .35rem .45rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; }
.block-template-controls > label select { width: 8.5rem; }
.block-template-field-group { display: inline-flex; flex: 0 1 auto; align-items: center; gap: .55rem; }
.block-template-field-group > label:first-child select { width: min(16rem, 22vw); }
.block-template-field-group .block-template-position select { width: 8.25rem; }
.block-template-controls .button { flex: 0 0 auto; margin: 0; min-height: 2.3rem; padding: .45rem .7rem; white-space: nowrap; }
.block-layout-board { display: grid; grid-template-columns: minmax(14rem, 1fr) minmax(0, 2fr) minmax(14rem, 1fr); gap: 1rem; margin-top: 1.5rem; }
.block-layout-middle { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 1rem; }
.block-layout-middle .block-layout-primary { grid-column: 1 / -1; }
.block-layout-column { min-height: 25rem; background: #f7fafc; border: 1px dashed #aabec9; border-radius: 12px; }
.block-layout-middle .block-layout-column { min-height: 14rem; }
.block-layout-middle .block-layout-primary { min-height: 25rem; }
.block-layout-column > header { display: flex; align-items: baseline; gap: .65rem; padding: .8rem 1rem; background: #e8f2f6; border-bottom: 1px solid #c9dce5; border-radius: 11px 11px 0 0; }
.block-layout-column > header h2 { margin: 0; color: var(--brand-dark); font-size: 1.35rem; }
.block-layout-column > header p { margin: 0; color: var(--muted); font-size: .85rem; }
.block-dropzone { min-height: 20rem; padding: .8rem; }
.block-dropzone.is-drag-over { background: #e3f3f9; outline: 3px solid rgba(11, 101, 159, .28); outline-offset: -3px; }
.block-manager-item { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .8rem; margin-bottom: .75rem; padding: 1rem; background: #fff; border: 1px solid #d6e1e7; border-radius: 10px; cursor: grab; }
.block-manager-item:active { cursor: grabbing; }
.block-manager-item.is-dragging { opacity: .42; }
.block-manager-item.is-enabled { border-color: #8fc3d9; box-shadow: 0 4px 14px rgba(11, 101, 159, .08); }
.block-drag-handle { position: absolute; top: .45rem; right: .55rem; color: #7791a0; font-size: 1.2rem; letter-spacing: -.12rem; }
.block-manager-icon { display: grid; width: 2.65rem; height: 2.65rem; place-items: center; color: #075381; background: #dff1f8; border-radius: .75rem; font-weight: 800; }
.block-title-field { display: grid; gap: .18rem; color: var(--ink); font-size: .76rem; font-weight: 750; }
.block-title-field input { width: min(100%, 28rem); min-height: 2.2rem; padding: .32rem .45rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; font-size: 1.05rem; font-weight: 750; }
.block-manager-copy p { margin: 0; color: var(--muted); font-size: .87rem; }
.block-manager-switches { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .65rem 1rem; padding-top: .75rem; border-top: 1px solid #dbe6eb; }
.block-setting-field { display: inline-flex; align-items: center; gap: .42rem; font-weight: 700; }
.block-setting-field input { width: 5.25rem; min-height: 2.2rem; padding: .3rem .45rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; }
.block-position-field { display: inline-flex; align-items: center; gap: .42rem; color: var(--ink); font-size: .88rem; font-weight: 700; }
.block-position-field select { min-height: 2.2rem; padding: .3rem .45rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; }
.block-fixed-position { display: inline-flex; align-items: center; color: var(--muted); font-size: .88rem; font-weight: 700; }
.block-setting-field-wide { max-width: 100%; }
.block-setting-field-wide select { width: min(100%, 24rem); min-height: 2.2rem; padding: .3rem .45rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; }
.block-setting-field-wide span { color: var(--muted); font-size: .82rem; font-weight: 500; }
.toggle-switch { display: inline-flex; align-items: center; gap: .45rem; color: var(--ink); font-size: .88rem; font-weight: 700; cursor: pointer; }
.toggle-switch input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.toggle-track { position: relative; width: 2.35rem; height: 1.32rem; background: #aab7be; border-radius: 999px; transition: background .15s ease; }
.toggle-track::after { position: absolute; top: .17rem; left: .17rem; width: .98rem; height: .98rem; content: ""; background: #fff; border-radius: 50%; box-shadow: 0 1px 3px rgba(18, 47, 73, .35); transition: transform .15s ease; }
.toggle-switch input:checked + .toggle-track { background: var(--success); }
.toggle-switch input:checked + .toggle-track::after { transform: translateX(1.03rem); }
.toggle-switch input:focus-visible + .toggle-track { outline: 3px solid rgba(11, 101, 159, .26); outline-offset: 2px; }
.block-home-only { color: var(--muted); font-size: .85rem; font-weight: 650; }
.block-fixed-area { display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 25rem); gap: 1rem; align-items: center; margin-top: 1rem; padding: 1rem; background: #f7fafc; border: 1px solid #d6e1e7; border-radius: 12px; }
.block-fixed-area h2 { margin: 0 0 .25rem; color: var(--brand-dark); font-size: 1.05rem; }
.block-fixed-area > div > p { margin: 0; color: var(--muted); font-size: .87rem; }
.block-fixed-area .block-manager-item { margin: 0; cursor: default; }
.announcement-list { display: grid; gap: .85rem; }
.announcement-table { min-width: 580px; }
.announcement-table td:nth-child(2), .announcement-table td:nth-child(3), .announcement-table th:nth-child(2), .announcement-table th:nth-child(3) { white-space: nowrap; }
.announcement-title-link { color: var(--brand-dark); font-weight: 750; text-decoration: none; }
.announcement-title-link:hover, .announcement-title-link:focus { color: var(--brand); text-decoration: underline; }
.announcement-title-mobile { display: none; }
.announcement-search { display: flex; gap: .6rem; margin: 0 0 1rem; }
.announcement-search input, .announcement-search select { flex: 1; min-width: 0; min-height: 2.5rem; padding: .45rem .6rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; }
.news-category-filter select { flex: 0 1 20rem; max-width: 20rem; }
.announcement-search-result { margin: -.25rem 0 1rem; color: var(--muted); font-size: .9rem; }
.announcement-table-summary { display: inline-block; max-width: 55rem; margin-top: .2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.announcement-pagination { display: flex; flex-wrap: wrap; gap: .35rem; justify-content: center; margin-top: 1.2rem; }
.announcement-pagination a, .announcement-pagination span { min-width: 2.3rem; padding: .36rem .55rem; border: 1px solid var(--line); border-radius: 5px; text-align: center; text-decoration: none; }
.announcement-pagination .is-current { color: #fff; background: var(--brand); border-color: var(--brand); font-weight: 750; }
.announcement-item { padding: 1.1rem 1.2rem; background: #f8fbfc; border: 1px solid #d7e2e8; border-radius: 10px; }
.announcement-item-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; }
.announcement-item h2 { margin: 0; font-size: 1.2rem; }
.announcement-item h2 a { color: var(--brand-dark); text-decoration: none; }
.announcement-item h2 a:hover, .announcement-item h2 a:focus { color: var(--brand); text-decoration: underline; }
.announcement-meta { margin: .4rem 0 .7rem; color: var(--muted); font-size: .9rem; }
.announcement-summary { margin: 0 0 .8rem; white-space: normal; }
.announcement-read-more { font-weight: 700; text-decoration: none; }
.announcement-pinned { flex: 0 0 auto; color: #7b3f00; background: #fff1dc; }
.announcement-detail-summary { padding: .85rem 1rem; background: #f4f8fa; border-left: 4px solid var(--brand); border-radius: 4px; }
.announcement-detail .public-page-heading h1, .calendar-event-detail .public-page-heading h1 { padding-bottom: .6rem; color: #7a4a3a; border-bottom: 2px solid #ead8cf; font-size: var(--article-title-font-size, 24px); font-weight: 760; letter-spacing: .015em; line-height: 1.45; text-align: left; }
.announcement-content { margin-top: 1.25rem; }
.calendar-card, .calendar-form-card { max-width: none; }
.calendar-toolbar, .calendar-month-navigation { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.calendar-toolbar h1 { margin: 0; }
.calendar-toolbar-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.calendar-toolbar-actions .button, .calendar-month-navigation .button { margin-top: 0; }
.calendar-search { display: grid; grid-template-columns: 12rem minmax(0, 1fr) auto; gap: .6rem; margin: 1.1rem 0; }
.calendar-search input { min-width: 0; min-height: 2.5rem; padding: .45rem .6rem; border: 1px solid #aebdc8; border-radius: 6px; }
.calendar-month-navigation { margin: 1.1rem 0; }
.calendar-month-navigation strong { font-size: 1.15rem; }
.calendar-month-view { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--line); border-radius: 9px; }
.calendar-weekday { padding: .55rem; color: #fff; background: var(--brand-dark); font-weight: 800; text-align: center; }
.calendar-day { min-height: 9rem; padding: .45rem; background: #fff; border-right: 1px solid var(--line); border-top: 1px solid var(--line); }
.calendar-day:nth-child(7n) { border-right: 0; }
.calendar-day.is-outside-month { background: #f5f7f8; color: #9aa7ae; }
.calendar-day.is-today { background: #eff8fc; }
.calendar-day.is-holiday, .calendar-day.is-weekend { background: #fff6f6; }
.calendar-date-number { display: block; margin-bottom: .3rem; font-weight: 800; }
.calendar-lunar-date { display: block; min-height: 1rem; margin: -.2rem 0 .25rem; color: #697e8d; font-size: .68rem; line-height: 1.2; white-space: nowrap; }
.calendar-holiday { display: block; margin: .12rem 0 .25rem; overflow: hidden; color: #b13030; font-size: .72rem; font-weight: 800; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.calendar-day { position: relative; }
.calendar-day-create { transition: background-color .16s ease, box-shadow .16s ease; }
.calendar-day-create:hover { background: #eaf5fb; box-shadow: inset 0 0 0 2px rgba(11, 101, 159, .2); }
.calendar-day-create-link { position: absolute; z-index: 0; inset: 0; display: block; border-radius: 4px; }
.calendar-day-create-link:focus { outline: 2px solid var(--brand); outline-offset: -3px; }
.calendar-day-create > :not(.calendar-day-create-link) { position: relative; z-index: 1; }
.calendar-day-create .calendar-date-number, .calendar-day-create .calendar-lunar-date, .calendar-day-create .calendar-holiday { pointer-events: none; }
.calendar-day-create .calendar-event-chip { z-index: 2; cursor: pointer; }
.calendar-event-chip { display: block; margin: .2rem 0; padding: .14rem .28rem; overflow: hidden; color: #17324d; background: color-mix(in srgb, var(--event-color) 14%, white); border-left: 3px solid var(--event-color); border-radius: 3px; font-size: .78rem; line-height: 1.3; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.calendar-event-chip:hover, .calendar-event-chip:focus { color: #fff; background: var(--event-color); }
.calendar-event-chip.is-completed { opacity: .62; text-decoration: line-through; }
.calendar-table-view { display: none; }
.calendar-event-table { min-width: 700px; }
.calendar-date-mobile { display: none; }
.calendar-color-dot { display: inline-block; width: .72rem; height: .72rem; margin-right: .35rem; background: var(--event-color); border-radius: 50%; }
.calendar-event-detail { max-width: none; }
.calendar-event-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; margin: 1rem 0; }
.calendar-event-meta div { padding: .75rem; background: #f6fafc; border: 1px solid #dce6eb; border-radius: 7px; }
.calendar-event-meta dt { color: var(--muted); font-size: .82rem; font-weight: 700; }
.calendar-event-meta dd { margin: .1rem 0 0; }
.calendar-description { white-space: pre-wrap; overflow-wrap: anywhere; }
.calendar-attachments { margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.calendar-attachments h2 { margin: 0 0 .5rem; font-size: 1.1rem; }
.calendar-attachments ul { margin: 0; padding-left: 1.25rem; }
.calendar-attachments span { color: var(--muted); font-size: .85rem; }
.calendar-existing-attachments { display: grid; gap: .45rem; padding: .65rem; background: #f7fafc; border: 1px solid var(--line); border-radius: 6px; }
.calendar-existing-attachments label { font-weight: 500; }
.calendar-delete-form { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.calendar-content-field textarea { display: block; box-sizing: border-box; width: 100%; min-height: 5.3rem; padding: .55rem .65rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; line-height: 1.45; resize: vertical; }
.calendar-content-field textarea:focus { border-color: var(--brand); outline: 3px solid rgba(11, 101, 159, .16); }
.calendar-title-mobile { display: none; }
.registration-public-card, .registration-admin-card { max-width: none; }
.registration-search { display: flex; gap: .6rem; margin: 0 0 1rem; }
.registration-search input { flex: 1; min-width: 0; min-height: 2.5rem; padding: .45rem .6rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; }
.registration-event-list { display: grid; gap: .85rem; }
.registration-event-card { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.1rem 1.2rem; background: #f8fbfc; border: 1px solid #d7e3e9; border-radius: 10px; }
.registration-event-card h2 { margin: 0; color: var(--brand-dark); font-size: 1.22rem; }
.registration-event-card .eyebrow { margin-bottom: .25rem; }
.registration-event-meta { margin: .4rem 0 .55rem; color: var(--muted); }
.registration-event-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; gap: .45rem; max-width: 23rem; }
.registration-event-actions .button { margin: 0; }
.registration-description, .registration-notes { padding: 1rem 1.1rem; background: #f4f9fc; border-left: 4px solid var(--brand); border-radius: 5px; white-space: pre-wrap; overflow-wrap: anywhere; }
.registration-event-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 1.25rem 0; background: #d9e5eb; border: 1px solid #d9e5eb; }
.registration-event-facts div { padding: .8rem .9rem; background: #fff; }
.registration-event-facts dt { color: var(--muted); font-size: .82rem; font-weight: 750; }
.registration-event-facts dd { margin: .22rem 0 0; }
.registration-notes { margin-top: 1rem; border-left-color: #bd8b27; }
.registration-attachments { display: grid; gap: .45rem; margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.registration-attachments h2 { margin: 0 0 .25rem; font-size: 1.1rem; }
.registration-attachments a { width: fit-content; max-width: 100%; overflow-wrap: anywhere; }
.registration-form-card { margin-top: 1.25rem; }
.registration-form-card h2 { margin-top: 0; }
.registration-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.registration-field-full { grid-column: 1 / -1; }
.registration-form-grid textarea, .registration-admin-card textarea { display: block; box-sizing: border-box; width: 100%; min-height: 5.3rem; padding: .55rem .65rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; font: inherit; resize: vertical; }
.registration-form-grid textarea:focus, .registration-admin-card textarea:focus { border-color: var(--brand); outline: 3px solid rgba(11, 101, 159, .16); }
.registration-captcha { display: block; width: 180px; height: 58px; margin: .25rem 0 .5rem; border: 1px solid var(--line); border-radius: 5px; background: #fff; }
.required-mark { display: inline-block; margin-left: .3rem; color: #c23b3b; font-size: .78rem; font-weight: 800; white-space: nowrap; }
.registration-admin-table, .registration-roster-table { min-width: 900px; }
.registration-result-table { min-width: 0; }
.home-registration-results { margin: 0; padding: .38rem .62rem; font-size: .82rem; white-space: nowrap; }
.album-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.album-card { display: flex; flex-direction: column; overflow: hidden; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 4px 14px rgba(18, 47, 73, .05); text-decoration: none; transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.album-card:hover, .album-card:focus { color: var(--ink); border-color: #86b8d0; box-shadow: 0 9px 22px rgba(11, 101, 159, .12); transform: translateY(-2px); }
.album-card img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #e9f0f4; }
.album-card-content { padding: .9rem 1rem 1rem; }
.album-card h2, .album-card h3 { margin: 0; color: var(--brand-dark); font-size: 1.08rem; }
.album-card p { margin: .4rem 0 0; color: var(--muted); font-size: .88rem; }
.album-card-open { display: inline-block; margin-top: .65rem; color: var(--brand); font-size: .85rem; font-weight: 750; }
.album-category-folder-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.album-category-folder-card { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 4px 14px rgba(18, 47, 73, .05); }
.album-category-folder-link { display: block; height: 100%; color: inherit; text-decoration: none; }
.album-category-folder-link:hover, .album-category-folder-link:focus { color: inherit; box-shadow: inset 0 0 0 2px var(--brand); }
.album-category-folder-preview { display: grid; aspect-ratio: 4 / 3; overflow: hidden; background: #e9f0f4; place-items: center; }
.album-category-folder-preview img { display: block; width: 100%; height: 100%; object-fit: cover; }
.album-category-folder-preview span { display: grid; width: 100%; height: 100%; place-items: center; color: #fff; background: linear-gradient(135deg, #0b5e8a, #1592a8); font-size: 1.1rem; font-weight: 800; }
.album-category-folder-info { position: relative; min-height: 5.5rem; padding: .8rem .9rem .85rem 3.2rem; }
.album-category-folder-info h2 { margin: 0 0 .25rem; color: var(--brand-dark); font-size: 1.08rem; }
.album-category-folder-info p { margin: 0; color: var(--muted); font-size: .84rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.album-category-folder-icon { position: absolute; top: .9rem; left: .85rem; display: grid; width: 1.7rem; height: 1.7rem; place-items: center; color: #fff; background: var(--brand); border-radius: .35rem; font-size: .85rem; }
.album-admin-thumbnail { width: 9rem; height: 6.75rem; object-fit: cover; border: 1px solid var(--line); border-radius: 5px; background: #edf3f6; }
.album-category-filter { display: flex; align-items: center; gap: .7rem; margin: 1.2rem 0; padding: .8rem 1rem; background: #f7fafc; border: 1px solid var(--line); border-radius: 8px; }
.album-category-filter label { font-weight: 700; }
.album-category-filter select { min-width: min(100%, 18rem); min-height: 2.45rem; padding: .45rem .6rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: 6px; }
.album-category-filter .button { margin: 0; }
.album-row-actions { display: flex; flex-wrap: wrap; gap: .65rem; align-items: center; min-width: 9.5rem; }
.album-row-actions .button, .album-row-actions form { margin: 0; }
.album-row-actions form { display: inline; }
.album-row-actions .button { padding: .42rem .72rem; font-size: .88rem; }
.album-category-section + .album-category-section { margin-top: 2rem; padding-top: 1.35rem; border-top: 1px solid var(--line); }
.album-category-section h2 { margin: 0 0 .85rem; color: var(--brand-dark); font-size: 1.16rem; }
.news-category-section + .news-category-section { margin-top: 2rem; padding-top: 1.35rem; border-top: 1px solid var(--line); }
.news-category-heading { display: flex; align-items: center; justify-content: flex-start; gap: .6rem; margin-bottom: .85rem; }
.news-category-section h2 { margin: 0; color: var(--brand-dark); font-size: 1.16rem; }
.news-category-heading .button { flex: 0 0 auto; margin: 0; padding: .42rem .72rem; font-size: .86rem; }
.news-category-add { display: inline-flex; align-items: center; gap: .2rem; color: #fff; background: var(--brand); border-color: var(--brand); }
.news-category-add:hover, .news-category-add:focus { color: #fff; background: var(--brand-dark); border-color: var(--brand-dark); }
.news-category-add span { font-size: 1.05em; font-weight: 800; line-height: 1; }
.social-video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.social-video-card { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 4px 14px rgba(18, 47, 73, .05); }
.social-video-platform { padding: .48rem .85rem; color: #fff; background: #4e6170; font-size: .82rem; font-weight: 800; }
.social-video-provider-youtube .social-video-platform, .social-provider-youtube { background: #e62117; }
.social-video-provider-facebook .social-video-platform, .social-provider-facebook { background: #1877f2; }
.social-video-provider-instagram .social-video-platform, .social-provider-instagram { background: #c13584; }
.social-video-provider-threads .social-video-platform, .social-provider-threads { background: #2f3136; }
.social-video-embed { display: flex; justify-content: center; min-height: 21rem; overflow: hidden; background: #f3f6f8; }
.social-video-embed iframe { display: block; width: 100%; min-height: 28rem; border: 0; }
.social-video-external-preview { display: flex; align-items: center; justify-content: center; flex-direction: column; min-height: 15rem; gap: .7rem; padding: 1.5rem; color: var(--ink); background: #f4f6f8; text-align: center; text-decoration: none; }
.social-video-external-preview:hover, .social-video-external-preview:focus { color: var(--brand-dark); background: #eaf3f8; }
.social-video-external-preview span { display: grid; width: 3.2rem; height: 3.2rem; place-items: center; color: #fff; background: #2f3136; border-radius: 50%; font-size: 1.7rem; }
.social-video-card-content { padding: .9rem 1rem 1rem; }
.social-video-card-content h3 { margin: 0; color: var(--brand-dark); font-size: 1.08rem; }
.social-video-card-content p { margin: .4rem 0 .7rem; color: var(--muted); font-size: .88rem; overflow-wrap: anywhere; }
.social-video-card-content > a { color: var(--brand); font-size: .85rem; font-weight: 750; }
.social-video-category-section + .social-video-category-section { margin-top: 2rem; padding-top: 1.35rem; border-top: 1px solid var(--line); }
.social-video-category-section h2 { margin: 0 0 .85rem; color: var(--brand-dark); font-size: 1.16rem; }
.activity-video-folder-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.activity-video-folder-card { overflow: hidden; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 4px 14px rgba(18, 47, 73, .05); }
.activity-video-folder-link { display: block; height: 100%; color: inherit; text-decoration: none; }
.activity-video-folder-link:hover, .activity-video-folder-link:focus { color: inherit; box-shadow: inset 0 0 0 2px var(--brand); }
.activity-video-folder-preview { display: grid; aspect-ratio: 16 / 9; overflow: hidden; background: #edf3f6; place-items: center; }
.activity-video-folder-preview img, .activity-video-folder-preview iframe { display: block; width: 100%; height: 100%; border: 0; object-fit: cover; pointer-events: none; }
.activity-video-folder-empty { display: grid; width: 100%; height: 100%; place-items: center; color: #fff; background: linear-gradient(135deg, #0b5e8a, #1592a8); font-size: 1.1rem; font-weight: 800; }
.activity-video-folder-info { position: relative; min-height: 5.5rem; padding: .8rem .9rem .85rem 3.2rem; }
.activity-video-folder-info h2 { margin: 0 0 .25rem; color: var(--brand-dark); font-size: 1.08rem; }
.activity-video-folder-info p { margin: 0; color: var(--muted); font-size: .84rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activity-video-folder-icon { position: absolute; top: .9rem; left: .85rem; display: grid; width: 1.7rem; height: 1.7rem; place-items: center; color: #fff; background: var(--brand); border-radius: .35rem; font-size: .85rem; }
.social-provider-tag { display: inline-block; padding: .28rem .48rem; color: #fff; border-radius: 999px; font-size: .78rem; font-weight: 750; white-space: nowrap; }
.video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.video-card { overflow: hidden; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 10px; text-decoration: none; box-shadow: 0 4px 14px rgba(18, 47, 73, .05); transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.video-card:hover, .video-card:focus { color: var(--ink); border-color: #86b8d0; box-shadow: 0 9px 22px rgba(11, 101, 159, .12); transform: translateY(-2px); }
.video-card img, .video-form-thumbnail { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: #e9f0f4; }
.video-card > div { padding: .9rem 1rem 1rem; }
.video-card h3 { margin: 0; color: var(--brand-dark); font-size: 1.08rem; }
.video-card p { margin: .4rem 0 0; color: var(--muted); font-size: .88rem; }
.video-card span { display: inline-block; margin-top: .65rem; color: var(--brand); font-size: .85rem; font-weight: 750; }
.video-category-section + .video-category-section { margin-top: 2rem; padding-top: 1.35rem; border-top: 1px solid var(--line); }
.video-category-section h2 { margin: 0 0 .85rem; color: var(--brand-dark); font-size: 1.16rem; }
.video-form-thumbnail { margin: .5rem 0 1rem; border: 1px solid var(--line); border-radius: 6px; }
.registration-notification-preview { padding: 1rem; color: var(--ink); background: #f4f9fc; border: 1px solid var(--line); border-radius: 7px; white-space: pre-wrap; font: inherit; }
.html-editor-canvas table, .page-html-content table { width: auto; max-width: 100%; min-width: 0; }
.page-html-content img { max-width: 100%; height: auto; }
.page-html-content th, .page-html-content td { border: 1px solid var(--line); }
.html-editor-canvas hr, .page-html-content hr { margin: .65rem 0 .3rem; }
.html-editor-canvas h4, .page-html-content h4 { margin: .3rem 0 .2rem; font-size: .9rem; }
.html-editor-canvas table[cellpadding], .page-html-content table[cellpadding] { margin: .25rem 0; min-width: 0; font-size: .8rem; }
.html-editor-canvas table[cellpadding] th, .html-editor-canvas table[cellpadding] td, .page-html-content table[cellpadding] th, .page-html-content table[cellpadding] td { padding: .22rem .38rem; line-height: 1.35; }
.html-editor-canvas table[cellpadding="1"] tbody td, .page-html-content table[cellpadding="1"] tbody td { display: flex; flex-wrap: wrap; gap: .25rem .45rem; align-items: center; }
.html-editor-canvas table[cellpadding="1"] tbody td > span, .page-html-content table[cellpadding="1"] tbody td > span { display: inline-flex; align-items: center; gap: .1rem; max-width: 100%; padding: .05rem .25rem; background: #f7fafc; border: 1px solid #d8e0e7; border-radius: 3px; white-space: nowrap; }
.html-editor-canvas table[cellpadding="1"] tbody td > span > span, .page-html-content table[cellpadding="1"] tbody td > span > span { color: var(--muted); font-size: .76rem; }

.html-editor { width: min(100%, var(--front-editor-safe-width, 56rem)); max-width: 100%; box-sizing: border-box; margin-top: .45rem; border: 1px solid #aebdc8; border-radius: 4px; background: #fff; box-shadow: inset 0 1px 0 rgba(255,255,255,.85); }
.html-editor-toolbar { padding: .45rem; background: linear-gradient(#f7f8f8, #d9ddde); border-bottom: 1px solid #a8b0b3; }
.editor-toolbar-row { display: flex; flex-wrap: wrap; gap: .32rem; }
.editor-toolbar-row + .editor-toolbar-row { margin-top: .38rem; padding-top: .38rem; border-top: 1px solid rgba(138, 149, 153, .32); }
.editor-tool-group { display: inline-flex; align-items: center; min-height: 2.2rem; overflow: hidden; background: #eceeee; border: 1px solid #aeb5b8; border-radius: 4px; box-shadow: inset 0 1px 0 #fff; }
.html-editor-toolbar button { min-width: 2.2rem; min-height: 2.1rem; padding: .3rem .5rem; color: #273a46; background: linear-gradient(#fff, #e6e8e8); border: 0; border-right: 1px solid #b9c0c2; cursor: pointer; font-size: .9rem; font-weight: 700; }
.html-editor-toolbar button:last-child { border-right: 0; }
.html-editor-toolbar .editor-text-button { padding: .3rem .55rem; font-size: .8rem; white-space: nowrap; }
.html-editor-toolbar button:hover, .html-editor-toolbar button:focus { color: #063f62; background: linear-gradient(#fff, #cfe6f2); outline: 2px solid rgba(11, 101, 159, .25); outline-offset: -2px; }
.editor-select-group select { min-height: 2.1rem; min-width: 7rem; padding: .25rem 1.7rem .25rem .5rem; color: #273a46; background: linear-gradient(#fff, #e6e8e8); border: 0; font: inherit; font-size: .86rem; }
.editor-color-control { display: inline-flex; align-items: center; gap: .25rem; min-height: 2.1rem; padding: .2rem .35rem .2rem .55rem; color: #273a46; background: linear-gradient(#fff, #e6e8e8); border: 1px solid #aeb5b8; border-radius: 4px; font-weight: 800; cursor: pointer; }
.editor-color-control input { width: 1.5rem; height: 1.5rem; padding: 0; background: none; border: 0; cursor: pointer; }
.editor-upload-status { min-height: 1.5rem; margin: .85rem 0 0; color: var(--success); font-weight: 650; }
.editor-upload-status.editor-upload-error { color: var(--danger); }
.editor-image-library { margin-top: .65rem; padding: .6rem; background: #f4f8fa; border: 1px solid #c7d6df; border-radius: 5px; }
.editor-image-library .editor-upload-status { margin: 0 0 .45rem; }
.editor-image-library-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); gap: .55rem; max-height: 20rem; overflow: auto; }
.editor-image-library-item { display: grid; gap: .3rem; min-width: 0; padding: .35rem; color: var(--ink); background: #fff; border: 1px solid #b7c8d3; border-radius: 4px; cursor: pointer; font: inherit; text-align: left; }
.editor-image-library-item:hover, .editor-image-library-item:focus { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(11, 101, 159, .18); outline: 0; }
.editor-image-library-item img { display: block; width: 100%; height: 5.5rem; object-fit: contain; background: #edf3f6; }
.editor-image-library-name { overflow: hidden; font-size: .8rem; font-weight: 700; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.editor-image-library-size { color: #607789; font-size: .74rem; }
.html-editor-canvas table { border: 1px solid #8fa8b8; }
.html-editor-canvas th, .html-editor-canvas td { border: 1px solid #8fa8b8; padding: 8px; }
.html-editor-canvas img { max-width: 100%; height: auto; transform-origin: center center; }
.html-editor-canvas iframe { pointer-events: none; }
.html-editor-canvas iframe, .page-html-content iframe { display: block; max-width: 100%; margin: 1rem 0; border: 0; }
.html-editor-canvas table, .html-editor-canvas iframe { position: relative; }
.html-editor-canvas table:hover, .html-editor-canvas .editor-resizing { outline: 2px solid rgba(11, 101, 159, .48); outline-offset: 2px; }
.html-editor-canvas .editor-object-selected { outline: 3px solid rgba(11, 101, 159, .75); outline-offset: 3px; }
.html-editor-canvas.editor-resize-box-cursor, .editor-resize-active.editor-resize-box { cursor: nwse-resize !important; }
.html-editor-canvas.editor-resize-column-cursor, .editor-resize-active.editor-resize-column { cursor: col-resize !important; }
.html-editor-canvas.editor-resize-row-cursor, .editor-resize-active.editor-resize-row { cursor: row-resize !important; }
.editor-resize-active { user-select: none; }
.editor-media-resize-handle { position: fixed; z-index: 70; width: 20px; height: 20px; margin: 0; padding: 0; color: #fff; background: var(--brand); border: 2px solid #fff; border-radius: 50%; box-shadow: 0 2px 6px rgba(18, 47, 73, .36); cursor: nwse-resize; }
.editor-media-resize-handle::before { display: block; content: "↘"; font-size: .75rem; line-height: 1; }
.editor-object-move-handle { position: fixed; z-index: 70; width: 20px; height: 20px; margin: 0; padding: 0; color: #fff; background: #476d85; border: 2px solid #fff; border-radius: 50%; box-shadow: 0 2px 6px rgba(18, 47, 73, .36); cursor: move; }
.editor-object-move-handle::before { display: block; content: "✥"; font-size: .78rem; line-height: 1; }
.editor-object-drag-active { cursor: move !important; user-select: none; }
.editor-object-rotate-handle { position: fixed; z-index: 70; width: 20px; height: 20px; margin: 0; padding: 0; color: #fff; background: #946400; border: 2px solid #fff; border-radius: 50%; box-shadow: 0 2px 6px rgba(18, 47, 73, .36); cursor: grab; }
.editor-object-rotate-handle::before { display: block; content: "⟳"; font-size: .9rem; line-height: 1; }
.editor-object-rotate-active { cursor: grabbing !important; user-select: none; }
.editor-context-menu { position: fixed; z-index: 50; width: 11.5rem; padding: .28rem; background: #fff; border: 1px solid #9daeb8; border-radius: 5px; box-shadow: 0 8px 22px rgba(18, 47, 73, .22); }
.editor-context-menu button { display: block; width: 100%; min-height: 2.15rem; padding: .4rem .55rem; color: var(--ink); background: none; border: 0; border-radius: 3px; text-align: left; cursor: pointer; font: inherit; font-size: .86rem; }
.editor-context-menu button:hover, .editor-context-menu button:focus { color: #fff; background: var(--brand); }
.html-editor-canvas { min-height: 18rem; padding: .85rem; outline: 0; }
.html-editor-canvas:focus { box-shadow: inset 0 0 0 3px rgba(11, 101, 159, .16); }
.html-editor-canvas table, .page-html-content table { margin: 1rem 0; border-collapse: collapse; }
.html-editor-canvas table[align="center"], .page-html-content table[align="center"] { float: none !important; margin-left: auto !important; margin-right: auto !important; }
.html-editor-canvas table[align="right"], .page-html-content table[align="right"] { float: none !important; margin-left: auto !important; margin-right: 0 !important; }
.html-editor-canvas table[align="left"], .page-html-content table[align="left"] { float: none !important; margin-left: 0 !important; margin-right: auto !important; }
.html-editor-canvas th, .html-editor-canvas td { min-width: 2.5rem; }
.html-editor-canvas td.editor-cell-selected, .html-editor-canvas th.editor-cell-selected { box-shadow: inset 0 0 0 3px rgba(11, 101, 159, .8); background-image: linear-gradient(rgba(163, 218, 243, .22), rgba(163, 218, 243, .22)); }
.html-editor-canvas.editor-cell-selecting { user-select: none; }
.table-properties-dialog { width: min(94vw, 620px); padding: 0; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 22px 55px rgba(18, 47, 73, .24); }
.table-properties-dialog::backdrop { background: rgba(10, 37, 57, .44); }
.table-properties-content { padding: 1.25rem; }
.dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.dialog-heading h2 { margin: 0; font-size: 1.25rem; }
.dialog-close { width: 2rem; height: 2rem; color: var(--muted); background: none; border: 0; border-radius: 50%; cursor: pointer; font-size: 1.4rem; line-height: 1; }
.dialog-close:hover, .dialog-close:focus { color: var(--ink); background: #edf3f6; }
.editor-source-hidden { display: none; }
.html-editor + .html-editor { margin-top: .5rem; }
#content_html:not(.editor-source-hidden) { width: min(100%, var(--front-editor-safe-width, 56rem)); max-width: 100%; box-sizing: border-box; min-height: 18rem; margin-top: .45rem; padding: .85rem; border: 1px solid #aebdc8; border-radius: 8px; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; line-height: 1.5; }
.pages-card, .page-editor-card, .menus-card, .menu-items-card { max-width: none; }
.editor-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.page-metadata-grid { display: grid; grid-template-columns: minmax(12rem, 1.5fr) minmax(10rem, 1fr) repeat(3, minmax(9rem, .82fr)); gap: 0 .8rem; align-items: start; }
.page-metadata-grid .form-field { min-width: 0; }
.page-metadata-grid .field-help { margin-top: .3rem; font-size: .76rem; line-height: 1.3; }
@media (max-width: 960px) { .page-metadata-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.editor-basic-fields, .editor-inline-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.editor-inline-fields-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.editor-inline-fields-four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.editor-basic-fields .form-field, .editor-inline-fields .form-field { min-width: 0; }
.editor-unit-input { display: flex; align-items: center; gap: .45rem; }
.editor-unit-input input { min-width: 0; flex: 1; }
.editor-unit-input select { width: 4.4rem; flex: 0 0 auto; }
.revision-section { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.revision-section h2, .menu-items-heading { margin: 0 0 .35rem; font-size: 1.2rem; }
.revision-section > .muted { margin-top: 0; }
.menu-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.menu-card-heading h2 { margin: 0; }
.menu-card-heading p { margin-top: .35rem; }
.menu-item-form { padding: 1.2rem; background: #f8fbfc; border: 1px solid #dce7ec; border-radius: 10px; }
.menu-item-form h2 { margin-top: 0; font-size: 1.15rem; }
.checkbox-row { display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; margin-top: .5rem; }
.single-checkbox { display: inline-flex; align-items: center; gap: .45rem; margin-top: .7rem; color: var(--ink); font-weight: 650; }
.single-checkbox input { width: 1rem; height: 1rem; }
.menu-items-heading { margin-top: 2rem; }

.contact-card { max-width: 920px; }
.contact-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.contact-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; margin: 1.25rem 0; }
.contact-details > div { padding: .8rem 1rem; background: #f7fafc; border: 1px solid var(--line); border-radius: 7px; }
.contact-details dt { color: var(--muted); font-size: .84rem; font-weight: 700; }
.contact-details dd { margin: .25rem 0 0; overflow-wrap: anywhere; }
.contact-message-body { margin: 1.25rem 0; padding: 1rem; background: #fff; border: 1px solid var(--line); border-radius: 7px; }
.contact-message-body h2 { margin: 0 0 .6rem; color: var(--brand-dark); font-size: 1.1rem; }
.contact-message-body p { margin: 0; overflow-wrap: anywhere; line-height: 1.7; }
.contact-admin-form { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.album-marquee-card { overflow: hidden; }
.album-marquee-track { overflow: hidden; margin: -1.25rem; padding: .8rem 0; background: #f4f8fa; }
.album-marquee-strip { display: flex; width: max-content; gap: .8rem; padding-left: .8rem; animation: album-marquee-scroll var(--marquee-speed) linear infinite; }
.album-marquee-track:hover .album-marquee-strip { animation-play-state: paused; }
.album-marquee-strip a { display: block; flex: 0 0 auto; overflow: hidden; height: var(--marquee-height); background: #dfeaf0; border: 1px solid #b4c8d3; border-radius: 6px; box-shadow: 0 3px 8px rgba(18, 47, 73, .12); }
.album-marquee-strip img { display: block; width: auto; height: 100%; max-width: min(70vw, 460px); object-fit: cover; transition: transform .18s ease; }
.album-marquee-strip a:hover img, .album-marquee-strip a:focus img { transform: scale(1.04); }
@keyframes album-marquee-scroll { from { transform: translateX(0); } to { transform: translateX(calc(-50% - .4rem)); } }
.marquee-image-manager { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--line); }
.marquee-image-manager h2 { margin: 0 0 1rem; color: var(--brand-dark); font-size: 1.15rem; }
.marquee-image-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .85rem; }
.marquee-image-item { display: grid; gap: .4rem; padding: .55rem; background: #f8fbfc; border: 1px solid var(--line); border-radius: 7px; overflow: hidden; font-size: .82rem; }
.marquee-image-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; background: #dfeaf0; }
.marquee-image-item > span:not(.single-checkbox) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.home-banner { position: relative; width: var(--public-layout-width, 90%); margin: 0 auto; overflow: hidden; background: #113b58; aspect-ratio: 1920 / 350; }
.home-banner-slides, .home-banner-slide { width: 100%; height: 100%; }
.home-banner-slide { display: none; }
.home-banner-slide.is-active { display: block; animation: banner-fade .45s ease-out; }
.home-banner-slide.is-active[data-banner-effect="slide"] { animation: banner-slide .55s ease-out; }
.home-banner-slide.is-active[data-banner-effect="blinds"] { animation: banner-blinds .65s ease-out; }
.home-banner-slide.is-active[data-banner-effect="zoom"] { animation: banner-zoom .55s ease-out; }
.home-banner-slide.is-active[data-banner-effect="flip"] { transform-origin: left center; animation: banner-flip .6s ease-out; }
.home-banner-slide a, .home-banner-slide img { display: block; width: 100%; height: 100%; }
.home-banner-slide img { object-fit: cover; }
.home-banner-control { position: absolute; z-index: 2; top: 50%; width: 2.35rem; height: 2.35rem; padding: 0; color: #fff; background: rgba(9, 37, 57, .56); border: 1px solid rgba(255, 255, 255, .65); border-radius: 50%; transform: translateY(-50%); cursor: pointer; font-size: 2rem; line-height: 1; }
.home-banner-control:hover, .home-banner-control:focus { background: rgba(9, 37, 57, .85); outline: 3px solid rgba(255, 255, 255, .55); }
.home-banner-prev { left: 1rem; }
.home-banner-next { right: 1rem; }
.home-banner-dots { position: absolute; z-index: 2; right: 1rem; bottom: .75rem; display: flex; gap: .45rem; }
.home-banner-dots button { width: .72rem; height: .72rem; padding: 0; background: rgba(255, 255, 255, .72); border: 1px solid rgba(9, 37, 57, .55); border-radius: 50%; cursor: pointer; }
.home-banner-dots button.is-active { background: var(--brand-dark); border-color: #fff; transform: scale(1.15); }
@keyframes banner-fade { from { opacity: .45; } to { opacity: 1; } }
@keyframes banner-slide { from { opacity: .2; transform: translateX(8%); } to { opacity: 1; transform: translateX(0); } }
@keyframes banner-blinds { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes banner-zoom { from { opacity: .15; transform: scale(1.08); } to { opacity: 1; transform: scale(1); } }
@keyframes banner-flip { from { opacity: .15; transform: perspective(900px) rotateY(-72deg); } to { opacity: 1; transform: perspective(900px) rotateY(0); } }

.banners-card { max-width: 1120px; }
.modules-card { max-width: 1120px; }
.modules-table td:last-child { min-width: 13rem; }
.room-tabs { display: flex; flex-wrap: wrap; gap: .5rem; margin: .5rem 0 1rem; }
.room-tabs-label { display: inline-flex; align-items: center; font-weight: 700; color: var(--heading); }
.room-tabs a { display: inline-flex; align-items: center; gap: .35rem; padding: .55rem .85rem; border: 1px solid var(--line); border-radius: 7px; color: var(--primary); background: #f7fbfd; opacity: 1; visibility: visible; }
.room-tabs a.is-active { color: #7d2525; background: #fff2f2; border-color: #a95050; font-weight: 700; }
.room-tabs a small { padding: .08rem .32rem; color: inherit; background: rgba(125, 37, 37, .1); border-radius: 99px; font-size: .72em; }
.room-slot-note { margin: .5rem 0 1rem; color: var(--muted); }
.current-room-label { color: #7d2525; }
.booking-form-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(15rem, .42fr); gap: 1rem; align-items: start; }
.meeting-room-booking-card { width: 100%; max-width: none; }
.booking-today-card { border: 1px solid var(--line); border-radius: 8px; padding: 1rem; background: #fbfcfd; }
.booking-today-card h2 { margin: 0 0 .2rem; font-size: 1.05rem; color: var(--heading); }
.booking-today-date { margin: 0 0 .75rem; color: var(--muted); font-size: .88rem; }
.booking-today-list { list-style: none; padding: 0; margin: 0; }
.booking-today-list li { padding: .55rem 0; border-top: 1px solid var(--line); }
.booking-today-list time { display: block; font-weight: 700; color: var(--primary); }
.booking-today-list span { display: block; margin-top: .15rem; font-size: .9rem; color: var(--text); word-break: break-word; }
.meeting-room-day-bookable { cursor: pointer; }
.meeting-room-day-bookable:hover { background: #f0f8fc; }
.meeting-room-day-book-link { position: absolute; inset: 0; z-index: 1; }
.meeting-room-booking-chip { position: relative; z-index: 2; }
.meeting-room-table-view { display: none; }
.meeting-room-mobile-table small { display: block; margin-top: .18rem; color: var(--muted); font-size: .78rem; }
.meeting-booking-detail { display: grid; grid-template-columns: 7rem 1fr; gap: .7rem 1rem; margin: 1.25rem 0; }
.meeting-booking-detail dt { font-weight: 750; color: var(--ink); }
.meeting-booking-detail dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 680px) { .meeting-booking-detail { grid-template-columns: 1fr; gap: .2rem; } }
.banner-carousel-settings { display: flex; align-items: end; flex-wrap: wrap; gap: .65rem 1rem; margin: 1rem 0 0; padding: .8rem 1rem; background: #f4f9fc; border: 1px solid var(--line); border-radius: 9px; }
.banner-carousel-settings .form-field { width: min(100%, 18rem); margin: 0; }
.banner-carousel-settings .button { margin: 0; }
.banner-list { display: grid; gap: 1rem; margin-top: 1.5rem; }
.banner-list-item { display: grid; grid-template-columns: minmax(240px, 42%) 1fr auto; gap: 1rem; align-items: center; padding: 1rem; background: #f8fbfc; border: 1px solid var(--line); border-radius: 10px; }
.banner-list-item > img { width: 100%; aspect-ratio: 1920 / 350; object-fit: cover; border: 1px solid #b8c8d1; border-radius: 4px; background: #e5edf1; }
.banner-list-content h2 { margin: 0; font-size: 1.15rem; }
.banner-list-content p { margin: .3rem 0; overflow-wrap: anywhere; }
.banner-list-actions { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; }
.banner-list-actions .button, .banner-list-actions form { margin: 0; }
.banner-edit-preview { display: block; width: 100%; margin: 1rem 0 .25rem; aspect-ratio: 1920 / 350; object-fit: cover; border: 1px solid var(--line); border-radius: 5px; }
.empty-state { padding: 1.5rem; color: var(--muted); background: #f8fbfc; border: 1px dashed #b6c7d0; border-radius: 9px; text-align: center; }

@media (max-width: 680px) {
    .html-editor, #content_html:not(.editor-source-hidden) { width: 100%; max-width: none; }
    .social-video-grid { grid-template-columns: minmax(0, 1fr); }
    .header-inner { align-items: center; flex-direction: row; padding: .85rem 0; gap: .65rem; }
    .brand { flex: 0 0 auto; white-space: nowrap; font-size: 1.1rem; }
    .account-nav { flex: 1 1 auto; justify-content: flex-end; gap: .45rem; font-size: .88rem; }
    .page-shell { margin-top: 1rem; }
    .page-shell.forum-topic-editor-shell { width: calc(100% - 2rem); }
    .form-actions .button { width: 100%; text-align: center; }
    .login-page { padding: 1.4rem 1rem; }
    .login-card { border-radius: 14px; }
    .admin-hero, .admin-section-heading { align-items: stretch; flex-direction: column; }
    .admin-hero-actions .button { width: 100%; text-align: center; }
    .admin-section-heading > p { text-align: left; }
    .admin-stat-grid { grid-template-columns: 1fr; }
    .file-list-heading { align-items: flex-start; flex-direction: column; }
    .site-menu-inner { width: 100%; display: block; }
    .site-mobile-navigation { display: block; width: 100%; }
    .site-mobile-navigation > summary { display: flex; align-items: center; gap: .55rem; min-height: 3rem; padding: 0 1rem; color: #fff; cursor: pointer; font-weight: 800; list-style: none; }
    .site-mobile-navigation > summary::-webkit-details-marker { display: none; }
    .site-mobile-menu-icon { display: grid; width: 1.8rem; height: 1.8rem; place-items: center; border: 1px solid rgba(255,255,255,.65); border-radius: .35rem; font-size: 1.25rem; line-height: 1; }
    .site-mobile-navigation[open] > summary { background: rgba(255,255,255,.12); }
    .site-mobile-navigation:not([open]) > .site-menu-groups { display: none; }
    .site-menu-groups { width: 100%; flex-direction: column; gap: 0; padding: .2rem 0 .45rem; background: #094b75; }
    .site-menu-group { width: 100%; min-height: 2.8rem; }
    .site-menu-group-heading, .site-menu-group-link { min-height: 2.8rem; }
    .site-menu-group-link { padding: 0 .5rem; font-size: 1rem; }
    .site-menu-group-toggle { width: 2.6rem; height: 2.8rem; }
    .site-menu-group-name { min-height: 2.8rem; padding: 0 .5rem; font-size: 1rem; }
    .site-menu-group > .site-menu-list { position: static; margin-left: .5rem; box-shadow: none; }
    .site-menu-item > a, .site-menu-item > span { padding: .4rem .5rem; }
    .site-menu-item > .site-menu-list { position: static; margin-left: .5rem; box-shadow: none; }
    .editor-settings-grid, .page-metadata-grid, .editor-basic-fields, .editor-inline-fields, .editor-inline-fields-three, .editor-inline-fields-four, .booking-form-grid { grid-template-columns: 1fr; }
    .home-content-layout, .home-content-layout.has-left-column, .home-content-layout.has-right-column, .home-content-layout.has-left-column.has-right-column, .public-content-layout { grid-template-columns: 1fr; }
    .home-middle-row { grid-template-columns: 1fr; }
    .home-menu-panel { display: none; }
    .checkbox-row { align-items: flex-start; flex-direction: column; gap: .2rem; }
    .public-page-heading { display: flex; align-items: stretch; flex-direction: column; gap: .75rem; }
    .page-edit-link { position: static; text-align: center; }
    .editor-tool-group { max-width: 100%; }
    .editor-select-group select { min-width: 6.25rem; }
    .home-banner-control { width: 2rem; height: 2rem; font-size: 1.6rem; }
    .home-banner-prev { left: .55rem; }
    .home-banner-next { right: .55rem; }
    .home-banner-dots { right: .55rem; bottom: .45rem; }
    .banner-list-item { grid-template-columns: 1fr; }
    .banner-list-actions { justify-content: flex-start; }
    .banner-carousel-settings { align-items: stretch; }
    .block-layout-board, .block-layout-middle, .block-fixed-area { grid-template-columns: 1fr; }
    .block-layout-middle .block-layout-primary { grid-column: auto; }
    .block-template-adder { align-items: stretch; }
    .block-template-controls, .block-template-field-group { align-items: stretch; flex-direction: column; }
    .block-template-controls > label, .block-template-field-group > label { display: grid; gap: .28rem; }
    .block-template-controls > label select, .block-template-field-group > label:first-child select, .block-template-field-group .block-template-position select, .block-template-controls .button { width: 100%; }
    .block-layout-column { min-height: 14rem; }
    .block-dropzone { min-height: 9rem; }
    .calendar-toolbar { align-items: stretch; flex-direction: column; }
    .calendar-toolbar .button { width: 100%; text-align: center; }
    .calendar-month-navigation { align-items: center; flex-direction: row; gap: .35rem; }
    .calendar-month-navigation .button { width: auto; min-height: 2.35rem; padding: .38rem .5rem; font-size: .82rem; text-align: center; white-space: nowrap; }
    .calendar-month-navigation strong { flex: 1; font-size: 1rem; text-align: center; white-space: nowrap; }
    .calendar-search { grid-template-columns: 1fr; }
    .announcement-search { flex-direction: column; }
    .news-category-filter select { width: 100%; max-width: none; }
    .announcement-search .button { width: 100%; text-align: center; }
    .registration-search { flex-direction: column; }
    .registration-search .button { width: 100%; text-align: center; }
    .registration-event-card { align-items: stretch; flex-direction: column; padding: 1rem; }
    .registration-event-actions { max-width: none; justify-content: stretch; }
    .registration-event-actions .button { flex: 1 1 100%; text-align: center; }
    .registration-event-facts, .registration-form-grid { grid-template-columns: 1fr; }
    .contact-details { grid-template-columns: 1fr; }
    .album-marquee-track { margin: -1rem; }
    .album-marquee-strip img { max-width: 82vw; }
    .album-grid, .album-category-folder-grid { grid-template-columns: 1fr; }
    .video-grid { grid-template-columns: 1fr; }
    .album-category-filter { align-items: stretch; flex-direction: column; }
    .album-category-filter select { width: 100%; }
    .registration-field-full { grid-column: auto; }
    .registration-admin-table, .registration-roster-table { min-width: 760px; }
    .calendar-month-view { display: none; }
    .calendar-table-view { display: block; }
    .meeting-room-table-view { display: block; }
    .meeting-room-table-view .table-wrap { overflow: visible; }
    .meeting-room-mobile-table { width: 100%; min-width: 0; table-layout: fixed; }
    .meeting-room-mobile-table th, .meeting-room-mobile-table td { padding: .55rem .4rem; overflow-wrap: anywhere; }
    .meeting-room-mobile-table th:first-child, .meeting-room-mobile-table td:first-child { width: 5.6rem; white-space: nowrap; }
    .meeting-room-mobile-table th:nth-child(2), .meeting-room-mobile-table td:nth-child(2) { width: 5rem; white-space: nowrap; }
    .calendar-table-view .table-wrap { overflow: visible; }
    .calendar-table-view .calendar-event-table { width: 100%; min-width: 0; table-layout: fixed; }
    .calendar-table-view .calendar-event-table th:first-child, .calendar-table-view .calendar-event-table td:first-child { width: 7.25rem; white-space: nowrap; }
    .calendar-table-view .calendar-mobile-hide, .calendar-table-view .calendar-date-desktop { display: none; }
    .calendar-table-view .calendar-date-mobile { display: inline; }
    .calendar-table-view .calendar-title-desktop, .calendar-table-view .calendar-event-status { display: none; }
    .calendar-table-view .calendar-title-mobile { display: inline; }
    .announcement-title-desktop { display: none; }
    .announcement-title-mobile { display: inline; }
    .calendar-event-meta { grid-template-columns: 1fr; }
}

@media (max-width: 380px) {
    .captcha-row { align-items: flex-start; flex-direction: column; }
    .captcha-refresh { width: 180px; justify-content: center; }
}

/* Forum discussion posts remain distinct and readable on both desktop and mobile. */
.forum-reply { border-top: 1px solid var(--border, #d7e1e9); margin-top: 1.1rem; padding-top: 1.1rem; }
.forum-reply .page-html-content { overflow-wrap: anywhere; }
.news-replies { margin-top: 1.25rem; }
.news-replies > h2 { margin-top: 0; font-size: 1.18rem; }
.news-reply { border-top: 1px solid var(--line); margin-top: 1.1rem; padding-top: 1.1rem; }
.news-reply-actions { gap: .8rem; margin-top: .65rem; font-size: .9rem; }

/* Account management: organization navigation and member list. */
.account-management-layout { display: grid; grid-template-columns: minmax(14rem, 28%) minmax(0, 1fr); gap: 1rem; align-items: start; }
.account-organization-panel { position: sticky; top: 1rem; padding: 1rem; }
.account-organization-panel .page-toolbar { gap: .6rem; }
.account-organization-panel h1 { margin: 0; font-size: 1.35rem; }
.organization-list { display: grid; gap: .35rem; margin-top: .9rem; }
.organization-list a { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .62rem .7rem; color: var(--ink); background: #f6fafc; border: 1px solid #dbe7ee; border-radius: .5rem; text-decoration: none; }
.organization-list a:hover, .organization-list a:focus, .organization-list a.is-active { color: #fff; background: var(--brand); border-color: var(--brand); }
.organization-list small { min-width: 1.45rem; padding: .05rem .35rem; color: inherit; background: color-mix(in srgb, currentColor 11%, transparent); border-radius: 999px; text-align: center; font-variant-numeric: tabular-nums; }
.account-users-panel { min-width: 0; }
.login-card-footer { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem .9rem; }

@media (max-width: 800px) {
    .account-management-layout { grid-template-columns: 1fr; }
    .account-organization-panel { position: static; }
}
.account-row-actions { display: inline-flex; align-items: center; flex-wrap: wrap; gap: .8rem; white-space: nowrap; }
.account-row-actions .inline-form { display: inline-flex; }

/* XML data manager */
.xml-data-layout { display: grid; grid-template-columns: minmax(16rem, .85fr) minmax(0, 1.35fr); gap: 1rem; align-items: start; }
.xml-record-detail, .xml-record-list { min-width: 0; padding: 1rem; border: 1px solid var(--line); border-radius: .65rem; background: #fbfdfe; }
.xml-record-detail h2, .xml-record-list h2 { margin: 0; color: var(--heading); font-size: 1.16rem; }
.xml-field-list { display: grid; grid-template-columns: minmax(6rem, .42fr) minmax(0, 1fr); gap: .45rem .8rem; margin: 1rem 0; }
.xml-field-list dt { font-weight: 750; color: var(--heading); overflow-wrap: anywhere; }
.xml-field-list dd { margin: 0; overflow-wrap: anywhere; }
.xml-edit-fields { display: grid; gap: .65rem; margin: 1rem 0; }
.xml-edit-fields label { display: grid; gap: .25rem; font-weight: 750; color: var(--heading); }
.xml-edit-fields textarea { width: 100%; min-height: 2.5rem; padding: .5rem .6rem; color: var(--ink); background: #fff; border: 1px solid #aebdc8; border-radius: .35rem; font: inherit; resize: vertical; }
.xml-edit-fields textarea:focus { border-color: var(--brand); outline: 3px solid rgba(11,101,159,.16); }
.xml-search { display: flex; align-items: center; gap: .5rem; }
.xml-search input { width: min(17rem, 45vw); }
.xml-record-list tr.is-selected td { background: #e6f4fb; }
.xml-record-list td { max-width: 16rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.xml-source-editor { width: 100%; min-height: 22rem; padding: .8rem; color: #18334a; background: #0b1822; border: 1px solid #27475e; border-radius: .4rem; color: #e8f4fa; font: .9rem/1.45 Consolas, Monaco, monospace; tab-size: 2; }
.xml-column-list { display: grid; gap: .6rem; margin: 1rem 0; }
.xml-column-row { display: grid; grid-template-columns: 2rem 5rem minmax(12rem, 1fr) minmax(10rem, .8fr); align-items: center; gap: .7rem; padding: .65rem .75rem; border: 1px solid var(--line); border-radius: .45rem; background: #f8fbfc; cursor: grab; }
.xml-column-row.is-dragging { opacity: .45; }
.xml-column-row label { margin: 0; }
.xml-drag-handle { color: var(--primary); font-size: 1.25rem; text-align: center; cursor: grab; }
.xml-column-row small { overflow-wrap: anywhere; }
.xml-pagination { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: 1rem; }
.xml-pagination a { display: inline-grid; min-width: 2rem; min-height: 2rem; place-items: center; padding: .2rem .45rem; border: 1px solid var(--line); border-radius: .3rem; text-decoration: none; }
.xml-pagination a.is-active { color: #fff; background: var(--primary); border-color: var(--primary); }
.xml-share-list { display: grid; gap: .55rem; margin: 1rem 0; }
.xml-share-filter { display: flex; flex-wrap: wrap; align-items: end; gap: .7rem; margin: 1rem 0; padding: .75rem; border: 1px solid var(--line); border-radius: .45rem; background: #f8fbfc; }
.xml-share-filter label { display: grid; gap: .3rem; min-width: min(15rem, 100%); font-weight: 750; color: var(--heading); }
.xml-share-filter input, .xml-share-filter select { min-height: 2.4rem; padding: .35rem .5rem; color: var(--ink); border: 1px solid #aebdc8; border-radius: .35rem; background: #fff; font: inherit; }
.xml-share-filter .form-actions { margin: 0; }
.xml-share-filter small { width: 100%; color: var(--muted); }
.xml-share-list .single-checkbox { align-items: baseline; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: .4rem; background: #f8fbfc; }
.xml-share-list small { color: var(--muted); }
.xml-share-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: .4rem; background: #f8fbfc; }
.xml-share-row[hidden] { display: none !important; }
.xml-share-row span { display: grid; gap: .15rem; min-width: 0; }
.xml-share-row select { width: 8rem; min-height: 2.4rem; padding: .35rem; border: 1px solid #aebdc8; border-radius: .35rem; background: #fff; }
@media (max-width: 780px) { .xml-data-layout { grid-template-columns: 1fr; } .xml-column-row { grid-template-columns: 1.7rem 4.7rem 1fr; } .xml-column-row small { grid-column: 3; } .xml-search { width: 100%; } .xml-search input { flex: 1; width: auto; } }
