/* Public post details. Scoped to preserve account and management screens. */
.public-detail { background:var(--page-background); font-size:14px; line-height:1.6; }
.public-detail :is(.detail-layout,.ticket-page) { width:min(1120px,calc(100% - 40px)); max-width:1120px; margin:auto; padding:24px 0 48px; }
.public-detail :is(.gallery,.booking-panel,.description,.ticket-hero,.ticket-about,.ticket-checkout-panels,.ticket-order-summary) { background:white; border:1px solid #e3e5e7; border-radius:12px; box-shadow:0 3px 12px #17202a06; min-width:0; }
.public-detail :is(h1,h2,h3) { color:#17202a; line-height:1.3; letter-spacing:-.015em; }
.public-detail h1 { font-size:clamp(25px,3vw,34px); }
.public-detail h2 { font-size:21px; }
.public-detail h3 { font-size:17px; }
.public-detail .eyebrow { font-size:11px; letter-spacing:.06em; }
.public-detail .page-hero { width:min(1120px,calc(100% - 40px)); min-height:0; margin:28px auto 0; color:var(--ink); background:white; border:1px solid #e3e5e7; border-radius:12px; }
.public-detail .page-hero>img,.public-detail .page-hero::after { display:none; }
.public-detail .page-hero>div { width:100%; padding:24px; }
.public-detail .page-hero .eyebrow { color:var(--blue); margin:0 0 8px; }
.public-detail .page-hero h1 { font-size:clamp(25px,3vw,34px); line-height:1.25; margin:0; }
.detail-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; min-width:0; }
.detail-title-row>div { min-width:0; }
.detail-title-row h1 { overflow-wrap:anywhere; }
.favorite-control { flex:0 0 auto; margin:0; }
.favorite-button { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:8px 13px; border:1px solid #cbd3df; border-radius:999px; background:#fff; color:#52677a; font:inherit; font-weight:700; cursor:pointer; }
.favorite-button:hover { border-color:#52677a; background:#f5f7fa; }
.favorite-button.is-favorite { border-color:#dc2626; background:#fff1f3; color:#dc2626; }
.favorite-button__icon { font-size:25px; line-height:1; color:#52677a; }
.favorite-button.is-favorite .favorite-button__icon { color:#dc2626; }
.favorite-button__label { font-size:12px; }
.public-detail .detail-layout { grid-template-columns:minmax(0,1fr) 320px; grid-template-areas:"gallery booking" "description description"; gap:24px; align-items:start; }
.public-detail .gallery { grid-area:gallery; }
.public-detail .booking-panel { grid-area:booking; }
.public-detail .description { grid-area:description; }
.public-detail .gallery { padding:12px; gap:12px; }
.public-detail .gallery__main { aspect-ratio:16/10; max-height:420px; object-fit:cover; }
.public-detail .gallery__thumbs { grid-template-columns:repeat(auto-fit,minmax(64px,100px)); gap:8px; }
.public-detail .gallery__thumbs img { aspect-ratio:4/3; object-fit:cover; }
.public-detail .booking-panel { padding:24px; }
.public-detail .booking-panel h2 { margin:6px 0 16px; font-size:20px; }
.public-detail .booking-panel dl { gap:0; margin:12px 0 20px; }
.public-detail .booking-panel dl div { padding:10px 0; gap:16px; font-size:13px; }
.public-detail .booking-panel dt { font-weight:400; }
.public-detail .price { font-size:24px; line-height:1.3; color:#17794b; }
.public-detail .price-note { font-size:12px; margin:4px 0 16px; }
.public-detail .booking-panel form { border-top:1px solid var(--line); padding-top:16px; margin-top:20px; display:grid; gap:12px; }
.public-detail .booking-panel form .button { width:100%; }
.public-detail .description { padding:28px; font-size:14px; line-height:1.75; }
.public-detail .description>h2:first-child { margin-top:0; }
.public-detail .description h2 { margin:28px 0 12px; padding-top:20px; border-top:1px solid #edf0f2; }
.public-detail .description>h2:first-child { border:0; padding:0; }
.public-detail .description p { margin:0 0 16px; }
.public-detail .description>p:first-of-type { white-space:pre-line; }
.public-detail .product-prose :is(h1,h2,h3,h4) { font-size:18px; }
.public-detail .product-prose :is(ul,ol) { padding-left:24px; }
.public-detail .product-prose a,.public-detail .description>p>a { color:var(--blue); text-decoration:underline; text-underline-offset:3px; }
.public-detail .product-prose :is(img,video,iframe) { width:auto; max-width:100%; height:auto; max-height:420px; object-fit:contain; border-radius:8px; }
.public-detail .product-prose iframe { width:100%; aspect-ratio:16/9; border:0; }
.public-detail .product-prose :is(pre,table) { display:block; max-width:100%; overflow:auto; }
.public-detail .product-prose pre { padding:14px; border-radius:8px; background:#f4f7fb; font-size:13px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; }
.public-detail .product-prose table { border-collapse:collapse; }
.public-detail .product-prose :is(th,td) { padding:9px 12px; border:1px solid #dfe5ea; text-align:left; vertical-align:top; }
.public-detail .product-prose blockquote { margin:18px 0; padding:4px 0 4px 16px; border-left:3px solid var(--brand); color:#52677a; }
.public-detail .ticket-back { font-size:13px; margin:0 0 16px; color:#52677a; }
.public-detail .ticket-hero { padding:20px; gap:24px; margin:0 0 20px; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); }
.public-detail .ticket-hero img { aspect-ratio:16/10; max-height:280px; border-radius:8px; }
.public-detail .ticket-hero h1 { font-size:clamp(25px,3vw,32px); margin:8px 0 16px; }
.public-detail .ticket-hero p { margin:6px 0; font-size:14px; }
.public-detail .ticket-tag { font-size:12px; padding:6px 10px; margin-top:8px; }
.public-detail .ticket-about { margin:0 0 24px; padding:10px 20px; }
.public-detail .ticket-about summary { font-size:14px; }
.public-detail .ticket-text { line-height:1.75; }
.public-detail .ticket-checkout-content { grid-template-columns:minmax(0,1fr) 300px; gap:24px; }
.public-detail .ticket-checkout-panels { padding:24px; }
.public-detail .ticket-step-panel>h2 { font-size:22px; margin:6px 0 10px; }
.public-detail .ticket-steps { gap:10px; margin-bottom:20px; }
.public-detail .ticket-steps button { min-height:48px; padding:10px 14px; font-size:13px; border-radius:8px; }
.public-detail .ticket-box { border-radius:8px; padding:16px; box-shadow:none; }
.public-detail .ticket-session { background:#fcfdfc; }
.public-detail .ticket-session summary strong { font-size:14px; }
.public-detail .ticket-session summary small { font-size:12px; }
.public-detail .ticket-choice { padding:18px 0; gap:16px; }
.public-detail .ticket-choice:last-child { padding-bottom:0; }
.public-detail .ticket-choice h3 { font-size:16px; }
.public-detail .ticket-choice p { font-size:13px; margin-bottom:10px; }
.public-detail .ticket-choice-price { font-size:20px; }
.public-detail .ticket-order-summary { padding:20px; top:100px; }
.public-detail .ticket-order-summary h3 { font-size:17px; margin:8px 0 16px; }
.public-detail .ticket-order-summary .ticket-order-total { font-size:21px; }
.public-detail .button { min-height:44px; font-size:13px; padding:12px 16px; font-weight:700; }
.public-detail .ticket-step-actions { margin:20px 0 0; }
.public-detail .footer { font-size:13px; }
.public-detail .public-detail-card { width:min(1120px,calc(100% - 40px)); max-width:1120px; margin:28px auto 48px; overflow:hidden; background:#fff; border:1px solid #e3e5e7; border-radius:12px; box-shadow:0 3px 12px #17202a0f; }
.public-detail .public-detail-card>.page-hero { width:100%; margin:0; border:0; border-bottom:1px solid #edf0f2; border-radius:0; box-shadow:none; }
.public-detail .public-detail-card>.detail-layout { width:100%; margin:0; padding:0; gap:0; background:transparent; }
.public-detail .public-detail-card :is(.gallery,.booking-panel,.description) { border:0; border-radius:0; box-shadow:none; }
.public-detail .public-detail-card .gallery { padding:16px; }
.public-detail .public-detail-card .booking-panel { border-left:1px solid #edf0f2; }
.public-detail .public-detail-card .description { border-top:1px solid #edf0f2; }
@media(max-width:1000px) {
    .public-detail .detail-layout { grid-template-columns:minmax(0,1fr); grid-template-areas:"gallery" "booking" "description"; }
    .public-detail .ticket-checkout-content { grid-template-columns:minmax(0,1fr); }
    .public-detail .ticket-order-summary { position:static; }
    .public-detail .public-detail-card .booking-panel { border-left:0; border-top:1px solid #edf0f2; }
}
@media(max-width:600px) {
    .public-detail :is(.detail-layout,.ticket-page,.page-hero) { width:calc(100% - 32px); }
    .public-detail :is(.detail-layout,.ticket-page) { padding:20px 0 32px; }
    .public-detail .page-hero { margin-top:20px; }
    .public-detail .page-hero>div,.public-detail :is(.description,.booking-panel,.ticket-checkout-panels,.ticket-order-summary) { padding:20px 16px; }
    .public-detail .detail-layout { gap:16px; }
    .public-detail .ticket-hero { grid-template-columns:minmax(0,1fr); padding:12px; gap:16px; }
    .public-detail .ticket-hero>div { padding:0 4px 4px; }
    .public-detail .ticket-hero img { max-height:230px; }
    .public-detail .ticket-steps { gap:6px; }
    .public-detail .ticket-steps button { padding:10px 4px; font-size:12px; }
    .public-detail .ticket-box { padding:12px; }
    .public-detail .ticket-choice { flex-wrap:wrap; }
    .public-detail .ticket-counter { margin-left:auto; }
    .public-detail .ticket-step-panel>h2 { font-size:20px; }
    .public-detail .public-detail-card { width:calc(100% - 32px); margin:20px auto 32px; }
    .public-detail .public-detail-card>.page-hero,.public-detail .public-detail-card>.detail-layout { width:100%; }
    .public-detail .detail-title-row { gap:12px; }
    .public-detail .detail-title-row h1 { font-size:clamp(23px,8vw,29px); }
    .public-detail .gallery__thumbs { grid-template-columns:repeat(auto-fit,minmax(72px,1fr)); }
    .public-detail .booking-panel dl div { align-items:flex-start; }
    .public-detail .booking-panel dd { overflow-wrap:anywhere; }
    .public-detail .description { font-size:15px; line-height:1.7; }
    .public-detail .description h2 { font-size:20px; }
    .public-detail .product-prose :is(ul,ol) { padding-left:20px; }
    .public-detail .product-prose :is(th,td) { min-width:120px; padding:8px 10px; }
    .favorite-button__label { display:none; }
    .favorite-button { width:46px; height:46px; padding:0; }
}
/* Internal checkout uses the existing site typography, buttons and cards. */
.checkout-page { max-width: 1120px; margin: 32px auto; padding: 0 20px; }
.checkout-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.checkout-grid .detail-card { margin-bottom: 20px; overflow-wrap: anywhere; }
.checkout-summary { margin: 20px 0; }
.checkout-summary > div { display: flex; gap: 16px; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #ddd; }
.checkout-summary dd { margin: 0; text-align: right; }
.checkout-final { font-weight: 700; font-size: 1.2rem; }
.checkout-passengers { padding: 0; list-style: none; }
.checkout-passengers li { display: grid; gap: 6px; padding: 12px 0; border-bottom: 1px solid #ddd; }
.checkout-accept { display: flex; align-items: start; gap: 10px; margin: 20px 0; }
.checkout-accept input { width: auto; flex-shrink: 0; margin-top: 4px; }
@media (max-width: 760px) { .checkout-grid { grid-template-columns: 1fr; } .checkout-page { padding: 0 16px; } }
