/* Fundraiser Room & Seating Planner — Fundraising Hub only. */
.room-section {
    background: #e8eef4;
    padding: 3.2rem 0 4.5rem;
    overflow-x: clip;
}
.room-section__legacy-anchor {
    position: relative;
    top: -1px;
    display: block;
    height: 0;
}
.room-section__inner {
    width: min(1180px, calc(100% - 2rem));
    margin: 0 auto;
}
.room-section__intro {
    max-width: 46rem;
    margin: 0 auto 1.5rem;
    text-align: center;
}
.room-section__eyebrow {
    margin: 0 0 0.4rem;
    font-size: 0.78rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #4b3e8e;
    font-weight: 700;
}
.room-section__title {
    margin: 0 0 0.6rem;
    color: #2d2658;
    font-size: clamp(1.8rem, 3vw, 2.4rem);
    line-height: 1.15;
}
.room-section__subtitle {
    margin: 0 0 0.7rem;
    color: #2d2658;
    font-size: 1.15rem;
    font-weight: 600;
}
.room-section__lead {
    margin: 0;
    color: #445066;
}

.room-app-wrap {
    width: min(96vw, 1500px);
    max-width: 100%;
    margin: 0 auto;
    padding: 0 12px;
    box-sizing: border-box;
}
.room-app {
    background: #fff;
    border: 1px solid #d5dde8;
    box-shadow: 0 10px 30px rgba(45, 38, 88, 0.06);
    padding: 14px;
    scroll-margin-top: calc(var(--fundraising-site-header-offset, 64px) + var(--fundraising-subnav-height, 56px));
}

.room-workspace {
    --room-workspace-h: calc(100dvh - var(--fundraising-site-header-offset, 64px) - var(--fundraising-subnav-height, 56px) - 1.1rem - 50px);
    display: flex;
    flex-direction: column;
    height: var(--room-workspace-h);
    min-height: 0;
    min-width: 0;
    scroll-margin-top: calc(var(--fundraising-site-header-offset, 64px) + var(--fundraising-subnav-height, 56px) + 8px);
}

.room-notice {
    flex: 0 0 auto;
    margin: 0 0 8px;
    background: #eaf6f8;
    border: 1px solid #b7dbe3;
    color: #1f6b7d;
    padding: 0.35rem 0.7rem;
    font-size: 0.8rem;
}

.room-pane-tabs {
    display: none;
    flex: 0 0 auto;
    gap: 0.35rem;
    margin: 0 0 8px;
}
.room-pane-tabs__btn {
    appearance: none;
    flex: 1;
    border: 1px solid #c5d0de;
    background: #fff;
    color: #2d2658;
    font: inherit;
    font-weight: 600;
    font-size: 0.82rem;
    padding: 0.4rem 0.5rem;
    cursor: pointer;
}
.room-pane-tabs__btn.is-active {
    background: #2d2658;
    border-color: #2d2658;
    color: #fff;
}

.room-shell {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    display: grid;
    grid-template-columns: minmax(250px, 280px) minmax(0, 1fr) minmax(270px, 310px);
    gap: 0;
    border: 1px solid #d5dde8;
    background: #eef2f6;
}

.room-col {
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    background: #f8fafc;
}
.room-col--left,
.room-col--right {
    border-right: 1px solid #d5dde8;
}
.room-col--right {
    border-right: 0;
    border-left: 1px solid #d5dde8;
}
.room-col--center {
    background: #e7edf3;
}
.room-col__scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 14px 16px 10px;
}
.room-col__foot {
    flex: 0 0 auto;
    padding: 10px 14px 12px;
    border-top: 1px solid #d5dde8;
    background: #f8fafc;
}
.room-col__head {
    flex: 0 0 auto;
    padding: 10px 14px 12px;
    border-bottom: 1px solid #d5dde8;
    background: #f8fafc;
}
.room-group {
    padding: 0 0 12px;
    margin: 0 0 12px;
    border-bottom: 1px solid #e3eaf2;
}
.room-group:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: 0;
}
.room-group__title {
    margin: 0 0 0.45rem;
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #2d2658;
    font-weight: 800;
}

.room-units-toggle {
    appearance: none;
    display: inline-flex;
    align-items: stretch;
    align-self: flex-end;
    margin: 0;
    padding: 0;
    border: 1px solid #c5d0de;
    background: #fff;
    color: #2d2658;
    font: inherit;
    font-weight: 600;
    font-size: 0.78rem;
    line-height: 1.2;
    cursor: pointer;
    flex: 0 0 auto;
    height: 1.55rem;
    box-sizing: border-box;
}
.room-units-toggle span {
    display: grid;
    place-items: center;
    padding: 0 0.45rem;
    min-width: 1.7rem;
    height: 100%;
    box-sizing: border-box;
}
.room-units-toggle span.is-active {
    background: #f5a64a;
    color: #2d2658;
}
.room-btn {
    appearance: none;
    border: 1px solid #c5d0de;
    background: #fff;
    color: #2d2658;
    font: inherit;
    font-weight: 600;
    padding: 0.28rem 0.5rem;
    font-size: 0.78rem;
    cursor: pointer;
}
.room-units {
    display: none;
}
.room-dims {
    display: flex;
    align-items: flex-end;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}
.room-dim {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    color: #2d2658;
    line-height: 1.2;
}
.room-dim input {
    width: 3.5ch;
    height: 1.55rem;
    min-width: 0;
    font: inherit;
    font-weight: 600;
    padding: 0 0.2rem;
    border: 1px solid #c5d0de;
    background: #fff;
    color: #2d2658;
    text-align: center;
    box-sizing: border-box;
    -moz-appearance: textfield;
}
.room-dim input::-webkit-outer-spin-button,
.room-dim input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.room-units__btn.is-active,
.room-btn--primary {
    background: #f5a64a;
    border-color: #f5a64a;
    color: #2d2658;
}
.room-btn--ghost {
    background: transparent;
}
.room-btn--block {
    width: 100%;
    display: block;
}
.room-btn--block[hidden] {
    display: none !important;
}
.room-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.room-btn-row {
    display: flex;
    gap: 0.35rem;
}
.room-btn-row .room-btn {
    flex: 1;
}
.room-btn-row--wrap {
    flex-wrap: wrap;
}
.room-btn-row--wrap .room-btn {
    flex: 1 1 calc(50% - 0.2rem);
}
.room-fields--2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.45rem;
}
.room-stage-row {
    display: flex;
    align-items: flex-end;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}
.room-stage-row .room-field {
    flex: 1 1 auto;
    min-width: 0;
    margin-bottom: 0;
}
.room-stage-row .room-field select {
    height: 1.55rem;
    padding: 0 0.4rem;
}
.room-stage-row .room-dims {
    flex: 0 0 auto;
    margin-bottom: 0;
}
.room-field {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 0.78rem;
    color: #2d2658;
    font-weight: 700;
    margin-bottom: 0.55rem;
    line-height: 1.2;
}
.room-field input,
.room-field select {
    font: inherit;
    font-weight: 500;
    padding: 0.32rem 0.4rem;
    border: 1px solid #c5d0de;
    background: #fff;
    color: #2d2658;
    width: 100%;
    box-sizing: border-box;
}
.room-field input[type="number"] {
    width: 3.5ch;
    height: 1.55rem;
    min-width: 0;
    font-weight: 600;
    padding: 0 0.2rem;
    text-align: center;
    box-sizing: border-box;
    -moz-appearance: textfield;
}
.room-field input[type="number"]::-webkit-outer-spin-button,
.room-field input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.room-extras {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.22rem;
    margin-bottom: 0.55rem;
    font-weight: 500;
    font-size: 0.78rem;
    color: #334155;
}
.room-setup__error {
    color: #b42318;
    font-weight: 600;
    font-size: 0.78rem;
    margin: 0 0 0.4rem;
}
.room-col__foot .room-btn--ghost {
    margin-top: 0.35rem;
}
[data-room-create] {
    margin-top: 0.15rem;
}
[data-room-edit-setup]:not([hidden]) {
    margin-top: 0.35rem;
}

.room-toolbar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 0.12rem;
    padding: 0.18rem 0.4rem;
    background: #eef3f7;
    border-bottom: 1px solid #d5dde8;
    min-height: 2rem;
    position: relative;
    z-index: 4;
    overflow: visible;
}
.room-tool {
    appearance: none;
    width: 1.7rem;
    height: 1.7rem;
    padding: 0;
    display: grid;
    place-items: center;
    border: 1px solid transparent;
    background: transparent;
    color: #2d2658;
    cursor: pointer;
    border-radius: 4px;
}
.room-tool.is-on {
    background: #f5a64a;
    border-color: #f5a64a;
}
.room-tool:hover {
    background: #fff;
    border-color: #c5d0de;
}
.room-tool.is-on:hover {
    background: #f5a64a;
    border-color: #e09030;
}
.room-tool svg {
    width: 1rem;
    height: 1rem;
    display: block;
}
.room-add-wrap {
    position: relative;
    flex: 0 0 auto;
}
.room-tool-select {
    appearance: auto;
    height: 1.7rem;
    width: 8.1rem;
    padding: 0 0.28rem;
    border: 1px solid transparent;
    border-radius: 4px;
    background: transparent;
    color: #2d2658;
    font: inherit;
    font-size: 0.68rem;
    font-weight: 700;
    cursor: pointer;
}
.room-tool-select:hover,
.room-tool-select:focus {
    background: #fff;
    border-color: #c5d0de;
    outline: none;
}
.room-toolbar__sep {
    width: 1px;
    height: 1rem;
    background: #c5d0de;
    margin: 0 0.28rem;
}
.room-toolbar-meta {
    display: none;
    align-items: center;
    min-width: 0;
    flex: 1 1 auto;
}
.room-app.is-editing .room-toolbar-meta {
    display: flex;
}
.room-toolbar-stats {
    display: flex;
    align-items: center;
    min-width: 0;
    overflow-x: auto;
    font-size: 0.68rem;
    font-weight: 600;
    color: #5b6b80;
    letter-spacing: 0.01em;
}
.room-toolbar-stats > span {
    display: inline-flex;
    align-items: center;
    gap: 0.18rem;
    padding: 0 0.38rem;
    white-space: nowrap;
}
.room-toolbar-stats > span + span {
    border-left: 1px solid #c5d0de;
}
.room-toolbar-stats strong {
    font-size: 0.7rem;
    color: #2d2658;
}
.room-toolbar-stats > .room-toolbar-seats {
    border-left: 0;
    border-radius: 3px;
    margin-left: 0.2rem;
    padding: 0.1rem 0.42rem;
}
.room-toolbar-seats.is-ok {
    background: #c6efd6;
    color: #0f6b3e;
}
.room-toolbar-seats.is-ok strong {
    color: #0f6b3e;
}
.room-toolbar-seats.is-short {
    background: #f7c4bf;
    color: #7a1c16;
}
.room-toolbar-seats.is-short strong {
    color: #7a1c16;
}
.room-canvas-wrap {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
    position: relative;
    overflow: hidden;
    background: #dce5ee;
    touch-action: none;
}
.room-canvas-wrap.is-filled {
    cursor: grab;
}
.room-canvas-wrap.is-panning {
    cursor: grabbing;
}
.room-canvas-empty {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    margin: 0;
    padding: 1.5rem;
    color: #5b6b80;
    font-weight: 600;
    text-align: center;
    pointer-events: none;
    z-index: 1;
}
.room-canvas-wrap.is-filled .room-canvas-empty {
    display: none;
}
.room-svg {
    width: 100%;
    height: 100%;
    display: block;
    min-width: 0;
    min-height: 0;
    background: transparent;
    touch-action: none;
}
.room-canvas-wrap.is-filled .room-svg {
    cursor: grab;
}
.room-canvas-wrap.is-panning .room-svg {
    cursor: grabbing;
}
.room-hint {
    flex: 0 0 auto;
    margin: 0;
    padding: 0.28rem 0.7rem;
    color: #5b6b80;
    font-size: 0.72rem;
    background: #eef3f7;
    border-top: 1px solid #d5dde8;
}

.room-side__name {
    font-weight: 700;
    color: #2d2658;
    margin: 0 0 0.2rem;
    font-size: 0.92rem;
}
.room-side__meta,
.room-side__status,
.room-side__empty {
    margin: 0 0 0.5rem;
    color: #4b5568;
    font-size: 0.78rem;
}
.room-chair-step {
    margin: 0.35rem 0 0.35rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: #2d2658;
}
.room-dance-size {
    margin: 0.15rem 0 0.55rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: #2d2658;
}
.room-dims--inline {
    margin: 0.28rem 0 0;
}
.room-table-size {
    margin: 0.15rem 0 0.55rem;
}
.room-chair-step__row {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.25rem;
}
.room-chair-step__row strong {
    min-width: 1.4rem;
    text-align: center;
}
.room-status-block {
    margin-top: 0.55rem;
    padding: 0.5rem 0.55rem;
    font-size: 0.76rem;
}
.room-status-block strong {
    display: block;
    margin-bottom: 0.2rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    font-size: 0.72rem;
}
.room-status-block p {
    margin: 0 0 0.25rem;
    color: inherit;
    font-size: inherit;
}
.room-status-block__hint {
    color: #5b6b80;
    font-weight: 500;
}
.room-status-block--warn {
    background: #fde8e6;
    border: 1px solid #f5b5ae;
    color: #7a1c16;
}
.room-status-block--ok {
    background: #e8f8ef;
    border: 1px solid #9fd4b3;
    color: #0f6b3e;
}
.room-images-cta p {
    color: #5b6b80;
    margin: 0.35rem 0 0.28rem;
    font-size: 0.74rem;
}
.room-images-cta .room-btn--primary {
    margin: 0;
}
[data-room-download-layout] {
    margin: 0.35rem 0 0;
}
[data-room-save]:not([hidden]) {
    margin-top: 0.35rem;
}
.room-col__head .room-status-block,
.room-col__foot .room-status-block {
    margin: 0.5rem 0 0;
    padding: 0.4rem 0.5rem;
}

.room-below {
    width: 100%;
    margin: 0.9rem 0 0;
    padding: 0;
}
.room-report {
    border: 1px solid #dbe3ee;
    padding: 1rem 1.15rem 1.2rem;
    background: #fff;
}
.room-report__head {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 0.8rem;
    align-items: center;
    margin-bottom: 0.6rem;
}
.room-report__head h3 {
    margin: 0;
    color: #2d2658;
}
.room-report__stale {
    margin: 0;
    color: #c05621;
    font-weight: 700;
}
.room-report h4 {
    margin: 0.7rem 0 0.25rem;
    color: #4b3e8e;
}
.room-report p,
.room-report li {
    color: #3d4a5c;
}
.room-gallery-app {
    margin-top: 1.1rem;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.75rem;
}
.room-gallery-app figure {
    margin: 0;
    background: #f4f7fb;
    border: 1px solid #dbe3ee;
}
.room-gallery-app img {
    width: 100%;
    height: auto;
    display: block;
    cursor: zoom-in;
    background: #e8eef4;
    min-height: 8rem;
    object-fit: cover;
}
.room-gallery-app figcaption,
.room-gallery figure figcaption {
    padding: 0.45rem 0.6rem;
    font-weight: 600;
    color: #2d2658;
    font-size: 0.88rem;
}
.room-gallery-share {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.room-disclaimer {
    margin: 0.75rem 0 0;
    font-size: 0.75rem;
    color: #6b778c;
    line-height: 1.4;
}
.room-aeo {
    margin-top: 2.4rem;
}
.room-aeo__title {
    color: #2d2658;
    font-size: 1.5rem;
    margin: 0 0 1rem;
}
.room-aeo__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
.room-aeo article {
    background: #fff;
    border: 1px solid #d5dde8;
    padding: 1rem 1.05rem;
}
.room-aeo h3 {
    margin: 0 0 0.4rem;
    color: #2d2658;
    font-size: 1.05rem;
}
.room-aeo p {
    margin: 0;
    color: #445066;
}
.room-modal {
    position: fixed;
    inset: 0;
    background: rgba(24, 28, 42, 0.55);
    z-index: 80;
    display: grid;
    place-items: center;
    padding: 1rem;
}
[data-room-edit-setup][hidden],
.room-btn[hidden],
.room-modal[hidden],
.room-setup__error[hidden],
.room-fit-alert[hidden],
.room-status-block[hidden],
.room-notice[hidden],
.room-report__stale[hidden],
.room-gallery-app[hidden],
.room-obs-list[hidden],
[data-room-sel-detail][hidden],
[data-room-chair-controls][hidden],
[data-room-remove-chair][hidden],
[data-room-table-size][hidden],
[data-room-dance-size][hidden],
[data-gate-name][hidden],
[data-gate-email][hidden],
[data-gate-phone][hidden] {
    display: none !important;
}
.room-modal__dialog {
    background: #fff;
    width: min(28rem, 100%);
    padding: 1.3rem 1.4rem 1.5rem;
    position: relative;
    border: 1px solid #d5dde8;
}
.room-modal__close {
    position: absolute;
    top: 0.4rem;
    right: 0.5rem;
    border: 0;
    background: transparent;
    font-size: 1.6rem;
    cursor: pointer;
    color: #2d2658;
}
.room-modal h2 {
    margin: 0 0 0.5rem;
    color: #2d2658;
}
.room-wait {
    z-index: 90;
}
.room-wait__dialog {
    text-align: center;
    padding: 2rem 1.6rem 1.8rem;
}
.room-wait__spin {
    width: 2.2rem;
    height: 2.2rem;
    margin: 0 auto 1rem;
    border: 3px solid #d5dde8;
    border-top-color: #f5a64a;
    border-radius: 50%;
    animation: room-spin 0.8s linear infinite;
}
.room-wait__dialog h2 {
    margin: 0 0 0.45rem;
    font-size: 1.25rem;
}
.room-wait__dialog p {
    margin: 0;
    color: #445066;
    font-size: 0.95rem;
    line-height: 1.45;
}
.room-wait__time {
    margin-top: 0.7rem;
    font-weight: 700;
    color: #2d2658;
    font-variant-numeric: tabular-nums;
}
@keyframes room-spin {
    to { transform: rotate(360deg); }
}
.room-obs-list {
    list-style: none;
    padding: 0;
    margin: 0.4rem 0 0;
}
.room-obs-list li {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    font-size: 0.82rem;
}
.room-gallery-page .room-gallery {
    background: #e8eef4;
    padding: 3rem 1rem 4rem;
}
.room-gallery__inner {
    width: min(980px, 100%);
    margin: 0 auto;
}
.room-gallery__title {
    color: #2d2658;
}
.room-gallery__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.8rem;
    margin-top: 1.2rem;
}
.room-gallery__card {
    margin: 0;
    background: #fff;
    border: 1px solid #d5dde8;
}
.room-gallery__card img {
    width: 100%;
    height: auto;
    display: block;
}

@media (min-width: 1100px) {
    [data-room-edit-setup] {
        display: none !important;
    }
}

@media (min-width: 1100px) and (max-width: 1399px) {
    .room-shell {
        grid-template-columns: minmax(220px, 248px) minmax(0, 1fr) minmax(240px, 268px);
    }
}

@media (max-width: 1099px) {
    .room-workspace {
        height: auto;
        min-height: 0;
        max-height: none;
    }
    .room-pane-tabs {
        display: flex;
    }
    .room-shell {
        display: block;
        position: relative;
        min-height: min(68dvh, 640px);
        overflow: hidden;
    }
    .room-col--center {
        min-height: min(62dvh, 580px);
        height: min(68dvh, 640px);
    }
    .room-col--left,
    .room-col--right {
        display: none;
        position: absolute;
        inset: 0;
        z-index: 8;
        width: min(360px, 92%);
        max-width: 100%;
        border: 0;
        box-shadow: 0 10px 30px rgba(45, 38, 88, 0.18);
    }
    .room-col--right {
        right: 0;
        left: auto;
    }
    .room-shell.is-pane-setup .room-col--left,
    .room-shell.is-pane-edit .room-col--right {
        display: flex;
    }
}

@media (max-width: 767px) {
    .room-app {
        padding: 10px;
    }
    .room-pane-tabs {
        display: none;
    }
    .room-shell {
        display: flex;
        flex-direction: column;
        min-height: 0;
        overflow: visible;
    }
    .room-col--left,
    .room-col--right,
    .room-col--center {
        position: static;
        display: flex;
        width: 100%;
        box-shadow: none;
        border: 0;
        border-bottom: 1px solid #d5dde8;
    }
    .room-col--center {
        order: -1;
        height: auto;
        min-height: 0;
    }
    .room-canvas-wrap {
        height: min(78vw, 440px);
        min-height: 280px;
        flex: none;
    }
    .room-col__scroll {
        overflow: visible;
    }
    .room-gallery-app,
    .room-gallery__grid,
    .room-aeo__grid {
        grid-template-columns: 1fr;
    }
}
