/* Reading/UI typography. Gugi branding, handwritten notes and icon glyphs
   keep their own families. Fonts are local unicode subsets, loaded on demand. */
:root{--station-font:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;--font:var(--station-font);--text-tracking:-.03em}
:root body{--font:var(--station-font);font-family:var(--font);letter-spacing:var(--text-tracking);line-height:1.5}
html body :is(button,input,select,textarea){font-family:var(--font);letter-spacing:var(--text-tracking)}
html body :is(p,li,dd,blockquote){line-height:1.5}
html body :is(input,select,textarea){font-size:16px}

/* Compact metadata never carries the main reading task. */
html body :is(.directory-brand small,.eyebrow,.directory-footer,.guide-breadcrumb,.guide-preview figcaption,.guide-ad-label,.directory-ad-label,.place-vibe,.place-access,.pm-badge,.pm-mine,.pm-kicker,.pm-note time,.guide-entry-condition,.welcome-toggle-state,.caretaker-role,.caretaker-aside,.sound-settings-note,.walking-hint small){font-size:12px}
html body :is(.guide-ad-label,.directory-ad-label,.guide-preview figcaption,.guide-breadcrumb){line-height:1.5}
html body :is(.station-shortcuts a,.station-picks-heading small,.station-pick-number,.world-chapter,.world-today small,.village-passport summary,.village-passport summary>b,.village-sound,.sound-settings-heading>div>span,.guestbook-public,.field-note,.guestbook-field-bottom,.guestbook-board-heading .guestbook-eyebrow,.mailbox-own-label){font-size:12px}
html body .village-tools button:not(#world-zoom-in):not(#world-zoom-out){font-size:12px}
html body :is(.guide-travel-actions a,.guide-travel-actions button,.pm-note footer,.pm-list-actions button,.pm-write-link,.category-jumps a,.arrival-stop-links a,.directory-top nav){font-size:14px;line-height:normal}
html body :is(.place-read,.place-enter,.request-primary,.request-secondary,.pm-compose-bottom button){font-size:16px;line-height:normal}
html body :is(.guide-primary,.guide-save){line-height:normal}

/* Space directory and portal guides. */
body.directory-arrival .directory-intro h1{font-size:40px;line-height:1.5}
body.directory-arrival .directory-intro>p{font-size:18px;line-height:1.5;letter-spacing:var(--text-tracking)}
body.directory-arrival :is(.place-description,.place-activities li){font-size:16px;line-height:1.5}
body.directory-arrival .place-vibe{font-size:12px;line-height:1.5}
body.directory-arrival .intro-links>span{font-size:12px}
body.portal-guide-document .guide-portal-card h1{font-family:var(--font);font-size:34px;letter-spacing:var(--text-tracking);line-height:1.5}
body.portal-guide-document .guide-portal-card .guide-lead{font-size:18px;line-height:1.5;letter-spacing:var(--text-tracking)}
body.portal-guide-document .guide-portal-card .guide-activities li{font-size:14px;line-height:1.5}
body.portal-guide-document .guide-preview figcaption,body.portal-guide-document .guide-breadcrumb{font-size:12px;line-height:1.5}
html body :is(.guide-content p,.guide-steps li,.guide-pick p,.guide-related-card p,.guide-end>p,.pm-heading p,.pm-compose-heading p){font-size:16px;line-height:1.5}
html body :is(.guide-content h2,.guide-end h2,.pm-heading h2){font-size:24px;line-height:1.5}
html body :is(.guide-related-card h3,.guide-facts h2,.pm-compose h3){font-size:20px;line-height:1.5}
html body :is(.guide-facts dd,.guide-facts summary,.guide-memo-teaser p){font-size:14px;line-height:1.5}
html body :is(.guide-facts dt,.guide-memo-teaser>span,.guide-memo-teaser a){font-size:12px;line-height:1.5}
html body :is(.pm-operator-body p,.pm-note-text){font-size:18px;line-height:1.5}
html body :is(.pm-operator h3,.pm-visitors-title){font-size:18px;line-height:1.5}
html body :is(.guide-outbound,.guide-journal p){font-size:14px;line-height:1.5}
html body .guide-journal summary{font-size:16px;line-height:1.5}
html body .guide-journal-count{font-size:12px}

/* Village labels remain single-line; never infer wrapping with JavaScript. */
html body .village-welcome h1{font-size:28px;line-height:1.5;letter-spacing:var(--text-tracking);white-space:normal;word-break:keep-all;text-wrap:balance}
html body .village-welcome p{font-size:16px;line-height:1.5}
html body :is(.welcome-toggle,.district-picker button,.sound-settings-label label){font-size:14px;line-height:normal}
html body .district-picker>.station-message{font-size:14px;line-height:1.5;letter-spacing:var(--text-tracking)}
html body .portal-label{font-size:14px;line-height:normal;letter-spacing:var(--text-tracking)}
html body .village-view.is-overview .portal-names .portal-label{font-size:14px;line-height:normal}
html body :is(.traveler-label,.walking-hint,.walking-hint #walking-status,.sound-settings-label output,.caretaker-label,.scuba-murmur){font-size:12px}
html body .scuba-murmur{line-height:1.5}
html body .caretaker-dialog #caretaker-words{font-size:20px;line-height:1.5}
html body #caretaker-words>span{font-size:14px;line-height:1.5}
html body :is(.caretaker-guestbook,.caretaker-later){font-size:16px;line-height:normal}

/* Forms use readable sizes without changing private inbox or note behavior. */
html body :is(.request-loading,.request-session-error,.request-signin p,.request-field>label,.request-card p,.request-privacy,.guestbook-intro>p){font-size:16px;line-height:1.5}
html body :is(.request-field label small,.request-dialog-kicker,.request-card time,.mailbox-place-link){font-size:12px;line-height:1.5}
html body :is(.request-field>small,.request-field-meta,.request-send-note,.request-operator-access small,.request-page-footer){font-size:12px;line-height:1.5}
html body :is(.request-signin h3,.request-success h3){font-size:24px;line-height:1.5}
html body .request-dialog h2{font-size:28px;line-height:1.5}
html body #request-title{font-size:28px;line-height:1.5}

@media(max-width:760px){
 body.directory-arrival .directory-intro h1{font-size:28px}
 body.directory-arrival .directory-intro>p{font-size:16px}
 body.portal-guide-document .guide-portal-card h1{font-size:28px}
 body.portal-guide-document .guide-portal-card .guide-lead{font-size:16px}
 body.portal-guide-document .guide-portal-card .guide-activities li{font-size:14px}
 html body :is(.pm-operator-body p,.pm-note-text){font-size:16px}
 html body .village-welcome h1{font-size:24px}
 html body .village-welcome p{font-size:14px}
 html body .district-picker button{font-size:12px}
 html body .village-view.is-overview .portal-names .portal-label{font-size:12px}
 html body .request-dialog h2{font-size:24px}
 html body #request-title{font-size:24px}
 html body .directory-top nav{font-size:12px}
}
