/* Shared column gaps: 2560px reference, proportional below and capped above. */
:root{--grid-gap-8:min(24px,.9375vw);--grid-gap-6:min(32px,1.25vw);--grid-gap-4:min(48px,1.875vw);--grid-gap-3:min(80px,3.125vw);--grid-gap-2:min(120px,4.6875vw)}
#menu-dialog .city-editions{display:grid;gap:48px}#menu-dialog .city-editions>a{display:flex;flex-direction:column;gap:12px;padding:0;border:0}#menu-dialog .city-editions strong{font-size:clamp(30px,4vw,52px);line-height:1.1;font-weight:700;letter-spacing:-.05em}#menu-dialog .city-editions small{font-size:10pt;font-weight:600;letter-spacing:.08em}#menu-dialog .city-editions span{font-size:12pt;line-height:1.8}#menu-dialog .city-editions [aria-current=page] small:after{content:' · 읽는 중'}#import-open{border:0;background:none;color:#000;padding:0;margin-top:24px;font:inherit;text-align:left;cursor:pointer}.tokyo-currency{display:grid;gap:16px;width:100%}.tokyo-currency label{display:grid;gap:8px;font-size:10pt}.tokyo-currency input{box-sizing:border-box;min-width:0;width:100%;padding:12px;border:0;background:#f4f4f4;color:#000;font:inherit}.tokyo-currency output{font-size:12pt}.daytrip-title-row>h3:only-child{grid-column:1/-1}@media(max-width:767px){#menu-dialog .city-editions{gap:40px}}
.flight-dates{display:grid;grid-template-columns:1fr;gap:16px;margin:24px 0}.flight-dates label{display:grid;gap:8px;font-size:12pt}.flight-dates input{width:100%;min-width:0;box-sizing:border-box;padding:12px;background:#f3f3f3;color:#000;font:inherit;border:0;border-radius:0}.flight-date-error{font-size:10pt}#flight-search[aria-disabled=true]{opacity:.45}.souvenir-shop a:hover{text-decoration:underline;text-underline-offset:4px}.currency-calculator{flex-wrap:wrap;gap:12px}.currency-calculator output{overflow-wrap:anywhere}
/* Compact excursion names and scores together; never break a place name mid-word. */
#top#top .daytrip-card>.daytrip-title-row{grid-template-columns:minmax(0,1fr) auto;column-gap:18px}
#top#top .daytrip-title-row>h3 .english-display-title{font-size:clamp(28px,2.25vw,42px)!important;line-height:1.1!important;letter-spacing:-.045em;overflow-wrap:normal;word-break:normal;hyphens:none}
#top#top .daytrip-title-row .place-rating .rating-value{font-size:clamp(26px,2.05vw,38px)!important;line-height:1.1!important;white-space:nowrap}
#top#top .daytrip-title-row>h3>span:not(.english-display-title){font-size:18px!important;line-height:1.2!important}
@media(max-width:767px){#top#top .daytrip-title-row>h3{padding-left:32px}#top#top .daytrip-title-row>h3 .english-display-title{font-size:clamp(25px,5.6vw,36px)!important}#top#top .daytrip-title-row .place-rating .rating-value{font-size:30px!important}}
/* Share the score column with every body row: exactly 16px between text and score. */
@media(min-width:701px){
#top#top .review-watch-grid article{display:grid;grid-template-columns:minmax(0,1fr) max-content;column-gap:16px!important;row-gap:24px;align-content:start}
#top#top .review-watch-heading{display:contents}
#top#top .review-watch-heading>div{grid-column:1;grid-row:1;min-width:0}
#top#top .review-watch-heading>.review-watch-score{grid-column:2;grid-row:1;align-self:start}
#top#top .review-watch-grid article>:not(.review-watch-heading){grid-column:1;min-width:0}
}
/* Optical left edge = shared text grid + 1px, measured for the actual city initial. */
#top#top .cover .cover-title h1{left:calc(1px + var(--cover-ink-offset,-.015em))}
/* Route alternatives stay open, with the same typography and 16:9 photographs. */
.route-choices{margin-top:clamp(96px,10vw,180px);margin-bottom:clamp(96px,10vw,180px)}
.route-choices>.section-heading{margin-bottom:80px;display:block}
.route-choices>.section-heading h4{font-size:clamp(28px,3vw,44px);font-weight:700;line-height:1.2;margin:0 0 16px}
.route-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(40px,4vw,80px)}
.route-choice-card{min-width:0;display:flex;flex-direction:column;align-items:stretch}
.route-choice-photo{display:block;overflow:hidden;margin-bottom:32px}
.route-choice-photo img{width:100%;aspect-ratio:16/9;object-fit:cover}
.route-choice-card>.section-label{font-size:10pt;line-height:1.8;font-weight:600;margin-bottom:24px}
.route-choice-name{margin-bottom:24px;min-width:0}
.route-choice-name h5{font-size:clamp(24px,2.15vw,36px);font-weight:700;line-height:1.1;letter-spacing:-.04em;margin:0;padding-left:1px;overflow-wrap:anywhere}
.route-choice-name>span{display:block;font-size:18px;font-weight:600;line-height:1.2;margin-top:16px;padding-left:1px}
.route-choice-card>p{font-size:12pt;line-height:1.8;font-weight:300}
.route-choice-card>.inline-actions{margin-top:24px;display:flex;flex-wrap:wrap;gap:12px 20px;font-size:10pt;font-weight:600;line-height:1.8}
header nav[aria-label="루트 바로가기"]{gap:clamp(12px,1.5vw,28px);white-space:nowrap;min-width:0}
@media(max-width:1400px){.route-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1050px){header nav[aria-label="루트 바로가기"]{display:none}}
@media(max-width:767px){.route-choice-grid{grid-template-columns:minmax(0,1fr)}.route-choice-card>.section-label,.route-choice-name,.route-choice-card>p,.route-choice-card>.inline-actions{margin-right:20px}.route-choice-name h5{font-size:30px}.route-choices>.section-heading{margin-bottom:80px}}

/* Choice cards share verified venue ratings. */
.route-choice-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.route-choice-title .route-choice-name{min-width:0;flex:1}.route-choice-title .place-rating{flex:none}.cover-video{object-fit:cover;width:100%;height:100%;pointer-events:none}

#top .route-preview-card .route-preview-summary{font-family:Pretendard,sans-serif;font-size:12pt;font-weight:300;line-height:1.8;letter-spacing:0;color:#000;margin:24px 0 0;width:100%;max-width:none;text-align:left}

#top .route-preview-card .preview-card-heading>div{width:100%;min-width:0}
@media(max-width:767px){#top .route-preview-card .route-preview-summary{width:100%;max-width:none}}

/* A short editorial line between the English and Korean place names. */
#top .stop-name-group .place-tagline,
#top .place-name-group .place-tagline,
#top .route-choice-name .place-tagline{display:block;font-family:Pretendard,sans-serif;font-size:18px;font-weight:500;line-height:1.2;letter-spacing:normal;color:#000;margin:16px 0 0;padding:0;text-align:left;word-break:keep-all}
#top#top .stop-name-group .place-tagline+.stop-local-name,
#top#top .place-name-group .place-tagline+.address-local-name,
#top#top .route-choice-name .place-tagline+span[lang="ko"]{margin-top:4px!important;padding-top:0;font-weight:700!important}

/* Give the nearby itinerary heading room above its first stop. */
#top .daytrip-route>h5{margin-bottom:48px!important}

#top#top .journal-byline .author-monogram{display:block;width:37px!important;height:37px!important;min-width:37px;flex:0 0 37px;aspect-ratio:1!important;overflow:hidden;border-radius:50%;background:transparent!important}
#top#top .journal-byline .author-portrait{display:block;width:100%!important;height:100%!important;aspect-ratio:1!important;object-fit:cover;object-position:center;border-radius:50%;transform:none!important}

#top#top #saved-open img.profile-avatar{width:32px!important;height:32px!important;aspect-ratio:1!important;border-radius:50%!important;object-fit:cover!important;transform:none!important}
@media(max-width:650px){#top#top #saved-open img.profile-avatar{width:28px!important;height:28px!important}}

body #menu-dialog .city-editions>a,body #menu-dialog .city-editions>a :is(small,strong,span){color:#777!important}
body #menu-dialog .city-editions>a[aria-current="page"],body #menu-dialog .city-editions>a[aria-current="page"] :is(small,strong,span){color:#000!important}

/* Match English-to-Korean spacing to each card's body paragraph rhythm. */
#top .route-stop-content{--place-copy-gap:48px}
#top :is(.place-card,.food-card){--place-copy-gap:40px}
#top .route-choice-card{--place-copy-gap:24px}
#top#top :is(.stop-name-group,.place-name-group,.route-choice-name)>.place-tagline{margin-top:var(--place-copy-gap)!important}
#top#top .stop-name-group>.place-tagline+.stop-local-name,
#top#top .place-name-group>.place-tagline+.address-local-name,
#top#top .route-choice-name>.place-tagline+span[lang="ko"]{font-size:20px!important;font-weight:700!important;line-height:1.2!important}
#top#top .route-choice-name{margin-bottom:0}
#top#top .route-choice-title{margin-bottom:var(--place-copy-gap)}
#top#top .route-choice-card>p{margin-top:0}
@media(max-width:767px){#top :is(.place-card,.food-card){--place-copy-gap:32px}}
@media(max-width:650px){#top .route-stop-content{--place-copy-gap:40px}}

/* Match the Korean introduction to its place-name size across editions. */
#top#top :is(.stop-name-group,.place-name-group,.route-choice-name)>.place-tagline,
#top#top .stop-name-group>.place-tagline+.stop-local-name,
#top#top .place-name-group>.place-tagline+.address-local-name,
#top#top .route-choice-name>.place-tagline+span[lang="ko"]{font-size:15pt!important}

/* Shared place links, matching the editorial reference. */
#top#top .place-actions{display:flex!important;flex-wrap:wrap;align-items:center;gap:8px 0!important;font-family:Pretendard,sans-serif!important;font-size:9pt!important;font-weight:600!important;line-height:1.8!important;letter-spacing:normal!important}
#top#top .place-actions :is(a,button){font-family:inherit!important;font-size:9pt!important;font-weight:600!important;line-height:1.8!important;letter-spacing:normal!important;color:#000!important;background:none!important;border:0!important;padding:0!important;margin:0!important;text-decoration:none}
#top#top .place-actions a:hover{text-decoration:underline;text-underline-offset:4px}

/* Body copy uses Pretendard Regular throughout both editions. */
#top#top#top p:not(.place-tagline):not(.daytrip-scene-title):not(.hero-kicker),
#top#top#top .story-copy .mini-note span,
#top#top#top .food-panel,
#top#top#top .open-note>div,
#top#top#top .daytrip-route li small,
#top#top#top :is(.detail-dialog,.import-dialog,.side-dialog) p{font-weight:400!important}

#top#top .traveler-card .place-actions, #top#top .traveler-card .place-actions :is(a,button){font-size:9pt!important}

/* Middle dots separate every place action, including owner controls. */
#top#top .place-actions> :is(a,button){white-space:nowrap}
#top#top .place-actions> :is(a,button)+:is(a,button)::before{content:"·";display:inline-block;margin:0 8px;font-weight:400;pointer-events:none}

/* Day overview: three columns; additional choices: four columns. */
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top #route-preview .route-preview-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
#top#top .route-choice-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1599px){#top#top .route-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1199px){
 #top#top .route-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:767px){
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top #route-preview .route-preview-grid,#top#top .route-choice-grid{grid-template-columns:minmax(0,1fr)}
}

/* Route place stories use the requested three-column editorial layout. */
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .editorial-stops{grid-template-columns:repeat(3,minmax(0,1fr))}
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(n){width:100%;margin:0;min-width:0}
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(3n+2){margin-top:85px}
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(3n){margin-top:170px}
@media(max-width:1599px){
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .editorial-stops{grid-template-columns:repeat(2,minmax(0,1fr))}
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(n){margin-top:0}
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(even){margin-top:170px}
}
@media(max-width:767px){
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .editorial-stops{grid-template-columns:minmax(0,1fr)}
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .daily-chapter .route-layout .editorial-stop:nth-child(n){margin-top:0}
}

#top#top .traveler-owner-actions{display:flex;align-items:center;gap:8px;margin-top:24px;font-family:Pretendard,sans-serif;font-size:9pt;font-weight:600;line-height:1.8}
#top#top .traveler-owner-actions button{font:inherit;border:0;background:none;padding:0;color:#000}
#top#top .route-choice-card .place-rating .rating-value{font-size:24pt!important;line-height:1.1!important}

/* Tokyo route introduction: half the vertical breathing room, larger title. */
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .route-transition{padding-block:clamp(120px,24svh,310px)}
body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .route-transition h2{font-size:clamp(36pt,6vw,72pt)!important;line-height:1.2!important}
@media(max-width:650px){body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top .route-transition{padding-block:clamp(90px,20svh,190px)}}

/* Shared place-save position and route title ratings. */
#top#top#top .shared-save-topline{display:flex;align-items:center;justify-content:space-between;gap:16px;grid-column:1 / -1;width:100%;box-sizing:border-box}
#top#top#top .shared-save-topline>.section-label{margin:0!important}
#top#top#top .route-stop-content>.stop-meta-header{display:flex;grid-column:1 / -1;justify-content:space-between;align-items:center}
#top#top#top .route-stop-content>.stop-title-row{display:flex;grid-column:1 / -1;align-items:flex-start;justify-content:space-between;gap:16px;margin:0!important;min-width:0}
#top#top#top .stop-title-row>.stop-name-group{min-width:0;flex:1;margin:0!important}
#top#top#top .stop-title-row>.place-rating{position:static;flex:0 0 auto;align-self:flex-start;margin:0!important;transform:none}
#top#top#top .stop-title-row .rating-value{line-height:1.1;transform:none}

#top#top#top .save-button{position:relative;display:grid!important;place-items:center;flex:0 0 32px;width:32px!important;height:32px!important;min-width:32px!important;aspect-ratio:1;border:0!important;border-radius:50%!important;padding:0!important;background:rgba(0,0,0,.08)!important;color:#000!important;font-size:0!important;line-height:1;transition:background-color .2s,color .2s}
#top#top#top .save-button::before,#top#top#top .save-button::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:1.5px;background:currentColor;transform:translate(-50%,-50%);margin:0;border:0}
#top#top#top .save-button::after{transform:translate(-50%,-50%) rotate(90deg)}
#top#top#top .save-button.saved,#top#top#top .save-button[aria-pressed="true"],#top#top#top .save-button:focus-visible{background:#000!important;color:#fff!important}
@media(hover:hover){#top#top#top .save-button:hover{background:#000!important;color:#fff!important}}

/* Column gutters follow the visible column count; outer margins stay intact. */
@media(min-width:1600px){#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid){column-gap:60px!important;--place-save-size:24px;--place-rating-size:24pt}}
@media(min-width:1200px) and (max-width:1599px){#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid){column-gap:100px!important;--place-save-size:32px;--place-rating-size:28pt}}
@media(min-width:1600px){
 #top#top#top :is(.travel-facts-grid,.daytrip-grid){column-gap:100px!important;--place-save-size:32px;--place-rating-size:28pt}
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top#top#top :is(.route-preview-grid,.editorial-stops){column-gap:100px!important;--place-save-size:32px;--place-rating-size:28pt}
}
@media(min-width:1920px){#top#top#top .traveler-grid{column-gap:40px!important;--place-save-size:16px;--place-rating-size:18pt}}
@media(min-width:1600px) and (max-width:1919px){#top#top#top .traveler-grid{column-gap:60px!important;--place-save-size:24px;--place-rating-size:24pt}}
@media(min-width:1200px) and (max-width:1599px){#top#top#top .traveler-grid{column-gap:100px!important;--place-save-size:32px;--place-rating-size:28pt}}

#top#top#top .save-button{flex-basis:var(--place-save-size,32px);width:var(--place-save-size,32px)!important;height:var(--place-save-size,32px)!important;min-width:var(--place-save-size,32px)!important}
#top#top#top .save-button::before,#top#top#top .save-button::after{width:calc(var(--place-save-size,32px) * .375);height:1px}
/* Selected places reveal the remove action on hover. */
#top#top#top .save-button.saved,#top#top#top .save-button[aria-pressed="true"]{background:#000!important;color:#000!important}
@media(hover:hover){
 #top#top#top .save-button:hover{background:#000!important;color:#fff!important}
 #top#top#top .save-button:is(.saved,[aria-pressed="true"]):hover::after{display:none}
}
#top#top#top .save-button:focus-visible{background:#000!important;color:#fff!important}
#top#top#top .save-button:is(.saved,[aria-pressed="true"]):focus-visible::after{display:none}
/* Align visible capitals and score digits, not their different font ascenders. */
#top#top#top .stop-title-row{align-items:flex-start!important}
#top#top#top .stop-title-row>.place-rating{padding:0!important;gap:0!important;align-items:flex-start!important}
#top#top#top .stop-title-row .rating-value{display:block;margin:0!important;padding:0!important;line-height:1!important;transform:none!important}
@supports(text-box-trim:trim-both){
 #top#top#top .stop-title-row :is(h4,.rating-value){text-box-trim:trim-both;text-box-edge:cap alphabetic}
}
/* Preserve the original bilingual title inset inside the new rating row. */
#top#top#top .stop-title-row>.stop-name-group{padding-left:32px;box-sizing:border-box}
/* Set the glyph bars explicitly so global black text rules cannot recolor them. */
#top#top#top .save-button::before,#top#top#top .save-button::after{background:#000!important}
@media(hover:hover){
 #top#top#top .save-button:hover::before,#top#top#top .save-button:hover::after{background:#fff!important}
 #top#top#top .save-button:is(.saved,[aria-pressed="true"]):hover{background:#000!important;color:#fff!important}
 #top#top#top .save-button:is(.saved,[aria-pressed="true"]):hover::before{display:block!important;background:#fff!important}
 #top#top#top .save-button:is(.saved,[aria-pressed="true"]):hover::after{display:none!important}
}
#top#top#top .save-button:focus-visible::before,#top#top#top .save-button:focus-visible::after{background:#fff!important}
#top#top#top .save-button:is(.saved,[aria-pressed="true"]):focus-visible::after{display:none!important}
/* Category-to-title spacing matches the English-to-Korean interval. */
#top#top#top .route-choice-card>.shared-save-topline{margin-top:0!important;margin-bottom:var(--place-copy-gap,24px)!important}
#top#top#top .route-choice-card>.route-choice-title{margin-top:0!important}
#top#top#top .route-choice-card>.shared-save-topline>.section-label{margin:0!important;padding:0!important}
#top#top#top .traveler-card>.shared-save-topline{margin-top:0!important;margin-bottom:24px!important}
#top#top#top .traveler-card>.traveler-title{margin-top:0!important}
#top#top#top .traveler-card>.shared-save-topline>.section-label{margin:0!important;padding:0!important}

/* Shared viewport bands: 768 / 1200 / 1600 / 1920 CSS pixels. */
@media(min-width:768px) and (max-width:1599px){
 body:is([data-edition="tokyo"],[data-edition="barcelona"]) #top #route-preview .route-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:767px){
 #top#top #route-preview .route-preview-grid,#top#top .daily-chapter .editorial-stops{grid-template-columns:minmax(0,1fr)}
 #top#top .daily-chapter .route-layout .editorial-stop:nth-child(n){margin-top:0}
}

/* Approved viewport bands: <=767 / <=1200 / <=1600 / <=1920 / >1920.
   The final rules own column counts, horizontal gaps and stagger rhythm. */
#top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid,.travel-facts-grid,.daytrip-grid,.traveler-grid,.route-preview-grid,.editorial-stops,.review-watch-grid){grid-template-columns:minmax(0,1fr);column-gap:0!important;--place-save-size:32px;--place-rating-size:28pt}
#top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(n){margin-top:0}
@media(width > 767px){
 #top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid,.traveler-grid,.travel-facts-grid,.daytrip-grid,.review-watch-grid){grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--grid-gap-2)!important}
 #top#top#top#top :where(.route-preview-grid,.editorial-stops){grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--grid-gap-2)!important}
 #top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(even){margin-top:170px}
}
@media(width > 1200px){
 #top#top#top#top .traveler-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important;--place-save-size:32px;--place-rating-size:28pt}
}
@media(width > 1600px){
 #top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid){grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important;--place-save-size:32px;--place-rating-size:28pt}
 #top#top#top#top .traveler-grid{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)!important;--place-save-size:24px;--place-rating-size:24pt}
}
@media(width > 1920px){
 #top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.route-choice-grid){grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)!important;--place-save-size:24px;--place-rating-size:24pt}
 #top#top#top#top :where(.travel-facts-grid,.daytrip-grid){grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important;--place-save-size:32px;--place-rating-size:28pt}
 #top#top#top#top :where(.route-preview-grid,.editorial-stops){grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important;--place-save-size:32px;--place-rating-size:28pt}
 #top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(n){margin-top:0}
 #top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(3n+2){margin-top:85px}
 #top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(3n){margin-top:170px}
 #top#top#top#top .traveler-grid{grid-template-columns:repeat(6,minmax(0,1fr));column-gap:var(--grid-gap-6)!important;--place-save-size:16px;--place-rating-size:18pt}
}

/* Day-ending copy: 20pt semibold with 140% leading. */
#top#top#top#top .daily-closing p{font-size:20pt!important;font-weight:600!important;line-height:1.4!important}

/* Day closing: facing label and copy, separated by 80px. */
#top#top#top#top .daily-chapter .daily-closing{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);column-gap:var(--grid-gap-2);row-gap:48px;align-items:start;width:100%;max-width:none;text-align:left}
#top#top#top#top .daily-closing>.section-label{grid-column:1;grid-row:1;text-align:right;margin:0;min-width:0;line-height:1.4}
#top#top#top#top .daily-closing>p{grid-column:2;grid-row:1;text-align:left;margin:0;min-width:0}
#top#top#top#top .daily-closing>.daily-summary{grid-column:2;grid-row:2;text-align:left;margin:0;min-width:0}
#top#top#top#top .daily-closing .daily-summary p{text-align:left;margin:0}
@media(max-width:767px){
 #top#top#top#top .daily-chapter .daily-closing{grid-template-columns:minmax(0,1fr);column-gap:0;row-gap:48px}
 #top#top#top#top .daily-closing>.section-label{grid-column:1;grid-row:1;margin-bottom:32px}
 #top#top#top#top .daily-closing>p{grid-column:1;grid-row:2}
 #top#top#top#top .daily-closing>.daily-summary{grid-column:1;grid-row:3}
}

/* Closing follows the shared 4 / 3 / 2 / 1-column viewport rhythm. */
@media(width > 767px){
 #top#top#top#top .daily-chapter .daily-closing{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--grid-gap-2)}
}
@media(width > 1600px){
 #top#top#top#top .daily-chapter .daily-closing{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)}
 #top#top#top#top .daily-closing>p,#top#top#top#top .daily-closing>.daily-summary{grid-column:2 / span 2}
}
@media(width > 1920px){
 #top#top#top#top .daily-chapter .daily-closing{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)}
 #top#top#top#top .daily-closing>.section-label{grid-column:2}
 #top#top#top#top .daily-closing>p,#top#top#top#top .daily-closing>.daily-summary{grid-column:3}
}

/* Scores follow the actual card column count; preserve their established weight. */
#top#top#top#top :is(.rating-value,.traveler-rating,.review-watch-score){font-size:var(--place-rating-size,28pt)!important}

/* Give every day-ending passage the same breathing room above as the chapter below. */
#top#top#top#top .daily-chapter .daily-closing{margin-top:170px!important}
@media(max-width:650px){#top#top#top#top .daily-chapter .daily-closing{margin-top:100px!important}}

/* Keep the mobile document on its vertical axis; nested photo scrollers remain independent. */
@media(max-width:767px){
 html,body{max-width:100%;overflow-x:hidden!important;overscroll-behavior-x:none}
 @supports(overflow:clip){html,body{overflow-x:clip!important}}
 body #top{min-width:0;max-width:100%}
}

/* Mobile Korean name modules span the title area; only English reserves rating space. */
@media(max-width:767px){
 #top#top#top#top :is(.stop-title-row,.route-choice-title,.traveler-title,.daytrip-title-row){position:relative;display:block!important}
 #top#top#top#top :is(.stop-title-row>.stop-name-group,.route-choice-title>.route-choice-name,.traveler-title>.traveler-name,.daytrip-title-row>h3){width:100%!important;max-width:none!important;margin-right:0!important;padding-right:0!important;box-sizing:border-box}
 #top#top#top#top :is(.stop-title-row,.route-choice-title,.traveler-title,.daytrip-title-row)>:is(.place-rating,.traveler-rating,[data-place-rating]){position:absolute!important;top:0;right:0;margin:0!important}
 #top#top#top#top :is(.place-card,.food-card)>.place-title-row>.place-name-group{grid-column:1 / -1;padding-right:0!important}
 #top#top#top#top :is(.stop-title-row,.route-choice-title,.traveler-title):has(>.place-rating,>.traveler-rating) :is(h4,h5),
 #top#top#top#top :is(.place-card,.food-card)>.place-title-row:has(>.place-rating)>.place-name-group>h3{padding-right:80px!important;box-sizing:border-box}
 #top#top#top#top .daytrip-title-row:has(>[data-place-rating],>.place-rating)>h3>.english-display-title{display:block;padding-right:80px;box-sizing:border-box}
 #top#top#top#top :is(.stop-local-name,.address-local-name,.stop-name-group>.place-tagline,.place-name-group>.place-tagline,.route-choice-name>span,.traveler-name>span,.daytrip-title-row>h3>span:not(.english-display-title)){width:100%!important;max-width:none!important;margin-right:0!important;padding-right:0!important;box-sizing:border-box}
}

/* Desktop body preserves the rating column and gap, including unrated cards. */
@media(min-width:768px){
 #top#top#top#top .place-copy-aligned{grid-column:1 / -1!important;align-self:stretch;justify-self:stretch;width:calc(100% - var(--copy-grid-left,0px) - var(--copy-grid-right,80px))!important;max-width:none!important;min-width:0;box-sizing:border-box;margin-left:var(--copy-grid-left,0px)!important;margin-right:var(--copy-grid-right,80px)!important;padding-left:0!important;padding-right:0!important}
}

@media(min-width:768px){
 #top#top#top#top .place-copy-aligned :is(p,section){width:100%!important;max-width:none!important;box-sizing:border-box;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}
}

/* Extra breathing room in nearby-trip introductions and itinerary headings. */
#top#top#top .daytrip-card>.daytrip-title-row{margin-bottom:56px!important}
#top#top#top .daytrip-route>h5{margin-bottom:64px!important}
#top#top#top .daytrip-route li>span{display:flex!important;align-items:center!important;justify-content:center!important;line-height:1!important;padding:0!important;text-align:center;box-sizing:border-box}
/* Full-width metadata rows must not inherit the inset body-copy margins. */
#top#top#top#top .shared-save-topline{margin-left:0!important;margin-right:0!important;min-width:0;max-width:100%;padding-inline:0!important}
#top#top#top#top .shared-save-topline>.section-label{flex:1;min-width:0;overflow-wrap:anywhere}
#top#top#top#top .shared-save-topline>.save-button{flex-shrink:0;margin-left:auto!important;margin-right:0!important}

/* Travel notebook: shared six-column family, responsive down to one. */
@media(width > 1200px){#top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.review-watch-grid){grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important;--place-save-size:32px;--place-rating-size:28pt}}
@media(width > 1600px){#top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.review-watch-grid){grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)!important;--place-save-size:24px;--place-rating-size:24pt}}
@media(width > 1920px){#top#top#top#top :where(.place-grid,.food-grid,.district-grid,.souvenir-grid,#film-grid,.review-watch-grid){grid-template-columns:repeat(6,minmax(0,1fr));column-gap:var(--grid-gap-6)!important;--place-save-size:16px;--place-rating-size:18pt}}

/* Notebook cards share the reader recommendation type and spacing rhythm. */
#top#top#top#top :is(.place-grid .place-card,.food-grid .food-card,.district-grid>article,.souvenir-grid>article){row-gap:24px!important}
#top#top#top#top .food-grid .food-open-content{gap:24px!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) .shared-save-topline{margin-top:0!important;margin-bottom:0!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) .section-label{font-size:6.75pt!important;line-height:1.5!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) h3{font-size:20pt!important;font-weight:700!important;line-height:1.3!important;margin-top:0!important;margin-bottom:0!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) .place-tagline{font-size:14pt!important;font-weight:500!important;line-height:1.2!important;margin-top:24px!important;margin-bottom:0!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) .address-local-name{font-size:14pt!important;font-weight:700!important;line-height:1.2!important;margin-top:4px!important;margin-bottom:0!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.review-watch-grid) p{font-size:10pt!important;font-weight:400!important;line-height:1.8!important}

/* Notebook copy starts on the photo's left edge, like reader recommendations. */
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.daytrip-grid,.review-watch-grid,.traveler-grid) :is(.place-name-group,.traveler-name,.review-watch-heading),
#top#top#top#top .daytrip-card .daytrip-title-row>h3,
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.daytrip-grid,.review-watch-grid,.traveler-grid) :is(h3,h5,.place-tagline,.address-local-name,.traveler-name>span){padding-left:0!important;margin-left:0!important}
#top#top#top#top :is(.place-card,.food-card,.district-grid>article,.souvenir-grid>article,.daytrip-card,.review-watch-card,.traveler-card)>:is(p,h4,.space-temperature,.place-visit-note,.inline-actions,.food-open-content,.food-links,.district-place-list,.daytrip-mood,.daytrip-route,.daytrip-transport,.daytrip-links,.traveler-quote,.traveler-owner-actions){padding-left:0!important;margin-left:0!important}
#top#top#top#top :is(.place-grid,.food-grid,.district-grid,.souvenir-grid,.daytrip-grid,.review-watch-grid,.traveler-grid) .place-copy-aligned{--copy-grid-left:0px!important;padding-left:0!important;margin-left:0!important}

/* Souvenirs use portrait photography; other card formats are unchanged. */
#top#top#top#top .souvenir-grid :is(.souvenir-photo,.souvenir-photo button,.souvenir-photo img){aspect-ratio:3 / 4!important;width:100%!important;height:auto!important;object-fit:cover}
/* Before-you-go information belongs to the four-column family. */
@media(width > 1600px){#top#top#top#top .travel-facts-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important}}
@media(width > 1920px){#top#top#top#top .travel-facts-grid{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)!important}}

/* Shared Tokyo/Barcelona itinerary spacing: keep empty optional copy out of layout. */
#top#top#top#top .daytrip-card>.daytrip-mood:empty{display:none!important}
#top#top#top#top .daytrip-card>p:has(+.daytrip-route){margin-bottom:0!important}
#top#top#top#top .daytrip-card>.daytrip-route{margin-top:24px!important;padding-top:0!important}
#top#top#top#top .daytrip-route>h5{margin-top:0!important;margin-bottom:24px!important;padding-block:0!important}
#top#top#top#top .daytrip-route>ol{margin-top:0!important;padding-top:0!important}

/* Reporting is distinct from saving: same circular plus appearance, existing form flow. */
body .community-route-add{display:inline-flex;align-items:center;gap:12px}
body .community-add-icon{position:relative;display:inline-block;flex:none;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.08);color:#000;transition:background .2s,color .2s}
body .community-add-icon::before,body .community-add-icon::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:1.5px;background:currentColor;transform:translate(-50%,-50%)}
body .community-add-icon::after{transform:translate(-50%,-50%) rotate(90deg)}
body .community-route-add:hover .community-add-icon,body .community-route-add:focus-visible .community-add-icon{background:#000;color:#fff}
#top .notebook-recommendations{margin-top:48px;margin-bottom:0}
#top .notebook-recommendations .community-empty{display:none}
#top .notebook-recommendations .traveler-grid:empty{display:none}
#top .notebook-recommendations .community-route-add{margin-top:24px}
#top .stays-intro{max-width:680px;margin-bottom:48px}
#top #stays .traveler-grid:empty+.community-empty{display:block}

/* Remove the legacy inset on the souvenir title wrapper, not only its children. */
#top#top#top#top .souvenir-grid>article>div:has(>h3){margin-left:0!important;padding-left:0!important}

/* Reader recommendation metadata uses the same face and scale as its body. */
#top#top#top#top :is(.traveler-card .section-label,.place-card>.card-topline>span,.food-card>.card-topline>span,.souvenir-grid>article>.card-topline>span){font-family:var(--sans)!important;font-size:10pt!important;font-weight:400!important;line-height:1.5!important;letter-spacing:.08em!important}

#top#top#top#top .district-place-list .district-place-name{font-size:10pt!important;line-height:1.5!important}

#top#top#top#top .district-grid>article>a{margin-left:0!important;padding-left:0!important}

/* Cover contact sheet: retain half a scene as a cue at each breakpoint. */
#top#top#top #cover-gallery .cover-carousel{--slide-width:calc(100% / 5.5)}
@media(max-width:1920px){#top#top#top #cover-gallery .cover-carousel{--slide-width:calc(100% / 4.5)}}
@media(max-width:1600px){#top#top#top #cover-gallery .cover-carousel{--slide-width:calc(100% / 3.5)}}
@media(max-width:1200px){#top#top#top #cover-gallery .cover-carousel{--slide-width:calc(100% / 2.5)}}
@media(max-width:767px){#top#top#top #cover-gallery .cover-carousel{--slide-width:calc(100% / 1.5)}}
#top#top#top #cover-gallery figcaption{padding:16px clamp(12px,1.4vw,28px);font-size:clamp(9pt,.9vw,12pt)!important;gap:8px;overflow-wrap:normal;word-break:normal}
#top#top#top #cover-gallery figcaption>span:first-child{min-width:0}
#top#top#top #cover-gallery figcaption>span:last-child{flex-shrink:0}
body>header nav[aria-label="루트 바로가기"]>a{position:relative;overflow:visible}
body>header nav[aria-label="루트 바로가기"]>a::after{content:'';position:absolute;left:50%;bottom:-12px;width:5px;height:5px;border-radius:50%;background:#ff4400;opacity:0;transform:translateX(-50%);pointer-events:none;transition:opacity .18s ease}
body>header nav[aria-label="루트 바로가기"]>a[aria-current="location"]::after{opacity:1}

/* Report plus must override the global black text rule, including its strokes. */
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon,
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon::before,
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon::after{color:#fff!important}
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon::before,
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon::after{background:#fff!important}
/* Menu label matches the notebook body (10pt), retaining its heading weight. */
#top#top#top#top .food-grid .food-open-content h4{font-size:10pt!important;line-height:1.8!important}

/* Cover photos blend above the previous photograph; the veil and type stay still. */
#top .cover-slideshow>.cover-slide{opacity:0;transition:none!important;z-index:0}
#top .cover-slideshow>.cover-slide.is-current{opacity:1}
#top .cover-slideshow>.cover-slide.is-entering{opacity:1;z-index:1}
#top .cover .cover-slideshow>.cover-veil{z-index:2!important}
#top .cover .cover-slideshow>.cover-title{z-index:3!important}
@media(prefers-reduced-motion:reduce){#top .cover-slideshow>.cover-slide{transition:none}}

/* Report control uses the four-column save control's exact 24px / 37.5% ratio. */
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-add-icon{width:24px;height:24px;min-width:24px;min-height:24px;box-sizing:border-box;border:0;padding:0;border-radius:50%;background:rgba(0,0,0,.08)}
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-add-icon::before,:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-add-icon::after{width:9px;height:1px;margin:0;border:0}

/* Shinjuku lead-in inherits its route's horizontal grid; 70%-screen window over viewport-fixed photography. */
#top#top#top#top .route-photo-slideshow{position:relative;isolation:isolate;width:100%;max-width:100%;height:70vh;height:70svh;min-height:0;padding:0;margin:0 0 clamp(96px,8vw,160px);overflow:hidden;clip-path:inset(0)}
#top#top#top#top .route-photo-slideshow>img{position:fixed;inset:50% auto auto var(--scene-left,0px);display:block;width:var(--scene-width,100vw)!important;height:100vh!important;height:100dvh!important;max-height:none!important;aspect-ratio:auto!important;object-fit:cover;object-position:center;opacity:0;z-index:0;transition:none!important;transform:translateY(-50%)!important}
#top#top#top#top .route-photo-slideshow>img.is-current{opacity:1}
#top#top#top#top .route-photo-slideshow>img.is-entering{opacity:1;z-index:1}

#top#top#top#top .route-photo-slideshow>.route-photo-label{position:absolute;inset:auto 24px clamp(32px,3vw,48px);z-index:3;display:block;width:auto;margin:0;padding:0;text-align:center;color:#fff!important;background:none;font-size:9pt;font-weight:600;line-height:1.4;letter-spacing:.18em;text-shadow:0 1px 6px rgba(0,0,0,.4)}

#top#top#top#top .route-photo-label>span{display:block;color:#fff!important}
#top#top#top#top .route-photo-label>.route-photo-title{margin:0 0 12px;padding:0;font-size:clamp(13pt,1.6vw,18pt);font-weight:600;line-height:1.2;letter-spacing:-.025em;color:#fff!important}

/* Match the main cover dim while keeping caption text above both slide layers. */
#top#top#top#top .route-photo-slideshow::after{content:"";position:absolute;inset:0;z-index:2;display:block;background:rgba(0,0,0,.4);pointer-events:none}
#top#top#top#top .route-photo-label>span:last-child{font-weight:500!important}

/* Override the icon size rule so hover/focus retains the black circular fill. */
:is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible) .community-add-icon{background:#000!important;color:#fff!important}

#top .itinerary-map .map-reload{position:absolute;bottom:32px;right:12px;z-index:2;padding:8px 12px;background:#fff!important;color:#000!important;font-size:9pt;line-height:1.4;box-shadow:0 2px 10px #0002}

#top#top#top#top .district-grid .district-place-list{gap:4px}

/* Load-completion fades only; slideshow opacity remains owned by its player. */
#top#top#top#top img.photo-load-pending{opacity:0!important;transition:none!important}
#top#top#top#top img.photo-load-reveal{opacity:1!important;transition:opacity .7s ease-out!important}
@media(prefers-reduced-motion:reduce){#top#top#top#top img.photo-load-reveal{transition:none!important}}

/* Empty photo frames stay white while their decoded images fade in. */
#top#top#top#top :is(.route-place-photo,.food-place-photo,.context-photo,.context-photo button,.picture,.film-image,.community-photo-missing,.traveler-photo,.route-choice-photo,.route-preview-photo,.stop-story-photo,.stop-story-photo>button,.daily-opening-photo button,.daily-photo-strip button,.carousel-slide>button,.place-gallery-frame,.place-gallery-track,.place-gallery-slide){background-color:#fff!important}

/* Keep the dim overlay behind a white loading cover until a real photo is decoded. */
#top#top#top#top :is(.cover-scene,.route-photo-slideshow){background-color:#fff!important}
#top#top#top#top :is(.cover-scene,.route-photo-slideshow)::before{content:"";position:absolute;inset:0;z-index:4;background:#fff!important;opacity:1;pointer-events:none;transition:opacity .7s ease-out}
#top#top#top#top :is(.cover-scene,.route-photo-slideshow).scene-photo-ready::before{opacity:0}
@media(prefers-reduced-motion:reduce){#top#top#top#top :is(.cover-scene,.route-photo-slideshow)::before{transition:none}}

/* Mobile browser chrome must not resize/recenter fixed banner photos during scroll. */
@media (hover:none) and (pointer:coarse){
 #top#top#top#top .route-photo-slideshow>img{top:0!important;height:100vh!important;height:100lvh!important;transform:none!important}
}

/* RouteOff accent sampled from the supplied blue reference. */
:root{--routeoff-accent:#ff4400}
#top#top#top#top .save-button:is(.saved,[aria-pressed="true"],:focus-visible){background:var(--routeoff-accent)!important}
@media(hover:hover){#top#top#top#top .save-button:hover{background:var(--routeoff-accent)!important}}
:is(#top,#saved-dialog):is(#top,#saved-dialog):is(#top,#saved-dialog):is(#top,#saved-dialog) .community-route-add:is(:hover,:focus-visible,[aria-pressed="true"]) .community-add-icon{background:var(--routeoff-accent)!important}

/* A saved place is a solid accent dot; hover offers the remove action. */
#top#top#top#top .save-button:is(.saved,[aria-pressed="true"])::before,
#top#top#top#top .save-button:is(.saved,[aria-pressed="true"])::after{display:none!important}
@media(hover:hover){#top#top#top#top .save-button:is(.saved,[aria-pressed="true"]):hover::before{display:block!important;background:#fff!important}}
#top#top#top#top .save-button:is(.saved,[aria-pressed="true"]):focus-visible::before{display:block!important;background:#fff!important}

/* Shared transient notices use fully rounded ends. */
body #toast{border-radius:999px!important}

/* Compact city menu. */
body #menu-dialog .city-editions{margin-top:32px}
body #menu-dialog .city-editions strong{font-size:clamp(18pt,3vw,30pt)!important}

/* City-only navigation and profile contribution entry. */
body #menu-dialog .city-editions{margin-top:32px;gap:24px}
body #menu-dialog .city-editions>a,body #menu-dialog .city-editions>a strong{color:#000!important}
body #menu-dialog .city-editions>a[aria-current="page"],body #menu-dialog .city-editions>a[aria-current="page"] strong,body #menu-dialog .city-editions>a:is(:hover,:focus-visible),body #menu-dialog .city-editions>a:is(:hover,:focus-visible) strong{color:#ff4400!important}


/* Right-edge drawers: quick arrival, soft stop. */
body :is(#menu-dialog,#saved-dialog){position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:100dvh;border:0;box-sizing:border-box;overflow-y:auto}
body :is(#menu-dialog,#saved-dialog)[open]{animation:routeoff-drawer-in .65s cubic-bezier(.16,1,.3,1) both}
body :is(#menu-dialog,#saved-dialog)::backdrop{background:rgba(0,0,0,.85);backdrop-filter:none;animation:routeoff-drawer-dim .5s ease-out both}
@keyframes routeoff-drawer-in{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes routeoff-drawer-dim{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){body :is(#menu-dialog,#saved-dialog)[open],body :is(#menu-dialog,#saved-dialog)::backdrop{animation:none}}

body :is(#menu-dialog,#saved-dialog).drawer-closing{animation:none}
body :is(#menu-dialog,#saved-dialog).drawer-closing::backdrop{animation:routeoff-drawer-dim-out .4s cubic-bezier(.4,0,.2,1) both}
@keyframes routeoff-drawer-dim-out{from{opacity:1}to{opacity:0}}
@media(prefers-reduced-motion:reduce){body :is(#menu-dialog,#saved-dialog).drawer-closing::backdrop{animation:none}}

body dialog :is(button.close,button.community-close){display:grid;place-items:center;width:40px;height:40px;padding:8px!important;border:0!important;background:transparent!important;box-shadow:none!important;font-size:0!important}
body dialog :is(button.close,button.community-close) svg{display:block;width:24px;height:24px;fill:none!important;stroke:currentColor!important;stroke-width:1.5;pointer-events:none}

body :is(#menu-dialog,#saved-dialog){box-shadow:none!important;filter:none!important}

/* Profile report action: same circular-plus treatment as the supplied reference. */
/* Compact Korean-only saved-place list. */
body #saved-dialog #saved-list .saved-row{padding:12px 0!important;margin:0!important;gap:16px}
body #saved-dialog #saved-list .saved-row .place-name-ko{display:block;margin:0!important;padding:0!important;line-height:1.4!important}
body #saved-dialog #saved-list .saved-row>a{margin:0!important;line-height:1.4}
/* Brand on the dark side of either drawer, aligned to its top label. */
body :is(#menu-dialog,#saved-dialog)::backdrop{background:rgba(0,0,0,.92)!important}
body .drawer-brand{position:fixed;inset:auto;margin:0;padding:0;border:0;background:none;overflow:visible;pointer-events:none;color:#fff!important;max-width:none;}
body .drawer-brand::backdrop{background:transparent;pointer-events:none}
body .drawer-brand .drawer-brand-logo{display:block;font-family:'itc-avant-garde-gothic-pro','ITC Avant Garde Gothic Std',Pretendard,sans-serif;font-weight:700;font-size:18pt;line-height:1;letter-spacing:-.06em;color:#fff!important;-webkit-text-fill-color:#fff!important}
body .drawer-brand p{margin:20px 0 0!important;font:600 clamp(24pt,3vw,40pt)/1.1 Pretendard,sans-serif!important;color:#fff!important;-webkit-text-fill-color:#fff!important;word-break:keep-all}
body #saved-dialog .community-route-add{margin-top:32px}

body .drawer-brand .drawer-brand-author{display:block;margin-top:24px;font:400 10pt/1.6 Pretendard,sans-serif!important;letter-spacing:0;color:#fff!important;-webkit-text-fill-color:#fff!important}
/* Account identity and its report action have stable, separate slots. */
body #saved-dialog .profile-photo-editor{display:flex;align-items:center;gap:20px;margin:0 0 28px}
body #saved-dialog .profile-photo-editor .account-avatar{display:block;width:80px!important;height:80px!important;min-width:80px;max-width:80px;aspect-ratio:1!important;border-radius:50%!important;object-fit:cover!important;flex:0 0 80px;transform:none!important;margin:0!important}
body #saved-dialog .profile-photo-change{padding:0;border:0;background:none;font:600 10pt/1.5 Pretendard,sans-serif;cursor:pointer}
body #saved-dialog .profile-photo-change:hover{color:var(--routeoff-accent)!important}
body #saved-dialog .profile-photo-change:disabled{opacity:.4;cursor:default}
body #saved-dialog .profile-photo-status{font-size:9pt!important;line-height:1.5;margin:8px 0 0}
body #saved-dialog .profile-report-slot{margin-top:32px}
body #saved-dialog .profile-report-slot>.community-route-add{margin:0;padding:12px 0}
body #saved-dialog .profile-report-slot>.my-submissions{margin-top:24px}
body #saved-dialog .my-submission-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;margin:0;padding:8px 0}
body #saved-dialog .my-submission-copy{min-width:0}
body #saved-dialog .my-submission-copy p{margin:0}
body #saved-dialog .my-submission-actions{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin:0;padding:0}
body #saved-dialog .my-submission-actions button{margin:0;padding:0;white-space:nowrap;font:400 10pt/1.8 Pretendard,sans-serif}

body #saved-dialog .profile-photo-change{flex:0 0 80px;width:80px;height:80px;border-radius:50%;overflow:hidden;line-height:0}
body #saved-dialog .profile-identity{min-width:0;flex:1}
body #saved-dialog .profile-identity>p{margin:0 0 6px}
body #saved-dialog .profile-photo-status:empty{display:none}

body #saved-dialog .my-submission-copy strong{font-weight:600!important}

body #saved-dialog>h2{font-size:clamp(18pt,2vw,24pt)!important;line-height:1.2!important;white-space:nowrap}
body #saved-dialog>h2 br{display:none}
body #saved-dialog>h2 br::after{content:' '}
body #saved-dialog #saved-list .place-name-ko,body #saved-dialog .my-submission-copy strong{font-family:Pretendard,sans-serif!important;font-size:10.5pt!important;font-weight:600!important;line-height:1.8!important}
body #saved-dialog #saved-list .saved-row button,body #saved-dialog .my-submission-actions button{font-family:Pretendard,sans-serif!important;font-size:9pt!important;font-weight:400!important;line-height:1.8!important;text-decoration:none}
body #saved-dialog .my-submission-copy p{margin:0!important}

body #saved-dialog .profile-identity .profile-account-name{font-size:12pt!important;font-weight:600!important;line-height:1.4;margin-bottom:8px}

body #saved-dialog .personal-stop{margin:0!important;padding:8px 0!important;gap:16px;align-items:center}
body #saved-dialog .personal-stop .place-name-ko{display:block;margin:0!important;padding:0!important;font:600 10.5pt/1.8 Pretendard,sans-serif!important}

/* One compact rhythm for submitted places, saved places and personal routes. */
body #saved-dialog .my-submission-row,body #saved-dialog #saved-list .saved-row,body #saved-dialog .personal-stop{margin:0!important;padding:4px 0!important;min-height:0;align-items:center}
body #saved-dialog #saved-list,body #saved-dialog #personal-route{row-gap:0}
body #saved-dialog #saved-list .saved-row .place-name-ko,body #saved-dialog .personal-stop .place-name-ko,body #saved-dialog .my-submission-copy p,body #saved-dialog .my-submission-copy strong{line-height:1.8!important}

/* Shared route metadata rhythm, independent of rating availability. */
#top#top#top .daily-chapter .daily-facts{gap:0}
#top#top#top .daily-facts>span{margin:0}

/* Fixed 44px hit targets; visual dots stay on the editorial grid. */
/* Shared expanded header height: dot placement never follows header motion. */
:root{--routeoff-header-height:72px}
body>header{height:var(--routeoff-header-height)}
@media(max-width:650px){:root{--routeoff-header-height:64px}}
body>.mobile-route-dots{display:none}
@media(max-width:1050px){
 body>.mobile-route-dots:not([hidden]){position:fixed;top:calc(var(--routeoff-header-height) + 8px);z-index:38;display:flex;flex-direction:column;gap:0;width:44px;padding:0;margin:0;mix-blend-mode:normal;pointer-events:none}
 body>.mobile-route-dots a{position:relative;display:block;flex:0 0 32px;width:44px;height:32px;border:0;border-radius:0;background:transparent;box-shadow:none;padding:0;margin:0;touch-action:manipulation;pointer-events:auto;-webkit-tap-highlight-color:transparent}
 body>.mobile-route-dots a::before{content:'';position:absolute;left:var(--dot-left,19px);top:13px;width:6px;height:6px;border-radius:50%;background:#ebebeb;pointer-events:none;transition:background .18s ease}
 body>.mobile-route-dots a[aria-current="location"]::before{background:var(--routeoff-accent,#ff4400)}
 body>.mobile-route-dots a:focus-visible{outline:2px solid var(--routeoff-accent,#ff4400);outline-offset:-2px}
}

body #saved-dialog .profile-identity button.profile-account-name{display:block;max-width:100%;padding:0;border:0;background:none;text-align:left;color:inherit;cursor:text;overflow-wrap:anywhere}
body #saved-dialog .profile-identity input.profile-name-input{display:block;width:100%;min-width:0;max-width:320px;padding:7px 14px;border:1px solid var(--routeoff-accent,#ff4400)!important;border-radius:999px!important;background:transparent!important;color:inherit;font-family:Pretendard,sans-serif;box-shadow:none!important;outline:none!important}

/* Souvenir copy follows the notebook grid; retain its portrait photo rule. */
#top#top#top#top .souvenir-grid>article>:not(.souvenir-photo){margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important;min-width:0}
#top#top#top#top .souvenir-grid>article>.place-title-row{width:100%;margin-block:0!important}

/* Video notebook: same metadata, title, copy and link rhythm as place cards. */
#top#top#top#top #film-grid .film-card{display:flex;flex-direction:column;align-items:stretch;gap:24px;min-width:0}
#top#top#top#top #film-grid .film-card>:not(.film-image){margin:0!important;padding:0!important;min-width:0}
#top#top#top#top #film-grid .film-card h3{font-size:13.333333pt!important;font-weight:700!important;line-height:1.3!important;overflow-wrap:anywhere}
#top#top#top#top #film-grid .film-card p{font-family:var(--sans)!important;font-size:10pt!important;font-weight:400!important;line-height:1.8!important}
#top#top#top#top #film-grid .film-card .film-meta{line-height:1.5!important;letter-spacing:.08em!important}
#top#top#top#top #film-grid .film-card p:empty{display:none}
#top#top#top#top #film-grid .film-watch-link{align-self:flex-start;font-family:Pretendard,sans-serif!important;font-size:9pt!important;font-weight:600!important;line-height:1.8!important;letter-spacing:normal!important}
#top#top#top#top #film-grid .remove-video{align-self:flex-start;font-family:var(--sans)!important;font-size:9pt!important;line-height:1.8!important}

/* All practical-card values share a slightly smaller mobile display scale. */
@media(max-width:767px){
 #top#top#top#top .travel-fact>.travel-fact-value{font-size:clamp(56px,16vw,84px)!important;font-weight:700!important;line-height:1.1!important}
 #top#top#top#top .travel-fact>.travel-fact-value>small{font-size:12pt!important;font-weight:400!important;line-height:1.8!important}
}

/* Both editions share the compact day-trip heading and full copy alignment. */
#top#top#top#top .daytrip-card>.daytrip-title-row{margin-top:24px!important}
#top#top#top#top .daytrip-card>:is(h4,p,.daytrip-mood,.daytrip-route,.daytrip-transport,.daytrip-links){margin-right:0!important;padding-right:0!important}
#top#top#top#top .daytrip-card .daytrip-route .daytrip-scene-title{font-size:12pt!important;font-weight:300!important;line-height:1.8!important}

/* Content photos are not links; media playback and gallery controls remain interactive. */
#top .carousel-slide>div.carousel-content-link{cursor:default}

/* Keep the cover invitation on desktop only, across city editions. */
@media(max-width:767px){.cover-caption>a[href$="#route-preview"]{display:none!important}}

/* Balance the coordinate line between subtitle and carousel; move the title as one block. */
@media(max-width:767px){
 #top .cover{--cover-caption-space:35px;--cover-carousel-overlap:110px}
 #top .cover .cover-scene>.cover-title{bottom:calc(var(--cover-carousel-overlap) + var(--cover-caption-space))}
 #top .cover .cover-title>p{margin-bottom:0}
 #top .cover .cover-caption{margin-top:var(--cover-caption-space)}
}
@media(max-width:650px){#top .cover{--cover-caption-space:25px;--cover-carousel-overlap:72px}}

body dialog :is(button.close,button.community-close){-webkit-tap-highlight-color:transparent}
@media(hover:none) and (pointer:coarse){html:not([data-keyboard-navigation]) body dialog :is(button.close,button.community-close):focus{outline:none!important}}

/* Keep modal geometry until the destination replaces this document. */
html.routeoff-page-leaving body{overflow:hidden!important}

body dialog[data-navigation-ready],body dialog[data-navigation-ready]::backdrop{opacity:0!important;pointer-events:none!important}

/* Mobile city names: double the previous responsive size. */
@media(max-width:767px){body #menu-dialog .city-editions strong{font-size:clamp(36pt,6vw,60pt)!important}}

/* Mobile scrolling keeps content painted; only images translate inside their frame. */
@media(max-width:767px){
 html.motion-ready .motion-reveal{opacity:1!important;clip-path:none!important;transition:none!important}
 #top#top#top#top img.photo-load-pending{opacity:1!important;transition:none!important}
 #top#top#top#top img.photo-load-reveal{opacity:1!important;transition:none!important}
 @media(prefers-reduced-motion:reduce){#top#top#top#top img.photo-load-reveal{transition:none!important}}
 html.mobile-parallax-ready #top .motion-photo{position:relative;top:var(--motion-y,0px)!important;transform:scale(1.18)!important}
 html.mobile-parallax-ready .cover-backdrop{top:var(--hero-y,0px)!important;transform:scale(1.12)!important}
}

/* Mobile banners remain in their own frame instead of viewport-fixed clipped layers. */
@media(max-width:767px){
 #top#top#top#top .route-photo-slideshow{clip-path:none}
 #top#top#top#top .route-photo-slideshow>img{position:absolute;inset:0!important;width:100%!important;height:100%!important;transform:none!important}
}

@media(max-width:767px){
 html.mobile-parallax-ready #top#top#top#top .route-photo-slideshow>img.motion-photo{position:absolute;top:var(--motion-y,0px)!important;transform:scale(1.18)!important}
}

@media(max-width:767px){
 html.mobile-parallax-ready #top#top#top#top .place-gallery-slide img.motion-photo{position:absolute;top:var(--motion-y,0px)!important}
}

/* First photo entrance only; never hide an article, title or carousel track. */
@media(max-width:767px){
 #top#top#top#top img.mobile-photo-waiting{opacity:0!important}
}
@media(prefers-reduced-motion:reduce){
 #top#top#top#top img.mobile-photo-waiting{opacity:1!important}
}

/* Route previews share the six-column Travelers’ Choice responsive grid. */
#top#top#top#top #route-preview .route-preview-grid{grid-template-columns:minmax(0,1fr);column-gap:0!important}
@media(width > 767px){#top#top#top#top #route-preview .route-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--grid-gap-2)!important}}
@media(width > 1200px){#top#top#top#top #route-preview .route-preview-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--grid-gap-3)!important}}
@media(width > 1600px){#top#top#top#top #route-preview .route-preview-grid{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--grid-gap-4)!important}}
@media(width > 1920px){#top#top#top#top #route-preview .route-preview-grid{grid-template-columns:repeat(6,minmax(0,1fr));column-gap:var(--grid-gap-6)!important}}
#top#top#top#top #route-preview>.section-heading{display:block;margin:25px 0 68px}
#top#top#top#top #route-preview>.section-heading h2{margin:0}
#top#top#top#top #route-preview .route-preview-photo{width:100%!important;max-width:100%!important;margin-right:0!important}

/* Choose Your Day: portrait photos at every responsive size. */
#top#top#top#top #route-preview .route-preview-photo{aspect-ratio:3 / 4!important;height:auto!important;overflow:hidden}
#top#top#top#top #route-preview .route-preview-photo>img{display:block;width:100%!important;height:100%!important;aspect-ratio:3 / 4!important;object-fit:cover;object-position:center}

/* Per-card editor credit matches the travelers' byline. */
#top #route-preview .route-preview-author{display:flex;align-items:center;gap:10px;margin:20px 0;font:300 10pt/1.8 'RouteOff Body',Pretendard,sans-serif;letter-spacing:normal}
#top #route-preview .route-preview-author>img{display:block;flex:0 0 24px;width:24px!important;min-width:24px!important;max-width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;aspect-ratio:1!important;border-radius:50%;object-fit:cover;transform:none!important;margin:0;padding:0}
#top #route-preview .route-preview-author,#top #route-preview .route-preview-author :is(span,.glyph){font-family:'RouteOff Body',Pretendard,sans-serif!important;font-size:10pt!important;font-weight:300!important;line-height:1.8!important;letter-spacing:normal!important}

#top #route-preview .preview-card-heading h3{font-size:20px!important;line-height:1.4}
#top #route-preview .route-preview-summary{font-size:10pt!important;line-height:1.8}

/* Mobile vertical rhythm: routes 28px, extra choices 24px. */
@media(max-width:767px){
 #top#top#top#top#top .route-stop-content{--place-copy-gap:28px}
 #top#top#top#top#top .route-choice-card{--place-copy-gap:24px}
 #top#top#top#top#top .daily-chapter .route-layout .editorial-stop:nth-child(n){gap:28px!important}
 #top#top#top#top#top .daily-chapter .route-stop-content{row-gap:28px!important}
 #top#top#top#top#top .route-stop-content>:is(.stop-meta-header,.stop-title-row,.stop-name-group,p,.stop-links){margin-top:0!important;margin-bottom:0!important}
 #top#top#top#top#top :is(.stop-name-group,.route-choice-name)>:is(h4,h5){margin-block:0!important}
 #top#top#top#top#top :is(.stop-name-group,.route-choice-name)>.place-tagline{margin-top:var(--place-copy-gap)!important}
 #top#top#top#top#top .route-choice-card>.route-choice-photo{margin-top:0!important;margin-bottom:24px!important}
 #top#top#top#top#top .route-choice-card>:is(.shared-save-topline,.section-label,.route-choice-title){margin-top:0!important;margin-bottom:24px!important}
 #top#top#top#top#top .route-choice-card>p{margin-top:0!important;margin-bottom:0!important}
 #top#top#top#top#top .route-choice-card>.inline-actions{margin-top:24px!important;margin-bottom:0!important}
}

/* Restore the cover's pre-design-editor type stack (65b1180^).
   Scope the baseline to the cover; the supplied Adobe kit remains elsewhere. */
#top .cover-title{--sans:'RouteOff Korean','Off Route Avant Garde','ITC Avant Garde Gothic Std','DM Sans','Pretendard',sans-serif}

/* Reserve the same two title lines for the one-line RouteOff preview. */
#top#top#top #route-preview .preview-card-heading h3[data-content-shared="route_title_off"]{min-height:2lh}

/* Desktop-only drawer quote must never paint above the full-width mobile menu. */
@media(max-width:767px){body .drawer-brand,body .drawer-brand:popover-open{display:none!important;visibility:hidden!important}}

/* Keep private profile sections out of the anonymous/loading state. */
body #saved-dialog:not([data-authenticated="true"]) > :not(.close):not(.routeoff-account),
body #saved-dialog:not([data-authenticated="true"]) .profile-report-slot{display:none!important}
body #saved-dialog:not([data-authenticated="true"]) .profile-photo-editor{display:flex;align-items:center;gap:20px}
body #saved-dialog:not([data-authenticated="true"]) .profile-photo-change{display:block;opacity:1;margin:0;padding:0}
body #saved-dialog:not([data-authenticated="true"]) .profile-identity{margin:0;padding:0;text-align:left;min-width:0;flex:1;width:auto}
body #saved-dialog:not([data-authenticated="true"]) .chatgpt-login{display:block;margin:0 0 8px;padding:0;border:0;background:none;text-align:left;font-family:Pretendard,sans-serif;font-size:12pt;font-weight:600;line-height:1.4}
body #saved-dialog .profile-photo-status:empty{display:none}

body #saved-dialog:not([data-authenticated="true"]) .profile-identity>p{margin:0;font-size:14px;line-height:1.6}

/* Keep headline flight above the first-photo loading veil. */
#top .cover .cover-slideshow>.cover-title{z-index:5!important}

/* The entire cover composition fades once; no white mask over the dim. */
#top#top#top#top .cover-scene::before{display:none}
html.cover-photo-pending .cover-scene{opacity:0}
