/* Bangsai Typography v1. Values live here; components consume role tokens. */
:root{
 --bs-font-body:'Inter','Bangsai Inter Fallback','PingFang SC','Microsoft YaHei',sans-serif;
 --bs-font-heading:'Plus Jakarta Sans','Bangsai Jakarta Fallback','PingFang SC','Microsoft YaHei',sans-serif;
 --bs-type-hero:clamp(34px,calc(29px + 1.35vw),48px);--bs-type-page:clamp(32px,calc(28px + .85vw),40px);
 --bs-type-section:clamp(25px,calc(23px + .6vw),30px);--bs-type-subheading:clamp(20px,calc(19px + .25vw),22px);
 --bs-type-card:20px;--bs-type-body:16px;--bs-type-lead:17px;--bs-type-meta:14px;--bs-type-label:12px;
 --bs-weight-regular:400;--bs-weight-medium:500;--bs-weight-semibold:600;--bs-weight-bold:700;
 --bs-leading-body:1.75;--bs-leading-meta:1.6;--bs-leading-title:1.2;--bs-leading-section:1.25;--bs-leading-subheading:1.35;
 --bs-tracking-title:-.025em;--bs-tracking-body:0;--bs-text-heading:#183c34;--bs-text-body:#344a43;--bs-text-secondary:#5c6e65;
 --bs-surface-soft:#f2f5f0;--bs-reading-measure:740px;--bs-section-space:48px;--bs-paragraph-space:20px;
}
 :root:lang(zh-CN){--bs-font-body:'Inter','Bangsai Inter Fallback','Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Bangsai Jakarta Fallback','Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif}
:root:lang(zh-CN)[data-bs-chinese-display=traditional]{--bs-font-body:'Inter','Bangsai Inter Fallback','PingFang TC','Microsoft JhengHei',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Bangsai Jakarta Fallback','PingFang TC','Microsoft JhengHei',sans-serif}
:root:lang(zh-Hant){--bs-font-body:'Inter','Bangsai Inter Fallback','Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Bangsai Jakarta Fallback','Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif}
:root:lang(ja){--bs-font-body:'Inter','Noto Sans JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Noto Sans JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif}
:root:lang(ko){--bs-font-body:'Inter','Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic',sans-serif}
:root:lang(th){--bs-font-body:'Inter','Noto Sans Thai','Thonburi','Tahoma',sans-serif;--bs-font-heading:'Plus Jakarta Sans','Noto Sans Thai','Thonburi','Tahoma',sans-serif}
:root:lang(ar){--bs-font-body:'Noto Sans Arabic','Geeza Pro','Tahoma',sans-serif;--bs-font-heading:var(--bs-font-body)}
body.bangsai{--travel-font:var(--bs-font-body);--travel-serif:var(--bs-font-heading);--travel-ink:var(--bs-text-heading);--travel-muted:var(--bs-text-secondary);--bs-shell-ink:var(--bs-text-heading);font-family:var(--bs-font-body);font-size:var(--bs-type-body);font-weight:var(--bs-weight-regular);line-height:var(--bs-leading-body);color:var(--bs-text-body);font-optical-sizing:auto;text-rendering:optimizeLegibility}
body.bangsai :is(h1,h2,h3,h4,h5,h6){font-family:var(--bs-font-heading);color:var(--bs-text-heading);letter-spacing:var(--bs-tracking-title);overflow-wrap:break-word}
body.bangsai h1{font-family:var(--bs-font-heading);font-size:var(--bs-type-page);line-height:var(--bs-leading-title);font-weight:var(--bs-weight-bold)}
body.bangsai h2{font-family:var(--bs-font-heading);font-size:var(--bs-type-section);line-height:var(--bs-leading-section);font-weight:var(--bs-weight-bold)}
body.bangsai :is(h3,h4,h5,h6){font-size:var(--bs-type-subheading);line-height:var(--bs-leading-subheading);font-weight:var(--bs-weight-semibold)}
body.bangsai :is(.place-heading,.explore-heading,.page-head,.common,.cq-heading,.cq-article-heading,.tg-heading,.ba-heading,.bd-public,.bk-public,.bg-shell,.policy-page,.bs-account,.bp-trips,.bt-shared) h1{font-family:var(--bs-font-heading);font-size:var(--bs-type-page);line-height:var(--bs-leading-title);font-weight:var(--bs-weight-bold);max-width:100%;margin-bottom:24px}
body.bangsai :is(.hero-content,.hero-copy) h1{font-family:var(--bs-font-heading);font-size:var(--bs-type-hero);font-weight:var(--bs-weight-bold);line-height:1.15;letter-spacing:var(--bs-tracking-title);margin-bottom:24px}
body.bangsai :is(.section-heading,.journey-banner,.feature-band,.bg-shell,.policy-page,.common-content,.common,.bp-day) h2{font-family:var(--bs-font-heading);font-size:var(--bs-type-section);line-height:var(--bs-leading-section);font-weight:var(--bs-weight-bold)}
body.bangsai :is(.guide-section,.tg-section,.geo-section,.cq-guide-section,.ba-section,.bk-reading section,.prose,.guide-transparency) h2{font-family:var(--bs-font-heading);font-size:var(--bs-type-section);line-height:var(--bs-leading-section);font-weight:var(--bs-weight-bold);letter-spacing:var(--bs-tracking-title);margin:0 0 24px}
body.bangsai :is(.guide-section,.tg-section,.geo-section,.cq-guide-section,.ba-section,.bk-reading section,.prose) h3{font-family:var(--bs-font-heading);font-size:var(--bs-type-subheading);line-height:var(--bs-leading-subheading);font-weight:var(--bs-weight-semibold);margin:32px 0 16px}
body.bangsai :is(.place-card,.tv-product-card,.bd-company-card,.cq-place,.bg-card,.guide-list,.tg-guide-list,.ba-place-list,.ba-related,.geo-cities,.map-result,.result-row) :is(h2,h3){font-family:var(--bs-font-heading);font-size:var(--bs-type-card);font-weight:var(--bs-weight-semibold);line-height:var(--bs-leading-subheading);letter-spacing:-.015em}
body.bangsai :is(.place-card,.tv-product-card,.bd-company-card,.bg-card,.guide-list,.tg-guide-list,.ba-place-list,.map-result) p{font-size:var(--bs-type-body);font-weight:var(--bs-weight-regular);line-height:1.65;color:var(--bs-text-body)}
body.bangsai :is(.hero-content,.hero-copy)>p:not(.eyebrow):not(.hero-eyebrow){font-size:var(--bs-type-body);line-height:var(--bs-leading-body)}
body.bangsai :is(.place-heading,.tg-heading,.ba-heading,.cq-article-heading,.page-head) p:not(.eyebrow){font-size:var(--bs-type-lead);line-height:var(--bs-leading-body);color:var(--bs-text-body);max-width:var(--bs-reading-measure)}
body.bangsai :is(.attraction-copy,.tg-copy,.cq-guide-body,.bk-reading article){min-width:0;max-width:var(--bs-reading-measure)}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article){font-size:var(--bs-type-lead);line-height:var(--bs-leading-body);font-weight:var(--bs-weight-regular);color:var(--bs-text-body);max-width:var(--bs-reading-measure)}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) :is(p,li){font-size:inherit;line-height:var(--bs-leading-body);color:var(--bs-text-body)}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) p{margin:0 0 var(--bs-paragraph-space)}
body.bangsai :is(.guide-section,.tg-section,.geo-section,.cq-guide-section,.ba-section){margin:0 0 var(--bs-section-space);padding-block:0;border-bottom:0}
body.bangsai .guide-section-heading{margin-bottom:24px;align-items:baseline}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) :is(ul,ol){padding-inline-start:26px;margin-block:20px 28px}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) li{margin-block:8px}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) a{color:var(--bs-text-heading);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-section,.ba-section,.bk-reading article) table{font-size:var(--bs-type-body);line-height:var(--bs-leading-body)}
body.bangsai :is(.guide-evidence,.cq-evidence,.guide-transparency,.guide-table-hint,.source-panel,.ba-sources,.tg-sources,.ba-facts small,.map-caption,.account-note,.breadcrumb){font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);color:var(--bs-text-secondary)}
body.bangsai .guide-evidence{margin-top:20px;border-top:0;padding-top:0;gap:12px}
body.bangsai :is(.guide-evidence,.cq-evidence,.guide-transparency,.source-panel) a{text-decoration:underline;text-underline-offset:3px}
body.bangsai :is(.guide-essentials,.ba-facts,.visit-card){font-size:var(--bs-type-body);line-height:var(--bs-leading-meta)}
body.bangsai :is(.guide-essentials,.ba-facts,.visit-card) :is(span,small,dt){font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);color:var(--bs-text-secondary)}
body.bangsai :is(.guide-essentials,.ba-facts,.visit-card) strong{font-weight:var(--bs-weight-semibold);font-size:var(--bs-type-body)}
body.bangsai :is(.eyebrow,.kicker,.region-tabs a,.place-label,.place-tag){font-family:var(--bs-font-body);font-size:var(--bs-type-label);font-weight:var(--bs-weight-medium);line-height:1.4;letter-spacing:.06em}
body.bangsai :is(.nav a,.language summary,.language a,.bs-account-link){font-family:var(--bs-font-body);font-size:var(--bs-type-meta);line-height:1.4;font-weight:var(--bs-weight-medium)}
body.bangsai :is(input:not([type=hidden]),textarea,select){font-family:var(--bs-font-body);font-size:var(--bs-type-body);line-height:1.5;color:var(--bs-text-body)}
body.bangsai :is(input,textarea)::placeholder{color:var(--bs-text-secondary);opacity:1}
body.bangsai :is(.button,.text-link,button:not(.menu-toggle):not(.save-place):not(.save-button)){font-family:var(--bs-font-body);font-size:var(--bs-type-meta);font-weight:var(--bs-weight-semibold);line-height:1.4}
body.bangsai :is(.desktop-toc,.tg-toc,.geo-index nav,.geo-mobile-index nav,.ba-toc,.bk-reading aside nav){position:sticky;top:104px}
/* The sidebar owns sticky positioning; a second sticky child overlaps following content. */
body.bangsai :is(.cq-visit-aside .cq-desktop-toc,.tg-aside nav){position:static}
@media(min-width:801px){
 body.bangsai .cq-reading .cq-visit-aside{top:104px;max-height:calc(100vh - 128px);max-height:calc(100dvh - 128px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
}
body.bangsai :is(.desktop-toc,.cq-desktop-toc,.tg-toc,.tg-aside nav,.geo-index nav,.geo-mobile-index nav,.ba-toc,.bk-reading aside nav,.mobile-toc,.tg-mobile-toc,.cq-mobile-toc) a{font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);font-weight:var(--bs-weight-regular);padding-block:10px;min-height:44px;color:var(--bs-text-secondary);border-bottom:0;overflow-wrap:anywhere}
body.bangsai :is(.desktop-toc,.cq-desktop-toc,.tg-toc,.tg-aside nav,.geo-index nav,.geo-mobile-index nav,.ba-toc,.bk-reading aside nav,.mobile-toc,.tg-mobile-toc,.cq-mobile-toc) a[aria-current=location]{color:var(--bs-text-heading);font-weight:var(--bs-weight-semibold);box-shadow:inset 3px 0 var(--bs-text-heading);padding-inline-start:12px;background:var(--bs-surface-soft)}
body.bangsai :is(.desktop-toc,.cq-desktop-toc,.tg-toc,.tg-aside nav,.geo-index nav,.geo-mobile-index nav,.ba-toc,.bk-reading aside nav) :is(h2,h3){font-family:var(--bs-font-body);font-size:var(--bs-type-meta);font-weight:var(--bs-weight-semibold);line-height:var(--bs-leading-meta);letter-spacing:0}
body.bangsai .br-section-save{font-size:var(--bs-type-meta);font-weight:var(--bs-weight-medium);color:var(--bs-text-secondary);background:transparent;border:1px solid transparent;min-height:44px;padding:10px 0;margin-top:12px!important;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#b6c6ba}
body.bangsai .br-section-save:hover,body.bangsai .br-section-save:focus-visible{color:var(--bs-text-heading);text-decoration-color:currentColor}
body.bangsai .br-section-save[aria-pressed=true]{color:var(--bs-text-heading);background:var(--bs-surface-soft);padding-inline:12px;text-decoration:none}
body.bangsai .bs-reading-tools{background:var(--bs-surface-soft);border-top:0;border-bottom:0;border-radius:8px}
body.bangsai .bs-reading-tools h2{font-family:var(--bs-font-heading);font-size:var(--bs-type-card);font-weight:var(--bs-weight-semibold);line-height:var(--bs-leading-subheading)}
body.bangsai .bs-reading-tools p{font-size:var(--bs-type-body);line-height:var(--bs-leading-body)}
body.bangsai .attraction-hero{margin-bottom:36px}
body.bangsai .attraction-hero figcaption{font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);background:#183c34e8;max-width:100%;overflow-wrap:anywhere}
body.bangsai .bs-footer-column h2{font-family:var(--bs-font-body);font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);font-weight:var(--bs-weight-semibold);letter-spacing:0;color:#fff}
body.bangsai .bs-footer-column>a{font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);color:#d8e4dc;padding-block:10px;min-height:44px}
body.bangsai :is(.bs-footer-brand>p,.bs-footer-bottom,.bs-footer-map,.bs-footer-legal,.bs-footer-languages){font-family:var(--bs-font-body);font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta);color:#d8e4dc}
body.bangsai .bs-wordmark>small{font-family:var(--bs-font-body);font-size:var(--bs-type-meta);line-height:22px;letter-spacing:0;font-weight:var(--bs-weight-regular);color:var(--bs-text-secondary)}
body.bangsai .bs-footer-v8 .bs-wordmark>small{color:#d8e4dc}
@media(max-width:767px){:root{--bs-type-lead:16px;--bs-section-space:40px;--bs-paragraph-space:18px}body.bangsai .guide-section-heading{margin-bottom:20px}body.bangsai .attraction-hero{margin-bottom:24px}body.bangsai :is(.desktop-toc,.cq-desktop-toc,.tg-toc,.tg-aside nav,.geo-index nav,.geo-mobile-index nav,.ba-toc,.bk-reading aside nav){position:static}body.bangsai .bs-header-v8 .bs-wordmark>small{display:none}}
@media print{body.bangsai{color:#000}body.bangsai .br-section-save{display:none}body.bangsai :is(.guide-section-body,.prose){max-width:none}}

/* Language names use installed CJK fallback; Latin visitors do not fetch a Chinese family just for the switcher. */
body.bangsai :is(.language a,.bs-footer-languages a){font-family:Inter,"Bangsai Inter Fallback","PingFang SC","PingFang TC","Microsoft YaHei","Microsoft JhengHei",sans-serif}
/* Established shared variants consume the same roles; featured size does not redefine card typography. */
body.bangsai .featured-places .place-card:is(:first-child,:not(:first-child)) h3{font-family:var(--bs-font-heading);font-size:var(--bs-type-card);font-weight:var(--bs-weight-semibold);line-height:var(--bs-leading-subheading)}
body.bangsai .bs-header-v8 :is(.nav a,.language summary,.language a,.bs-account-link){font-family:var(--bs-font-body);font-size:var(--bs-type-meta);font-weight:var(--bs-weight-medium);line-height:1.4}
body.bangsai :is(.hero-content,.hero-copy) :is(.hero-eyebrow,.eyebrow){font-size:var(--bs-type-label);font-weight:var(--bs-weight-medium);line-height:1.4;letter-spacing:.06em}
body.bangsai :is(.hero-content,.hero-copy) h1{color:var(--bs-text-heading)}

body.bangsai :is(.tg-aside nav,.geo-index,.geo-mobile-index,.desktop-toc,.cq-desktop-toc) a>span{font-size:var(--bs-type-meta);color:var(--bs-text-secondary);opacity:1}
body.bangsai .geo-heading h1{font-family:var(--bs-font-heading);font-size:var(--bs-type-page);font-weight:var(--bs-weight-bold);line-height:var(--bs-leading-title)}
body.bangsai .geo-heading .geo-deck{font-size:var(--bs-type-lead);line-height:var(--bs-leading-body);color:var(--bs-text-body)}
body.bangsai .geo-copy{max-width:var(--bs-reading-measure)}
body.bangsai .geo-copy .guide-section p{font-size:var(--bs-type-lead);line-height:var(--bs-leading-body);color:var(--bs-text-body)}
body.bangsai :is(.filter-form,.bd-filters,.travel-search,.main-form,.account-form,.bg-form,.bk-form) :is(input:not([type=hidden]),select,textarea){font-family:var(--bs-font-body);font-size:var(--bs-type-body);line-height:1.5}
body.bangsai .bs-header-v8 :is(.menu-toggle,.bs-account-link,.language summary){min-height:44px;min-width:44px}
body.bangsai :is(strong,b){font-weight:var(--bs-weight-semibold)}
body.bangsai :is(.bs-header-v8,.bs-footer-v8) .bs-wordmark>small{font-family:var(--bs-font-body);font-size:var(--bs-type-meta);line-height:22px;font-weight:var(--bs-weight-regular);letter-spacing:0}
body.bangsai :is(.guide-section-body,.prose,.tg-section,.cq-guide-section,.geo-copy,.ba-section,.bk-reading article){overflow-wrap:anywhere;hyphens:auto}
/* Secondary text remains AA on white and soft panels, including live-only affiliate/auth labels. */
body.bangsai.bs-world-v7 :is(.eyebrow,.kicker,.account-divider){color:var(--bs-text-secondary);opacity:1}
body.bangsai .account-divider{font-size:var(--bs-type-meta);line-height:var(--bs-leading-meta)}
