.booking-nav {
    background:rgba(255,255,255,0.9);
    border-bottom-color:rgba(29,29,31,0.08);
}
[data-theme="dark"] .booking-nav { background:rgba(13,11,26,0.9); }
.nav-booking-link {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:34px;
    padding:7px 17px;
    border-radius:980px;
    background:linear-gradient(135deg,var(--action-primary),var(--action-secondary));
    color:#fff;
    font-size:13px;
    font-weight:600;
    white-space:nowrap;
    box-shadow:0 6px 18px rgba(196,77,255,0.2);
    transition:transform 0.2s ease, box-shadow 0.2s ease;
}
.nav-booking-link:hover { transform:translateY(-1px); box-shadow:0 9px 22px rgba(196,77,255,0.28); }
.nav-booking-link:active { transform:scale(0.98); }
.nav-booking-link:focus-visible,
.mobile-booking-link:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.nav-join-link {
    color:var(--interactive-ink);
    font-size:13px;
    font-weight:600;
    white-space:nowrap;
}
.nav-join-link:hover { color:var(--text); }
.nav-join-link:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; border-radius:6px; }
.booking-account { display:flex; align-items:center; gap:8px; flex:0 0 auto; }
.booking-account-login { color:var(--text-secondary); font-size:13px; font-weight:600; }
.booking-message-link { position:relative; display:grid; place-items:center; width:34px; height:34px; border:1px solid var(--border); border-radius:50%; color:var(--text-secondary); background:var(--card); }
.booking-message-link:hover,.booking-account-login:hover { color:var(--interactive-ink); }
.booking-message-badge { position:absolute; top:-5px; right:-6px; display:grid; place-items:center; min-width:18px; height:18px; padding:0 5px; border:2px solid var(--card); border-radius:980px; background:var(--error); color:#fff; font-size:9px; font-weight:800; }
.booking-message-badge[hidden] { display:none; }
.booking-user-chip { display:flex; align-items:center; gap:7px; max-width:132px; color:var(--text); font-size:12px; font-weight:700; white-space:nowrap; }
.booking-user-chip > span:last-child { overflow:hidden; text-overflow:ellipsis; }
.booking-user-avatar { display:grid; place-items:center; flex:0 0 auto; width:28px; height:28px; border-radius:50%; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; font-size:11px; }
.booking-message-link:focus-visible,.booking-user-chip:focus-visible,.booking-account-login:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }

.booking-page {
    min-height:100dvh;
    padding:112px 0 88px;
    background:
        radial-gradient(circle at 92% 8%, rgba(196,77,255,0.08), transparent 24rem),
        radial-gradient(circle at 5% 28%, rgba(69,183,209,0.06), transparent 22rem),
        var(--bg-alt);
}
.booking-intro { margin-bottom:30px; }
.booking-intro h1 {
    max-width:780px;
    margin-bottom:12px;
    font-size:clamp(34px,4.6vw,56px);
    line-height:1.08;
    letter-spacing:-0.03em;
    text-wrap:balance;
}
.booking-intro > p { max-width:650px; color:var(--text-secondary); font-size:16px; }
.sample-notice {
    display:flex;
    align-items:center;
    gap:9px;
    width:fit-content;
    margin-top:18px;
    color:var(--text-secondary);
    font-size:13px;
}
.sample-notice i { color:var(--accent); }

.booking-filter-section { margin-bottom:28px; }
.booking-filters {
    display:grid;
    grid-template-columns:minmax(0,1.15fr) minmax(420px,1.12fr) minmax(150px,0.48fr) auto;
    gap:12px;
    align-items:end;
    padding:18px;
    border-radius:16px;
    background:var(--card);
    box-shadow:0 10px 34px rgba(56,35,86,0.08);
}
.sr-only {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
}
.filter-group { min-width:0; border:0; }
.filter-group legend,
.filter-control > span {
    display:flex;
    align-items:center;
    gap:7px;
    margin-bottom:8px;
    color:var(--text-secondary);
    font-size:12px;
    font-weight:600;
}
.filter-group legend i,
.filter-control > span i { color:var(--primary); }
.filter-control { display:grid; min-width:0; }
.region-cascade,
.booking-region-cascade { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.region-cascade label,
.booking-region-cascade label { min-width:0; }
.resource-type-switch {
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:4px;
    padding:4px;
    border-radius:12px;
    background:var(--bg-alt);
}
.resource-type-switch button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    min-height:36px;
    padding:7px 10px;
    border:0;
    border-radius:9px;
    background:transparent;
    color:var(--text-secondary);
    font-size:13px;
    font-weight:600;
    white-space:nowrap;
    transition:background 0.2s ease,color 0.2s ease,transform 0.2s ease;
}
.resource-type-switch button[aria-pressed="true"] { background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; }
.resource-type-switch button:active { transform:scale(0.98); }
.resource-type-switch button:focus-visible { outline:3px solid var(--focus-ring); outline-offset:2px; }
.flat-filter-note {
    display:flex;
    align-items:center;
    gap:8px;
    min-height:44px;
    padding:9px 12px;
    border-radius:10px;
    background:var(--bg-alt);
    color:var(--text-secondary);
    font-size:12px;
    line-height:1.4;
}
.flat-filter-note[hidden],
.service-filter-control[hidden] { display:none; }
.flat-filter-note i { color:var(--accent); }
.filter-control select,
.region-cascade select,
.booking-region-cascade select,
.booking-field input,
.booking-field select,
.booking-field textarea {
    width:100%;
    min-height:44px;
    border:1.5px solid var(--border);
    border-radius:10px;
    padding:10px 12px;
    background:var(--bg);
    color:var(--text);
    font-family:var(--font);
    font-size:14px;
    transition:border-color 0.2s ease, box-shadow 0.2s ease;
}
.filter-control select:focus,
.region-cascade select:focus,
.booking-region-cascade select:focus,
.booking-field input:focus,
.booking-field select:focus,
.booking-field textarea:focus {
    outline:none;
    border-color:var(--focus-ring);
    box-shadow:0 0 0 3px rgba(8,118,138,0.2);
}
.filter-control select:disabled,
.region-cascade select:disabled,
.booking-region-cascade select:disabled { cursor:not-allowed; opacity:0.58; }
.filter-reset {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    min-height:44px;
    padding:0 14px;
    border:0;
    border-radius:10px;
    background:var(--bg-alt);
    color:var(--text-secondary);
    font-size:13px;
    font-weight:500;
    white-space:nowrap;
    transition:color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}
.filter-reset:hover { color:var(--interactive-ink); background:rgba(166,27,80,0.09); }
.filter-reset:active { transform:scale(0.98); }
.filter-reset:focus-visible { outline:3px solid var(--focus-ring); outline-offset:2px; }

.booking-workspace {
    display:block;
}
.booking-results { min-width:0; }
.results-heading {
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:20px;
    margin-bottom:18px;
}
.results-heading h2 { margin-bottom:4px; font-size:22px; line-height:1.2; }
.results-heading p { color:var(--text-secondary); font-size:13px; }
.results-hint {
    display:inline-flex;
    align-items:center;
    gap:7px;
    color:var(--text-secondary);
    font-size:12px;
    white-space:nowrap;
}
.results-hint i { color:var(--accent); }

.resource-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.resource-card {
    min-width:0;
    overflow:hidden;
    border-radius:16px;
    background:var(--card);
    box-shadow:0 6px 22px rgba(56,35,86,0.08);
    transition:transform 0.25s ease, box-shadow 0.25s ease, outline-color 0.2s ease;
    outline:2px solid transparent;
    outline-offset:-2px;
}
.resource-card:hover { transform:translateY(-4px); box-shadow:0 12px 30px rgba(56,35,86,0.13); }
.resource-card.is-featured {
    grid-column:span 2;
    display:grid;
    grid-template-columns:minmax(0,1.2fr) minmax(280px,0.8fr);
}
.resource-media {
    position:relative;
    display:block;
    width:100%;
    min-height:210px;
    overflow:hidden;
    padding:0;
    border:0;
    background:var(--bg);
    color:#fff;
    cursor:pointer;
    text-align:left;
}
.resource-card.is-featured .resource-media { min-height:330px; }
.resource-media img { width:100%; height:100%; object-fit:cover; transition:transform 0.5s cubic-bezier(0.16,1,0.3,1); }
.resource-card:hover .resource-media img { transform:scale(1.035); }
.resource-cover:focus-visible { outline:3px solid var(--focus-ring); outline-offset:-5px; }
.resource-media::after {
    content:"";
    position:absolute;
    inset:auto 0 0;
    height:35%;
    background:linear-gradient(to top,rgba(13,11,26,0.32),transparent);
    pointer-events:none;
}
.resource-badge {
    position:absolute;
    top:12px;
    left:12px;
    z-index:1;
    padding:5px 10px;
    border-radius:980px;
    background:rgba(13,11,26,0.78);
    color:#fff;
    font-size:11px;
    font-weight:600;
    backdrop-filter:blur(8px);
}
.resource-kind-badge {
    position:absolute;
    top:12px;
    right:12px;
    z-index:1;
    padding:5px 10px;
    border-radius:980px;
    background:rgba(255,255,255,0.9);
    color:#3a174e;
    font-size:11px;
    font-weight:700;
    backdrop-filter:blur(8px);
}
.resource-cover-cue {
    position:absolute;
    right:14px;
    bottom:14px;
    z-index:2;
    display:inline-flex;
    align-items:center;
    gap:7px;
    min-height:38px;
    padding:8px 13px;
    border-radius:980px;
    background:rgba(13,11,26,0.8);
    color:#fff;
    font-size:12px;
    font-weight:700;
    backdrop-filter:blur(8px);
    transition:transform 0.24s cubic-bezier(0.16,1,0.3,1), background 0.2s ease;
}
.resource-cover:hover .resource-cover-cue { transform:translateY(-2px); background:rgba(13,11,26,0.92); }
.resource-body { display:flex; flex-direction:column; gap:14px; padding:18px; }
.resource-card.is-featured .resource-body { justify-content:center; padding:28px; }
.resource-name-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.resource-name-row h3 { font-size:17px; line-height:1.3; }
.resource-name-row p { margin-top:4px; color:var(--text-secondary); font-size:12px; }
.resource-availability { display:inline-flex; align-items:center; gap:5px; flex:0 0 auto; padding:5px 7px; border:1px solid color-mix(in srgb,#167254 24%,var(--border)); border-radius:6px; background:color-mix(in srgb,#167254 8%,var(--card)); color:#167254; font-size:10px; font-weight:750; line-height:1; }
.resource-availability[data-accepting="false"] { border-color:var(--border); background:var(--bg-alt); color:var(--text-secondary); }
.resource-copy { color:var(--text-secondary); font-size:13px; line-height:1.65; }
.resource-tags { display:flex; flex-wrap:wrap; gap:7px; }
.resource-tag {
    padding:5px 9px;
    border-radius:980px;
    background:var(--bg-alt);
    color:var(--text-secondary);
    font-size:11px;
}
.resource-cover-note {
    display:inline-flex;
    align-items:center;
    gap:7px;
    margin-top:auto;
    color:var(--interactive-ink);
    font-size:12px;
    font-weight:600;
}

.resource-skeleton {
    min-height:380px;
    border-radius:16px;
    background:var(--card);
    overflow:hidden;
}
.skeleton-media,
.skeleton-line { background:var(--bg-alt); }
.skeleton-media { height:220px; }
.skeleton-copy { display:grid; gap:12px; padding:20px; }
.skeleton-line { height:13px; border-radius:7px; }
.skeleton-line.short { width:55%; }
@media (prefers-reduced-motion:no-preference) {
    .resource-skeleton { animation:skeletonPulse 0.9s ease-in-out infinite alternate; }
    @keyframes skeletonPulse { from{opacity:0.62} to{opacity:1} }
}

.booking-empty {
    padding:72px 24px;
    border-radius:16px;
    background:var(--card);
    text-align:center;
    box-shadow:0 6px 22px rgba(56,35,86,0.08);
}
.booking-empty i { margin-bottom:16px; color:var(--primary); font-size:34px; }
.booking-empty h3 { margin-bottom:8px; font-size:19px; }
.booking-empty p { margin:0 auto 22px; color:var(--text-secondary); font-size:14px; }

body.modal-open { overflow:hidden; }
.booking-modal {
    position:fixed;
    inset:0;
    z-index:3000;
    display:block;
    background:var(--card);
}
.booking-modal[hidden] { display:none; }
.booking-modal-backdrop { display:none; }
.booking-dialog {
    position:relative;
    z-index:1;
    width:100%;
    height:100dvh;
    overflow:hidden;
    background:var(--card);
}
.booking-dialog-scroll {
    height:100dvh;
    overflow-y:auto;
    padding-top:64px;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    scroll-behavior:smooth;
}
.booking-detail-bar {
    position:fixed;
    top:0;
    right:0;
    left:0;
    z-index:10;
    display:grid;
    grid-template-columns:1fr auto 1fr;
    align-items:center;
    min-height:64px;
    padding:10px clamp(18px,3vw,44px);
    border-bottom:1px solid var(--border);
    background:color-mix(in srgb,var(--card) 94%,transparent);
    backdrop-filter:blur(14px);
}
.booking-modal-close {
    justify-self:start;
    display:inline-flex;
    align-items:center;
    gap:9px;
    min-height:42px;
    padding:8px 13px;
    border:1.5px solid var(--border);
    border-radius:980px;
    background:var(--card);
    color:var(--text);
    font-size:13px;
    font-weight:650;
    transition:transform 0.2s ease,border-color 0.2s ease,color 0.2s ease;
}
.booking-modal-close:hover { border-color:var(--interactive-ink); color:var(--interactive-ink); transform:translateY(-1px); }
.booking-modal-close:active { transform:scale(0.96); }
.booking-modal-close:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.booking-detail-bar-title {
    overflow:hidden;
    color:var(--text-secondary);
    font-size:12px;
    font-weight:650;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.booking-detail-bar-actions { justify-self:end; display:flex; align-items:center; gap:8px; }
.booking-detail-support { display:inline-flex; align-items:center; gap:7px; min-height:40px; padding:8px 12px; border-radius:980px; color:var(--interactive-ink); font-size:12px; font-weight:700; }
.booking-detail-support:hover { background:color-mix(in srgb,var(--interactive-ink) 9%,transparent); }
.booking-detail-support:focus-visible { outline:3px solid var(--focus-ring); outline-offset:2px; }
.booking-detail-bar-action {
    min-height:42px;
    padding:8px 18px;
    border:0;
    border-radius:980px;
    background:linear-gradient(135deg,var(--action-primary),var(--action-secondary));
    color:#fff;
    font-size:13px;
    font-weight:700;
}
.booking-detail-bar-action:hover { transform:translateY(-1px); }
.booking-detail-bar-action:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.booking-detail-bar-action:disabled,.booking-detail-cta:disabled { transform:none; cursor:not-allowed; opacity:.58; }
.booking-detail-panel { min-width:0; background:var(--card); }
.booking-detail-hero {
    display:grid;
    grid-template-columns:minmax(0,1.18fr) minmax(380px,0.82fr);
    min-height:calc(100dvh - 64px);
}
.booking-detail-media { position:relative; min-height:620px; background:var(--bg-alt); overflow:hidden; }
.booking-detail-image-button {
    position:absolute;
    inset:0;
    display:block;
    width:100%;
    height:100%;
    border:0;
    padding:0;
    background:var(--bg-alt);
    cursor:zoom-in;
}
.booking-detail-image-button:focus-visible { outline:3px solid var(--focus-ring); outline-offset:-6px; }
.booking-detail-media img {
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    user-select:none;
    -webkit-user-drag:none;
    -webkit-touch-callout:none;
}
.booking-image-zoom-cue,.booking-gallery-zoom-cue {
    position:absolute;
    z-index:2;
    display:inline-flex;
    align-items:center;
    gap:7px;
    min-height:36px;
    border-radius:980px;
    padding:7px 11px;
    background:rgba(13,11,26,0.78);
    color:#fff;
    font-size:11px;
    font-weight:650;
    pointer-events:none;
}
.booking-image-zoom-cue { left:14px; bottom:14px; }
.booking-detail-body {
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:clamp(38px,6vw,88px);
}
.booking-detail-kind {
    display:block;
    margin-bottom:7px;
    color:var(--interactive-ink);
    font-size:12px;
    font-weight:700;
}
.booking-detail-status-line { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:7px; }
.booking-detail-status-line .booking-detail-kind { margin-bottom:0; }
.booking-detail-body h2 { max-width:14ch; margin-bottom:7px; font-size:clamp(34px,4vw,58px); line-height:1.08; letter-spacing:-0.03em; text-wrap:balance; }
.booking-detail-body h2:focus { outline:none; }
.booking-detail-profile { display:flex; align-items:center; gap:13px; margin-bottom:22px; }
.booking-detail-avatar {
    flex:0 0 auto;
    width:64px;
    height:64px;
    border:2px solid var(--card);
    border-radius:50%;
    object-fit:cover;
    box-shadow:0 5px 16px rgba(56,35,86,0.16);
}
.booking-detail-provider { margin-bottom:2px; color:var(--text); font-size:14px; font-weight:700; }
.booking-detail-profile-cn { color:var(--text-secondary); font-size:12px; }
.booking-detail-description { max-width:58ch; margin-bottom:26px; color:var(--text-secondary); font-size:15px; line-height:1.75; }
.booking-self-intro { margin-bottom:24px; }
.booking-self-intro h3 { margin-bottom:7px; font-size:13px; line-height:1.35; }
.booking-self-intro p { max-width:62ch; color:var(--text-secondary); font-size:13px; line-height:1.7; }
.booking-detail-facts {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:17px 22px;
    margin-bottom:22px;
    padding:22px 0;
    border-top:1px solid var(--border);
    border-bottom:1px solid var(--border);
}
.booking-detail-facts div { min-width:0; }
.booking-detail-facts dt { margin-bottom:4px; color:var(--text-secondary); font-size:11px; }
.booking-detail-facts dd { overflow-wrap:anywhere; color:var(--text); font-size:14px; font-weight:650; line-height:1.45; }
.booking-contact-panel { margin-bottom:22px; }
.booking-contact-panel h3 { margin-bottom:13px; font-size:13px; line-height:1.3; }
.booking-contact-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 20px; margin:0; padding:0; list-style:none; }
.booking-contact-list li { display:grid; grid-template-columns:34px minmax(0,1fr); align-items:center; gap:10px; min-width:0; }
.booking-contact-icon {
    display:grid;
    place-items:center;
    width:34px;
    height:34px;
    border-radius:50%;
    background:var(--bg-alt);
    color:var(--interactive-ink);
    font-size:14px;
}
.booking-contact-list span { display:grid; min-width:0; gap:1px; }
.booking-contact-list small { color:var(--text-secondary); font-size:10px; line-height:1.3; }
.booking-contact-list strong { overflow-wrap:anywhere; color:var(--text); font-size:12px; line-height:1.45; }
.booking-contact-locked,.booking-contact-empty { grid-column:1/-1; padding:12px 14px; border:1px dashed var(--border); border-radius:10px; background:var(--bg-alt); }
.booking-contact-locked .booking-contact-icon { color:var(--interactive-ink); background:color-mix(in srgb,var(--interactive-ink) 9%,transparent); }
.booking-detail-cta { align-self:flex-start; min-height:48px; margin-top:22px; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; }
.booking-detail-cta:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.booking-detail-note { display:flex; align-items:flex-start; gap:8px; margin-top:18px; color:var(--text-secondary); font-size:11px; line-height:1.5; }
.booking-detail-note i { margin-top:2px; color:var(--accent); }
.booking-portfolio {
    max-width:1240px;
    margin:0 auto;
    padding:clamp(64px,9vw,120px) clamp(18px,4vw,48px);
}
.booking-portfolio-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:30px; }
.booking-portfolio-heading h2 { font-size:clamp(30px,4vw,48px); line-height:1.1; letter-spacing:-0.025em; }
.booking-portfolio-heading p { color:var(--text-secondary); font-size:13px; }
.booking-gallery { display:flex; flex-wrap:wrap; align-items:flex-start; gap:16px; }
.booking-gallery::after { content:""; flex:999 1 300px; }
.booking-gallery-item {
    position:relative;
    flex:1 1 var(--gallery-basis,300px);
    min-width:0;
    margin:0;
    overflow:hidden;
    border-radius:16px;
    background:var(--bg-alt);
}
.booking-gallery-zoom { position:relative; display:block; width:100%; border:0; padding:0; background:var(--bg-alt); cursor:zoom-in; }
.booking-gallery-zoom:focus-visible { outline:3px solid var(--focus-ring); outline-offset:-6px; }
.booking-gallery-item img {
    display:block;
    width:100%;
    height:auto;
    object-fit:contain;
    user-select:none;
    -webkit-user-drag:none;
    -webkit-touch-callout:none;
}
.booking-gallery-zoom-cue { top:12px; right:12px; opacity:0; transform:translateY(-4px); transition:opacity .2s ease,transform .2s ease; }
.booking-gallery-zoom:hover .booking-gallery-zoom-cue,.booking-gallery-zoom:focus-visible .booking-gallery-zoom-cue { opacity:1; transform:translateY(0); }
.booking-gallery-item figcaption {
    position:absolute;
    right:12px;
    bottom:12px;
    padding:6px 10px;
    border-radius:980px;
    background:rgba(13,11,26,0.8);
    color:#fff;
    font-size:11px;
    font-weight:650;
    backdrop-filter:blur(8px);
}
.studio-collection {
    max-width:1240px;
    margin:0 auto;
    padding:clamp(60px,8vw,96px) clamp(18px,4vw,48px);
    border-top:1px solid var(--border);
}
.studio-collection[hidden] { display:none; }
.studio-collection-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin-bottom:24px; }
.studio-collection-heading h2 { margin-bottom:8px; font-size:clamp(30px,4vw,48px); line-height:1.1; letter-spacing:-.025em; }
.studio-collection-heading p { max-width:68ch; color:var(--text-secondary); font-size:15px; line-height:1.7; }
.studio-collection-heading > span { display:inline-flex; align-items:center; gap:7px; flex:0 0 auto; color:var(--interactive-ink); font-size:12px; font-weight:750; }
.studio-collection-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.studio-collection-item { display:grid; gap:16px; min-width:0; padding:20px; border:1px solid var(--border); border-radius:14px; background:var(--card); }
.studio-collection-item[data-selected="true"] { background:color-mix(in srgb,var(--interactive-ink) 6%,var(--card)); }
.studio-collection-item header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.studio-collection-item h3 { margin:0 0 4px; font-size:20px; line-height:1.25; }
.studio-collection-item header p { color:var(--text-secondary); font-size:12px; line-height:1.5; }
.studio-collection-type { flex:0 0 auto; padding:5px 9px; border-radius:980px; background:var(--bg-alt); color:var(--text); font-size:11px; font-weight:750; }
.studio-collection-item dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 16px; margin:0; }
.studio-collection-item dt { margin-bottom:3px; color:var(--text-secondary); font-size:10px; }
.studio-collection-item dd { margin:0; color:var(--text); font-size:13px; font-weight:650; line-height:1.45; overflow-wrap:anywhere; }
.studio-collection-item > p { min-height:3em; color:var(--text-secondary); font-size:12px; line-height:1.55; }
.studio-collection-action { min-height:42px; padding:9px 14px; border:1px solid var(--interactive-ink); border-radius:980px; background:transparent; color:var(--interactive-ink); font:750 13px var(--font); cursor:pointer; }
.studio-collection-action:hover { background:color-mix(in srgb,var(--interactive-ink) 7%,transparent); }
.studio-collection-action:focus-visible { outline:3px solid var(--focus-ring); outline-offset:2px; }
.studio-collection-action[aria-pressed="true"] { border-color:transparent; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; }
.studio-schedule {
    --public-schedule-meta:12px;
    --public-schedule-label:13px;
    --public-schedule-control:14px;
    --public-schedule-body:15px;
    max-width:1240px;
    margin:0 auto;
    padding:clamp(64px,8vw,104px) clamp(18px,4vw,48px);
    border-top:1px solid var(--border);
    scroll-margin-top:64px;
}
.studio-schedule:focus { outline:none; }
.studio-schedule[hidden] { display:none; }
.studio-schedule-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin-bottom:26px; }
.studio-schedule-heading h2 { margin-bottom:8px; font-size:clamp(30px,4vw,48px); line-height:1.1; letter-spacing:-0.025em; }
.studio-schedule-heading p { max-width:66ch; color:var(--text-secondary); font-size:var(--public-schedule-body); line-height:1.7; }
.studio-schedule-legend { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px 14px; min-width:min(100%,360px); }
.studio-schedule-legend span { display:inline-flex; align-items:center; gap:6px; color:var(--text-secondary); font-size:var(--public-schedule-label); font-weight:650; white-space:nowrap; }
.studio-schedule-legend span::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--border); }
.studio-schedule-legend [data-state="available"]::before { background:var(--focus-ring); }
.studio-schedule-legend [data-state="held"]::before { background:#b66b00; }
.studio-schedule-legend [data-state="booked"]::before { background:var(--interactive-ink); }
.studio-schedule-legend [data-state="blocked"]::before { background:var(--text-secondary); }
.studio-schedule-status { min-height:0; margin-bottom:12px; color:var(--text-secondary); font-size:var(--public-schedule-label); }
.studio-schedule-status:empty { display:none; }
.studio-schedule-status.is-error { color:var(--error); }
.studio-schedule-board {
    display:grid;
    grid-template-columns:repeat(7,minmax(142px,1fr));
    min-width:0;
    width:100%;
    overflow-x:auto;
    border:1px solid var(--border);
    border-radius:16px;
    background:var(--card);
}
.studio-schedule-board:empty { display:none; }
.studio-schedule-day { min-width:0; padding:14px 10px 12px; border-right:1px solid var(--border); }
.studio-schedule-day:last-child { border-right:0; }
.studio-schedule-day header { min-height:48px; margin:0 2px 12px; padding-bottom:10px; border-bottom:1px solid var(--border); }
.studio-schedule-day header strong,.studio-schedule-day header small { display:block; }
.studio-schedule-day header strong { color:var(--text); font-size:13px; }
.studio-schedule-day header small { margin-top:2px; color:var(--text-secondary); font-size:10px; }
.studio-schedule-slots { display:grid; gap:7px; }
.studio-slot {
    display:grid;
    gap:2px;
    width:100%;
    min-height:52px;
    padding:9px 8px;
    border:1px solid var(--border);
    border-radius:10px;
    background:var(--bg-alt);
    color:var(--text-secondary);
    font-size:11px;
    text-align:left;
}
.studio-slot strong { color:inherit; font-size:12px; }
.studio-slot[data-state="available"] { border-color:color-mix(in srgb,var(--focus-ring) 46%,var(--border)); background:color-mix(in srgb,var(--focus-ring) 7%,var(--card)); color:var(--text); cursor:pointer; }
.studio-slot[data-state="available"] small { color:var(--focus-ring); font-weight:700; }
.studio-slot[data-state="available"]:hover { border-color:var(--focus-ring); transform:translateY(-1px); }
.studio-slot[data-state="available"]:focus-visible { outline:3px solid var(--focus-ring); outline-offset:2px; }
.studio-slot.is-selected { border-color:transparent; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; box-shadow:0 8px 22px rgba(120,56,181,0.22); }
.studio-slot.is-selected small { color:#fff; }
.studio-slot[data-state="held"] { border-style:dashed; background:color-mix(in srgb,#b66b00 7%,var(--card)); color:color-mix(in srgb,#8b5400 84%,var(--text)); }
.studio-slot[data-state="booked"] { background:color-mix(in srgb,var(--interactive-ink) 8%,var(--card)); color:var(--interactive-ink); }
.studio-slot[data-state="blocked"],.studio-slot[data-state="past"] { opacity:.58; }
.studio-schedule-empty { padding:8px 2px; color:var(--text-secondary); font-size:11px; line-height:1.45; }
.studio-schedule-selection { display:flex; align-items:center; gap:12px; margin-top:16px; padding:15px 16px; border-radius:12px; background:var(--bg-alt); }
.studio-schedule-selection > i { display:grid; place-items:center; flex:0 0 auto; width:36px; height:36px; border-radius:10px; background:color-mix(in srgb,var(--interactive-ink) 10%,transparent); color:var(--interactive-ink); }
.studio-schedule-selection span,.studio-schedule-selection strong,.studio-schedule-selection small { display:block; min-width:0; }
.studio-schedule-selection strong { font-size:var(--public-schedule-control); }
.studio-schedule-selection small { margin-top:2px; color:var(--text-secondary); font-size:var(--public-schedule-meta); }
.studio-schedule-error { margin-top:8px; }
.studio-rules {
    max-width:1240px;
    margin:0 auto;
    padding:34px clamp(18px,4vw,48px) 42px;
    border-top:1px solid var(--border);
}
.studio-rules[hidden] { display:none; }
.studio-rules-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:18px; }
.studio-rules-heading h2 { margin:0 0 6px; font-size:24px; letter-spacing:-.02em; }
.studio-rules-heading p { color:var(--text-secondary); font-size:13px; line-height:1.6; }
.studio-rules-heading > span { flex:0 0 auto; color:var(--text-secondary); font-size:11px; }
.studio-rules-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border:1px solid var(--border); border-radius:14px; overflow:hidden; background:var(--card); }
.studio-rule-group { min-width:0; padding:16px 18px; border-left:1px solid var(--border); }
.studio-rule-group:first-child { border-left:0; }
.studio-rule-group h3 { margin:0 0 10px; font-size:14px; }
.studio-rule-group ul { display:grid; gap:7px; margin:0; padding:0; list-style:none; }
.studio-rule-group li { color:var(--text-secondary); font-size:12px; line-height:1.5; }
.studio-rule-group li strong { color:var(--text); font-weight:700; }
.studio-deposit-disclaimer { margin:12px 0 0!important; padding:10px 12px; border-left:3px solid var(--interactive-ink); background:color-mix(in srgb,var(--interactive-ink) 5%,transparent); color:var(--text-secondary)!important; font-size:11px!important; line-height:1.55; }
.booking-image-viewer {
    position:fixed;
    inset:0;
    z-index:4000;
    display:block;
    background:#0d0b1a;
    color:#fff;
    overflow:hidden;
}
.booking-image-viewer[hidden] { display:none; }
.booking-image-viewer-dialog {
    display:grid;
    grid-template-rows:auto minmax(0,1fr) auto;
    width:100%;
    height:100dvh;
    max-height:100dvh;
    overflow:hidden;
    padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));
}
.booking-image-viewer-header { display:flex; align-items:center; justify-content:space-between; gap:18px; min-width:0; }
.booking-image-viewer-header h2 { margin:0 0 2px; color:#fff; font-size:16px; letter-spacing:-0.01em; }
.booking-image-viewer-header p { color:rgba(255,255,255,0.68); font-size:12px; }
.booking-image-viewer-close,.booking-image-viewer-nav {
    display:grid;
    place-items:center;
    flex:0 0 auto;
    width:44px;
    height:44px;
    border:1px solid rgba(255,255,255,0.22);
    border-radius:50%;
    background:rgba(255,255,255,0.1);
    color:#fff;
    cursor:pointer;
}
.booking-image-viewer-close:hover,.booking-image-viewer-nav:hover { background:rgba(255,255,255,0.18); }
.booking-image-viewer-close:focus-visible,.booking-image-viewer-nav:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.booking-image-viewer-nav:disabled { cursor:default; opacity:.25; }
.booking-image-viewer-stage { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:stretch; gap:clamp(12px,3vw,36px); min-width:0; min-height:0; height:100%; overflow:hidden; padding:18px 0; }
.booking-image-viewer-canvas { display:grid; place-items:center; min-width:0; min-height:0; width:100%; height:100%; overflow:hidden; }
.booking-image-viewer-canvas img {
    display:block;
    width:100%;
    height:100%;
    min-width:0;
    min-height:0;
    object-fit:contain;
    user-select:none;
    pointer-events:none;
    -webkit-user-drag:none;
    -webkit-touch-callout:none;
}
.booking-image-viewer-stage > .booking-image-viewer-nav { align-self:center; }
.booking-image-viewer-note { display:flex; align-items:center; justify-content:center; gap:8px; color:rgba(255,255,255,0.68); font-size:12px; text-align:center; }
.booking-form-panel {
    display:grid;
    grid-template-columns:minmax(240px,0.72fr) minmax(0,1.28fr);
    gap:clamp(36px,7vw,92px);
    min-width:0;
    padding:clamp(64px,9vw,112px) max(clamp(20px,7vw,112px),calc((100vw - 1240px)/2));
    background:var(--bg-alt);
    scroll-margin-top:64px;
}
.booking-unavailable { display:flex; align-items:flex-start; gap:14px; align-self:start; padding:20px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text-secondary); }
.booking-unavailable[hidden] { display:none; }
.booking-unavailable > i { margin-top:2px; color:var(--text-secondary); font-size:20px; }
.booking-unavailable strong { display:block; margin-bottom:5px; color:var(--text); font-size:15px; }
.booking-unavailable p { font-size:12px; line-height:1.65; }
.booking-form-heading { align-self:start; position:sticky; top:92px; padding:0; margin:0; }
.booking-form-heading h2 { max-width:14ch; margin-bottom:10px; font-size:clamp(30px,4vw,48px); line-height:1.12; letter-spacing:-0.025em; text-wrap:balance; }
.booking-form-heading h2:focus { outline:none; }
.booking-form-heading p { max-width:34ch; color:var(--text-secondary); font-size:13px; line-height:1.65; }
.booking-region-field { min-width:0; border:0; }
.booking-region-field legend { margin-bottom:7px; color:var(--text); font-size:13px; font-weight:600; }
.booking-region-cascade { grid-template-columns:repeat(3,minmax(0,1fr)); }

.booking-form { align-self:start; display:grid; gap:14px; width:100%; max-width:700px; }
.booking-form[hidden] { display:none; }
.booking-field { display:grid; gap:7px; }
.booking-field > span { font-size:13px; font-weight:600; }
.booking-field em { color:var(--text-secondary); font-size:11px; font-style:normal; font-weight:400; }
.booking-field textarea { min-height:84px; resize:vertical; }
.booking-field-row { display:grid; grid-template-columns:1.35fr 0.65fr; gap:10px; }
.booking-field.has-error input,
.booking-field.has-error select,
.booking-consent.has-error input { border-color:var(--error); }
.field-error { min-height:0; color:var(--error); font-size:11px; line-height:1.35; }
.field-error:empty { display:none; }
.booking-consent { display:flex; align-items:flex-start; gap:9px; color:var(--text-secondary); font-size:12px; line-height:1.5; }
.booking-consent input { width:16px; height:16px; margin-top:1px; accent-color:var(--interactive-ink); }
.booking-submit { width:100%; min-height:46px; margin-top:2px; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; }
.booking-submit:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.booking-submit:disabled { cursor:wait; opacity:0.65; transform:none; }
.booking-page .btn-outline,
.booking-modal .btn-outline { border-color:var(--interactive-ink); color:var(--interactive-ink); }
.booking-page .btn-outline:hover,
.booking-modal .btn-outline:hover { border-color:transparent; background:linear-gradient(135deg,var(--action-primary),var(--action-secondary)); color:#fff; }
.booking-page .btn-outline:focus-visible,
.booking-modal .btn-outline:focus-visible { outline:3px solid var(--focus-ring); outline-offset:3px; }
.form-status { min-height:0; color:var(--text-secondary); font-size:12px; text-align:center; }
.form-status:empty { display:none; }
.form-status.is-error { color:var(--error); }
.booking-success { grid-column:2; padding:28px 10px 8px; text-align:center; }
.booking-success > i {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:54px;
    height:54px;
    margin-bottom:16px;
    border-radius:50%;
    background:linear-gradient(135deg,var(--action-primary),var(--action-secondary));
    color:#fff;
    font-size:21px;
}
.booking-success h3 { margin-bottom:8px; font-size:19px; }
.booking-success p { margin-bottom:20px; color:var(--text-secondary); font-size:13px; }
.booking-success-actions { display:flex; justify-content:center; gap:10px; flex-wrap:wrap; }
.booking-flow-status { max-width:720px; margin:22px auto; padding:20px; border:1px solid var(--border); border-radius:14px; background:var(--card); text-align:left; }
.booking-flow-status[hidden] { display:none; }
.booking-flow-status > header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding-bottom:14px; border-bottom:1px solid var(--border); }
.booking-flow-status > header small,.booking-flow-status > header strong { display:block; }
.booking-flow-status > header small { margin-bottom:3px; color:var(--text-secondary); font-size:10px; }
.booking-flow-status > header strong { font-size:17px; }
.booking-flow-status > header .btn { min-height:36px; padding:7px 11px; font-size:12px; }
.booking-flow-status ol { display:grid; gap:0; margin:14px 0 18px; padding:0; list-style:none; }
.booking-flow-status li { display:grid; grid-template-columns:10px minmax(0,1fr) auto; gap:9px; align-items:start; padding:7px 0; color:var(--text-secondary); font-size:11px; line-height:1.45; }
.booking-flow-status li::before { content:""; width:7px; height:7px; margin-top:4px; border-radius:50%; background:var(--interactive-ink); }
.booking-flow-status li strong { color:var(--text); font-size:12px; }
.booking-flow-status li time { white-space:nowrap; }
.booking-confirmation-preview { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.booking-confirmation-preview > div { padding:10px 12px; border-top:1px solid var(--border); }
.booking-confirmation-preview > div:nth-child(-n+2) { border-top:0; }
.booking-confirmation-preview > div:nth-child(even) { border-left:1px solid var(--border); }
.booking-confirmation-preview small,.booking-confirmation-preview strong { display:block; }
.booking-confirmation-preview small { margin-bottom:3px; color:var(--text-secondary); font-size:10px; }
.booking-confirmation-preview strong { font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.booking-flow-status > .btn { width:100%; margin-top:12px; }
.booking-unlocked-contacts { max-width:560px; margin:0 auto 24px; padding:18px; border:1px solid var(--border); border-radius:16px; background:var(--card); text-align:left; }
.booking-unlocked-contacts h4 { margin-bottom:14px; font-size:13px; }

.booking-footer { margin-top:0; }

[data-theme="dark"] .booking-page {
    background:
        radial-gradient(circle at 92% 8%, rgba(196,77,255,0.12), transparent 24rem),
        radial-gradient(circle at 5% 28%, rgba(69,183,209,0.08), transparent 22rem),
        var(--bg-alt);
}
[data-theme="dark"] .booking-filters,
[data-theme="dark"] .resource-card,
[data-theme="dark"] .booking-empty,
[data-theme="dark"] .resource-skeleton { box-shadow:0 14px 42px rgba(0,0,0,0.32); }
[data-theme="dark"] .booking-detail-bar { background:color-mix(in srgb,var(--card) 94%,transparent); }
[data-theme="dark"] .resource-badge { background:rgba(13,11,26,0.88); }
[data-theme="dark"] .resource-kind-badge { background:rgba(240,230,246,0.92); color:#261637; }
[data-theme="dark"] .field-error { color:#ff91aa; }

@media (prefers-reduced-motion:no-preference) {
    .booking-intro { animation:bookingEnter 0.62s cubic-bezier(0.16,1,0.3,1) both; }
    .booking-filter-section { animation:bookingEnter 0.62s 0.08s cubic-bezier(0.16,1,0.3,1) both; }
    .booking-workspace { animation:bookingEnter 0.62s 0.14s cubic-bezier(0.16,1,0.3,1) both; }
    .booking-dialog { animation:detailReveal 0.46s cubic-bezier(0.16,1,0.3,1) both; }
    @keyframes bookingEnter { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
    @keyframes detailReveal { from{opacity:0.82;clip-path:inset(0 0 8% 0)} to{opacity:1;clip-path:inset(0)} }
}
@media (prefers-reduced-motion:reduce) {
    *,*::before,*::after { scroll-behavior:auto!important; animation-duration:0.01ms!important; animation-iteration-count:1!important; transition-duration:0.01ms!important; }
}

@media (max-width:1080px) {
    .booking-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .region-filter-group { grid-column:span 2; }
    .filter-reset { grid-column:span 2; }
    .resource-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .booking-detail-hero { grid-template-columns:minmax(0,1fr) minmax(340px,0.86fr); }
    .booking-detail-body { padding:44px; }
}
@media (max-width:900px) {
    .studio-collection-heading { align-items:flex-start; flex-direction:column; gap:12px; }
    .studio-collection-list { grid-template-columns:1fr; }
    .studio-collection-item > p { min-height:0; }
    .studio-rules-grid { grid-template-columns:1fr; }
    .studio-rule-group { border-top:1px solid var(--border); border-left:0; }
    .studio-rule-group:first-child { border-top:0; }
    .booking-page { padding-top:92px; }
    .resource-card.is-featured { grid-template-columns:1fr 0.82fr; }
    .booking-detail-hero { grid-template-columns:1fr; min-height:0; }
    .booking-detail-media { min-height:0; height:min(70vw,620px); }
    .booking-detail-body { padding:54px clamp(24px,8vw,72px) 72px; }
    .booking-gallery { gap:14px; }
    .booking-form-panel { grid-template-columns:1fr; }
    .booking-form-heading { position:static; }
    .booking-success { grid-column:1; }
}
@media (max-width:620px) {
    .studio-rules-heading { align-items:flex-start; flex-direction:column; gap:8px; }
    .booking-confirmation-preview { grid-template-columns:1fr; }
    .booking-confirmation-preview > div,.booking-confirmation-preview > div:nth-child(even) { border-top:1px solid var(--border); border-left:0; }
    .booking-confirmation-preview > div:first-child { border-top:0; }
    .booking-flow-status li { grid-template-columns:10px minmax(0,1fr); }
    .booking-flow-status li time { grid-column:2; }
}
@media (max-width:720px) {
    .booking-page { padding:82px 0 64px; }
    .booking-intro { margin-bottom:24px; }
    .booking-intro h1 { font-size:34px; }
    .booking-detail-bar { grid-template-columns:auto minmax(0,1fr) auto; gap:8px; padding-right:12px; padding-left:12px; }
    .booking-detail-support { width:40px; padding:8px; justify-content:center; }
    .booking-detail-support span { display:none; }
    .booking-detail-bar-action { padding:8px 13px; }
    .studio-schedule { padding:56px 16px 64px; }
    .studio-schedule-heading { align-items:flex-start; flex-direction:column; gap:16px; }
    .studio-schedule-legend { justify-content:flex-start; min-width:0; }
    .studio-schedule-board { grid-template-columns:repeat(7,132px); scroll-snap-type:x proximity; }
    .studio-schedule-day { scroll-snap-align:start; }
    .booking-intro > p { font-size:15px; }
    .sample-notice { align-items:flex-start; width:auto; }
    .booking-filters { grid-template-columns:1fr; padding:15px; }
    .region-filter-group { grid-column:auto; }
    .region-cascade { grid-template-columns:1fr; }
    .filter-reset { grid-column:auto; }
    .results-heading { align-items:flex-start; flex-direction:column; gap:10px; }
    .results-hint { white-space:normal; }
    .resource-grid {
        display:block;
        columns:2;
        column-gap:12px;
    }
    .resource-card,
    .resource-card.is-featured {
        display:inline-block;
        width:100%;
        margin:0 0 12px;
        break-inside:avoid;
        vertical-align:top;
        border-radius:14px;
        box-shadow:0 5px 17px rgba(56,35,86,0.1);
    }
    .resource-card:hover { transform:none; box-shadow:0 5px 17px rgba(56,35,86,0.1); }
    .resource-media,
    .resource-card.is-featured .resource-media {
        min-height:0;
        aspect-ratio:4 / 5;
    }
    .resource-card-rhythm-0 .resource-media { aspect-ratio:3 / 4; }
    .resource-card-rhythm-1 .resource-media { aspect-ratio:1 / 1; }
    .resource-card-rhythm-2 .resource-media { aspect-ratio:4 / 5; }
    .resource-card-rhythm-3 .resource-media { aspect-ratio:5 / 7; }
    .resource-card-rhythm-4 .resource-media { aspect-ratio:4 / 3; }
    .resource-card-rhythm-5 .resource-media { aspect-ratio:3 / 4; }
    .resource-card.is-featured .resource-body,
    .resource-body { gap:8px; padding:11px 10px 12px; }
    .resource-name-row { gap:6px; }
    .resource-name-row h3 {
        display:-webkit-box;
        overflow:hidden;
        font-size:14px;
        line-height:1.35;
        -webkit-box-orient:vertical;
        -webkit-line-clamp:2;
    }
    .resource-name-row p {
        overflow:hidden;
        margin-top:2px;
        font-size:11px;
        white-space:nowrap;
        text-overflow:ellipsis;
    }
    .resource-copy {
        display:-webkit-box;
        overflow:hidden;
        font-size:12px;
        line-height:1.5;
        -webkit-box-orient:vertical;
        -webkit-line-clamp:2;
    }
    .resource-tags { gap:5px; }
    .resource-tag {
        overflow:hidden;
        max-width:100%;
        padding:4px 7px;
        font-size:10px;
        white-space:nowrap;
        text-overflow:ellipsis;
    }
    .resource-tag:nth-child(n+2),
    .resource-kind-badge,
    .resource-cover-note { display:none; }
    .resource-badge {
        top:8px;
        left:8px;
        overflow:hidden;
        max-width:calc(100% - 16px);
        padding:4px 7px;
        font-size:9px;
        white-space:nowrap;
        text-overflow:ellipsis;
    }
    .resource-cover-cue {
        right:8px;
        bottom:8px;
        justify-content:center;
        width:34px;
        min-height:34px;
        padding:0;
        font-size:0;
    }
    .resource-cover-cue i { font-size:12px; }
    .resource-cover:active img { transform:scale(0.985); }
    .resource-skeleton {
        display:inline-block;
        width:100%;
        min-height:0;
        margin:0 0 12px;
        break-inside:avoid;
        vertical-align:top;
    }
    .resource-skeleton .skeleton-media { height:auto; aspect-ratio:4 / 5; }
    .resource-skeleton:nth-child(2) .skeleton-media { aspect-ratio:1 / 1; }
    .resource-skeleton:nth-child(3) .skeleton-media { aspect-ratio:3 / 4; }
    .resource-skeleton .skeleton-copy { gap:8px; padding:12px 10px; }
    .booking-field-row { grid-template-columns:1fr; }
    .booking-detail-bar { min-height:60px; padding:9px 14px; }
    .booking-dialog-scroll { padding-top:60px; }
    .booking-detail-bar-title { display:none; }
    .booking-detail-bar { grid-template-columns:1fr 1fr; }
    .booking-modal-close { padding:7px 12px; }
    .booking-detail-bar-action { min-height:40px; padding:7px 15px; }
    .booking-detail-media { height:72vw; min-height:280px; max-height:480px; }
    .booking-detail-body { padding:36px 20px 56px; }
    .booking-detail-body h2 { font-size:34px; }
    .booking-detail-facts { gap:15px 14px; }
    .booking-contact-list { grid-template-columns:1fr; gap:11px; }
    .booking-portfolio { padding:56px 16px 72px; }
    .booking-portfolio-heading { align-items:flex-start; flex-direction:column; gap:8px; margin-bottom:22px; }
    .booking-gallery { gap:12px; }
    .booking-gallery::after { display:none; }
    .booking-gallery-item { flex-basis:100%!important; width:100%; }
    .booking-gallery-zoom-cue { opacity:1; transform:none; }
    .booking-image-viewer-dialog { padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
    .booking-image-viewer-stage { position:relative; grid-template-columns:minmax(0,1fr); gap:0; padding:12px 0; }
    .booking-image-viewer-nav { position:absolute; z-index:2; top:50%; width:42px; height:42px; transform:translateY(-50%); }
    .booking-image-viewer-nav.is-previous { left:0; }
    .booking-image-viewer-nav.is-next { right:0; }
    .booking-image-viewer-canvas { padding:0 4px; }
    .booking-form-panel { gap:32px; padding:56px 20px max(56px,env(safe-area-inset-bottom)); scroll-margin-top:60px; }
    .booking-region-cascade { grid-template-columns:1fr; }
}

/* 全年、任意时长的棚子排期 */
.studio-public-calendar-controls { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:12px; margin-bottom:14px; padding:10px; border-radius:12px; background:var(--bg-alt); }
.studio-public-calendar-controls > label { display:flex; align-items:center; gap:7px; color:var(--text-secondary); font-size:var(--public-schedule-label); font-weight:700; }
.studio-public-calendar-controls select { min-height:40px; padding:7px 30px 7px 10px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:700 var(--public-schedule-control) var(--font); }
#studioScheduleMonths { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:4px; }
#studioScheduleMonths button { min-height:40px; border:0; border-radius:8px; background:transparent; color:var(--text-secondary); font:700 var(--public-schedule-label) var(--font); cursor:pointer; }
#studioScheduleMonths button[aria-current="true"] { background:var(--card); color:var(--interactive-ink); box-shadow:0 0 0 1px var(--border); }
.studio-schedule-weekdays,.studio-schedule-board { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); min-width:0; }
.studio-schedule-weekdays { border:1px solid var(--border); border-bottom:0; border-radius:14px 14px 0 0; overflow:hidden; background:var(--bg-alt); }
.studio-schedule-weekdays span { padding:10px; color:var(--text-secondary); font-size:var(--public-schedule-meta); font-weight:800; text-align:center; }
.studio-schedule-board { width:100%; overflow:visible; border-radius:0 0 14px 14px; background:var(--border); gap:1px; }
.studio-schedule-pad { min-height:148px; background:var(--bg-alt); }
.studio-schedule-day { min-width:0; min-height:148px; padding:11px; border:0; background:var(--card); }
.studio-schedule-day[data-past="true"] { opacity:.5; }
.studio-schedule-day[data-open="false"] { background:var(--bg-alt); }
.studio-schedule-day header { display:flex; align-items:center; justify-content:space-between; min-height:0; margin:0 0 7px; padding:0 0 6px; }
.studio-schedule-day header strong { display:block; margin:0; font-size:var(--public-schedule-control); }
.studio-schedule-day header small { display:block; margin:0; color:var(--text-secondary); font-size:var(--public-schedule-meta); }
.studio-schedule-slots { gap:4px; }
.studio-slot { display:block; min-height:0; padding:7px 8px; border:0; border-radius:7px; overflow:hidden; font-size:var(--public-schedule-meta); font-weight:700; line-height:1.35; text-overflow:ellipsis; white-space:nowrap; }
.studio-slot strong { display:inline; font-size:var(--public-schedule-meta); }
.studio-slot small { display:none; }
.studio-schedule-empty { font-size:var(--public-schedule-meta); }
.studio-day-more { color:var(--text-secondary); font-size:var(--public-schedule-meta); }
.studio-schedule-selection { display:grid; grid-template-columns:auto minmax(0,1fr) auto; }
.studio-custom-time { display:flex; align-items:end; gap:8px; }
.studio-custom-time[hidden] { display:none; }
.studio-custom-time label { display:grid; gap:5px; color:var(--text-secondary); font-size:var(--public-schedule-label); font-weight:700; }
.studio-custom-time input { width:122px; min-height:42px; padding:8px 9px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:700 var(--public-schedule-body) var(--font); }
.studio-custom-time > span { padding-bottom:10px; color:var(--text-secondary); font-size:var(--public-schedule-meta); }
@media (max-width:900px) {
    #studioScheduleMonths { grid-template-columns:repeat(6,minmax(0,1fr)); }
    .studio-schedule-board,.studio-schedule-weekdays { min-width:840px; }
    .studio-schedule { overflow:hidden; }
    .studio-schedule-board,.studio-schedule-weekdays { width:840px; }
    .studio-schedule-section-scroll { overflow:auto; }
}
@media (max-width:720px) {
    .studio-public-calendar-controls { grid-template-columns:1fr; }
    #studioScheduleMonths { grid-template-columns:repeat(4,minmax(0,1fr)); }
    .studio-schedule { overflow:visible; }
    .studio-schedule-weekdays { display:none; }
    .studio-schedule-board { grid-template-columns:repeat(2,minmax(0,1fr)); min-width:0; width:100%; }
    .studio-schedule-pad { display:none; }
    .studio-schedule-day { min-height:132px; }
    .studio-schedule-selection { grid-template-columns:auto minmax(0,1fr); }
    .studio-custom-time { grid-column:1/-1; width:100%; }
    .studio-custom-time label { flex:1; }
    .studio-custom-time input { width:100%; }
}

@media (max-width:768px) {
    .booking-nav .nav-actions > .nav-join-link,
    .booking-nav .nav-actions > .nav-booking-link,
    .booking-nav .booking-account { display:none; }
}
@media (max-width:480px) {
    .studio-collection-item { padding:16px; }
    .studio-collection-item dl { grid-template-columns:1fr; gap:10px; }
    .container { padding-left:16px; padding-right:16px; }
    .booking-intro h1 { font-size:30px; }
    .resource-type-switch { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .resource-type-switch button { gap:5px; padding:7px 6px; font-size:12px; }
    .booking-detail-facts { grid-template-columns:1fr; }
}

@media (max-width:360px) {
    .container { padding-left:12px; padding-right:12px; }
    .resource-grid { column-gap:8px; }
    .resource-card,
    .resource-card.is-featured,
    .resource-skeleton { margin-bottom:8px; }
    .resource-copy { -webkit-line-clamp:1; }
}
.studio-request-details { display:grid; gap:16px; padding:18px; border:1px solid var(--border); border-radius:14px; background:var(--surface-soft,#faf8f5); }
.studio-request-details[hidden] { display:none; }
.studio-request-details header h3 { margin:0 0 4px; font-size:18px; }
.studio-request-details header p,.studio-participant-total { color:var(--text-secondary); font-size:13px; }
.studio-participant-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.studio-participant-grid label,.studio-special-detail label { display:grid; gap:5px; color:var(--text-secondary); font-size:12px; font-weight:700; }
.studio-participant-grid input,.studio-special-detail input,.studio-special-detail textarea { width:100%; min-height:42px; padding:9px 11px; border:1px solid var(--border); border-radius:9px; background:var(--card,#fff); color:var(--text); }
.studio-special-fieldset { border:0; }
.studio-special-fieldset legend { margin-bottom:9px; font-size:13px; font-weight:800; }
.studio-special-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.studio-special-options label { display:flex; align-items:flex-start; gap:7px; padding:9px 10px; border:1px solid var(--border); border-radius:9px; background:var(--card,#fff); font-size:12px; }
.studio-special-options .is-unsupported { color:var(--text-secondary); background:#f2f1ef; }
.studio-special-details { display:grid; gap:10px; }
.studio-special-detail { display:grid; grid-template-columns:.7fr 1fr 1.6fr; gap:9px; padding:12px; border:1px solid var(--border); border-radius:11px; background:var(--card,#fff); }
.studio-special-detail strong { grid-column:1/-1; }
.studio-special-detail label:last-child { grid-column:1/-1; }
@media(max-width:760px){.studio-participant-grid,.studio-special-options{grid-template-columns:repeat(2,minmax(0,1fr))}.studio-special-detail{grid-template-columns:1fr 1fr}.studio-special-detail label:last-child{grid-column:1/-1}}
@media(max-width:460px){.studio-participant-grid,.studio-special-options,.studio-special-detail{grid-template-columns:1fr}.studio-special-detail label:last-child{grid-column:auto}}
.booking-user-workflow { display:grid; gap:12px; margin-top:16px; padding:14px; border:1px solid var(--border); border-radius:12px; background:var(--card,#fff); }
.booking-user-workflow[hidden] { display:none; }
.booking-user-workflow header strong,.booking-user-workflow header small { display:block; }
.booking-user-workflow header small { color:var(--text-secondary); }
.booking-user-workflow-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.booking-user-workflow-summary div { padding:9px 10px; border-radius:9px; background:var(--surface-soft,#f7f5f2); font-size:12px; }
.booking-user-workflow-actions { display:flex; flex-wrap:wrap; gap:8px; }
.booking-user-case-grid { display:grid; grid-template-columns:1fr 2fr auto; gap:8px; align-items:end; }
.booking-user-case-grid label { display:grid; gap:5px; color:var(--text-secondary); font-size:12px; font-weight:700; }
.booking-user-case-grid select,.booking-user-case-grid textarea { width:100%; min-height:42px; padding:9px 10px; border:1px solid var(--border); border-radius:9px; background:var(--card,#fff); }
.booking-user-case-grid textarea { min-height:76px; resize:vertical; }
@media(max-width:720px){.booking-user-case-grid{grid-template-columns:1fr}.booking-user-workflow-summary{grid-template-columns:1fr}}
.booking-inline-note { color:var(--text-secondary); font-size:13px; }
.booking-action-layer { position:fixed; inset:0; z-index:6000; display:grid; place-items:center; padding:20px; }
.booking-action-backdrop { position:absolute; inset:0; background:rgb(16 14 20 / .58); backdrop-filter:blur(4px); }
.booking-action-dialog { position:relative; width:min(100%,460px); padding:22px; border:1px solid var(--border); border-radius:15px; background:var(--card,#fff); box-shadow:0 24px 68px rgb(0 0 0 / .24); }
.booking-action-dialog h3 { margin:0 0 6px; }
.booking-action-dialog p { color:var(--text-secondary); font-size:13px; }
.booking-action-dialog textarea { width:100%; min-height:100px; margin-top:14px; padding:10px 11px; border:1px solid var(--border); border-radius:10px; resize:vertical; }
.booking-action-dialog > div:last-child { display:flex; justify-content:flex-end; gap:9px; margin-top:14px; }
