:root {
    --lr-black: #090909;
    --lr-white: #fff;
    --lr-paper: #f5f5f2;
    --lr-gray: #666;
    --lr-light: #ecece8;
    --lr-line: #c9c9c3;
    --lr-accent: #dfff00;
    --lr-max: 1440px;
}

/* Legal document entry points */
.home-legal-links {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    align-items: center;
    margin-top: 28px;
    border-top: 1px solid var(--lr-black);
    padding-top: 20px;
}
.home-legal-links strong { font-size: 15px; }
.home-legal-links nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 12px 24px; }
.home-legal-links a { color: var(--lr-black); font-size: 14px; text-underline-offset: .25em; }
.legal-document-links {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 30px 0;
    border-top: 1px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
}
.legal-document-links a {
    display: flex;
    min-height: 130px;
    flex-direction: column;
    justify-content: space-between;
    border-right: 1px solid var(--lr-line);
    padding: 22px;
    color: var(--lr-black);
    text-decoration: none;
}
.legal-document-links a:last-child { border-right: 0; }
.legal-document-links a:hover { background: var(--lr-paper); }
.legal-document-links strong { font-size: 18px; }
.legal-document-links span { color: var(--lr-gray); font-size: 14px; }
.legal-document-preview { margin-top: 36px; }
.legal-document-preview > header { display: flex; justify-content: space-between; align-items: end; gap: 20px; margin-bottom: 12px; }
.legal-document-preview h2 { margin: 0; font-size: 26px; }
.legal-document-preview a { color: var(--lr-black); }
.legal-document-preview object { width: 100%; height: min(78vh, 980px); border: 1px solid var(--lr-line); background: var(--lr-paper); }

@media (max-width: 700px) {
    .site-footer nav { grid-column: 1 / -1; flex-wrap: wrap; gap: 8px 16px; }
    .home-legal-links { align-items: flex-start; flex-direction: column; gap: 12px; }
    .home-legal-links nav { justify-content: flex-start; }
    .legal-document-links { grid-template-columns: 1fr; }
    .legal-document-links a { min-height: 96px; border-right: 0; border-bottom: 1px solid var(--lr-line); padding: 18px 14px; }
    .legal-document-links a:last-child { border-bottom: 0; }
    .legal-document-preview object { height: 68vh; }
}

/* Member booking: time reads vertically, seats compare horizontally. */
.member-timeline .timeline-grid-time-rows {
    grid-template-columns: 82px repeat(var(--seat-count), minmax(78px, 1fr));
    grid-template-rows: 48px repeat(var(--time-count), 46px);
    width: max-content;
    min-width: 100%;
}
.timeline-grid-time-rows .timeline-corner {
    grid-row: 1;
    grid-column: 1;
    top: 0;
    left: 0;
    z-index: 8;
    min-height: 48px;
    padding: 5px;
    line-height: 1.1;
}
.timeline-grid-time-rows .timeline-corner strong,
.timeline-grid-time-rows .timeline-corner span { display: block; }
.timeline-grid-time-rows .timeline-corner strong { color: var(--lr-black); font-size: 13px; }
.timeline-grid-time-rows .timeline-corner span { margin-top: 3px; font-size: 11px; }
.timeline-grid-time-rows .timeline-seat {
    grid-row: 1;
    grid-column: var(--column);
    top: 0;
    left: auto;
    z-index: 6;
    min-width: 78px;
    min-height: 48px;
    padding: 4px 6px;
    white-space: nowrap;
    font-size: 13px !important;
}
.timeline-grid-time-rows .timeline-time {
    grid-row: var(--row);
    grid-column: 1;
    top: auto;
    left: 0;
    z-index: 5;
    min-width: 82px;
    min-height: 46px;
    padding: 4px 8px;
    justify-content: end;
    writing-mode: horizontal-tb !important;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.timeline-grid-time-rows .timeline-time.is-hour { color: var(--lr-black); font-size: 14px !important; font-weight: 800; }
.timeline-grid-time-rows .timeline-time.is-half-hour { color: #777; font-size: 12px !important; font-weight: 600; }
.timeline-grid-time-rows .timeline-slot {
    grid-row: var(--row);
    grid-column: var(--column);
    min-width: 78px;
    min-height: 46px;
    touch-action: pan-x;
}

@media (max-width: 700px) {
    .member-timeline { max-height: 64vh; }
    .member-timeline .timeline-grid-time-rows {
        grid-template-columns: 58px repeat(var(--seat-count), 52px);
        grid-template-rows: 38px repeat(var(--time-count), 34px);
    }
    .timeline-grid-time-rows .timeline-corner {
        min-height: 38px;
        padding: 3px;
    }
    .timeline-grid-time-rows .timeline-corner strong { font-size: 10px; }
    .timeline-grid-time-rows .timeline-corner span { font-size: 9px; }
    .timeline-grid-time-rows .timeline-seat {
        min-width: 52px;
        min-height: 38px;
        padding: 2px;
        font-size: 10px !important;
    }
    .timeline-grid-time-rows .timeline-time {
        min-width: 58px;
        min-height: 34px;
        padding: 2px 5px;
    }
    .timeline-grid-time-rows .timeline-time.is-hour { font-size: 11px !important; }
    .timeline-grid-time-rows .timeline-time.is-half-hour { font-size: 9px !important; }
    .timeline-grid-time-rows .timeline-slot {
        min-width: 52px;
        min-height: 34px;
        padding: 1px;
        font-size: 8px !important;
        touch-action: pan-x;
    }
}

html { background: var(--lr-white); }
body {
    background: var(--lr-white);
    color: var(--lr-black);
    font-family: "LINE Seed JP", "Noto Sans JP", "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif;
    font-size: 15px;
    line-height: 1.55;
}
body, body * {
    font-family: "LINE Seed JP", "Noto Sans JP", "Yu Gothic", "Hiragino Kaku Gothic ProN", sans-serif !important;
}
code, pre, kbd, samp { font-family: "SFMono-Regular", Consolas, monospace !important; }

.site-header {
    display: grid;
    grid-template-columns: auto auto 1fr;
    min-height: 82px;
    align-items: center;
    gap: 18px;
    border-bottom: 1px solid var(--lr-line);
    padding: 0 max(28px, calc((100vw - var(--lr-max)) / 2));
    background: var(--lr-white);
}
.brand { display: inline-flex; width: max-content; }
.site-logo { display: block; width: 142px; height: 40px; object-fit: contain; }
.site-context {
    border-left: 1px solid var(--lr-line);
    padding-left: 18px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .13em;
}
.site-utility {
    display: flex;
    justify-self: end;
    align-items: center;
    gap: 16px;
    color: var(--lr-gray);
    font-size: 11px;
}
.site-utility form { margin: 0; }
.site-admin-switch {
    border-bottom: 1px solid var(--lr-black);
    color: var(--lr-black);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}
.site-utility button {
    border: 0;
    border-bottom: 1px solid var(--lr-black);
    background: transparent;
    padding: 2px 0;
    color: var(--lr-black);
    cursor: pointer;
    font-size: 11px;
}
.site-footer {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    min-height: 54px;
    align-items: center;
    border-top: 1px solid var(--lr-line);
    padding: 0 max(28px, calc((100vw - var(--lr-max)) / 2));
    background: var(--lr-white);
    color: var(--lr-gray);
    font-size: 11px;
}
.site-footer > span { justify-self: start; }
.site-footer nav { display: flex; justify-self: end; gap: 20px; }
.site-footer a { color: var(--lr-black); text-decoration: none; }
.site-footer a:hover { text-decoration: underline; }
.site-payment-notice {
    justify-self: center;
    text-align: center;
    color: var(--lr-black);
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .02em;
}
.site-staff main { min-height: calc(100vh - 82px); }

/* Staff header and primary navigation share one compact row. */
.site-staff .site-header {
    display: flex;
    min-height: 58px;
    gap: 10px;
    overflow: hidden;
    padding-left: 0;
    padding-right: max(18px, calc((100vw - var(--lr-max)) / 2));
}
.site-staff .site-logo { width: 112px; height: 32px; }
.site-staff .site-header > .brand,
.site-staff .site-header > .site-context,
.site-staff .site-header > .site-utility { flex: 0 0 auto; }
.site-staff .site-header > .dashboard-tabs {
    align-self: stretch;
    flex: 1 1 auto;
    min-width: 120px;
    margin: 0;
    border: 0;
    border-left: 1px solid var(--lr-line);
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
}
.site-staff .site-header > .dashboard-tabs a,
.site-staff .site-header > .dashboard-tabs span {
    position: relative;
    display: flex;
    min-height: 58px;
    align-items: center;
    padding: 0 13px;
    white-space: nowrap;
}
.nav-notification-badge {
    position: absolute;
    top: 5px;
    right: 5px;
    display: inline-flex;
    min-width: 19px;
    height: 19px;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--lr-white);
    border-radius: 999px;
    background: #e53131;
    padding: 0 4px;
    color: var(--lr-white);
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
}
.site-staff .site-header > .dashboard-tabs .is-active { border-bottom: 0; }
.site-staff .site-header > .site-utility {
    justify-self: auto;
    white-space: nowrap;
}

a { text-underline-offset: .2em; }
.button {
    min-height: 46px;
    border: 1px solid var(--lr-black);
    border-radius: 0;
    padding: 10px 18px;
    box-shadow: none;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .02em;
}
.button-primary { background: var(--lr-black); color: var(--lr-white); }
.button-primary:hover { background: #333; }
.button-secondary { background: var(--lr-white); color: var(--lr-black); }
.button-secondary:hover { background: var(--lr-light); }
.text-button, .text-link { color: var(--lr-black); font-size: 12px; }

input, select, textarea,
.stack-form input[type="text"], .stack-form input[type="password"] {
    border: 1px solid #aaa;
    border-radius: 0;
    background: var(--lr-white);
    color: var(--lr-black);
    box-shadow: none;
}
input:focus, select:focus, textarea:focus, .stack-form input:focus {
    border-color: var(--lr-black);
    outline: 2px solid var(--lr-black);
    outline-offset: 1px;
    box-shadow: none;
}

/* Public booking menu */
.reservation-home {
    min-height: 0;
    margin: 0 auto;
    padding: 36px 0 56px;
    background: var(--lr-white);
}
.reservation-home-inner { width: min(1180px, 100%); margin: 0 auto; }
.reservation-home-header {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
    margin-bottom: 24px;
}
.reservation-home-kicker {
    margin: 0;
    font-size: clamp(26px, 4vw, 48px);
    font-weight: 650;
    letter-spacing: -.035em;
    line-height: 1.2;
    white-space: nowrap;
}
.reservation-home-prompt {
    margin: 0;
    color: var(--lr-black);
    font-size: clamp(21px, 2vw, 25px);
    font-weight: 600;
    line-height: 1.5;
    text-align: left;
}
.reservation-home .reservation-choice-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    border: 0;
}
.reservation-home .reservation-choice-card {
    position: relative;
    display: flex;
    container-type: inline-size;
    min-height: 205px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
    padding: 34px clamp(14px, 3cqw, 48px);
    color: var(--lr-black);
    text-decoration: none;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .045);
    transition: border-color .15s ease, background-color .15s ease, transform .15s ease;
}
.reservation-home .reservation-choice-card strong {
    font-size: clamp(18px, 6cqw, 30px);
    font-weight: 650;
    letter-spacing: -.03em;
    line-height: 1.4;
    text-align: center;
    white-space: nowrap;
}
.reservation-home .choice-card-copy {
    display: flex;
    align-items: center;
    flex-direction: column;
    gap: 14px;
    text-align: center;
}
.reservation-home .choice-test-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--lr-black);
    padding: 6px 14px;
    color: var(--lr-black);
    font-size: 15px;
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.2;
}
.reservation-home .choice-card-note {
    color: var(--lr-black);
    font-size: 18px;
    font-weight: 600;
    line-height: 1.35;
}
.choice-arrow { position: absolute; right: 22px; bottom: 18px; font-size: 25px; }
.reservation-home .reservation-choice-card:hover,
.reservation-home .reservation-choice-card:focus-visible {
    border-color: var(--lr-black);
    background: var(--lr-paper);
    color: var(--lr-black);
    outline: 2px solid var(--lr-black);
    outline-offset: 2px;
    transform: translateY(-2px);
}
.reservation-home .reservation-private-inquiry {
    margin: 24px 0 0;
    text-align: center;
}
.reservation-home .reservation-private-inquiry a {
    display: inline-flex;
    align-items: baseline;
    gap: 3px;
    color: var(--lr-black);
    font-size: 16px;
    font-weight: 600;
    border-bottom: 1px solid currentColor;
    text-decoration: none;
}
.reservation-home .reservation-private-inquiry .choice-arrow { display: none; }
.reservation-home .reservation-private-inquiry a:hover,
.reservation-home .reservation-private-inquiry a:focus-visible {
    text-decoration-thickness: 2px;
}
.reservation-home .staff-entry {
    display: block;
    width: max-content;
    margin: 28px 0 0 auto;
    color: var(--lr-gray);
    font-size: 11px;
    text-decoration: none;
}

/* Authentication */
.auth-shell {
    display: grid;
    grid-template-columns: minmax(0, 520px);
    width: min(1180px, calc(100% - 56px));
    min-height: calc(100vh - 136px);
    align-content: center;
    justify-content: start;
    margin: 0 auto;
    padding: 72px 0 96px;
}
.site-auth .auth-shell { justify-content: center; }
.auth-card {
    border: 0;
    background: var(--lr-white);
    padding: 0;
    box-shadow: none;
}
.auth-heading { margin-bottom: 34px; }
.auth-heading h1 {
    margin: 0;
    font-size: clamp(30px, 4vw, 52px);
    font-weight: 900;
    letter-spacing: -.045em;
    line-height: 1.05;
}
.auth-heading p { margin-top: 16px; color: var(--lr-gray); font-size: 12px; }
.stack-form { gap: 20px; }
.stack-form label > span { margin-bottom: 7px; font-size: 12px; }
.stack-form input[type="text"], .stack-form input[type="password"] { height: 54px; }
.form-note { color: var(--lr-gray); }

/* Public application form */
.guest-shell {
    width: min(1180px, calc(100% - 56px));
    margin: 0 auto;
    padding: 24px 0 96px;
}
.guest-hero {
    max-width: 780px;
    margin: 0 0 12px;
}
.guest-hero .back-link {
    display: inline-block;
    margin-bottom: 36px;
    color: var(--lr-black);
    font-size: 12px;
    text-decoration: none;
}
.guest-hero .back-link:hover { text-decoration: underline; }
.guest-hero .eyebrow {
    margin: 0 0 10px;
    color: var(--lr-gray);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .14em;
}
.guest-hero h1,
.guest-complete h1 {
    margin: 0;
    font: 700 clamp(38px, 4vw, 56px)/1.12 Arial, "Helvetica Neue", "Yu Gothic", sans-serif;
    letter-spacing: -.04em;
}
.guest-hero > p:last-child {
    margin: 20px 0 0;
    color: var(--lr-gray);
    font-size: 17px;
    line-height: 1.7;
}
.guest-first-use-guide {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 28px;
    align-items: center;
    margin: -12px 0 34px;
    border: 1px solid var(--lr-black);
    border-left-width: 5px;
    background: var(--lr-white);
    padding: 18px 20px;
}
.guest-first-use-guide strong { font-size: 14px; }
.guest-first-use-guide p { margin: 5px 0 0; color: var(--lr-black); font-size: 13px; }
.guest-first-use-guide a {
    border-bottom: 1px solid var(--lr-black);
    color: var(--lr-black);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}
.guest-store-picker {
    display: grid;
    grid-template-columns: 190px minmax(0, 1fr);
    align-items: start;
    gap: 48px;
    margin: 0;
    border: 0;
    border-top: 5px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 52px 0 58px;
}
.guest-store-picker.is-joined {
    border-top: 0;
    border-bottom: 0;
    padding-bottom: 24px;
}
.guest-store-picker.is-joined + .guest-application-form > .guest-form-section:first-child { padding-top: 24px; }
.guest-store-picker label {
    display: contents;
}
.guest-store-picker label > span {
    margin: 0;
    color: var(--lr-black);
    font: 800 24px/1.25 Arial, "Helvetica Neue", "Yu Gothic", sans-serif;
    letter-spacing: -.03em;
}
.guest-store-picker select { width: 100%; min-height: 52px; padding: 11px 13px; font-size: 16px; }
.guest-notice {
    display: grid;
    grid-template-columns: 250px minmax(0, 1fr);
    gap: 28px;
    align-items: baseline;
    margin: 0;
    border: 0;
    border-bottom: 1px solid var(--lr-line);
    background: var(--lr-paper);
    padding: 18px 22px;
}
.guest-notice strong { color: var(--lr-black); font-size: 16px; line-height: 1.55; }
.guest-notice p { color: var(--lr-gray); font-size: 16px; line-height: 1.7; }
.guest-application-form { display: grid; gap: 0; }
.guest-form-section {
    display: grid;
    grid-template-columns: 190px minmax(0, 1fr);
    gap: 48px;
    border: 0;
    border-bottom: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 52px 0 58px;
}
.guest-form-section > header {
    display: block;
    margin: 0;
}
.guest-form-section > header > span {
    display: none;
    width: auto;
    height: auto;
    margin-bottom: 22px;
    border-radius: 0;
    background: transparent;
    color: var(--lr-black);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .08em;
}
.guest-form-section h2 {
    margin: 0;
    font: 800 24px/1.25 Arial, "Helvetica Neue", "Yu Gothic", sans-serif;
    letter-spacing: -.03em;
}
.guest-form-section header p {
    margin: 12px 0 0;
    color: var(--lr-gray);
    font-size: 13px;
    line-height: 1.75;
}
.guest-date-grid,
.guest-contact-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 22px;
}
.guest-date-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.guest-date-grid label,
.guest-contact-grid label {
    display: flex;
    min-width: 0;
    flex-direction: column;
}
.guest-date-grid label > span,
.guest-contact-grid label > span {
    margin-bottom: 8px;
    color: var(--lr-black);
    font-size: 12px;
    font-weight: 700;
}
.guest-date-grid input,
.guest-date-grid select,
.guest-contact-grid input,
.guest-contact-grid textarea {
    width: 100%;
    min-height: 52px;
    padding: 11px 13px;
    font-size: 16px;
}
.guest-contact-grid textarea { min-height: 112px; resize: vertical; }
.guest-date-grid small,
.guest-contact-grid small {
    margin-top: 7px;
    color: var(--lr-gray);
    font-size: 12px;
    line-height: 1.55;
}
.guest-party-size-note a {
    color: inherit;
    font-weight: 700;
    text-underline-offset: 3px;
}
.guest-contact-grid .field-wide { grid-column: 1 / -1; }
.guest-companion-field { display: grid; gap: 14px; }
.guest-companion-field[hidden],
.guest-companion-inputs[hidden] { display: none; }
.guest-companion-heading { display: grid; gap: 5px; }
.guest-companion-heading > span { font-size: 12px; font-weight: 700; }
.guest-companion-heading small { color: var(--lr-gray); font-size: 12px; }
.guest-companion-inputs { display: grid; gap: 12px; }
.guest-companion-inputs p {
    margin: 0;
    border: 1px solid var(--lr-line);
    background: var(--lr-paper);
    padding: 14px;
    color: var(--lr-gray);
    font-size: 12px;
}
.guest-companion-inputs label { display: grid; grid-template-columns: 110px minmax(0, 1fr); align-items: center; gap: 16px; }
.guest-companion-inputs label > span { margin: 0; font-size: 12px; font-weight: 700; }
.guest-companion-inputs input { width: 100%; min-height: 52px; padding: 11px 13px; font-size: 16px; }
.guest-intent-choices {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    margin: 0;
    border: 0;
    border-top: 1px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
    padding: 0;
}
.guest-intent-choices legend {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
}
.guest-intent-choices label {
    position: relative;
    display: grid;
    grid-template-columns: 22px minmax(0, 1fr);
    gap: 12px;
    min-height: 154px;
    align-content: space-between;
    border-right: 1px solid var(--lr-line);
    padding: 20px 18px;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}
.guest-intent-choices label:last-child { border-right: 0; }
.guest-intent-choices input {
    width: 18px;
    height: 18px;
    margin: 1px 0 0;
    accent-color: var(--lr-black);
}
.guest-intent-choices label > span { display: flex; flex-direction: column; justify-content: space-between; gap: 36px; }
.guest-intent-choices strong { font-size: 15px; line-height: 1.55; }
.guest-intent-choices small { color: var(--lr-gray); font-size: 12px; line-height: 1.6; }
.guest-intent-choices label:has(input:checked) {
    background: var(--lr-paper);
    color: var(--lr-black);
    box-shadow: inset 0 0 0 3px var(--lr-black);
}
.guest-intent-choices label:has(input:checked) small { color: var(--lr-gray); }
.guest-intent-choices label:has(input:checked) input { accent-color: var(--lr-black); }
.guest-assistance-choices {
    display: grid;
    position: relative;
    gap: 0;
    margin: 0;
    border: 1px solid var(--lr-line);
    padding: 0;
}
.guest-choice-legend {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}
.guest-choice-heading {
    margin: 0;
    border-bottom: 1px solid var(--lr-line);
    padding: 18px 20px;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.65;
}
.guest-assistance-choices label {
    display: grid;
    grid-template-columns: 28px minmax(110px, auto) minmax(180px, 1fr);
    align-items: center;
    gap: 12px;
    min-height: 62px;
    border-bottom: 1px solid var(--lr-line);
    padding: 12px 20px;
    cursor: pointer;
}
.guest-assistance-choices label:last-child { border-bottom: 0; }
.guest-assistance-choices input[type="radio"] { width: 22px; height: 22px; accent-color: var(--lr-black); }
.guest-assistance-choices label > span { font-size: 16px; font-weight: 700; }
.guest-assistance-choices input[type="text"] { min-height: 46px; border: 0; border-bottom: 1px solid var(--lr-gray); padding: 8px 4px; font-size: 16px; }
.guest-assistance-choices input[type="text"]:disabled { visibility: hidden; }
.guest-assistance-choices label:has(input[type="radio"]:checked) { background: var(--lr-paper); }
.guest-planned-work-field {
    display: grid;
    grid-column: 2;
    gap: 0;
    margin-top: 22px;
    border: 1px solid var(--lr-line);
}
.guest-planned-work-field > span {
    border-bottom: 1px solid var(--lr-line);
    padding: 18px 20px;
    font-size: 17px;
    font-weight: 800;
}
.guest-planned-work-field textarea {
    width: 100%;
    min-height: 120px;
    resize: vertical;
    border: 0;
    padding: 18px 20px;
    font-size: 16px;
    line-height: 1.6;
}
.guest-price-list article { grid-column: 2; }
.guest-submit-box {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    align-items: center;
    justify-items: center;
    border: 0;
    border-top: 5px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 26px 0;
    color: var(--lr-black);
}
.guest-submit-box p { width: min(100%, 1120px); max-width: none; margin: 0; color: var(--lr-gray); font-size: 12px; line-height: 1.75; }
.guest-submit-box .button { width: min(100%, 520px); min-width: 320px; min-height: 58px; margin-top: 8px; border-color: var(--lr-black); background: var(--lr-black); color: var(--lr-white); }
.guest-submit-box .button:hover { background: #333; border-color: #333; }

/* Shared staff hours editor */
.staff-hours-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin: 22px 0 18px;
}
.staff-hours-toolbar form { margin: 0; }
.staff-hours-toolbar input[type="month"] { min-height: 54px; border: 1px solid var(--lr-black); padding: 8px 14px; font-size: 18px; }
.staff-hours-shift-link { margin-left: auto; }
.staff-hours-explanation,
.staff-hours-load-error { border: 1px solid var(--lr-line); border-left: 5px solid var(--lr-black); padding: 18px 20px; }
.staff-hours-explanation { display: flex; align-items: baseline; gap: 24px; margin-bottom: 20px; }
.staff-hours-explanation strong,
.staff-hours-load-error > strong { font-size: 18px; }
.staff-hours-explanation p,
.staff-hours-load-error p { margin: 0; color: var(--lr-gray); font-size: 16px; line-height: 1.65; }
.staff-hours-scroll { width: 100%; overflow-x: auto; border: 1px solid var(--lr-line); }
.staff-hours-table { width: 100%; min-width: 1240px; border-collapse: collapse; table-layout: fixed; }
.staff-hours-table th,
.staff-hours-table td { border-right: 1px solid var(--lr-line); border-bottom: 1px solid var(--lr-line); padding: 7px 8px; vertical-align: middle; }
.staff-hours-table thead th { background: var(--lr-paper); text-align: left; }
.staff-hours-table thead th:first-child,
.staff-hours-table tbody th { position: sticky; left: 0; z-index: 2; width: 78px; background: var(--lr-paper); }
.staff-hours-table thead th:first-child { z-index: 3; }
.staff-hours-table thead th > strong { display: block; font-size: 17px; }
.staff-hours-table thead th > span { display: block; margin-top: 5px; color: var(--lr-gray); font-size: 14px; }
.staff-hours-table tbody th > .staff-hours-date { color: inherit; }
.staff-hours-date { display: inline-flex; align-items: baseline; justify-content: center; gap: 1px; width: 100%; white-space: nowrap; }
.staff-hours-date strong { font-size: 17px; }
.staff-hours-date > span { color: inherit; font-size: 14px; font-weight: 700; }
.staff-hours-table tr.is-saturday > th { color: #155a91; }
.staff-hours-table tr.is-sunday > th,
.staff-hours-table tr.is-holiday > th { color: #b32020; }
.staff-hours-table thead th > span.is-published { color: var(--lr-black); font-weight: 700; }
.staff-hour-cell-form { display: grid; gap: 10px; }
.staff-hour-cell-form > select { width: 100%; min-height: 40px; border: 1px solid var(--lr-line); padding: 6px 8px; font-size: 15px; }
.staff-hour-cell-form.is-time-mode > select[name="staff_hour_mode"] { display: none; }
.staff-hour-time-inputs { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) 30px; align-items: center; gap: 7px; }
.staff-hour-time-inputs[hidden] { display: none !important; }
.staff-hour-time-inputs select { width: 100%; min-width: 0; min-height: 40px; border: 1px solid var(--lr-line); padding: 5px; font-size: 15px; }
.staff-hour-time-inputs .staff-hour-mode-reset { width: 30px; min-height: 40px; border: 0; background: transparent; padding: 0; color: var(--lr-gray); font-size: 20px; cursor: pointer; }
.staff-hour-save-status { min-height: 0; color: var(--lr-gray); font-size: 13px; }
.staff-hour-save-status:empty { display: none; }

/* Terms acceptance */
.terms-consent-panel {
    display: grid;
    gap: 0;
    border: 1px solid var(--lr-black);
    border-top-width: 5px;
    background: var(--lr-white);
    padding: 26px 30px 30px;
}
.terms-consent-panel h2 { margin: 0; font-size: 26px; font-weight: 650; letter-spacing: -.025em; }
.terms-consent-panel > p { margin: 8px 0 18px; color: var(--lr-gray); font-size: 16px; line-height: 1.65; }
.terms-consent-panel label {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 62px;
    border-top: 1px solid var(--lr-line);
    padding: 14px 4px;
    cursor: pointer;
}
.terms-consent-panel input[type="checkbox"] {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    margin: 0;
    accent-color: var(--lr-black);
}
.terms-consent-panel label span { font-size: 17px; line-height: 1.55; }
.terms-consent-panel a { color: var(--lr-black); font-weight: 700; text-underline-offset: .22em; }
.prior-orientation-guide { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: baseline; border-top: 1px solid var(--lr-line); padding: 16px 4px 2px 42px; font-size: 17px; line-height: 1.55; }
.member-terms-consent { margin: 28px 0; }

.guest-application-form > .terms-consent-panel {
    gap: 0;
    margin-bottom: 36px;
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
    padding: 0;
}
.guest-application-form > .terms-consent-panel h2 {
    border-bottom: 1px solid var(--lr-line);
    padding: 18px 20px;
    font-size: 17px;
    font-weight: 800;
}
.guest-application-form > .terms-consent-panel label {
    min-height: 62px;
    border-top: 0;
    padding: 12px 20px;
}
.guest-application-form > .terms-consent-panel label + label {
    border-top: 1px solid var(--lr-line);
}
.guest-application-form > .terms-consent-panel .prior-orientation-guide {
    padding: 16px 20px;
}

@media (min-width: 901px) {
    .guest-application-form > .guest-form-section:has(+ .terms-consent-panel) {
        border-bottom: 0;
    }
    .guest-application-form > .terms-consent-panel {
        margin-left: 238px;
    }
}

/* Legal pages */
.legal-shell {
    width: min(900px, calc(100% - 56px));
    min-height: calc(100vh - 136px);
    margin: 0 auto;
    padding: 56px 0 96px;
}
.legal-shell .back-link { color: var(--lr-black); font-size: 12px; text-decoration: none; }
.legal-shell > header { margin-top: 58px; border-bottom: 5px solid var(--lr-black); padding-bottom: 24px; }
.legal-shell > header h1 { margin: 8px 0 0; font-size: clamp(38px, 5vw, 62px); letter-spacing: -.05em; }
.legal-document { min-height: 260px; border-bottom: 1px solid var(--lr-black); padding: 42px 0; }
.legal-document p { margin: 0; color: var(--lr-gray); font-size: 13px; }
.reservation-terms {
    max-width: 980px;
    margin: 46px auto 0;
    border-top: 1px solid var(--lr-black);
}
.reservation-terms > section {
    display: grid;
    grid-template-columns: minmax(220px, 30%) minmax(0, 1fr);
    gap: 34px;
    border-bottom: 1px solid var(--lr-line);
    padding: 30px 0;
}
.reservation-terms h2 { margin: 0; font-size: 19px; font-weight: 700; line-height: 1.55; }
.reservation-terms p { grid-column: 2; margin: 0; color: #333; font-size: 16px; line-height: 1.9; }
.reservation-terms p + p { margin-top: -20px; }
.reservation-terms footer { padding: 32px 0 8px; text-align: right; }
.reservation-terms footer p { margin: 0; color: var(--lr-gray); font-size: 15px; line-height: 1.8; }

@media (max-width: 900px) {
    .legal-document-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .legal-document-links a:nth-child(2) { border-right: 0; }
    .legal-document-links a:nth-child(-n + 2) { border-bottom: 1px solid var(--lr-line); }
}

@media (max-width: 700px) {
    .legal-document-links { grid-template-columns: 1fr; }
    .legal-document-links a,
    .legal-document-links a:nth-child(2) { border-right: 0; border-bottom: 1px solid var(--lr-line); }
    .legal-document-links a:last-child { border-bottom: 0; }
    .terms-consent-panel { padding: 22px 18px 24px; }
    .terms-consent-panel h2 { font-size: 22px; }
    .terms-consent-panel > p { font-size: 15px; }
    .terms-consent-panel label { align-items: flex-start; min-height: 68px; padding: 18px 2px; }
    .terms-consent-panel label span { font-size: 16px; }
    .prior-orientation-guide { padding: 16px 2px 2px; font-size: 16px; }
    .reservation-terms { margin-top: 28px; }
    .reservation-terms > section { display: block; padding: 26px 0; }
    .reservation-terms h2 { margin-bottom: 12px; font-size: 18px; }
    .reservation-terms p { font-size: 15px; line-height: 1.85; }
    .reservation-terms p + p { margin-top: 12px; }
}

/* Staff and member pages */
.dashboard, .member-page {
    width: calc(100% - 56px);
    max-width: none;
    margin: 0 auto;
    padding: 48px 0 80px;
}
.site-staff .dashboard {
    display: flex;
    flex-direction: column;
    padding-top: 0;
}
.site-staff .dashboard-tabs { order: -20; }
.site-staff .dashboard-topbar { order: -10; }
.welcome-shell, .auth-shell, .reservation-home, .guest-shell, .legal-shell, .message-page {
    width: calc(100% - 56px);
    max-width: none;
}
.reservation-home-inner, .narrow-master { width: 100%; max-width: none; }
.dashboard-topbar, .member-topbar {
    min-height: 84px;
    align-items: flex-start;
    margin-bottom: 22px;
}
.site-staff .dashboard-topbar {
    min-height: 0;
    margin: 8px 0 0;
}
.site-staff .dashboard-topbar h1 { display: none; }
.dashboard-topbar h1, .member-topbar h1 {
    margin: 0;
    font-size: clamp(34px, 4vw, 58px);
    font-weight: 700;
    letter-spacing: -.05em;
    line-height: 1;
}
.member-topbar > div { flex: 1 1 auto; min-width: 0; }
.member-topbar > form,
.member-topbar > .status-pill { flex: 0 0 auto; }
.member-topbar h1 {
    max-width: 100%;
    overflow-wrap: anywhere;
    font-size: clamp(32px, 3.2vw, 52px);
    line-height: 1.12;
}
.member-topbar .member-number { margin-top: 10px; line-height: 1.45; }
.member-summary-label small { margin-top: 5px; color: var(--lr-gray); font-size: 13px !important; line-height: 1.45; }
.calendar-top-actions { align-self: flex-start; }
.dashboard-tabs {
    gap: 0;
    border-top: 1px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
}
.dashboard-tabs a, .dashboard-tabs span {
    border-right: 1px solid var(--lr-line);
    padding: 13px 17px;
    color: var(--lr-black);
    font-size: 12px;
}
.site-staff .dashboard-tabs a,
.site-staff .dashboard-tabs span {
    min-height: 58px;
    padding: 17px 22px;
    font-size: 15px;
    font-weight: 700;
}
.dashboard-tabs .is-active {
    border-bottom: 0;
    background: var(--lr-black);
    color: var(--lr-white);
}
.account-chip { border-left: 1px solid var(--lr-line); padding-left: 18px; }

.calendar-toolbar, .audit-filter, .member-reserve-filter {
    border: 0;
    border-bottom: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 18px 0;
}
.master-intro {
    border-bottom: 1px solid var(--lr-black);
    padding: 34px 0 18px;
}
.master-intro h2 { font-size: 24px; font-weight: 800; }
.master-section, .calendar-day-summary, .calendar-selection-panel,
.calendar-side-section, .empty-bookings, .member-booking-section,
.member-seat-map, .member-timeline-section, .manual-booking-form {
    border: 1px solid var(--lr-line);
    border-radius: 0;
    background: var(--lr-white);
    box-shadow: none;
}
.master-section > header, .calendar-side-section > header { border-bottom-color: var(--lr-line); }
.store-card-grid { gap: 0; border-top: 1px solid var(--lr-black); }
.store-card {
    border: 0;
    border-right: 1px solid var(--lr-line);
    border-bottom: 1px solid var(--lr-line);
    border-radius: 0;
    background: var(--lr-white);
    box-shadow: none;
}
.store-card:hover { background: var(--lr-light); }
.status-pill, .count-badge {
    border: 1px solid var(--lr-black);
    border-radius: 0;
    background: var(--lr-white);
    color: var(--lr-black);
}

/* Calendar */
.calendar-context-bar {
    display: grid;
    grid-template-columns: minmax(430px, 1.15fr) minmax(320px, 1fr) auto auto;
    gap: clamp(12px, 2vw, 30px);
    align-items: end;
    margin: 0 0 14px;
    border-top: 0;
    border-bottom: 0;
    padding: 8px 0 10px;
}
.calendar-context-field {
    display: grid;
    gap: 9px;
    min-width: 0;
}
.calendar-context-field > span {
    color: var(--lr-gray);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .05em;
}
.calendar-store-field select {
    width: 100%;
    min-height: 56px;
    border: 1px solid var(--lr-black);
    padding: 8px 48px 8px 18px;
    font-size: clamp(22px, 2.2vw, 31px);
    font-weight: 800;
    letter-spacing: -.03em;
}
.calendar-date-field .date-stepper {
    display: grid;
    grid-template-columns: 62px minmax(260px, 1fr) 62px;
    gap: 8px;
    align-items: stretch;
}
.calendar-date-field .date-stepper > a {
    display: grid;
    width: auto;
    height: 56px;
    place-content: center;
    gap: 1px;
    border: 1px solid var(--lr-black);
    background: var(--lr-white);
    color: var(--lr-black);
    text-align: center;
    text-decoration: none;
}
.calendar-date-field .date-stepper > a:hover { background: var(--lr-light); }
.calendar-date-field .date-stepper > a b { font-size: 21px; line-height: 1; }
.calendar-date-field .date-stepper > a small { font-size: 12px !important; line-height: 1.2; }
.calendar-date-field .date-stepper > label {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    min-width: 0;
    border: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 0 16px;
}
.calendar-date-field input[type="date"] {
    width: 100%;
    min-width: 0;
    min-height: 54px;
    border: 0;
    outline: 0;
    padding: 0;
    font-size: clamp(21px, 2vw, 29px);
    font-weight: 800;
    letter-spacing: -.025em;
}
.calendar-date-compact { display: none; }
.calendar-date-field input[type="date"]:focus { border: 0; outline: 0; }
.calendar-date-field label strong {
    border-left: 1px solid var(--lr-line);
    padding-left: 15px;
    font-size: 16px;
    white-space: nowrap;
}
.calendar-today-button { min-height: 56px; padding-inline: 20px; font-size: 15px; }
.calendar-context-bar .calendar-top-actions {
    align-self: stretch;
    align-items: stretch;
    gap: 8px;
}
.calendar-context-bar .calendar-top-actions .button {
    min-height: 56px;
    padding-inline: 18px;
    white-space: nowrap;
}
.calendar-mobile-staff-hours,
.calendar-legend-mobile { display: none; }

.calendar-page .calendar-topbar {
    min-height: 0;
    justify-content: flex-end;
    margin-bottom: 12px;
}
.calendar-page .dashboard-tabs a,
.calendar-page .dashboard-tabs span {
    min-height: 58px;
    padding: 17px 22px;
    font-size: 15px;
    font-weight: 700;
}

.admin-calendar-layout { grid-template-columns: minmax(0, 1fr) 360px; gap: 22px; }
.admin-calendar-scrollbar-top {
    height: 18px;
    margin-bottom: 4px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
}
.admin-calendar-scrollbar-top > div { height: 1px; }
.admin-calendar-scroll {
    overflow-x: auto;
    overflow-y: visible;
    border: 1px solid var(--lr-black);
    min-height: 0;
    max-height: none;
    scrollbar-gutter: auto;
    overscroll-behavior-x: contain;
}
.admin-calendar-grid {
    grid-template-columns: 86px repeat(48, 42px);
    grid-template-rows: 44px repeat(var(--seat-count), 40px);
    gap: 1px;
    background: var(--lr-line);
}
.admin-calendar-corner, .admin-calendar-time, .admin-calendar-seat {
    background: var(--lr-paper);
    color: var(--lr-black);
    font-size: 14px;
}
.admin-calendar-corner {
    grid-template-columns: 1fr;
    place-content: center start;
    gap: 1px;
    padding: 8px 12px;
    text-align: left;
}
.admin-calendar-corner strong { font-size: 16px; line-height: 1.15; }
.admin-calendar-corner span { color: var(--lr-gray); font-size: 12px; line-height: 1.15; }
.admin-calendar-time {
    grid-column: var(--column) / span 2 !important;
    display: flex;
    min-width: 84px;
    align-items: center;
    justify-content: flex-start;
    place-items: center start;
    border-left: 2px solid var(--lr-black);
    padding-left: 10px;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    white-space: nowrap;
}
.admin-calendar-time time {
    display: block;
    font-size: 15px;
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1;
    writing-mode: horizontal-tb !important;
    white-space: nowrap;
}
.admin-calendar-seat { padding: 0 8px; font-size: 13px; }
.admin-calendar-cell { background: var(--lr-white); }
.admin-calendar-cell.is-hour { box-shadow: inset 2px 0 rgba(9, 9, 9, .20); }
.admin-calendar-cell.is-selected {
    background: #dfeae6;
    outline: 0;
    box-shadow: none;
}
.admin-calendar-cell.is-busy { background: var(--lr-light); }
.admin-calendar-cell.is-drop-target { box-shadow: none; }
.admin-calendar-cell.is-drop-preview { background: #dfeae6; box-shadow: none; }
.admin-calendar-cell.is-drop-leading { box-shadow: inset 3px 0 var(--calendar-member); }
.calendar-legend { margin-bottom: 10px; gap: 7px; }
.calendar-legend span { border-radius: 3px; padding: 7px 11px; font-size: 13px; font-weight: 700; }
.calendar-legend .legend-member { background: #dceefa; color: var(--lr-black); }
.calendar-legend .legend-first { background: #f8dfe9; color: var(--lr-black); }
.calendar-legend .legend-day { background: #e3f3e5; color: var(--lr-black); }
.legend-premium { background: var(--calendar-premium); }
.admin-booking-card {
    position: relative;
    border: 1px solid rgba(0, 0, 0, .28);
    border-left: 4px solid rgba(0, 0, 0, .34);
    border-radius: 0;
    background: #dceefa;
    color: var(--lr-black);
    box-shadow: none;
    padding: 3px 11px 3px 5px;
}
.admin-booking-card.is-first { background: #f8dfe9; }
.admin-booking-card.is-day_use { background: #e3f3e5; }
.admin-booking-card.is-premium { background: var(--calendar-premium); }
.admin-booking-card.is-pending { border: 2px dashed rgba(0, 0, 0, .62); }
.admin-booking-card.is-checked-in { box-shadow: inset 0 0 0 3px rgba(255, 255, 255, .72); }
.admin-booking-card.is-block {
    border-color: #666;
    border-left-color: #555;
    background: #858585;
    color: var(--lr-white);
}
.admin-booking-card.is-block strong { font-weight: 800; }
.admin-booking-card.is-saving { opacity: .72; transition: opacity .15s ease; }
.admin-booking-card.is-resizing { z-index: 8; cursor: ew-resize; }
.admin-booking-resize-handle {
    position: absolute;
    z-index: 2;
    top: 0;
    right: 0;
    bottom: 0;
    display: block;
    width: 9px;
    border-left: 2px solid rgba(0, 0, 0, .32);
    background: rgba(255, 255, 255, .3);
    cursor: ew-resize;
    touch-action: none;
}
.admin-booking-resize-handle:hover,
.admin-booking-card.is-resizing .admin-booking-resize-handle {
    border-left-color: rgba(0, 0, 0, .72);
    background: rgba(255, 255, 255, .58);
}
.admin-booking-card strong { font-size: 12px !important; font-weight: 700; }
.admin-booking-card span { margin-top: 1px; font-size: 10px !important; }
.calendar-side-panel {
    position: static;
    gap: 12px;
    max-height: none;
    overflow: visible;
}
.calendar-selection-panel { border-top: 5px solid var(--lr-black); }
.calendar-seat-map-default h2 { margin: 0 0 14px; font-size: 22px; font-weight: 750; }
.calendar-seat-map-default img {
    display: block;
    width: 100%;
    max-height: 420px;
    border: 1px solid var(--lr-line);
    object-fit: contain;
}
.calendar-seat-map-default p { margin: 0; color: var(--lr-gray); font-size: 15px; }
.calendar-selection-panel.is-create-prompt { border-color: var(--lr-black); background: var(--lr-paper); }
.calendar-selection-panel.is-create-prompt h2 { font-size: 22px; font-weight: 800; }
.calendar-detail-actions { display: grid; gap: 12px; }
.calendar-detail-actions .button { width: 100%; min-height: 54px; }
.calendar-detail-actions .text-button { justify-self: start; }

/* Guest applications: approve directly from the pending list */
.guest-admin-row-pending {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    padding: 10px 0;
}
.guest-admin-row-link {
    display: grid;
    grid-template-columns: 130px minmax(220px, 1fr) 70px 90px;
    gap: 16px;
    align-items: center;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}
.guest-admin-row-pending:hover { background: var(--lr-paper); }
.guest-quick-approve { margin: 0; }
.guest-quick-approve .button {
    min-width: 176px;
    min-height: 48px;
    padding: 10px 16px;
    white-space: nowrap;
}

/* Guest detail: full-width shell with a focused reading column */
.guest-detail-page .dashboard-topbar,
.guest-detail-content {
    width: min(1160px, 100%);
    margin-inline: auto;
}
.guest-detail-content { padding-top: 8px; }
.guest-detail-overview { padding: clamp(24px, 3vw, 40px); }
.guest-detail-summary {
    margin: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.guest-detail-subheading {
    margin: 34px 0 14px;
    border-bottom: 1px solid var(--lr-black);
    padding-bottom: 12px;
    font-size: 22px;
    font-weight: 700;
}
.guest-detail-overview .guest-contact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.guest-detail-overview .booking-summary div,
.guest-detail-overview .guest-contact div { padding: 18px 20px; }
.guest-decision-panel {
    width: min(760px, 100%);
    margin: 22px auto 0;
    padding: clamp(24px, 3vw, 38px);
}
.guest-decision-panel h3 { margin: 0; font-size: 20px; }
.guest-decision-panel p { margin: 8px 0 18px; color: var(--lr-gray); }
.guest-decision-panel .button { width: 100%; min-height: 58px; font-size: 16px; }
.guest-reject-form {
    margin-top: 28px;
    border-top: 1px solid var(--lr-line);
    padding-top: 28px;
}

/* Member booking detail: keep information and actions in one reading column */
.booking-detail-page .dashboard-topbar,
.booking-detail-content {
    width: min(1160px, 100%);
    margin-inline: auto;
}
.booking-detail-overview { padding: clamp(24px, 3vw, 40px); }
.booking-detail-overview .booking-summary { margin: 0; }
.booking-detail-content > .master-section { margin-top: 22px; }
.booking-detail-content .booking-actions-grid {
    width: min(760px, 100%);
    margin: 22px auto 0;
    grid-template-columns: 1fr;
    gap: 18px;
}
.booking-detail-content .booking-actions-grid .master-section { margin-top: 0; }
.booking-detail-content .stacked-actions { grid-template-columns: 1fr; }
.booking-detail-content .stacked-actions .button,
.booking-detail-content .stacked-form .button { min-height: 56px; font-size: 16px; }
.booking-detail-content .booking-edit-form {
    width: min(560px, 100%);
    grid-template-columns: minmax(0, 1fr);
}
.booking-detail-content .booking-edit-form .booking-period-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
.booking-detail-content .booking-edit-form .field-wide { grid-column: 1; }

/* Member reservation picker and timeline */
.member-reserve-filter {
    display: grid;
    grid-template-columns: minmax(300px, 1fr) minmax(300px, 1fr) auto;
    gap: clamp(18px, 3vw, 44px);
    align-items: end;
    margin: 22px 0 28px;
    border: 0;
    border-top: 4px solid var(--lr-black);
    border-bottom: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 24px 0 26px;
}
.member-reserve-filter label {
    display: grid;
    gap: 9px;
    min-width: 0;
}
.member-reserve-filter label > span {
    color: var(--lr-gray);
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .05em;
}
.member-reserve-filter select,
.member-reserve-filter input[type="date"] {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    min-height: 66px;
    border: 1px solid var(--lr-black);
    padding: 8px 16px;
    font-size: clamp(21px, 2vw, 29px);
    font-weight: 600;
    letter-spacing: -.025em;
}
.member-reserve-filter .button { min-height: 66px; padding-inline: 24px; font-size: 15px; }
.member-reservation-cta {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 92px;
    min-height: 124px;
    align-items: stretch;
    margin: 28px 0 32px;
    border: 2px solid var(--lr-black);
    background: var(--lr-white);
    color: var(--lr-black);
    text-decoration: none;
    transition: background .18s ease, color .18s ease;
}
.member-reservation-cta-copy {
    display: grid;
    align-content: center;
    gap: 3px;
    padding: 22px clamp(24px, 4vw, 56px);
}
.member-reservation-cta-copy small { font-size: 12px; font-weight: 800; letter-spacing: .16em; }
.member-reservation-cta-copy strong { font-size: clamp(27px, 3vw, 42px); line-height: 1.22; letter-spacing: -.035em; }
.member-reservation-cta-copy > span { color: var(--lr-gray); font-size: 15px; font-weight: 600; }
.member-reservation-cta-arrow {
    display: grid;
    place-items: center;
    background: var(--lr-black);
    color: var(--lr-white);
    font-size: 32px;
    transition: transform .18s ease;
}
.member-reservation-cta:hover { background: var(--lr-paper); }
.member-reservation-cta:hover .member-reservation-cta-arrow { transform: translateX(4px); }
.member-reservation-cta:focus-visible { outline: 4px solid var(--lr-black); outline-offset: 4px; }
.member-dashboard-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin: 28px 0 32px;
}
.member-dashboard-actions .member-reservation-cta { min-height: 136px; margin: 0; }
.member-today-cta .member-reservation-cta-arrow { background: var(--lr-black); color: var(--lr-white); }
.today-view-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin: 16px 0 18px;
    padding: 14px 0 18px;
}
.today-store-picker {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1 1 660px;
    max-width: 660px;
    margin: 0;
    border: 0;
    padding: 0;
}
.today-store-picker select {
    width: 100%;
    min-height: 62px;
    border: 1px solid var(--lr-black);
    background: var(--lr-white);
    padding: 9px 48px 9px 17px;
    color: var(--lr-black);
    font-size: clamp(20px, 2vw, 28px);
    font-weight: 600;
}
.today-timeline-jumps {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    margin: 0;
}
.today-timeline-jumps button {
    min-width: 58px;
    min-height: 44px;
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
    padding: 8px 13px;
    color: var(--lr-black);
    font-size: 15px;
}
.today-timeline-jumps button:hover,
.today-timeline-jumps button:focus-visible { border-color: var(--lr-black); background: var(--lr-paper); }
.today-readonly-board { border: 0; background: var(--lr-white); }
.today-readonly-scroll {
    max-height: min(70vh, 760px);
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}
.today-readonly-grid {
    display: grid;
    grid-template-columns: 88px repeat(var(--seat-count), minmax(98px, 1fr));
    grid-template-rows: 60px repeat(var(--time-count), 58px);
    width: max-content;
    min-width: 100%;
}
.today-readonly-corner,
.today-readonly-seat,
.today-readonly-time,
.today-readonly-slot { border-right: 1px solid var(--lr-line); border-bottom: 1px solid var(--lr-line); }
.today-readonly-corner {
    position: sticky;
    z-index: 5;
    top: 0;
    left: 0;
    grid-row: 1;
    grid-column: 1;
    display: grid;
    align-content: center;
    gap: 2px;
    background: var(--lr-paper);
    padding: 8px 13px;
}
.today-readonly-corner strong { font-size: 15px; }
.today-readonly-corner span { color: var(--lr-gray); font-size: 12px; }
.today-readonly-seat {
    position: sticky;
    z-index: 4;
    top: 0;
    grid-row: 1;
    grid-column: var(--column);
    display: grid;
    min-width: 98px;
    place-items: center;
    background: var(--lr-paper);
    padding: 8px;
    font-size: 15px;
    font-weight: 700;
    white-space: nowrap;
}
.today-readonly-time {
    position: sticky;
    z-index: 3;
    left: 0;
    grid-row: var(--row);
    grid-column: 1;
    display: grid;
    min-height: 58px;
    place-items: center;
    background: var(--lr-paper);
    color: var(--lr-gray);
    font-size: 14px;
    font-style: normal;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.today-readonly-time.is-hour { color: var(--lr-black); font-size: 18px; font-weight: 800; }
.today-readonly-slot {
    grid-row: var(--row);
    grid-column: var(--column);
    min-width: 98px;
    min-height: 58px;
    background: var(--lr-white);
}
.today-readonly-slot.is-reserved { background: #d6d6d2; }
.today-overview {
    display: grid;
    grid-template-columns: 1fr;
    align-items: center;
    width: min(100%, 280px);
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
}
.today-overview > div { display: grid; gap: 3px; padding: 24px; }
.today-overview > div > span { color: var(--lr-gray); font-size: 15px; font-weight: 700; }
.today-overview > div > strong { font-size: 38px; line-height: 1; }
.today-overview > div > strong small { margin-left: 4px; font-size: 16px; }
.today-time-bands { display: grid; gap: 12px; margin-top: 18px; }
.today-time-band { border: 1px solid var(--lr-line); background: var(--lr-white); }
.today-time-band > summary {
    display: flex;
    justify-content: space-between;
    align-items: center;
    min-height: 64px;
    padding: 14px 20px;
    cursor: pointer;
    list-style: none;
}
.today-time-band > summary::-webkit-details-marker { display: none; }
.today-time-band > summary::after { content: '＋'; margin-left: 16px; font-size: 24px; font-weight: 400; }
.today-time-band[open] > summary { border-bottom: 1px solid var(--lr-black); }
.today-time-band[open] > summary::after { content: '−'; }
.today-time-band > summary strong { margin-right: auto; font-size: 21px; font-weight: 700; }
.today-time-band > summary span { color: var(--lr-gray); font-size: 15px; }
.today-slot-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.today-slot-row {
    display: grid;
    grid-template-columns: 72px minmax(80px, 1fr) minmax(190px, auto);
    gap: 14px;
    align-items: center;
    min-height: 58px;
    border-bottom: 1px solid var(--lr-line);
    padding: 10px 18px;
}
.today-slot-row:nth-child(odd) { border-right: 1px solid var(--lr-line); }
.today-slot-row time { font-size: 17px; font-weight: 700; }
.today-slot-meter { height: 8px; overflow: hidden; background: #e6e6e3; }
.today-slot-meter span { display: block; height: 100%; background: var(--lr-black); }
.today-slot-row p { display: flex; justify-content: flex-end; gap: 14px; margin: 0; font-size: 14px; white-space: nowrap; }
.today-slot-row p strong { font-weight: 700; }
.today-slot-row p span { color: var(--lr-gray); }
.today-status-note {
    display: grid;
    grid-template-columns: minmax(210px, auto) minmax(0, 1fr) auto;
    gap: 24px;
    align-items: center;
    margin-top: 20px;
    border: 1px solid var(--lr-black);
    border-left-width: 6px;
    padding: 22px 24px;
}
.today-status-note > strong { font-size: 18px; }
.today-status-note p { margin: 0; color: var(--lr-gray); font-size: 15px; line-height: 1.7; }
.today-status-note .button { min-height: 54px; white-space: nowrap; }
.is-booking-confirmed {
    display: grid;
    gap: 4px;
    width: calc(100% - 56px);
    margin: 28px auto 36px !important;
    border: 2px solid var(--lr-black) !important;
    border-left-width: 12px !important;
    padding: clamp(24px, 4vw, 48px) clamp(24px, 5vw, 72px) !important;
    background: var(--lr-white) !important;
}
.is-booking-confirmed > span { font-size: 13px; font-weight: 800; letter-spacing: .15em; }
.is-booking-confirmed > strong { font-size: clamp(32px, 5vw, 64px); line-height: 1.18; letter-spacing: -.04em; }
.is-booking-confirmed > small { margin-top: 8px; color: var(--lr-gray); font-size: 16px; }
.member-operation-section { padding: clamp(24px, 3vw, 42px); }
.member-time-change-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px;
    width: min(100%, 1180px);
    margin: 0 auto;
}
.member-datetime-group { border: 1px solid var(--lr-line); padding: 20px; }
.member-datetime-group h3 { margin: 0 0 16px; font-size: 18px; }
.member-datetime-group > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.member-datetime-group label,
.member-security-form label,
.member-cancel-action label { display: grid; gap: 8px; }
.member-datetime-group label > span,
.member-security-form label > span,
.member-cancel-action label > span { font-size: 14px; font-weight: 800; }
.member-datetime-group input,
.member-security-form input,
.member-cancel-action input { width: 100%; min-height: 54px; border: 1px solid var(--lr-line); padding: 10px 13px; font-size: 17px; }
.member-time-change-submit {
    grid-column: 1 / -1;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 24px;
    border-top: 1px solid var(--lr-line);
    padding-top: 20px;
}
.member-time-change-submit > span { color: var(--lr-gray); font-size: 14px; }
.member-time-change-submit .button { min-width: 220px; min-height: 56px; }
.member-booking-action-panels {
    grid-template-columns: minmax(280px, .7fr) minmax(440px, 1.3fr);
    gap: 18px;
    width: min(100%, 1180px);
    margin: 20px auto 0;
}
.member-booking-action-panels form {
    display: grid;
    align-items: end;
    gap: 16px;
    border: 1px solid var(--lr-line);
    padding: 22px;
    background: var(--lr-white);
}
.member-booking-action-panels form > div { display: grid; gap: 3px; }
.member-booking-action-panels form > div > strong { font-size: 20px; }
.member-visit-action { grid-template-columns: minmax(0, 1fr) auto; }
.member-cancel-action { grid-template-columns: minmax(160px, .6fr) minmax(230px, 1fr) auto; }
.member-booking-action-panels .button { min-height: 54px; white-space: nowrap; }
.member-security-section {
    width: min(100%, 920px);
    margin: 30px auto 0;
    padding: clamp(28px, 4vw, 52px);
}
.member-security-section > header { align-items: flex-start; }
.member-security-form {
    display: grid;
    gap: 22px;
    width: min(100%, 620px);
    margin: 34px auto 6px;
}
.member-security-form small { color: var(--lr-gray); font-size: 14px; }
.member-security-form .button { min-height: 58px; margin-top: 6px; font-size: 16px; }
.timeline-time {
    min-width: 58px;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    white-space: nowrap;
}
.timeline-time:not(:empty) { color: var(--lr-black); font-size: 14px !important; font-weight: 800; }
.timeline-slot.is-own-conflict,
.timeline-slot.is-staff-unavailable {
    background: #ececea !important;
    color: transparent;
    box-shadow: none !important;
    font-size: 12px;
    font-weight: 700;
    cursor: not-allowed;
}
.timeline-slot.is-start-unavailable {
    background: var(--lr-white);
    box-shadow: none;
}
.member-timeline-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 10px 22px;
}
.member-timeline-heading p {
    margin: 0;
    color: var(--lr-gray);
    font-size: 15px;
    line-height: 1.6;
}
.member-day-info > div {
    min-height: 112px;
    gap: 8px;
    padding: 20px 22px;
}
.member-reserve-page .member-reserve-filter {
    margin: 16px 0 20px;
    border: 0;
    padding: 14px 0 18px;
}
.member-reserve-page .member-seat-map {
    border: 0;
    padding: 0;
}
.member-dashboard-page,
.member-today-page,
.member-reserve-page,
.member-security-page,
.member-guide-page { padding-top: 0 !important; }
.member-dashboard-page > .member-nav,
.member-today-page > .member-nav,
.member-reserve-page > .member-nav,
.member-security-page > .member-nav,
.member-guide-page > .member-nav { margin-top: 0; }
.member-page .member-nav a {
    padding: 18px 24px;
    font-size: 28px !important;
    line-height: 1.3;
}
.member-nav-account {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 0 0 auto;
    margin-left: auto;
    padding-left: 24px;
    white-space: nowrap;
}
.member-nav-account > strong {
    font-size: 18px;
    font-weight: 600;
    line-height: 1.3;
}
.member-nav-logout {
    display: flex;
    margin: 0;
}
.member-nav-logout button {
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
    padding: 12px 16px;
    color: var(--lr-black);
    font-size: 16px !important;
    cursor: pointer;
}
.member-nav-logout button:hover,
.member-nav-logout button:focus-visible { border-color: var(--lr-black); }
.member-guide-intro {
    max-width: 1040px;
    margin: 42px auto 30px;
    text-align: center;
}
.member-guide-intro h1 {
    margin: 0;
    font-size: clamp(34px, 4vw, 56px);
    font-weight: 650;
    letter-spacing: -.04em;
    line-height: 1.15;
}
.member-guide-intro p {
    margin: 20px auto 0;
    max-width: 900px;
    color: var(--lr-gray);
    font-size: 20px;
    line-height: 1.85;
}
.member-guide-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
    max-width: 1360px;
    margin: 0 auto;
}
.member-guide-list article {
    border: 1px solid var(--lr-line);
    background: var(--lr-white);
    padding: clamp(26px, 3vw, 42px);
}
.member-guide-list h2 {
    margin: 0 0 20px;
    font-size: clamp(25px, 2.2vw, 34px);
    font-weight: 650;
    letter-spacing: -.025em;
    line-height: 1.3;
}
.member-guide-list p {
    margin: 0;
    color: #333;
    font-size: 19px;
    line-height: 1.9;
}
.member-guide-list p + p { margin-top: 16px; }
.member-guide-actions {
    display: flex;
    justify-content: center;
    gap: 14px;
    margin: 30px auto 0;
}
.member-guide-actions .button { min-width: 260px; }
.member-day-info span {
    color: var(--lr-black);
    font-size: 18px !important;
    font-weight: 700;
}
.member-day-info strong {
    font-size: 24px;
    font-weight: 700;
    line-height: 1.35;
}
.member-timeline .timeline-slot.is-busy,
.member-timeline .timeline-slot.is-blocked {
    background: #ececea;
    background-image: none;
    color: transparent;
    cursor: not-allowed;
}
.member-timeline .timeline-slot.is-mine {
    background: #d2d2cf;
    color: transparent;
    box-shadow: inset 0 0 0 1px #b6b6b1;
    cursor: not-allowed;
}
.member-reserve-page { padding-bottom: 190px; }
.member-reserve-page .timeline-confirm {
    position: fixed;
    right: 28px;
    bottom: 24px;
    z-index: 45;
    width: min(560px, calc(100vw - 56px));
    grid-template-columns: minmax(0, 1fr) auto;
    margin: 0;
    border: 1px solid var(--lr-black);
    border-left: 5px solid var(--lr-black);
    background: rgba(255, 255, 255, .98);
    padding: 16px 18px;
    box-shadow: 0 16px 45px rgba(0, 0, 0, .18);
    backdrop-filter: blur(10px);
}
.member-reserve-page .timeline-confirm strong { font-size: 16px; }
.member-reserve-page .timeline-confirm .button { min-height: 52px; }
.reservation-seat-note {
    margin: 16px 0 0;
    color: var(--lr-gray);
    font-size: 15px;
    line-height: 1.7;
}
.member-booking-window-note {
    margin: 14px 0 18px;
    border-left: 4px solid var(--lr-black);
    background: var(--lr-paper);
    padding: 12px 14px;
    font-size: 15px;
    line-height: 1.7;
}
.reservation-confirm-dialog {
    width: min(620px, calc(100vw - 40px));
    max-width: none;
    border: 0;
    padding: 0;
    color: var(--lr-black);
    background: var(--lr-white);
    box-shadow: 0 30px 100px rgba(0, 0, 0, .34);
}
.reservation-confirm-dialog::backdrop { background: rgba(0, 0, 0, .54); }
.reservation-confirm-dialog-inner { border-top: 6px solid var(--lr-black); padding: 30px; }
.reservation-confirm-dialog h2 { margin: 4px 0 10px; font-size: 30px; font-weight: 800; }
.reservation-confirm-lead { margin: 0 0 24px; color: var(--lr-gray); font-size: 15px; line-height: 1.7; }
.reservation-confirm-dialog dl {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    margin: 0 0 26px;
    background: var(--lr-line);
}
.reservation-confirm-dialog dl > div { background: var(--lr-white); padding: 16px; }
.reservation-confirm-dialog dl .field-wide { grid-column: 1 / -1; }
.reservation-confirm-dialog dt { color: var(--lr-gray); font-size: 14px; font-weight: 700; }
.reservation-confirm-dialog dd { margin: 5px 0 0; font-size: 20px; font-weight: 800; }
.member-confirm-terms {
    gap: 0;
    margin: 0 0 24px;
    border-top-width: 1px;
    padding: 16px 18px 10px;
}
.member-confirm-terms h3 { margin: 0; font-size: 19px; }
.member-confirm-terms > p { margin: 5px 0 10px; font-size: 14px; }
.member-confirm-terms label { min-height: 50px; padding: 10px 2px; }
.member-confirm-terms label span { font-size: 15px; }
.reservation-confirm-actions { display: grid; grid-template-columns: 1fr 1.35fr; gap: 12px; }
.reservation-confirm-actions .button { min-height: 56px; }
.summary-stat-grid { gap: 0; border-top: 1px solid var(--lr-line); border-left: 1px solid var(--lr-line); }
.summary-stat-grid div { border-right: 1px solid var(--lr-line); border-bottom: 1px solid var(--lr-line); }
.unchecked-alert, .form-error, .flash, .status-banner {
    border: 1px solid var(--lr-black);
    border-left-width: 5px;
    border-radius: 0;
    background: var(--lr-paper);
    color: var(--lr-black);
}

@media (max-width: 1100px) {
    .calendar-context-bar,
    .member-reserve-filter { grid-template-columns: 1fr; gap: 18px; }
    .calendar-today-button,
    .member-reserve-filter .button { width: 100%; }
    .member-reservation-cta {
        grid-template-columns: minmax(0, 1fr) 66px;
        min-height: 104px;
        margin: 20px 0 24px;
    }
    .member-reservation-cta-copy { padding: 17px 18px; }
    .member-reservation-cta-copy small { font-size: 10px; }
    .member-reservation-cta-copy strong { font-size: 24px; }
    .member-reservation-cta-copy > span { font-size: 13px; }
    .member-reservation-cta-arrow { font-size: 25px; }
    .member-dashboard-actions { grid-template-columns: 1fr; gap: 12px; margin: 20px 0 24px; }
    .member-dashboard-actions .member-reservation-cta { min-height: 104px; }
    .today-slot-list { grid-template-columns: 1fr; }
    .today-slot-row:nth-child(odd) { border-right: 0; }
    .today-status-note { grid-template-columns: 1fr; gap: 10px; }
    .today-status-note .button { width: 100%; }
    .is-booking-confirmed { width: calc(100% - 24px); margin: 12px auto 24px !important; border-left-width: 7px !important; padding: 22px 18px !important; }
    .is-booking-confirmed > strong { font-size: 34px; }
    .is-booking-confirmed > small { font-size: 14px; }
    .member-time-change-form,
    .member-booking-action-panels { grid-template-columns: 1fr; }
    .member-datetime-group { padding: 16px; }
    .member-datetime-group > div { grid-template-columns: 1fr; }
    .member-time-change-submit { align-items: stretch; flex-direction: column; gap: 10px; }
    .member-time-change-submit .button { width: 100%; min-width: 0; }
    .member-visit-action,
    .member-cancel-action { grid-template-columns: 1fr; }
    .member-booking-action-panels form { padding: 18px; }
    .member-booking-action-panels .button { width: 100%; }
    .member-security-section { margin-top: 20px; padding: 24px 18px; }
    .member-security-form { margin-top: 24px; }
    .admin-calendar-layout { grid-template-columns: 1fr; }
    .calendar-side-panel {
        position: static;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-height: none;
        overflow: visible;
    }
}

/* Keep the calendar controls compact on narrow desktop windows. */
@media (min-width: 601px) and (max-width: 760px) {
    .calendar-context-bar {
        grid-template-columns: minmax(220px, .75fr) minmax(0, 1.25fr);
        gap: 8px;
        margin-bottom: 10px;
        padding-block: 6px;
    }
    .calendar-store-field { grid-column: 1; }
    .calendar-date-field { grid-column: 2; }
    .calendar-date-field .date-stepper {
        grid-template-columns: 46px minmax(0, 1fr) 46px;
        gap: 6px;
    }
    .calendar-date-field .date-stepper > a { height: 50px; }
    .calendar-date-field .date-stepper > label {
        position: relative;
        display: flex;
        padding-inline: 10px;
    }
    .calendar-date-field input[type="date"] {
        position: absolute;
        inset: 0;
        z-index: 2;
        width: 100%;
        min-height: 100%;
        opacity: 0;
        cursor: pointer;
    }
    .calendar-date-compact {
        display: block;
        min-width: 0;
        font-size: 22px;
        font-weight: 800;
        letter-spacing: -.025em;
        pointer-events: none;
    }
    .calendar-date-field label strong { margin-left: auto; padding-left: 10px; font-size: 14px; }
    .calendar-today-button {
        display: none;
    }
    .calendar-context-bar .calendar-top-actions {
        grid-column: 1 / -1;
        display: flex;
        justify-content: flex-start;
        gap: 8px;
    }
    .calendar-context-bar .calendar-top-actions .button {
        min-height: 46px;
        padding-inline: 14px;
    }
}

/* One concise control row where there is enough horizontal room. */
@media (min-width: 761px) and (max-width: 1100px) {
    .calendar-context-bar {
        grid-template-columns: minmax(210px, .9fr) minmax(260px, 1.1fr) max-content;
        gap: 8px;
        margin-bottom: 8px;
        padding-block: 4px 8px;
        align-items: stretch;
    }
    .calendar-store-field { grid-column: 1; }
    .calendar-date-field { grid-column: 2; }
    .calendar-date-field .date-stepper {
        grid-template-columns: 46px minmax(0, 1fr) 46px;
        gap: 6px;
        height: 50px;
    }
    .calendar-date-field .date-stepper > a {
        height: 50px;
        min-height: 50px;
    }
    .calendar-date-field .date-stepper > label {
        position: relative;
        display: flex;
        min-height: 50px;
        padding-inline: 10px;
    }
    .calendar-date-field input[type="date"] {
        position: absolute;
        inset: 0;
        z-index: 2;
        width: 100%;
        min-height: 100%;
        opacity: 0;
        cursor: pointer;
    }
    .calendar-date-compact {
        display: block;
        min-width: 0;
        font-size: 22px;
        font-weight: 800;
        letter-spacing: -.025em;
        pointer-events: none;
    }
    .calendar-date-field label strong {
        margin-left: auto;
        padding-left: 10px;
        font-size: 14px;
    }
    .calendar-context-bar .calendar-store-field select {
        min-height: 50px;
    }
    .calendar-today-button { display: none; }
    .calendar-context-bar .calendar-top-actions {
        grid-column: 3;
        display: flex;
        justify-content: flex-start;
        gap: 8px;
    }
    .calendar-context-bar .calendar-top-actions .button {
        min-height: 50px;
        padding-inline: 12px;
    }
}

@media (max-width: 600px) {
    .today-view-controls { align-items: stretch; flex-direction: column; gap: 12px; margin-top: 12px; padding-block: 12px; }
    .today-store-picker { flex-basis: auto; max-width: none; }
    .today-overview { width: 100%; }
    .today-overview > div { padding: 18px; }
    .today-time-band > summary { min-height: 58px; padding: 12px 15px; }
    .today-time-band > summary strong { font-size: 19px; }
    .today-time-band > summary span { font-size: 13px; }
    .today-slot-row {
        grid-template-columns: 62px minmax(55px, 1fr);
        gap: 8px 12px;
        min-height: 66px;
        padding: 10px 14px;
    }
    .today-slot-row p { grid-column: 1 / -1; justify-content: space-between; font-size: 14px; }
    .today-status-note { padding: 18px; }
    .today-timeline-jumps { gap: 6px; margin-top: 0; }
    .today-timeline-jumps button { min-width: 52px; min-height: 42px; padding-inline: 10px; font-size: 14px; }
    .today-readonly-scroll { max-height: 62vh; }
    .today-readonly-grid {
        grid-template-columns: 62px repeat(var(--seat-count), 66px);
        grid-template-rows: 46px repeat(var(--time-count), 42px);
    }
    .today-readonly-corner { padding: 6px 8px; }
    .today-readonly-corner strong { font-size: 13px; }
    .today-readonly-seat { min-width: 66px; padding: 5px; font-size: 12px; }
    .today-readonly-time { min-height: 42px; font-size: 11px; }
    .today-readonly-time.is-hour { font-size: 15px; }
    .today-readonly-slot { min-width: 66px; min-height: 42px; }
    .member-guide-intro { margin: 28px auto 22px; text-align: left; }
    .member-guide-intro p { font-size: 18px; line-height: 1.75; }
    .member-guide-list { grid-template-columns: 1fr; gap: 14px; }
    .member-guide-list article { padding: 24px 20px; }
    .member-guide-list p { font-size: 17px; line-height: 1.8; }
    .member-guide-actions { align-items: stretch; flex-direction: column; }
    .member-guide-actions .button { width: 100%; min-width: 0; }
    .calendar-context-bar {
        grid-template-columns: minmax(128px, .8fr) minmax(0, 1.2fr);
        grid-auto-rows: 44px;
        align-items: stretch;
        gap: 8px;
        margin-bottom: 8px;
        padding: 4px 0 8px;
    }
    .member-reserve-filter { padding-block: 18px; }
    .calendar-date-field { grid-column: 1; }
    .calendar-date-field,
    .calendar-store-field,
    .calendar-date-field .date-stepper { height: 44px; min-height: 44px; }
    .calendar-date-field .date-stepper { grid-template-columns: 32px minmax(0, 1fr) 32px; gap: 5px; }
    .calendar-date-field .date-stepper > a,
    .calendar-date-field .date-stepper > label {
        box-sizing: border-box;
        height: 44px;
        min-height: 44px;
    }
    .calendar-date-field .date-stepper > a b { font-size: 17px; }
    .calendar-date-field .date-stepper > a small { font-size: 10px !important; }
    .calendar-date-field .date-stepper > label { position: relative; padding-inline: 8px; }
    .calendar-date-field input[type="date"] { position: absolute; inset: 0; z-index: 1; min-height: 0; opacity: 0; cursor: pointer; }
    .calendar-date-compact { display: block; font-size: 18px; font-weight: 800; pointer-events: none; }
    .calendar-date-field label strong { display: none; }
    .calendar-today-button { display: none; }
    .calendar-store-field { grid-column: 2; }
    .calendar-context-bar .calendar-store-field select {
        box-sizing: border-box;
        height: 44px;
        min-height: 44px;
        padding: 6px 32px 6px 10px;
        font-size: 16px;
    }
    .calendar-context-bar .calendar-top-actions {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    .calendar-context-bar .calendar-top-actions .button {
        height: 44px;
        min-height: 44px;
        padding-inline: 8px;
        font-size: 13px;
    }
    .calendar-legend {
        flex-wrap: nowrap;
        gap: 5px;
        margin-bottom: 8px;
        overflow: hidden;
    }
    .calendar-legend span {
        flex: 0 0 auto;
        padding: 5px 7px;
        font-size: 11px !important;
        white-space: nowrap;
    }
    .calendar-store-field select,
    .calendar-date-field input[type="date"],
    .member-reserve-filter select,
    .member-reserve-filter input[type="date"] { font-size: 20px; }
    .member-reserve-filter,
    .member-reserve-filter label,
    .guest-date-grid,
    .guest-date-grid label { width: 100%; min-width: 0; }
    .member-reserve-filter input[type="date"],
    .guest-date-grid input[type="date"] {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
        padding-right: 10px;
    }
    .member-reserve-filter input[type="date"]::-webkit-calendar-picker-indicator,
    .guest-date-grid input[type="date"]::-webkit-calendar-picker-indicator {
        flex: 0 0 auto;
        margin: 0;
        padding: 4px;
    }
    .calendar-side-panel { grid-template-columns: 1fr; }
    .member-reserve-page { padding-bottom: 210px; }
    .member-reserve-page .timeline-confirm {
        right: 16px;
        bottom: 16px;
        width: calc(100vw - 32px);
        grid-template-columns: 1fr;
    }
    .member-reserve-page .timeline-confirm .button { width: 100%; }
    .reservation-confirm-dialog-inner { padding: 24px 20px; }
    .reservation-confirm-dialog h2 { font-size: 25px; }
    .reservation-confirm-dialog dl,
    .reservation-confirm-actions { grid-template-columns: 1fr; }
    .reservation-confirm-dialog dl .field-wide { grid-column: 1; }
}

/* Lists and tables */
.data-table, .booking-record, .member-booking-list > a, .member-history-list > a,
.calendar-today-list a, .audit-log-list details { border-color: var(--lr-line); }
.data-table thead, .data-table th { background: var(--lr-paper); color: var(--lr-black); }
.booking-record:hover, .member-booking-list > a:hover, .member-history-list > a:hover { background: var(--lr-paper); }

@media (max-width: 900px) {
    .site-header { min-height: 70px; padding-inline: 20px; }
    .site-logo { width: 116px; height: 34px; }
    .site-context { font-size: 9px; }
    .reservation-home { width: calc(100% - 32px); margin-inline: auto; padding: 24px 0 40px; }
    .reservation-home-header { grid-template-columns: 1fr; gap: 10px; margin-bottom: 20px; }
    .reservation-home-prompt { text-align: left; }
    .reservation-home .reservation-choice-grid { grid-template-columns: 1fr; }
    .reservation-home .reservation-choice-card {
        min-height: 132px;
        border: 1px solid var(--lr-line);
        padding: 18px 16px;
    }
    .reservation-home .reservation-choice-card:last-child { border-bottom: 1px solid var(--lr-line); }
    .reservation-home .reservation-private-inquiry { margin-top: 0; }
    .reservation-home .reservation-private-inquiry a {
        position: relative;
        display: flex;
        min-height: 132px;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        gap: 8px;
        border: 1px solid var(--lr-line);
        background: var(--lr-white);
        padding: 18px 44px 18px 16px;
        font-size: 19px;
        text-decoration: none;
        box-shadow: 0 8px 24px rgba(0, 0, 0, .045);
    }
    .reservation-home .reservation-private-inquiry .choice-arrow {
        display: block;
        right: 18px;
        bottom: 15px;
    }
    .auth-shell, .dashboard, .member-page { width: min(100% - 32px, var(--lr-max)); }
    .dashboard, .member-page { padding-top: 32px; }
    .dashboard-topbar, .member-topbar { align-items: stretch; flex-direction: column; }
    .dashboard-tabs a, .dashboard-tabs span { padding-inline: 13px; }
    .guest-shell { width: min(100% - 40px, 760px); padding-top: 22px; }
    .guest-hero { margin-bottom: 14px; }
    .guest-hero .back-link { margin-bottom: 28px; }
    .guest-store-picker { padding: 38px 0 44px; }
    .guest-form-section { grid-template-columns: 1fr; gap: 28px; padding: 38px 0 44px; }
    .guest-form-section > header { display: block; }
    .guest-form-section > header > span { margin: 5px 0 0; }
    .guest-date-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .guest-price-list article { grid-column: 1; }
}

@media (max-width: 600px) {
    .site-header { grid-template-columns: auto auto 1fr; }
    .site-staff .site-header {
        min-height: 48px;
        gap: 0;
        padding-right: 0;
    }
    .site-staff .site-header > .brand,
    .site-staff .site-header .site-admin-switch { display: none; }
    .site-staff .site-header > .dashboard-tabs {
        min-width: 0;
        border-left: 0;
        margin: 0;
        padding-inline: 0;
    }
    .site-staff .site-header > .dashboard-tabs a,
    .site-staff .site-header > .dashboard-tabs span {
        min-height: 48px;
        padding-inline: 10px;
        font-size: 12px;
    }
    .site-staff .site-header > .site-utility {
        display: flex;
        align-items: stretch;
        margin-left: 4px;
    }
    .site-staff .site-header > .site-utility button {
        min-height: 48px;
        padding: 0 8px;
        font-size: 12px !important;
        white-space: nowrap;
    }
    .site-logo { width: 102px; }
    .site-context { padding-left: 12px; }
    .site-utility > span { display: none; }
    .reservation-home-kicker { font-size: clamp(24px, 8vw, 32px); }
    .dashboard-topbar h1, .member-topbar h1 { font-size: 34px; }
    .dashboard-tabs { margin-inline: -16px; padding-inline: 16px; overflow-x: auto; }
    .guest-shell { width: calc(100% - 32px); padding: 20px 0 64px; }
    .guest-hero { margin-bottom: 12px; }
    .guest-hero .back-link { margin-bottom: 24px; }
    .guest-hero h1 { font-size: 36px; }
    .guest-store-picker { grid-template-columns: 1fr; gap: 18px; padding: 32px 0 38px; }
    .guest-store-picker.is-joined { padding-bottom: 16px; }
    .guest-store-picker.is-joined + .guest-application-form > .guest-form-section:first-child { padding-top: 16px; }
    .guest-first-use-guide { grid-template-columns: 1fr; gap: 14px; margin-bottom: 26px; }
    .guest-first-use-guide a { width: max-content; }
    .guest-store-picker label { display: grid; grid-template-columns: 1fr; gap: 8px; }
    .guest-store-picker label > span { font-size: 21px; }
    .guest-store-picker select { min-height: 52px; font-size: 16px; }
    .guest-notice { grid-template-columns: 1fr; gap: 5px; padding: 15px 14px; }
    .guest-form-section { padding: 32px 0 38px; }
    .guest-form-section h2 { font-size: 21px; }
    .guest-date-grid, .guest-contact-grid { grid-template-columns: 1fr; gap: 22px; }
    .guest-contact-grid .field-wide { grid-column: 1; }
    .guest-companion-inputs label { grid-template-columns: 1fr; gap: 7px; }
    .guest-intent-choices { grid-template-columns: 1fr; }
    .guest-intent-choices label { min-height: 112px; border-right: 0; border-bottom: 1px solid var(--lr-line); padding: 17px 15px; }
    .guest-intent-choices label:last-child { border-bottom: 0; }
    .guest-intent-choices label > span { gap: 22px; }
    .guest-choice-heading { padding: 15px 14px; font-size: 16px; }
    .guest-assistance-choices label { grid-template-columns: 26px 1fr; gap: 10px; padding: 12px 14px; }
    .guest-assistance-choices input[type="text"] { grid-column: 2; width: 100%; }
    .guest-planned-work-field { grid-column: 1; margin-top: 0; }
    .guest-planned-work-field > span { padding: 15px 14px; font-size: 16px; }
    .guest-planned-work-field textarea { min-height: 112px; padding: 15px 14px; }
    .guest-submit-box { grid-template-columns: 1fr; gap: 18px; margin-inline: 0; padding: 24px 0; }
    .guest-submit-box .button { width: 100%; min-width: 0; }
    .guest-application-form > .terms-consent-panel { margin-bottom: 28px; }
    .guest-application-form > .terms-consent-panel h2 { padding: 15px 14px; font-size: 16px; }
    .guest-application-form > .terms-consent-panel label { padding-inline: 14px; }
    .guest-application-form > .terms-consent-panel .prior-orientation-guide { padding-inline: 14px; }
}

/* Readability floor: avoid micro text throughout public, member and staff screens */
body { font-size: 16px; }
.site-context, .site-utility, .site-utility button, .site-admin-switch, .site-footer,
.text-button, .text-link, .back-link, .eyebrow, .form-note, .table-note,
.staff-entry, .account-chip button, .dashboard-tabs a, .dashboard-tabs span,
.member-nav a, .segmented-tabs a, .anchor-nav a, .create-kind-switch,
.calendar-toolbar time, .calendar-help, .timeline-instruction,
.manual-booking-form summary, .operation-note, .template-help,
.booking-note-list footer, .empty-note, .copy-reference {
    font-size: 14px !important;
    line-height: 1.6;
}
small,
.auth-heading p, .stack-form label > span,
.master-intro p, .master-section > header p:last-child,
.store-card p, .store-card dt, .store-card dd,
.read-only-grid dt, .presence-list span, .presence-list small,
.credential-card p:last-child, .credential-card label span,
.current-plan span, .current-plan small,
.history-columns p span, .history-columns p small,
.booking-day-board > header > p, .booking-record p, .record-meta,
.seat-choice legend, .force-box p, .booking-summary dt,
.member-summary span, .member-summary small,
.member-booking-section > header > p,
.member-booking-list time small, .member-booking-list div span,
.member-history-list time, .member-history-list strong,
.member-seat-map > header > p, .member-day-info span,
.timeline-confirm span, .timeline-confirm small,
.member-booking-detail dt, .guest-contact dt,
.guest-admin-row time, .guest-admin-row span, .guest-admin-row em,
.warning-banner, .booking-note-list p, .active-block-list span,
.account-list span, .account-list em {
    font-size: 14px !important;
    line-height: 1.6;
}
label > span, legend, th, td, input, select, textarea, button {
    font-size: 14px;
}
.master-table th, .master-table td,
.operation-table th, .operation-table td,
.audit-log-list time, .audit-log-list span, .audit-log-list em,
.audit-log-list dt, .audit-log-list dd {
    font-size: 14px !important;
    line-height: 1.55;
}
.admin-calendar-corner, .admin-calendar-time, .admin-calendar-seat,
.calendar-legend span, .summary-stat-grid span,
.calendar-selection-panel > p, .calendar-selection-panel dt,
.calendar-selection-panel dd, .calendar-side-section header span,
.calendar-today-list time, .calendar-today-list em,
.calendar-today-list span, .staff-hour-chips span,
.timeline-corner, .timeline-time, .timeline-seat,
.timeline-jumps button, .admin-booking-card strong,
.admin-booking-card span {
    font-size: 13px !important;
    line-height: 1.35;
}
.site-public .guest-hero > p:last-child,
.site-public .guest-first-use-guide p,
.site-public .guest-notice p,
.site-public .guest-form-section header p,
.site-public .guest-date-grid small,
.site-public .guest-contact-grid small,
.site-public .guest-companion-heading small,
.site-public .guest-companion-inputs p,
.site-public .guest-intent-choices small,
.site-public .guest-submit-box p,
.site-public .legal-document p {
    font-size: 16px !important;
    line-height: 1.7;
}
.site-public .guest-date-grid label > span,
.site-public .guest-contact-grid label > span,
.site-public .guest-companion-heading > span,
.site-public .guest-companion-inputs label > span {
    font-size: 16px !important;
}
.site-public .guest-intent-choices strong { font-size: 18px; }
.choice-index, .guest-form-section > header > span { font-size: 13px !important; }
.stack-form label > span { font-size: 14px !important; }

@media (max-width: 600px) {
    .site-context { font-size: 13px !important; }
    .site-public .guest-intent-choices strong { font-size: 16px; }

    /* Compact touch-first reservation tables */
    .admin-calendar-scroll {
        overflow-x: auto;
        overflow-y: visible;
        min-height: 0;
        max-height: none;
        overscroll-behavior-x: contain;
        overscroll-behavior-y: auto;
        scrollbar-gutter: auto;
    }
    .admin-calendar-grid {
        grid-template-columns: 58px repeat(48, 32px);
        grid-template-rows: 38px repeat(var(--seat-count), 32px);
    }
    .admin-calendar-corner { padding: 5px 7px; }
    .admin-calendar-corner strong { font-size: 12px !important; }
    .admin-calendar-corner span { font-size: 9px !important; }
    .admin-calendar-time {
        min-width: 64px;
        padding-left: 5px;
        border-left-width: 1px;
    }
    .admin-calendar-time time { font-size: 10px !important; }
    .admin-calendar-seat { padding: 0 5px; font-size: 11px !important; }
    .admin-calendar-cell { touch-action: pan-y; }
    .admin-booking-card { border-left-width: 2px; padding: 2px 10px 2px 3px; }
    .admin-booking-card[data-calendar-draggable] { -webkit-user-drag: none; touch-action: pan-y; }
    .admin-booking-card.is-touch-dragging { pointer-events: none; }
    .admin-booking-card.is-mobile-selected { z-index: 14; outline: 3px solid var(--lr-black); outline-offset: -3px; }
    .admin-booking-card strong { font-size: 10px !important; }
    .admin-booking-card span { display: none; }
    .calendar-page .dashboard-tabs a,
    .calendar-page .dashboard-tabs span { min-height: 48px; padding: 13px 15px; font-size: 13px; }
    .site-staff .dashboard-tabs a,
    .site-staff .dashboard-tabs span { min-height: 48px; padding: 13px 15px; font-size: 13px; }
    .guest-admin-row-pending { grid-template-columns: 1fr; gap: 10px; }
    .guest-admin-row-link { grid-template-columns: 1fr auto; gap: 4px 12px; }
    .guest-admin-row-link time, .guest-admin-row-link div { grid-column: 1; }
    .guest-admin-row-link > span { grid-column: 2; grid-row: 1; }
    .guest-admin-row-link em { grid-column: 2; grid-row: 2; }
    .guest-quick-approve .button { width: 100%; }
    .guest-detail-page .dashboard-topbar,
    .guest-detail-content { width: 100%; }
    .guest-detail-summary,
    .guest-detail-overview .guest-contact { grid-template-columns: 1fr; }
    .guest-detail-overview,
    .guest-decision-panel { padding: 20px 16px; }
    .booking-detail-page .dashboard-topbar,
    .booking-detail-content { width: 100%; }
    .booking-detail-overview { padding: 20px 16px; }

    .calendar-booking-dialog {
        width: min(calc(100% - 32px), 420px);
        margin: auto;
        border: 1px solid var(--lr-black);
        padding: 0;
        color: var(--lr-black);
        background: var(--lr-white);
    }
    .calendar-booking-dialog::backdrop { background: rgba(0, 0, 0, .46); }
    .calendar-booking-dialog > section { position: relative; padding: 24px 20px 20px; }
    .calendar-booking-dialog h2 { margin: 6px 36px 18px 0; font-size: 22px; line-height: 1.25; }
    .calendar-booking-dialog dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 0 18px; border-top: 1px solid var(--lr-line); border-left: 1px solid var(--lr-line); }
    .calendar-booking-dialog dl > div { min-width: 0; padding: 11px 10px; border-right: 1px solid var(--lr-line); border-bottom: 1px solid var(--lr-line); }
    .calendar-booking-dialog dt { color: var(--lr-gray); font-size: 12px; font-weight: 700; }
    .calendar-booking-dialog dd { margin: 4px 0 0; font-size: 15px; font-weight: 700; overflow-wrap: anywhere; }
    .calendar-booking-dialog-link { display: flex; min-height: 48px; align-items: center; justify-content: center; }
    .calendar-booking-dialog-close { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; border: 1px solid var(--lr-black); color: var(--lr-black); background: var(--lr-white); font-size: 25px; line-height: 1; }

    .member-timeline { max-height: 58vh; }
    .timeline-grid { grid-template-columns: 48px repeat(var(--slot-count), 34px); }
    .timeline-corner { min-height: 34px; font-size: 11px !important; }
    .timeline-time {
        min-width: 34px;
        min-height: 34px;
        overflow: visible;
        font-size: 10px !important;
    }
    .timeline-seat { min-height: 38px; padding-inline: 3px; font-size: 11px !important; }
    .timeline-slot {
        min-height: 38px;
        padding: 1px;
        font-size: 9px !important;
        touch-action: pan-y;
    }
    .timeline-slot.is-own-conflict { font-size: 8px !important; }
}

/* Keep the member timetable axis rules last so legacy timeline styles cannot override them. */
.member-timeline .timeline-grid-time-rows {
    grid-template-columns: 82px repeat(var(--seat-count), minmax(78px, 1fr));
    grid-template-rows: 48px repeat(var(--time-count), 46px);
    width: max-content;
    min-width: 100%;
}
.member-timeline .timeline-grid-time-rows .timeline-corner { grid-row: 1; grid-column: 1; top: 0; left: 0; min-height: 48px; }
.member-timeline .timeline-grid-time-rows .timeline-seat { grid-row: 1; grid-column: var(--column); top: 0; left: auto; min-width: 78px; min-height: 48px; }
.member-timeline .timeline-grid-time-rows .timeline-time { grid-row: var(--row); grid-column: 1; top: auto; left: 0; min-width: 82px; min-height: 46px; }
.member-timeline .timeline-grid-time-rows .timeline-slot { grid-row: var(--row); grid-column: var(--column); min-width: 78px; min-height: 46px; touch-action: pan-x; }

@media (max-width: 700px) {
    .member-timeline { max-height: 64vh; }
    .member-timeline .timeline-grid-time-rows {
        grid-template-columns: 58px repeat(var(--seat-count), 52px);
        grid-template-rows: 38px repeat(var(--time-count), 34px);
    }
    .member-timeline .timeline-grid-time-rows .timeline-corner { min-height: 38px; }
    .member-timeline .timeline-grid-time-rows .timeline-seat { min-width: 52px; min-height: 38px; }
    .member-timeline .timeline-grid-time-rows .timeline-time { min-width: 58px; min-height: 34px; }
    .member-timeline .timeline-grid-time-rows .timeline-slot { min-width: 52px; min-height: 34px; touch-action: pan-x; }
    .site-footer {
        display: grid;
        grid-template-columns: 1fr auto;
        gap: 8px 16px;
        padding: 16px;
    }
    .site-payment-notice { grid-column: 1 / -1; grid-row: 1; justify-self: center; font-size: 14px !important; text-align: center; }
}

/* Dedicated mobile member booking flow. Desktop keeps the timetable. */
.member-mobile-flow { display: none; }

.credential-card-actions {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    border-top: 1px solid #b9ae93;
    padding-top: 14px;
}
.credential-card-actions .button { min-height: 48px; padding-inline: 22px; }
.credential-card-actions [data-issued-credentials-status] { min-width: 110px; font-size: 14px !important; font-weight: 700; }
.credential-print-url { display: none; }

@media (max-width: 700px) {
    .member-reserve-page .member-seat-map,
    .member-reserve-page .member-timeline-section,
    .member-reserve-page .timeline-confirm { display: none; }
    .member-reserve-page { padding-bottom: 30px; }
    .member-reserve-filter {
        display: grid;
        grid-template-columns: 1fr;
        gap: 14px;
        border: 1px solid var(--lr-line);
        border-radius: 14px;
        padding: 16px;
        background: #fff;
    }
    .member-reserve-filter label { width: 100%; }
    .member-reserve-filter select,
    .member-reserve-filter input,
    .member-reserve-filter .button { width: 100%; min-height: 56px; font-size: 16px !important; }
    .member-day-info { grid-template-columns: 1fr 1fr; margin-block: 12px; }
    .member-day-info > div { min-height: 92px; padding: 14px; }
    .member-day-info span { font-size: 16px !important; }
    .member-day-info strong { font-size: 20px; }

    .member-mobile-flow {
        display: block;
        overflow: clip;
        margin-top: 8px;
        border: 1px solid var(--lr-line);
        border-radius: 18px;
        background: #fff;
        box-shadow: 0 10px 34px rgba(0, 0, 0, .06);
    }
    .member-mobile-flow-header { padding: 20px 18px 16px; }
    .member-mobile-flow-header > span,
    .member-mobile-step > header > span {
        display: block;
        color: var(--lr-gray);
        font-size: 13px !important;
        font-weight: 700;
        letter-spacing: .08em;
    }
    .member-mobile-flow-header > strong { display: block; margin-top: 4px; font-size: 25px !important; font-weight: 700; }
    .member-mobile-flow-header p { margin: 6px 0 0; color: var(--lr-gray); font-size: 15px !important; }

    .member-mobile-date-list {
        display: grid;
        grid-template-columns: repeat(7, minmax(46px, 1fr));
        gap: 6px;
        overflow-x: auto;
        border-block: 1px solid var(--lr-line);
        padding: 10px;
        scrollbar-width: none;
    }
    .member-mobile-date-list::-webkit-scrollbar { display: none; }
    .member-mobile-date-list a {
        display: grid;
        min-width: 46px;
        min-height: 60px;
        place-content: center;
        border: 1px solid var(--lr-line);
        border-radius: 10px;
        color: var(--lr-black);
        text-align: center;
        text-decoration: none;
    }
    .member-mobile-date-list a span { font-size: 11px !important; }
    .member-mobile-date-list a strong { font-size: 18px !important; }
    .member-mobile-date-list a.is-current { border-color: var(--lr-black); background: var(--lr-black); color: #fff; }

    .member-mobile-progress {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        margin: 0;
        border-bottom: 1px solid var(--lr-line);
        padding: 0;
        list-style: none;
    }
    .member-mobile-progress li {
        display: flex;
        min-height: 52px;
        align-items: center;
        justify-content: center;
        gap: 7px;
        border-right: 1px solid var(--lr-line);
        color: #888;
        font-size: 13px !important;
        font-weight: 700;
    }
    .member-mobile-progress li:last-child { border-right: 0; }
    .member-mobile-progress li span {
        display: grid;
        width: 23px;
        height: 23px;
        place-items: center;
        border: 1px solid currentColor;
        border-radius: 50%;
        font-size: 11px !important;
    }
    .member-mobile-progress li.is-active { color: var(--lr-black); }
    .member-mobile-progress li.is-active span { background: var(--lr-black); color: #fff; }
    .member-mobile-progress li.is-done { color: #333; }

    .member-mobile-step { padding: 18px 14px 12px; }
    .member-mobile-step[hidden] { display: none; }
    .member-mobile-step > header {
        position: relative;
        display: flex;
        align-items: baseline;
        gap: 8px;
        margin-bottom: 10px;
        white-space: nowrap;
    }
    .member-mobile-step > header > span { display: inline; flex: 0 0 auto; }
    .member-mobile-step > header h2 { margin: 0; font-size: 21px !important; font-weight: 700; }
    .member-mobile-step > header [data-mobile-back] {
        order: 3;
        flex: 0 0 auto;
        margin-left: auto;
        min-height: 40px;
        border: 0;
        background: transparent;
        padding: 0 4px;
        font-size: 14px !important;
        text-decoration: underline;
        text-underline-offset: 4px;
    }
    .member-mobile-step-note {
        margin: -2px 0 14px;
        border-radius: 8px;
        background: var(--lr-paper);
        padding: 11px 12px;
        font-size: 16px !important;
        font-weight: 700;
    }
    .member-mobile-period-tabs {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 8px;
        margin-bottom: 12px;
    }
    .member-mobile-period-tabs button {
        min-height: 48px;
        border: 1px solid var(--lr-line);
        border-radius: 10px;
        background: #fff;
        font-size: 15px !important;
        font-weight: 700;
    }
    .member-mobile-period-tabs button[aria-pressed="true"] { border-color: var(--lr-black); background: var(--lr-black); color: #fff; }
    .member-mobile-option-list { display: grid; gap: 9px; }
    .member-mobile-option-card {
        display: grid;
        grid-template-columns: 86px 1fr auto;
        min-height: 64px;
        align-items: center;
        gap: 12px;
        border: 1px solid var(--lr-line);
        border-radius: 12px;
        background: #fff;
        padding: 10px 14px;
        text-align: left;
    }
    .member-mobile-option-card:active { transform: scale(.99); background: var(--lr-paper); }
    .member-mobile-option-card strong { font-size: 21px !important; font-weight: 700; font-variant-numeric: tabular-nums; }
    .member-mobile-option-card span { color: var(--lr-gray); font-size: 14px !important; }
    .member-mobile-option-card b { font-size: 26px !important; font-weight: 400; }
    .member-mobile-empty { margin: 0; border: 1px dashed var(--lr-line); border-radius: 10px; padding: 22px 14px; color: var(--lr-gray); font-size: 15px !important; text-align: center; }

    .member-mobile-seat-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
    .member-mobile-seat-card {
        display: grid;
        min-height: 72px;
        align-content: center;
        justify-items: start;
        gap: 3px;
        border: 1px solid var(--lr-line);
        border-radius: 9px;
        background: #fff;
        padding: 9px;
        text-align: left;
    }
    .member-mobile-seat-card span { color: var(--lr-gray); font-size: 11px !important; }
    .member-mobile-seat-card strong { font-size: 16px !important; font-weight: 700; }
    .member-mobile-seat-card b { margin-top: 3px; font-size: 12px !important; }
    .member-mobile-seat-card.is-selected { border: 2px solid var(--lr-black); background: var(--lr-paper); }
    .member-mobile-seat-card.is-selected b::before { content: "✓ "; }
    .member-mobile-seat-map { margin: 0 0 10px; border-bottom: 1px solid var(--lr-line); padding-bottom: 8px; }
    .member-mobile-seat-map summary { min-height: 46px; padding: 12px 4px; font-size: 15px !important; font-weight: 700; }
    .member-mobile-seat-map img { display: block; width: 100%; margin-top: 8px; border: 1px solid var(--lr-line); border-radius: 10px; }

}

.member-dashboard-page .member-summary article > span,
.member-dashboard-page .member-summary article > small,
.member-dashboard-page .member-summary-label small {
    font-size: 18px !important;
    line-height: 1.55;
}
.member-dashboard-page .member-summary strong {
    margin: 12px 0;
    font-size: clamp(44px, 3.4vw, 58px);
    line-height: 1.1;
}
.member-dashboard-page .member-summary strong small {
    display: inline;
    font-size: 20px !important;
}

@media (max-width: 700px) {
    /* The staff calendar's two-by-two toolbar keeps a single, exact control height. */
    .site-staff .admin-calendar-main {
        align-self: start;
        min-height: 0 !important;
    }
    .site-staff .admin-calendar-scrollbar-top { display: none; }
    .site-staff .admin-calendar-scroll {
        block-size: auto;
        height: auto;
        min-height: 0 !important;
        max-height: none !important;
        overflow-x: auto;
        overflow-y: hidden;
        overscroll-behavior-x: contain;
        scroll-behavior: auto;
        touch-action: pan-x pan-y;
        -webkit-overflow-scrolling: touch;
    }
    .site-staff .admin-calendar-grid {
        grid-template-columns: 58px repeat(48, 32px);
        grid-template-rows: 38px repeat(var(--seat-count), 32px);
        block-size: auto;
        height: auto;
        min-height: 0;
        touch-action: pan-x pan-y;
    }
    .site-staff .admin-calendar-cell,
    .site-staff .admin-booking-card,
    .site-staff .admin-calendar-time,
    .site-staff .admin-calendar-seat,
    .site-staff .admin-calendar-corner { touch-action: pan-x pan-y !important; }
    .site-staff .admin-calendar-layout {
        grid-auto-rows: max-content;
        align-items: start;
        row-gap: 8px;
    }
    .site-staff .calendar-side-panel { align-self: start; margin-top: 0; }
    .site-staff .calendar-context-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-template-rows: 44px 44px;
        grid-auto-rows: 44px;
        align-items: stretch;
        gap: 8px;
    }
    .site-staff .calendar-context-bar .calendar-date-field,
    .site-staff .calendar-context-bar .calendar-store-field,
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper,
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper > a,
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper > label,
    .site-staff .calendar-context-bar .calendar-store-field select {
        box-sizing: border-box;
        block-size: 44px !important;
        height: 44px !important;
        min-height: 44px !important;
        max-height: 44px;
    }
    .site-staff .calendar-context-bar .calendar-date-field {
        grid-column: 1;
        grid-row: 1;
    }
    .site-staff .calendar-context-bar .calendar-store-field {
        grid-column: 2;
        grid-row: 1;
    }
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper > label { position: relative; }
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper > a {
        position: relative;
        z-index: 4;
    }
    .site-staff .calendar-context-bar .calendar-date-field .date-stepper > a small { display: none; }
    .site-staff .calendar-context-bar .calendar-date-field input[type="date"] {
        position: absolute;
        inset: 0;
        min-height: 0 !important;
        opacity: 0;
    }
    .site-staff .calendar-context-bar .calendar-date-compact {
        display: block;
        font-size: 18px;
        font-weight: 800;
        pointer-events: none;
    }
    .site-staff .calendar-context-bar .calendar-date-field label strong { display: none; }
    .site-staff .calendar-context-bar .calendar-today-button { display: none; }
    .site-staff .calendar-context-bar .calendar-top-actions {
        grid-column: 1 / -1;
        grid-row: 2;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }
    .site-staff .calendar-context-bar .calendar-top-actions .button {
        box-sizing: border-box;
        block-size: 44px;
        height: 44px;
        min-height: 44px;
        max-height: 44px;
    }
    .site-staff .calendar-context-bar .calendar-store-field select {
        padding-inline: 10px 28px;
        font-size: 13px !important;
        letter-spacing: 0;
    }
    .calendar-mobile-staff-hours {
        display: flex;
        min-height: 42px;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        margin: 0 0 8px;
        border: 1px solid var(--lr-line);
        padding: 8px 11px;
        background: var(--lr-white);
    }
    .calendar-mobile-staff-hours strong { flex: 0 0 auto; font-size: 13px; }
    .calendar-mobile-staff-hours div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
    .calendar-mobile-staff-hours span { font-size: 13px !important; font-weight: 700; }
    .calendar-legend-primary,
    .calendar-staff-hours-panel,
    .calendar-help { display: none; }
    .calendar-legend-mobile {
        display: flex;
        flex-wrap: nowrap;
        gap: 5px;
        margin: 14px 0 0;
        overflow: hidden;
    }
    .calendar-legend-mobile span {
        flex: 0 0 auto;
        padding: 5px 7px;
        font-size: 11px !important;
        white-space: nowrap;
    }

    /* Keep the member navigation compact enough to scan on a phone. */
    .member-page .member-nav { gap: 2px; }
    .member-page .member-nav a {
        padding: 13px 12px;
        font-size: 16px !important;
        line-height: 1.25;
    }
    .member-nav-account { gap: 8px; padding-left: 10px; }
    .member-nav-account > strong { font-size: 14px; }
    .member-nav-logout button { padding: 9px 11px; font-size: 13px !important; }

    /* Store and date share one compact row; the action remains full width. */
    .member-reserve-page .member-reserve-filter {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        margin: 8px 0 10px;
        padding: 10px;
    }
    .member-reserve-page .member-reserve-filter label {
        width: auto;
        min-width: 0;
        overflow: hidden;
    }
    .member-reserve-page .member-reserve-filter select,
    .member-reserve-page .member-reserve-filter input[type="date"] {
        display: block;
        inline-size: 100%;
        min-inline-size: 0;
        max-inline-size: 100%;
        block-size: 50px;
        height: 50px;
        min-height: 50px;
        border: 1px solid var(--lr-black);
        border-radius: 0;
        background-color: var(--lr-white);
        padding: 7px 6px;
        font-size: 15px !important;
        line-height: 1.2;
        letter-spacing: -.02em;
    }
    .member-reserve-page .member-reserve-filter input[type="date"]::-webkit-calendar-picker-indicator {
        flex: 0 0 auto;
        margin: 0;
        padding: 2px;
    }
    .member-reserve-page .member-reserve-filter .button {
        grid-column: 1 / -1;
        min-height: 50px;
    }

    /* The page owns vertical scrolling; reservation boards only scroll sideways. */
    .today-readonly-scroll,
    .member-timeline {
        max-height: none;
        overflow-x: auto;
        overflow-y: visible;
        overscroll-behavior-x: contain;
        overscroll-behavior-y: auto;
        scrollbar-gutter: auto;
    }

    /* Seven dates are a horizontal card rail and must not widen the page. */
    .member-mobile-date-list {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        grid-template-columns: repeat(7, 58px);
        box-sizing: border-box;
        overscroll-behavior-x: contain;
    }
    .member-mobile-date-list a { min-width: 0; }
}

@media print {
    body.is-printing-credentials * { visibility: hidden !important; }
    body.is-printing-credentials [data-issued-credentials],
    body.is-printing-credentials [data-issued-credentials] * { visibility: visible !important; }
    body.is-printing-credentials [data-issued-credentials] {
        position: absolute;
        inset: 0 auto auto 0;
        display: grid;
        width: 100%;
        grid-template-columns: 1fr 1fr;
        gap: 22px;
        border: 2px solid #000;
        background: #fff;
        padding: 28px;
        color: #000;
    }
    body.is-printing-credentials [data-issued-credentials] > div:first-child,
    body.is-printing-credentials .credential-print-url { grid-column: 1 / -1; }
    body.is-printing-credentials .credential-card-actions { display: none !important; }
    body.is-printing-credentials .credential-print-url { display: block; margin: 0; font-size: 15px !important; }
    body.is-printing-credentials [data-issued-credentials] input { border: 1px solid #000; font-size: 18px !important; }
}
/* Public language switch */
.language-switch {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0;
  border: 1px solid #c9c9c6;
  background: #fff;
}

.language-switch a {
  min-height: 42px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #444;
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.language-switch a + a { border-left: 1px solid #c9c9c6; }
.language-switch a.is-active { color: #fff; background: #111; }

.guest-language-question {
  grid-column: 2;
  margin-top: 24px;
}
.guest-language-question p { margin: 14px 20px 4px; font-size: 16px; line-height: 1.7; }

@media (max-width: 600px) {
  .language-switch a { min-height: 38px; padding: 0 11px; font-size: 13px; }
  .site-public .site-context { display: none; }
  .guest-language-question { grid-column: 1; }
}
