.planner-entry { display:inline-block; padding:12px 0; color:var(--cp-accent,#235778); }
.home-city-planner.planner-active { padding-block:24px 80px; scroll-margin-top:100px; }
.home-city-planner>.section-head { margin-bottom:32px; }
.home-city-planner .map-panel { padding:24px; border:1px solid var(--cp-border); border-radius:12px; background:var(--cp-surface); min-width:0; align-self:start; }
.home-city-planner .map-heading h3 { font:600 1.15rem/1.5 Manrope,"Segoe UI",sans-serif; margin:24px 0 12px; }
.home-city-planner .map-container { min-width:0; margin-top:12px; }
.home-city-planner .china-svg { display:block; width:100%; height:auto; }
.home-city-planner .province { stroke:var(--cp-surface); stroke-width:1; }
.home-city-planner .map-selection { font-size:14px; fill:var(--cp-accent); font-weight:600; }
.home-city-planner .planner-city-results { border-radius:12px; }
@media(max-width:760px) {
  .home-city-planner .map-panel { padding:18px; }
  .home-city-planner .planner-city-results { contain:size; height:72dvh; min-height:0; overflow-y:auto; }
}
.planner-page [hidden],.planner-active [hidden] { display:none!important; }
.planner-active .browse-controls,.planner-active .theme-tabs,.planner-active #recommendations,.planner-active .planner-entry,
.planner-active #collectionStats,.planner-active #exploreViewSwitch,.planner-active #exploreSubtitle,.planner-active .map-about,
.planner-active .map-panel>.all-regions-button,.planner-active .map-panel>.map-key,.planner-active .map-panel>.compact-regions,
.planner-active .map-panel>.destination-source { display:none!important; }
.planner-active .explorer-layout { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); align-items:stretch; gap:28px; }
.planner-active .map-panel { position:sticky; top:16px; }
.planner-active { --planner-map-browsing:var(--cp-accent,#245b4b); --planner-map-planned:#bc8b53; }
.planner-active .china-svg .province { fill:var(--cp-map-empty,#d0d9cf); cursor:default; opacity:.55; pointer-events:none; }
.planner-active .china-svg .province[data-planner-region] { fill:var(--cp-map-land,#a4bda9); opacity:1; cursor:pointer; pointer-events:auto; }
.planner-active .china-svg .province[data-planner-region]:hover { stroke:var(--cp-text,#20332e); stroke-width:2.5; }
.planner-active .china-svg .province.is-browsing { fill:var(--planner-map-browsing); stroke:var(--cp-text,#20332e); stroke-width:3; }
.planner-active .china-svg .province.has-places { fill:var(--planner-map-planned); }
.planner-active .china-svg .province[data-planner-region]:focus-visible { outline:3px solid var(--cp-text,#20332e); outline-offset:3px; stroke:var(--cp-text,#20332e); stroke-width:3; }
.planner-active .china-svg .province[aria-disabled=true] { cursor:default; pointer-events:none; }
.planner-active .province-label { display:none; }
.planner-map-legend { display:flex; flex-wrap:wrap; gap:10px 20px; margin-top:12px; font-size:12px; }
.planner-map-legend span { display:inline-flex; align-items:center; gap:8px; }
.planner-map-legend i { width:14px; height:14px; border-radius:3px; }
.planner-map-swatch-browsing { background:var(--planner-map-browsing); }
.planner-map-swatch-planned { background:var(--planner-map-planned); }
.planner-city-search label { display:block; font-size:12px; margin-bottom:6px; }
.planner-city-search input { width:100%; min-height:44px; padding:10px; background:var(--cp-surface,#fff); color:inherit; border:1px solid var(--cp-border,#d8dfe2); }
.planner-city-list { display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.planner-city-list button { font:inherit; font-size:12px; border:1px solid var(--cp-border,#d8dfe2); background:var(--cp-surface,#fff); color:inherit; padding:8px 12px; min-height:44px; }
.planner-city-list button[aria-pressed=true] { border-color:var(--cp-accent,#235778); background:var(--cp-accent-soft,#e9f0f4); }
.planner-city-list button.has-places { border-color:var(--planner-map-planned); background:#f5eadb; color:#5c4120; }
.planner-city-list button.has-places[aria-pressed=true] { outline:2px solid var(--cp-accent,#235778); outline-offset:2px; }
/* Keep long result lists from determining the shared grid row's height. */
.planner-city-results { contain:size; min-height:0; overflow-y:auto; overscroll-behavior:auto; padding:24px; border:1px solid var(--cp-border,#d8dfe2); background:var(--cp-surface,#fff); scrollbar-gutter:stable; }
.planner-city-results h2 { font:400 2.4rem Georgia,serif; margin:10px 0; }
.planner-city-results>header { animation:planner-reveal .2s ease-out; }
.planner-place { border-top:1px solid var(--cp-border,#d8dfe2); padding:22px 0; }
.planner-place p { font-size:13px; line-height:1.75; }
.planner-place-title { border:0; background:none; color:inherit; padding:10px 0; font:600 1.15rem/1.5 inherit; text-align:left; text-decoration:underline; text-underline-offset:4px; }
.planner-photo { margin:0 0 14px; }
.planner-photo img { width:100%; height:auto; max-height:320px; object-fit:cover; aspect-ratio:16/10; display:block; }
.planner-photo figcaption { font-size:10px; color:var(--cp-text-muted,#66717a); line-height:1.6; margin-top:6px; overflow-wrap:anywhere; }
.planner-photo-credits { margin-block:36px 48px; border-top:1px solid var(--cp-border,#d8dfe2); padding-top:12px; color:var(--cp-text-muted,#66717a); }
.planner-photo-credits>summary { cursor:pointer; padding:12px 0; min-height:44px; font-size:13px; }
.planner-photo-credits figure { margin:12px 0; }
.planner-photo-credits figcaption { font-size:11px; line-height:1.8; overflow-wrap:anywhere; }
.planner-photo-credits a { color:inherit; }
.planner-check { display:flex; gap:10px; align-items:center; min-height:44px; font-size:13px; }
.planner-check input { width:18px; height:18px; }
.planner-primary { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:12px 20px; border:1px solid var(--cp-accent,#235778); background:var(--cp-accent,#235778); color:var(--cp-bg,#fff); font:inherit; cursor:pointer; text-decoration:none; }
.planner-primary:disabled { opacity:.5; cursor:not-allowed; }
.planner-active { padding-bottom:88px; }
.planner-basket { position:fixed; right:max(24px,env(safe-area-inset-right)); bottom:max(24px,env(safe-area-inset-bottom)); z-index:40; }
.planner-basket-toggle { display:flex; align-items:center; gap:12px; min-height:56px; padding:12px 16px; border-radius:28px; border:1px solid var(--cp-accent,#235778); background:var(--cp-accent,#235778); color:var(--cp-bg,#fff); box-shadow:0 8px 28px rgba(20,40,30,.18); font:inherit; cursor:pointer; }
.planner-basket-toggle svg { width:24px; height:24px; }
.planner-basket-badge { display:grid; place-items:center; min-width:28px; min-height:28px; border-radius:50%; padding:2px 6px; background:var(--cp-bg,#fff); color:var(--cp-accent,#235778); font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; }
.planner-dialog.planner-basket-dialog { position:fixed; inset:auto 24px 96px auto; margin:0; width:min(440px,calc(100% - 32px)); max-height:calc(100dvh - 128px); padding:0; overflow:hidden; border-radius:20px; box-shadow:0 16px 60px rgba(20,40,30,.18); }
.planner-basket-dialog[open] { display:flex; flex-direction:column; animation:planner-reveal .2s ease-out; }
.planner-basket-header { flex-shrink:0; display:flex; gap:16px; align-items:center; justify-content:space-between; padding:18px 24px; background:var(--cp-surface,#fff); border-bottom:1px solid var(--cp-border,#d8dfe2); }
.planner-basket-header h2 { font-size:19px; margin:0; }
.planner-basket-controls { flex-shrink:0; padding:12px 24px; border-bottom:1px solid var(--cp-border,#d8dfe2); }
.planner-basket-content { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; padding:8px 24px 24px; }
.planner-basket-dialog .planner-icon-button { flex-shrink:0; display:grid; place-items:center; width:44px; height:44px; padding:10px; border:0; border-radius:8px; background:none; color:inherit; cursor:pointer; }
.planner-basket-dialog .planner-icon-button svg { width:22px; height:22px; }
.planner-basket-dialog .planner-icon-button:hover { background:var(--cp-accent-soft,#e9f0f4); }
.planner-basket-status:not(:empty) { flex-shrink:0; padding:12px 24px 20px; margin:0; }
.planner-basket-status:empty { display:none; }
.planner-basket-city { padding:12px 0; border-top:1px solid var(--cp-border,#d8dfe2); }
.planner-basket-city:first-child { border-top:0; }
.planner-basket-city h3 { margin:4px 0 8px; font-size:14px; }
.planner-basket-item { display:grid; grid-template-columns:72px minmax(0,1fr) 44px; gap:12px; align-items:start; padding-block:12px; }
.planner-basket-item .planner-photo,.planner-basket-photo-missing { width:72px; height:72px; margin:0; border-radius:10px; overflow:hidden; background:var(--cp-accent-soft,#e9f0f4); }
.planner-basket-item .planner-photo img { width:100%; height:100%; max-height:none; aspect-ratio:1; object-fit:cover; }
.planner-basket-photo-missing,.planner-basket-item .planner-photo>p { display:grid; place-items:center; text-align:center; font-size:10px; color:var(--cp-text-muted,#66717a); }
.planner-basket-item .planner-photo>p { height:100%; margin:0; padding:6px; }
.planner-basket-copy { min-width:0; }
.planner-basket-item .planner-basket-place-title { display:block; min-height:44px; padding:2px 0; overflow-wrap:anywhere; font-size:13px; font-weight:600; line-height:1.6; }
.planner-basket-description { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; margin:2px 0 0; color:var(--cp-text-muted,#66717a); font-size:12px; line-height:1.7; }
.planner-basket-form { display:grid; grid-template-columns:auto 114px minmax(0,1fr); align-items:center; gap:8px; margin:0; }
.planner-basket-form label { font-size:12px; white-space:nowrap; }
.planner-basket-form input { width:100%; min-width:0; min-height:44px; padding:8px; font:inherit; color:inherit; background:var(--cp-surface,#fff); border:1px solid var(--cp-border,#d8dfe2); }
.planner-days-stepper { display:grid; grid-template-columns:44px minmax(0,1fr) 44px; align-items:center; border:1px solid var(--cp-border,#d8dfe2); border-radius:12px; background:var(--cp-surface,#fff); }
.planner-basket-form .planner-days-stepper input { box-sizing:border-box; padding:0; border:0; border-radius:0; text-align:center; font-size:14px; appearance:textfield; }
.planner-days-stepper input::-webkit-inner-spin-button,.planner-days-stepper input::-webkit-outer-spin-button { appearance:none; margin:0; }
.planner-days-stepper button { width:44px; min-height:44px; padding:0; border:0; border-radius:10px; background:none; color:var(--cp-accent,#235778); font-size:20px; cursor:pointer; }
.planner-days-stepper button:hover:not(:disabled) { background:var(--cp-accent-soft,#e9f0f4); }
.planner-days-stepper button:focus-visible { outline:2px solid var(--cp-accent,#235778); outline-offset:1px; }
.planner-days-stepper button:disabled { opacity:.35; cursor:not-allowed; }
.planner-basket-form .planner-primary { min-width:0; padding:12px 8px; font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.planner-basket-form p { grid-column:1/-1; }
.planner-basket-item button,.planner-quiet { border:0; color:inherit; background:none; padding:10px 0; min-height:44px; text-align:left; text-decoration:underline; font:inherit; cursor:pointer; }
.planner-note,.planner-status { color:var(--cp-text-muted,#66717a); line-height:1.7; font-size:13px; }
.planner-route-warning { border-left:3px solid var(--cp-accent); border-radius:0 12px 12px 0; background:var(--cp-accent-soft); padding:18px; margin-block:20px; }
.planner-route-warning p { font-size:14px; line-height:1.8; overflow-wrap:anywhere; }
.planner-route-warning .planner-note { font-size:12px; }
.planner-status:not(:empty) { padding:16px; border:1px solid var(--cp-border,#d8dfe2); }
.planner-page { margin:0; background:var(--cp-bg,#f4f5f5); color:var(--cp-text,#1b2931); font:16px/1.7 'Segoe UI',sans-serif; }
.planner-shell { width:min(1120px,calc(100% - 40px)); margin:auto; }
.planner-page main { padding-block:44px 70px; }
.planner-page h1 { font:400 clamp(2.2rem,5vw,4rem)/1.15 Georgia,serif; }
.planner-toolbar,.planner-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.planner-toolbar { padding:24px; background:var(--cp-surface,#fff); border:1px solid var(--cp-border,#d8dfe2); }
.planner-toolbar label { display:block; }
.planner-page input,.planner-page select,.planner-page textarea { font:inherit; padding:10px; min-height:44px; max-width:100%; border:1px solid var(--cp-border,#d8dfe2); color:inherit; background:var(--cp-surface,#fff); }
.planner-page input[type=number] { width:100px; }
.planner-page button { font:inherit; cursor:pointer; }
.planner-day { border-top:1px solid var(--cp-border,#d8dfe2); padding:28px 0; scroll-margin-top:20px; }
.planner-day h3 { margin:0 0 10px; }
.planner-day-place { display:flex; flex-wrap:wrap; gap:10px; align-items:center; padding:10px 0; }
.planner-day-place>button:first-child { flex:1; text-align:left; }
.planner-day button:not(.planner-primary),.planner-city-allocation button { min-height:44px; padding:8px 12px; border:1px solid var(--cp-border,#d8dfe2); color:inherit; background:var(--cp-surface,#fff); }
.planner-city-allocation { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:16px 0; }
.planner-story { padding-top:40px; }
.planner-story>p,.planner-chapter>p { max-width:68ch; white-space:pre-line; }
.planner-chapter { padding:36px 0; border-top:1px solid var(--cp-border,#d8dfe2); }
.planner-chapter h3 { font:400 2rem/1.2 Georgia,serif; }
.planner-story-places { display:flex; flex-wrap:wrap; gap:12px; }
.planner-expert { margin-top:40px; padding:28px; border:1px solid var(--cp-border,#d8dfe2); }
.planner-dialog { width:min(700px,calc(100% - 32px)); max-height:88dvh; overflow:auto; background:var(--cp-surface,#fff); color:var(--cp-text,#1b2931); border:1px solid var(--cp-border,#d8dfe2); padding:24px; line-height:1.7; }
.planner-dialog::backdrop { background:rgba(20,30,40,.5); }
.planner-dialog.planner-confirm { box-sizing:border-box; width:min(480px,calc(100% - 32px)); padding:28px; border-radius:24px; box-shadow:0 24px 80px rgba(20,40,30,.2); }
.planner-confirm[open] { animation:planner-reveal .2s ease-out; }
.planner-confirm::backdrop { background:rgba(25,40,33,.42); backdrop-filter:blur(4px); }
.planner-confirm-header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.planner-confirm-header .eyebrow { font-size:10px; letter-spacing:.14em; color:var(--cp-text-muted); }
.planner-confirm-close { display:grid; place-items:center; flex:none; width:44px; height:44px; padding:10px; border:0; border-radius:50%; color:inherit; background:var(--cp-accent-soft); cursor:pointer; }
.planner-confirm-close svg { width:20px; height:20px; }
.planner-confirm .planner-confirm-title { margin:16px 0 12px; font-family:inherit; font-size:26px; font-weight:600; line-height:1.35; letter-spacing:-.03em; }
.planner-confirm-description { margin:0; color:var(--cp-text-muted); font-size:14px; line-height:1.9; }
.planner-confirm-cost { margin:24px 0; padding:14px 16px; border:1px solid var(--cp-border); border-radius:12px; background:var(--cp-accent-soft); font-size:12px; line-height:1.8; }
.planner-confirm-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; }
.planner-confirm-actions button { min-height:46px; padding:12px 18px; border-radius:999px; font:inherit; font-size:13px; font-weight:600; cursor:pointer; }
.planner-confirm-cancel { border:1px solid var(--cp-border); color:inherit; background:var(--cp-surface); }
.planner-confirm :focus-visible { outline:2px solid var(--cp-accent); outline-offset:3px; }
@media(max-width:480px) { .planner-dialog.planner-confirm { padding:22px; border-radius:20px; } .planner-confirm-actions button { flex:1 1 100%; } }
@media(prefers-reduced-motion:reduce) { .planner-confirm[open] { animation:none; } }
.planner-close { float:right; min-height:44px; }
.planner-page :focus-visible,.planner-active :focus-visible { outline:3px solid var(--cp-accent,#235778); outline-offset:3px; }
.planner-page button:active,.planner-active button:active { transform:scale(.98); }
.planner-consult-fields { display:grid; gap:20px; max-width:760px; }
.planner-consult-fields label { display:grid; gap:6px; }
.planner-consult-fields fieldset { border:1px solid var(--cp-border,#d8dfe2); padding:20px; }
@keyframes planner-reveal { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:none; } }
@media(max-width:760px) {
  .planner-basket { right:16px; bottom:max(16px,env(safe-area-inset-bottom)); }
  .planner-dialog.planner-basket-dialog { right:16px; bottom:max(88px,calc(env(safe-area-inset-bottom) + 72px)); max-height:calc(100dvh - 120px - env(safe-area-inset-bottom)); }
  .planner-active .explorer-layout { grid-template-columns:minmax(0,1fr); }
  .planner-active .map-panel { position:static; }
  .planner-city-results { contain:none; overflow:visible; padding:18px; }
  .planner-active .map-container { max-height:48dvh; }
  .planner-active .china-svg { max-height:48dvh; }
  .planner-basket { padding:18px; }
  .planner-toolbar { padding:16px; }
  .planner-shell { width:calc(100% - 32px); }
}
@media(max-width:540px) {
  .planner-basket-item { grid-template-columns:56px minmax(0,1fr) 44px; gap:10px; }
  .planner-basket-item .planner-photo,.planner-basket-photo-missing { width:56px; height:56px; }
  .planner-basket-form { grid-template-columns:auto 114px minmax(0,1fr); gap:6px; }
  .planner-basket-header,.planner-basket-controls,.planner-basket-content,.planner-basket-status:not(:empty) { padding-inline:16px; }
}
@media(max-width:360px) {
  .planner-basket-controls { padding-inline:8px; }
  .planner-basket-form { gap:4px; }
}
@media(prefers-reduced-motion:reduce) {
  .planner-active *,.planner-page * { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}
