.jns-booking-shell {
    --jns-gold:#CFA921;
    --jns-brown:#49372F;
    --jns-ivory:#FBF8F3;
    --jns-blush:#F7EEE8;
    --jns-desktop-height:980px;
    --jns-mobile-height:900px;
    box-sizing:border-box;
    background:linear-gradient(180deg,var(--jns-ivory) 0%,#fff 48%,var(--jns-ivory) 100%);
    color:var(--jns-brown);
    padding:56px 24px 70px;
    overflow:hidden;
}
.jns-booking-shell *, .jns-booking-shell *::before, .jns-booking-shell *::after { box-sizing:border-box; }
.jns-booking-full-bleed {
    width:100vw;
    max-width:100vw;
    margin-left:calc(50% - 50vw);
    margin-right:calc(50% - 50vw);
}
.jns-booking-inner { width:min(1240px,100%); margin:0 auto; }
.jns-booking-intro { text-align:center; max-width:760px; margin:0 auto 30px; }
.jns-booking-eyebrow {
    font-family:Lato,Arial,sans-serif;
    font-size:12px;
    line-height:1.3;
    font-weight:800;
    letter-spacing:3px;
    color:var(--jns-gold);
    margin:0 0 10px;
}
.jns-booking-intro h1 {
    font-family:"Cormorant Garamond",Georgia,serif;
    font-size:clamp(42px,5vw,64px);
    line-height:1.02;
    font-weight:600;
    color:var(--jns-brown);
    margin:0 0 12px;
}
.jns-booking-intro p {
    font-family:Lato,Arial,sans-serif;
    font-size:16px;
    line-height:1.65;
    color:#75645A;
    margin:0;
}
.jns-booking-toolbar {
    min-height:52px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    padding:10px 14px;
    background:#fff;
    border:1px solid rgba(207,169,33,.32);
    border-bottom:0;
    border-radius:14px 14px 0 0;
    box-shadow:0 10px 26px rgba(73,55,47,.06);
}
.jns-booking-link {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    min-height:38px;
    padding:8px 14px;
    border-radius:999px;
    text-decoration:none !important;
    font-family:Lato,Arial,sans-serif;
    font-size:13px;
    font-weight:700;
    line-height:1.1;
    transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease;
}
.jns-booking-back { color:var(--jns-brown)!important; border:1px solid rgba(73,55,47,.18); background:var(--jns-ivory); }
.jns-booking-external { color:#fff!important; border:1px solid var(--jns-gold); background:var(--jns-gold); }
.jns-booking-link:hover { transform:translateY(-1px); }
.jns-booking-back:hover { background:var(--jns-blush); border-color:rgba(207,169,33,.55); }
.jns-booking-external:hover { background:#B79218; border-color:#B79218; }
.jns-booking-frame-wrap {
    position:relative;
    width:100%;
    min-height:var(--jns-desktop-height);
    background:#fff;
    border:1px solid rgba(207,169,33,.32);
    border-radius:0 0 14px 14px;
    overflow:hidden;
    box-shadow:0 18px 42px rgba(73,55,47,.10);
}
.jns-booking-frame {
    position:relative;
    z-index:2;
    display:block;
    width:100%;
    height:var(--jns-desktop-height);
    border:0;
    background:#fff;
}
.jns-booking-loader {
    position:absolute;
    z-index:1;
    inset:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:14px;
    font-family:Lato,Arial,sans-serif;
    font-size:14px;
    color:#8B786D;
    background:linear-gradient(180deg,#fff,var(--jns-ivory));
}
.jns-booking-spinner {
    width:34px;
    height:34px;
    border-radius:50%;
    border:3px solid rgba(207,169,33,.20);
    border-top-color:var(--jns-gold);
    animation:jnsBookingSpin .8s linear infinite;
}
@keyframes jnsBookingSpin { to { transform:rotate(360deg); } }
.jns-booking-help {
    display:flex;
    align-items:center;
    justify-content:center;
    flex-wrap:wrap;
    gap:8px;
    margin:18px auto 0;
    padding:10px 14px;
    max-width:900px;
    font-family:Lato,Arial,sans-serif;
    font-size:12.5px;
    line-height:1.5;
    color:#7D6B61;
    text-align:center;
}
.jns-booking-help-icon {
    display:inline-grid;
    place-items:center;
    width:20px;
    height:20px;
    border-radius:50%;
    border:1px solid rgba(207,169,33,.55);
    color:var(--jns-gold);
    font-size:11px;
    font-weight:800;
}
.jns-booking-help a { color:var(--jns-brown)!important; font-weight:800; text-decoration:underline; text-underline-offset:2px; }
.jns-booking-error { padding:18px; border:1px solid #d63638; background:#fff5f5; color:#7b1e1e; }

@media (max-width:767px) {
    .jns-booking-shell { padding:34px 0 46px; }
    .jns-booking-inner { width:100%; }
    .jns-booking-intro { padding:0 20px; margin-bottom:22px; }
    .jns-booking-eyebrow { font-size:10.5px; letter-spacing:2.3px; }
    .jns-booking-intro h1 { font-size:38px; }
    .jns-booking-intro p { font-size:14px; }
    .jns-booking-toolbar {
        border-left:0;
        border-right:0;
        border-radius:0;
        padding:9px 10px;
    }
    .jns-booking-link { font-size:11.5px; min-height:36px; padding:8px 11px; }
    .jns-booking-frame-wrap {
        min-height:var(--jns-mobile-height);
        border-left:0;
        border-right:0;
        border-radius:0;
        box-shadow:none;
    }
    .jns-booking-frame { height:var(--jns-mobile-height); }
    .jns-booking-help { padding:10px 18px; margin-top:10px; font-size:11.5px; }
}


/* v1.0.2: only reveal the secondary fallback message if the iframe does not load promptly. */
.jns-booking-shell.jns-booking-js .jns-booking-help {
    max-height:0;
    margin-top:0;
    padding-top:0;
    padding-bottom:0;
    opacity:0;
    overflow:hidden;
    pointer-events:none;
    transition:max-height .28s ease, opacity .22s ease, margin .22s ease, padding .22s ease;
}
.jns-booking-shell.jns-booking-js.jns-booking-fallback-visible .jns-booking-help {
    max-height:120px;
    margin-top:18px;
    padding-top:10px;
    padding-bottom:10px;
    opacity:1;
    pointer-events:auto;
}
@media (max-width:767px) {
    .jns-booking-shell.jns-booking-js.jns-booking-fallback-visible .jns-booking-help {
        margin-top:10px;
    }
}

@media (prefers-reduced-motion:reduce) {
    .jns-booking-link { transition:none; }
    .jns-booking-spinner { animation-duration:1.8s; }
}
