@charset "UTF-8";
:root{--paper:#F3EFE7;--ink:#2E2925;--accent:#B18B5B;--support:#72675C;--pale:#DED5C8;--white:#fff;--max:1180px;--serif:"Songti SC","Noto Serif CJK SC",serif;--sans:"PingFang SC","Source Han Sans CN",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.72;overflow-x:clip}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;background:#fff;color:#111;padding:.6rem 1rem;z-index:10}.masthead,footer{display:flex;justify-content:space-between;align-items:center;max-width:var(--max);margin:auto;padding:1rem 1.5rem;font-size:.7rem;letter-spacing:.18em;border-bottom:1px solid color-mix(in srgb,var(--ink) 18%,transparent)}main{max-width:var(--max);margin:auto;background:var(--paper)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif)}h1{font-size:clamp(4rem,10vw,8.5rem);line-height:.92;letter-spacing:-.06em}.deck{font-family:var(--serif);font-size:clamp(1.2rem,2.2vw,2rem);max-width:22em}.kicker{font-size:.72rem;font-weight:700;letter-spacing:.18em;color:var(--accent)}.source-note{display:flex;justify-content:space-between;gap:2rem;padding:2rem 5vw;border-top:1px solid color-mix(in srgb,var(--ink) 18%,transparent);font-size:.78rem}.dual{padding:7rem 6vw;background:var(--ink);color:var(--paper)}.dual h2{font-size:clamp(2.5rem,5vw,5rem);line-height:1.05}.dual>div{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:color-mix(in srgb,var(--paper) 25%,transparent)}.dual article{padding:2rem;background:var(--ink)}.dual b{color:var(--accent);font-size:1.3rem}footer{border-top:1px solid color-mix(in srgb,var(--ink) 18%,transparent);border-bottom:0;color:var(--support)}
@media(max-width:760px){.masthead{padding:1rem}.masthead span:last-child{display:none}h1{font-size:clamp(3.3rem,19vw,5.8rem)}.source-note{display:block;padding:1.5rem}.dual{padding:4.5rem 1.4rem}.dual>div{grid-template-columns:1fr}footer{gap:1rem;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media print{.masthead,.skip{display:none}.dual{break-before:page}main{max-width:none}}

.lookbook-hero{display:grid;grid-template-columns:1.15fr .85fr;min-height:78vh}.lookbook-art{background:linear-gradient(145deg,var(--ink),var(--support));color:var(--paper);display:flex;align-items:end;padding:2rem}.lookbook-hero>div:last-child{padding:7vw 5vw;display:flex;flex-direction:column;justify-content:center}.lookbook-list{padding:7rem 9vw}.lookbook-card{display:grid;grid-template-columns:4rem 14rem 1fr;gap:2rem;padding:2rem 0;border-bottom:1px solid var(--pale)}.lookbook-card span{color:var(--accent)}.lookbook-card h3{font-family:var(--serif);font-size:1.7rem}@media(max-width:760px){.lookbook-hero{grid-template-columns:1fr}.lookbook-art{min-height:45vh;order:2}.lookbook-hero>div:last-child{padding:6rem 1.4rem 3rem}.lookbook-list{padding:4rem 1.4rem}.lookbook-card{grid-template-columns:3rem 1fr}.lookbook-card p{grid-column:2}}
/* Destination showcase project layer */
:root {
  --paper: #F3EFE7;
  --ink: #2E2925;
  --accent: #B18B5B;
  --support: #72675C;
  --pale: #DED5C8;
  --white: #fff;
  --shadow: 0 24px 70px rgba(20, 20, 20, .13);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--paper); }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; }
.skip { position: fixed; z-index: 99; left: 12px; top: -80px; padding: 10px 14px; background: var(--ink); color: var(--paper); }
.skip:focus { top: 12px; }
.masthead { display: flex; justify-content: space-between; padding: 14px clamp(18px, 4vw, 60px); border-bottom: 1px solid color-mix(in srgb, var(--ink) 18%, transparent); font: 600 11px/1.2 ui-monospace, monospace; letter-spacing: .16em; }
.product-page { overflow: hidden; }
.back-nav { display: flex; justify-content: space-between; max-width: 1320px; margin: 0 auto; padding: 22px clamp(20px, 5vw, 64px); font-size: 12px; }
.back-nav a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--accent); }
.product-hero { min-height: 74vh; max-width: 1320px; margin: 0 auto; padding: clamp(28px, 6vw, 84px) clamp(20px, 5vw, 64px); display: grid; grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr); gap: clamp(28px, 6vw, 86px); align-items: center; }
.hero-copy h1 { max-width: 8.8em; margin: 12px 0 22px; font-family: "Songti SC", "STSong", serif; font-size: clamp(48px, 7.5vw, 104px); line-height: .97; letter-spacing: -.055em; }
.kicker,.eyebrow { color: var(--accent); font: 700 11px/1.4 ui-monospace, monospace; letter-spacing: .18em; text-transform: uppercase; }
.deck { max-width: 34em; margin: 0; font-size: clamp(17px, 2vw, 23px); line-height: 1.65; }
.route { margin: 25px 0 0; color: color-mix(in srgb, var(--ink) 68%, transparent); font-size: 13px; letter-spacing: .08em; }
.hero-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.hero-meta span { padding: 8px 11px; border: 1px solid color-mix(in srgb, var(--ink) 18%, transparent); border-radius: 99px; font-size: 11px; }
.hero-media { position: relative; min-height: 540px; margin: 0; overflow: hidden; background: var(--pale); box-shadow: var(--shadow); }
.hero-media img,.place-media img { width: 100%; height: 100%; display: block; object-fit: cover; }
.hero-media figcaption { position: absolute; right: 12px; bottom: 10px; padding: 6px 8px; background: color-mix(in srgb, var(--ink) 75%, transparent); color: var(--paper); font-size: 10px; }
.image-placeholder { width: 100%; min-height: 220px; display: grid; place-items: center; background: linear-gradient(135deg, var(--pale), color-mix(in srgb, var(--support) 22%, var(--paper))); color: var(--support); letter-spacing: .1em; }
.opening,.places,.scenario-panel,.verification-note { max-width: 1180px; margin: 0 auto; padding: clamp(64px, 10vw, 132px) clamp(20px, 5vw, 64px); }
.opening { max-width: 880px; text-align: center; }
.opening h2,.section-heading h2,.scenario-panel h2,.verification-note h2 { margin: 10px 0 22px; font-family: "Songti SC", "STSong", serif; font-size: clamp(34px, 5vw, 64px); line-height: 1.08; }
.opening > p:last-child { font-size: 16px; line-height: 1.95; }
.route-map-section { max-width: 1240px; margin: 0 auto; padding: clamp(54px, 8vw, 104px) clamp(20px, 5vw, 64px); }
.route-map-section > .section-heading { max-width: 760px; }
.route-map-section > .section-heading h2 { margin: 10px 0 16px; font-family: "Songti SC", "STSong", serif; font-size: clamp(34px, 5vw, 64px); line-height: 1.08; }
.route-map-section > .section-heading p:last-child,.route-planning-note { color: color-mix(in srgb, var(--ink) 66%, transparent); font-size: 12px; line-height: 1.7; }
.route-map-canvas { margin-top: 34px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--ink) 15%, transparent); border-radius: 28px; background: color-mix(in srgb, var(--paper) 91%, white); box-shadow: var(--shadow); }
.route-map-canvas svg { width: 100%; height: auto; min-height: 480px; display: block; }
.route-map-canvas text { font-family: "PingFang SC", "Microsoft YaHei", sans-serif; }
.flight-curve { stroke-dasharray: 12 12; animation: route-flight 2.8s linear infinite; }
.route-leg { filter: drop-shadow(0 5px 8px color-mix(in srgb, var(--ink) 12%, transparent)); }
.distance-label text { font-size: 13px; font-weight: 700; }
.route-node text:last-child { font-size: 15px; font-weight: 700; }
.route-legend { display: flex; flex-wrap: wrap; gap: 10px 20px; margin-top: 22px; padding: 16px 18px; border-block: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); }
.route-legend span { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; }
.route-legend i { width: 34px; height: 6px; border-radius: 99px; background: var(--day-color); }
.route-daily-maps { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-top: 24px; }
.route-daily-maps > h3 { grid-column: 1/-1; margin: 8px 0 0; font-family: "Songti SC","STSong",serif; font-size: clamp(24px,3vw,38px); }
.route-daily-map { min-width: 0; padding: 16px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); border-radius: 20px; background: color-mix(in srgb, var(--paper) 94%, white); }
.route-daily-map h3 { margin: 0 0 10px; color: var(--accent); font-size: 15px; }
.route-daily-map svg { width: 100%; height: auto; display: block; }
.route-day-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.route-day-card { position: relative; min-height: 185px; padding: 22px 18px 18px 24px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--ink) 13%, transparent); border-radius: 20px; background: color-mix(in srgb, var(--paper) 94%, white); }
.route-day-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 7px; background: var(--day-color); }
.route-day-card b { display: inline-grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; color: white; background: var(--day-color); font-size: 12px; }
.route-day-card h3 { margin: 18px 0 9px; font-family: "Songti SC", "STSong", serif; font-size: 21px; line-height: 1.25; }
.route-day-card p,.route-day-card small { margin: 0; color: color-mix(in srgb, var(--ink) 67%, transparent); font-size: 11px; line-height: 1.65; }
.route-day-card small { display: block; margin-top: 8px; }
@keyframes route-flight { to { stroke-dashoffset: -48; } }
.place-list { margin-top: 42px; display: grid; gap: 30px; }
.place-card { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(280px, .92fr); min-height: 380px; border-top: 1px solid color-mix(in srgb, var(--ink) 20%, transparent); }
.place-card:nth-child(even) { grid-template-columns: minmax(280px, .92fr) minmax(0, 1.08fr); }
.place-card:nth-child(even) .place-media { order: 2; }
.place-media { min-height: 360px; display: grid; grid-template-columns: 1fr; gap: 2px; overflow: hidden; }
.place-media:has(img + img) { grid-template-columns: 1fr 1fr; }
.place-copy { align-self: center; padding: clamp(28px, 5vw, 70px); }
.place-number { color: var(--accent); font: 700 13px/1 ui-monospace, monospace; }
.place-copy h3 { margin: 12px 0 15px; font-family: "Songti SC", "STSong", serif; font-size: clamp(28px, 3.6vw, 48px); }
.place-copy p { margin: 0; font-size: 15px; line-height: 1.9; }
.place-copy .duration { margin-top: 16px; color: color-mix(in srgb, var(--ink) 63%, transparent); font-size: 11px; }
.scenario-panel { border-block: 1px solid color-mix(in srgb, var(--ink) 17%, transparent); }
.status-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 30px; }
.status-grid span { min-height: 84px; padding: 18px; background: var(--pale); font-size: 13px; line-height: 1.7; }
.tasks ol { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 0; list-style-position: inside; }
.tasks li { padding: 20px; background: var(--pale); line-height: 1.7; }
.photo-plan ul { display: grid; gap: 1px; padding: 0; list-style: none; background: color-mix(in srgb, var(--ink) 18%, transparent); }
.photo-plan li { display: grid; grid-template-columns: 60px 1fr; gap: 18px; padding: 18px; background: var(--paper); }
.photo-plan b { color: var(--accent); font-family: ui-monospace, monospace; }
.highlight-tags { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px 0; }
.highlight-tags span { padding: 10px 14px; border: 1px solid var(--accent); border-radius: 99px; }
.boundary { margin-top: 24px; padding-left: 18px; border-left: 3px solid var(--accent); }
.verification-note { margin-block: 70px; background: var(--ink); color: var(--paper); }
.verification-note .eyebrow { color: var(--support); }
.product-footer { display: flex; justify-content: space-between; padding: 24px clamp(20px, 5vw, 64px); border-top: 1px solid color-mix(in srgb, var(--ink) 18%, transparent); font-size: 11px; }

/* Layout-specific visual grammar */
.layout-axis-scroll .product-hero { border-inline: 1px solid var(--support); }
.layout-axis-scroll .hero-copy { padding-left: 34px; border-left: 7px solid var(--accent); }
.layout-axis-scroll .place-card { position: relative; margin-left: 8%; border-left: 2px solid var(--support); }
.layout-axis-scroll .place-card::before { content: attr(data-place); position: absolute; left: -28px; top: 40px; color: var(--accent); background: var(--paper); font: 700 12px/1 ui-monospace, monospace; }
.layout-urban-grid .product-hero { max-width: none; background: linear-gradient(90deg, var(--accent) 0 11%, transparent 11%); }
.layout-urban-grid .hero-copy h1 { font-family: "Arial Black", "PingFang SC", sans-serif; text-transform: uppercase; }
.layout-urban-grid .place-list { grid-template-columns: repeat(2, 1fr); }
.layout-urban-grid .place-card { display: flex; flex-direction: column; border: 2px solid var(--ink); }
.layout-urban-grid .place-card:nth-child(even) .place-media { order: 0; }
.layout-archive-grid .product-hero,.layout-archive-grid .place-card { outline: 1px solid var(--support); outline-offset: -10px; }
.layout-archive-grid .place-card { background: color-mix(in srgb, var(--paper) 84%, var(--pale)); }
.layout-storybook-tasks .product-hero { background: var(--pale); border-radius: 0 0 72px 72px; }
.layout-storybook-tasks .hero-media,.layout-storybook-tasks .place-card,.layout-storybook-tasks .tasks li { border-radius: 28px; }
.layout-storybook-tasks .place-card:nth-child(odd) { transform: rotate(-.4deg); }
.layout-storybook-tasks .place-card:nth-child(even) { transform: rotate(.4deg); }
.layout-private-minimal .product-hero { min-height: 88vh; }
.layout-private-minimal .hero-copy h1 { font-size: clamp(58px, 9vw, 126px); font-weight: 400; }
.layout-private-minimal .place-list { gap: 100px; }
.layout-private-minimal .place-card { border: 0; }
.layout-menu-citywalk .product-hero { background: repeating-linear-gradient(0deg, transparent 0 31px, color-mix(in srgb, var(--accent) 10%, transparent) 31px 32px); }
.layout-menu-citywalk .place-card { border-top: 2px dotted var(--accent); }
.layout-menu-citywalk .place-copy h3::after { content: " · 城市索引"; color: var(--support); font-size: 12px; }
.layout-festival-poster .product-hero { max-width: none; background: var(--support); transform: skewY(-2deg); margin-block: -30px 30px; }
.layout-festival-poster .product-hero > * { transform: skewY(2deg); }
.layout-festival-poster .hero-copy h1 { font-family: "Arial Black", "PingFang SC", sans-serif; color: var(--paper); text-shadow: 5px 5px 0 var(--accent); }
.layout-expedition-atlas { background-image: linear-gradient(color-mix(in srgb, var(--support) 10%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--support) 10%, transparent) 1px, transparent 1px); background-size: 32px 32px; }
.layout-expedition-atlas .place-card { border: 1px solid var(--support); background: color-mix(in srgb, var(--paper) 91%, transparent); }
.layout-mountain-editorial .hero-media { clip-path: polygon(0 15%, 18% 0, 40% 13%, 61% 1%, 100% 18%, 100% 100%, 0 100%); }
.layout-mountain-editorial .place-card { background: linear-gradient(135deg, transparent 0 75%, var(--pale) 75%); }
.layout-coastal-retreat .product-hero { border-radius: 0 0 48% 8%; background: var(--pale); }
.layout-coastal-retreat .hero-media,.layout-coastal-retreat .place-card { border-radius: 38px; overflow: hidden; }
.layout-cinema-scenes,.layout-photo-contact-sheet { background: var(--paper); color: var(--ink); }
.layout-cinema-scenes .hero-media { min-height: 430px; aspect-ratio: 16/9; border: 12px solid #050505; }
.layout-cinema-scenes .place-card { border: 1px solid var(--pale); background: var(--pale); }
.layout-photo-contact-sheet .place-list { grid-template-columns: repeat(2, 1fr); }
.layout-photo-contact-sheet .place-card { display: flex; flex-direction: column; border: 8px solid var(--pale); background: var(--pale); }
.layout-photo-contact-sheet .place-card:nth-child(even) .place-media { order: 0; }
.layout-ripple-chapters .product-hero { background: radial-gradient(circle at 78% 34%, transparent 0 110px, var(--pale) 112px 114px, transparent 116px 168px, var(--pale) 170px 172px, transparent 174px); }
.layout-ripple-chapters .place-card { border-radius: 50% 0 0 0; overflow: hidden; }
.layout-vertical-poem .hero-copy h1 { writing-mode: vertical-rl; max-height: 5.7em; font-size: clamp(48px, 7vw, 92px); }
.layout-vertical-poem .product-hero { grid-template-columns: .65fr 1.35fr; }
.layout-luxury-lookbook .product-hero { min-height: 90vh; }
.layout-luxury-lookbook .hero-media { box-shadow: none; border: 18px solid var(--pale); }
.layout-luxury-lookbook .place-card { border: 0; border-bottom: 1px solid var(--support); }

@media (max-width: 760px) {
  .route-daily-maps { grid-template-columns: 1fr; }
  .masthead { padding-inline: 18px; }
  .product-hero { min-height: auto; grid-template-columns: 1fr; padding-top: 38px; }
  .hero-copy h1 { font-size: clamp(43px, 14vw, 70px); }
  .hero-media { min-height: 380px; }
  .place-card,.place-card:nth-child(even) { display: flex; flex-direction: column; min-height: 0; }
  .place-card:nth-child(even) .place-media { order: 0; }
  .place-media { min-height: 260px; }
  .place-copy { padding: 26px 4px 42px; }
  .status-grid,.tasks ol,.layout-urban-grid .place-list,.layout-photo-contact-sheet .place-list { grid-template-columns: 1fr; }
  .route-map-canvas { margin-inline: -4px; border-radius: 18px; }
  .route-map-canvas svg { min-height: 360px; }
  .route-day-cards { grid-template-columns: 1fr 1fr; }
  .layout-festival-poster .product-hero { margin-top: 0; }
  .layout-vertical-poem .product-hero { grid-template-columns: 1fr; }
  .layout-vertical-poem .hero-copy h1 { writing-mode: horizontal-tb; max-height: none; }
  .product-footer { gap: 12px; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; animation: none !important; transition: none !important; } }
@media print { .back-nav,.skip { display: none; } .product-hero { min-height: 0; } }

/* Stable 1440×900 comparison viewport. Prevent vh-based sections from
   growing when the parent expands the iframe to the full document height. */
html.comparison-embedded .product-hero { min-height: 666px; }
html.comparison-embedded .layout-private-minimal .product-hero { min-height: 792px; }
html.comparison-embedded .layout-luxury-lookbook .product-hero { min-height: 810px; }
