/* Original public UI system. Palette comes from site-theme.css; homepage artwork stays in home.css. */
:root { --bg:var(--cp-bg); --surface:var(--cp-surface); --ink:var(--cp-text); --muted:var(--cp-text-muted); --line:var(--cp-border); --accent:var(--cp-accent); --soft:var(--cp-accent-soft); --map:var(--cp-bg-elevated); --faint:var(--cp-surface-soft); --public-font:Manrope,"Segoe UI",system-ui,sans-serif; --public-radius-card:24px; --public-radius-panel:18px; --public-radius-pill:999px; --public-shadow:0 10px 30px rgba(16,43,41,.065); --public-nav-ink:#f6faf8; --public-nav-muted:#d2dfda; --public-nav-line:rgba(246,250,248,.24); --public-nav-soft:rgba(246,250,248,.1); }
html[data-theme=dark] { --public-shadow:0 12px 32px rgba(0,0,0,.22); }
body.public-site:not(.home-page) { background:var(--cp-bg); color:var(--cp-text); }
.public-site { font-family:var(--public-font); }
/* Font-only overrides keep every page's existing responsive heading sizes. */
.public-site :is(h1,h2,h3,h4,h5,h6) { font-family:var(--public-font)!important; font-weight:600!important; }
.public-site [hidden] { display:none!important; }
.public-photo-attribution-source[hidden],.public-photo-credit-empty { display:none!important; }
.public-photo-credit-compact .public-photo-context { display:block; color:var(--cp-text-muted); font-size:12px; line-height:1.7; }
.public-photo-context a { color:var(--cp-accent); }
.image-credit.public-photo-credit-compact .public-photo-context { padding:10px 16px; }
footer:has(>.image-credits) { flex-wrap:wrap; }
footer .image-credits { flex-basis:100%; min-width:0; text-align:left; }
footer .image-credits>summary { width:fit-content; min-height:44px; display:list-item; padding-block:10px; cursor:pointer; }
.public-photo-credits-list { margin:8px 0 0; padding-left:20px; max-width:100%; }
.public-photo-credits-list li { margin-bottom:12px; overflow-wrap:anywhere; font-size:12px; line-height:1.7; }
.public-photo-credits-list strong { font-weight:600; }
.public-photo-credits-list a { color:var(--cp-accent); text-underline-offset:3px; }
.public-site .shell { width:min(1280px,calc(100% - 64px)); }
.public-nav,.public-nav * { box-sizing:border-box; }
.public-nav { width:min(1400px,calc(100% - 64px))!important; min-height:80px; height:auto; margin-inline:auto; padding-block:14px; display:flex; align-items:center; justify-content:space-between; gap:24px; border:0; position:relative; z-index:5; color:var(--public-nav-ink); }
.public-site .public-nav { height:80px; padding-block:14px; }
.public-nav .public-brand { flex:none; display:flex; align-items:center; min-height:44px; gap:10px; color:var(--public-nav-ink); font:600 20px/1.2 var(--public-font); letter-spacing:-.025em; text-decoration:none; }
.public-brand :is(.seal,span) { flex:none; border-color:var(--public-nav-line); color:var(--public-nav-ink); border-radius:50%; }
.public-brand .public-brand-mark { display:block; flex:none; width:52px; height:52px; object-fit:contain; border:0; border-radius:0; }
.public-brand .public-brand-wordmark { display:block; color:var(--public-nav-ink); font:inherit; white-space:nowrap; }
.public-nav-links { display:flex; align-items:center; gap:18px; }
.public-nav .public-nav-links a { display:inline-flex; align-items:center; min-height:44px; color:var(--public-nav-muted); font:600 13px/1.3 var(--public-font); text-decoration:none; white-space:nowrap; }
.public-nav .public-nav-links a:hover,.public-nav .public-nav-links a[aria-current=page] { color:var(--public-nav-ink); text-decoration:underline; text-underline-offset:7px; }
.public-nav .public-nav-links .public-plan-link { padding:12px 20px; color:var(--cp-night,#102b29); background:var(--public-nav-ink); border:1px solid var(--public-nav-ink); border-radius:var(--public-radius-pill); }
.public-nav .public-nav-links .public-plan-link:hover { background:var(--cp-mist,#e9f0ed); color:var(--cp-night,#102b29); text-decoration:none; }
.public-nav .public-menu-toggle { min-height:44px; padding:10px 18px; background:var(--public-nav-soft); color:var(--public-nav-ink); border:1px solid var(--public-nav-line); border-radius:var(--public-radius-pill); font:600 14px/1.4 var(--public-font); cursor:pointer; }
.public-nav .saved-button { min-height:44px; color:var(--public-nav-ink); background:var(--public-nav-soft); border-color:var(--public-nav-line); }
.public-nav .saved-button span { color:var(--public-nav-ink); background:var(--public-nav-soft); }
.public-nav [hidden] { display:none!important; }
.public-nav .public-nav-links { margin-left:auto; }
.public-nav .public-language-toggle { flex:none; min-height:44px; padding:8px 12px; border:1px solid var(--public-nav-line); border-radius:999px; background:var(--public-nav-soft); color:var(--public-nav-ink); font:600 13px/1.2 var(--public-font); cursor:pointer; white-space:nowrap; }
.public-language-toggle:disabled { opacity:.65; cursor:progress; }
.public-language-status { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.public-nav .public-account-link.is-authenticated { display:grid; place-items:center; flex:none; width:44px; height:44px; border:1px solid var(--public-nav-line); border-radius:50%; background:var(--public-nav-soft); color:var(--public-nav-ink); text-decoration:none; }
.public-account-avatar { font:600 14px/1 var(--public-font); }
.public-account-dialog { box-sizing:border-box; width:min(480px,calc(100% - 32px)); max-height:calc(100dvh - 32px); padding:28px; overflow-y:auto; border:1px solid var(--cp-border); border-radius:24px; color:var(--cp-text); background:var(--cp-surface); font:14px/1.6 var(--public-font); }
.public-account-dialog::backdrop { background:rgba(16,43,41,.52); }
.public-account-heading,.public-account-actions { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.public-account-heading h2 { margin:0; font-size:24px; }
.public-account-dialog button { padding:10px 16px; border:1px solid var(--cp-border); background:var(--cp-surface); color:var(--cp-text); font:inherit; cursor:pointer; }
.public-account-dialog button:disabled { opacity:.55; cursor:wait; }
.public-account-profile dl { margin:24px 0; }
.public-account-profile dt { color:var(--cp-text-muted); font-size:12px; }
.public-account-profile dd { margin:2px 0 16px; overflow-wrap:anywhere; }
.public-account-credits { padding:18px 0; border-top:1px solid var(--cp-border); }
.public-account-credits h3 { margin:0 0 12px; font-size:16px; }
.public-account-credit-label { margin:0; color:var(--cp-text-muted); font-size:12px; }
.public-account-credit-balance { margin:4px 0 16px; }
.public-account-credit-balance strong { font-size:32px; font-variant-numeric:tabular-nums; }
.public-account-credit-status { margin-bottom:0; color:var(--cp-text-muted); font-size:12px; }
.public-account-credit-status:empty { display:none; }
.public-account-password { border-block:1px solid var(--cp-border); padding:16px 0; margin-bottom:16px; }
.public-account-password summary { cursor:pointer; min-height:44px; padding-block:10px; }
.public-account-dialog fieldset { border:0; padding:0; margin:0; min-width:0; }
.public-account-dialog label { display:block; margin:16px 0 6px; font-weight:600; }
.public-account-dialog input { box-sizing:border-box; width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--cp-border); border-radius:10px; background:var(--cp-surface); color:var(--cp-text); font:inherit; }
.public-account-dialog .public-account-primary { background:var(--cp-accent); color:var(--cp-text-inverse,#fff); }
.public-account-provider-note { color:var(--cp-text-muted); font-size:12px; }
.public-account-field-error { margin:6px 0 0; color:var(--cp-danger,#a33427); font-size:12px; line-height:1.55; }
.public-account-field-error[hidden] { display:none!important; }
.public-account-dialog input[aria-invalid=true] { border-color:var(--cp-danger,#a33427); }
.public-account-password .public-account-primary { margin-top:16px; }
.public-account-dialog > .public-account-actions { justify-content:flex-end; }
.public-account-status:empty { display:none; }
.public-account-status[data-error=true] { color:var(--cp-danger,#a33427); }
.public-account-dialog :is(a,button,summary):focus-visible { outline:3px solid var(--cp-accent); outline-offset:3px; }
@media(max-width:1120px) {
  .public-nav>.public-account-link.is-authenticated { order:1; margin-left:auto; }
  .public-nav:has(>.public-account-link.is-authenticated) .public-language-toggle { margin-left:0; }
}
.public-language-note { flex-basis:100%; margin:0; font-size:12px; line-height:1.7; color:var(--cp-text-muted); }
html[lang="zh-CN"] .public-site { font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",var(--public-font); }
html[lang="zh-CN"] .hero-wordmark-country { font-family:"Songti SC","Noto Serif CJK SC",SimSun,serif; letter-spacing:.04em; }
html[lang="zh-CN"] .hero-wordmark-postcard { font-family:"Songti SC","Noto Serif CJK SC",SimSun,serif; font-size:clamp(2.25rem,4vw,3.8rem); white-space:normal; }
html[lang="zh-CN"] .hero-wordmark-intro { letter-spacing:0; }
html[lang="zh-CN"] :is(.hero-wordmark-seal,.planner-city-arrival-translation) { display:none; }
html[lang="zh-CN"] .home-hero-copy>.eyebrow { letter-spacing:.16em; }
/* City labels already translate in place; avoid repeating their Chinese alias. */
html[lang="zh-CN"] :is(.city-guide-location,.cms-guide-card h2,.directory-city h3)>[lang="zh"] { display:none; }
.public-site .text-link[href="routes.html"]::after { content:none; }
@media(max-width:1120px) { .public-nav .public-brand { order:0; } .public-nav .public-language-toggle { order:1; margin-left:auto; } .public-nav .public-menu-toggle { order:2; } .public-nav .public-nav-links { order:3; margin-left:0; } }
@media(max-width:760px) { .public-site .public-nav { column-gap:6px; height:72px; min-height:72px; padding-block:10px; } .public-nav .public-brand { font-size:17px; gap:8px; } .public-brand .public-brand-mark { width:42px; height:42px; } .public-nav .public-language-toggle { padding-inline:8px; } .public-nav .public-menu-toggle { padding-inline:8px; } html[lang="zh-CN"] .hero-wordmark-country { font-size:clamp(3.875rem,20vw,6.25rem); } }
@media(max-width:360px) { .public-site .public-nav .public-brand,.public-site .hero .public-nav .public-brand { font-size:15px; gap:7px; } .public-brand .public-brand-mark { width:38px; height:38px; } .public-nav .public-menu-toggle { max-width:68px; padding-inline:6px; font-size:12px; line-height:1.1; white-space:normal; } }
.public-nav :is(a,button):focus-visible { outline:3px solid var(--public-nav-ink); outline-offset:4px; }
.public-site:not(.home-page) :is(.site-header,.account-header,.detail-header,.rv-header) { background:var(--cp-night,#102b29); color:var(--public-nav-ink); border-bottom:1px solid var(--public-nav-line); }
.public-site :is(input,select,textarea) { accent-color:var(--cp-accent); }
.public-site :is(input,textarea)::placeholder { color:var(--cp-text-muted); opacity:1; }
.public-site :is(input,select,textarea):focus-visible { outline:2px solid var(--cp-accent); outline-offset:2px; }
.public-site :is(.eyebrow,.step-kicker) { letter-spacing:.12em; font-size:11px; }
.public-site button:not(.image-open),.public-site :is(.share-button,.account-save-button,.route-button,.primary-button,.solid-link,.scenic-button,.museum-button,.rv-button,.video-action,.tool-link,.hero-cta,.btn,.home-hero-actions a,.home-travel-styles a,.tool-quick-start a,.cms-filter-tag,.cms-active-filters a) { min-height:44px; border-radius:var(--public-radius-pill); }
.public-site button:not(.image-open) { min-width:44px; }
.public-site .search-input-wrap button { top:0; right:0; width:44px; height:44px; }
.public-site .search-input-wrap input { min-height:46px; padding-right:50px; }
.public-site :is(.page-nav button,#pageNav button,.route-pagination button,.tool-pagination button,.video-pagination button) { min-width:44px; min-height:44px; }
.public-site :is(input:not([type=checkbox]):not([type=radio]),select,textarea) { border-radius:12px; }
.public-site :is(input:not([type=checkbox]):not([type=radio]),select) { min-height:44px; }
.public-site :is(.place-card,.travel-story,.route-card,.sample-route-card,.sample-card,.tool-card,.video-card,.account-item,.scenic-record,.museum-record,.cms-guide-list>li,.directory-group li) { border-radius:var(--public-radius-card); box-shadow:var(--public-shadow); }
.public-site :is(.place-card>.place-figure,.route-card>.route-figure,.travel-story .journal-cover-link,.sample-card>.route-art) { border-radius:var(--public-radius-card) var(--public-radius-card) 0 0; }
.public-site .route-card>.route-figure>img { border-radius:var(--public-radius-card) var(--public-radius-card) 0 0; }
.public-site :is(.map-panel,.browse-controls,.landmark-browser,.route-filter-panel,.route-quick-search,.route-ledger,.route-planning-note,.route-final-cta,.tool-start-note,.tool-scope-note,.tool-filters,.account-signin,.account-import,.rv-panel,.cms-guide-discovery,.place-dialog,.saved-dialog,.share-dialog) { border-radius:var(--public-radius-panel); }
.public-site :is(.map-panel,.browse-controls,.route-filter-panel,.route-quick-search,.route-ledger,.tool-start-note,.account-signin,.account-import,.cms-guide-discovery) { box-shadow:var(--public-shadow); }
.public-site :is(a,button,summary,input,select,textarea):focus-visible { outline:3px solid var(--cp-accent); outline-offset:3px; }
.public-site .public-nav :is(a,button):focus-visible { outline-color:var(--public-nav-ink); outline-offset:4px; }
.public-site :is(.route-filter-panel>summary,.image-open,.cms-guide-card):focus-visible { outline-offset:-5px; }
.public-site :is(.theme-tab,.explore-view-switch button,.all-regions-button,.journal-tag-toggle)[aria-pressed=true] { color:var(--cp-accent-fg); }
.public-site .province[aria-pressed=true] { stroke:var(--cp-map-selected-border,var(--cp-accent)); }
.public-site :is(.place-summary,.travel-story-summary,.route-card-summary) { font-size:14px; line-height:1.75; }
.public-site :is(.route-day dd,.route-day-note,.route-planning-note p,.route-planning-note li,.day-schedule dd,.day-practical p) { font-size:15px; line-height:1.85; }
.public-site :is(.image-credit,.journal-photo-credit,.city-guide-photo-credit) { font-size:11px; line-height:1.6; }
.public-site :is(.footer,footer.shell) { line-height:1.7; font-size:13px; }
.public-site .tool-hero { padding-block:42px 28px; gap:40px; }
.public-site .tool-hero h1 { font-size:clamp(2.6rem,4.5vw,3.8rem); line-height:1.1; }
.public-site .tool-start-note { padding:24px; }
.public-site .tool-start-note summary { min-height:44px; padding-block:8px; color:var(--cp-accent); font-size:16px; font-weight:600; cursor:pointer; }
.public-site .tool-start-note { border:1px solid var(--cp-border); border-radius:var(--public-radius-panel); background:var(--cp-surface); margin-top:0; }
.public-site .tool-start-note>p { margin-top:12px; }
.tool-quick-start { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding-bottom:18px; }
.tool-quick-start>span { width:100%; font-size:12px; color:var(--cp-text-muted); margin-bottom:4px; }
.tool-quick-start a { min-height:44px; display:inline-flex; align-items:center; padding:10px 16px; border:1px solid var(--cp-border); background:var(--cp-surface); border-radius:30px; text-decoration:none; font-size:14px; color:var(--cp-accent); }
.tool-compatibility { border-bottom:1px solid var(--cp-border); margin-bottom:18px; }
.tool-compatibility summary { min-height:44px; padding-block:10px; font-size:13px; color:var(--cp-text-muted); cursor:pointer; }
.tool-compatibility .tool-scope-note { margin:0 0 18px; }
.public-site .tool-scope-note { font-size:13px; line-height:1.75; }
.public-site .tool-directory { padding-top:28px; }
.public-site .tool-directory-heading h2 { font-size:clamp(1.8rem,3vw,2.6rem); }
.public-site .video-heading { padding-block:40px 22px; }
.public-site .video-heading h1 { font-size:clamp(2.6rem,4.5vw,3.8rem); line-height:1.1; }
.public-site .video-heading p { max-width:65ch; font-size:15px; line-height:1.75; }
.public-site .video-filters :is(input,select) { min-height:46px; }
@media(max-width:1120px) {
  .public-nav { flex-wrap:wrap; gap:10px 20px; }
  .public-nav-links { width:100%; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 16px; padding-top:12px; border-top:1px solid var(--public-nav-line); }
  .public-nav .public-nav-links a { white-space:normal; padding:10px 12px; font-size:14px; }
  .public-nav .public-plan-link { justify-content:center; }
}
@media(max-width:760px) {
  .public-site .explore-view-switch { align-items:stretch; }
  .public-site .shell,.public-nav { width:calc(100% - 32px)!important; }
  .public-nav { min-height:72px; padding-block:12px; }
  .public-site :is(input[type=search],input[type=text],input[type=email],select,textarea) { font-size:16px; }
  .public-site .tool-hero { padding-top:28px; gap:24px; }
  .public-site .tool-start-note { padding:18px; }
  .public-site .tool-categories { flex-wrap:nowrap; overflow-x:auto; padding-bottom:10px; }
  .public-site .tool-categories button { flex:none; }
  .public-site .tool-categories button[aria-pressed=true] { color:var(--cp-accent-fg); }
  .public-site .video-heading { padding-top:28px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto!important; } .public-site *, .public-site *::before,.public-site *::after { scroll-behavior:auto!important; animation-duration:.01ms!important; transition-duration:.01ms!important; } }
@media print { .public-menu-toggle,.public-nav-links { display:none!important; } }
