/* Public typography. Maintain type scales here rather than per-section overrides.
   Optional webfont avoids a late font swap; accessible browser zoom remains enabled. */
:root{
 --font-ui:'Noto Sans KR','Apple SD Gothic Neo','Malgun Gothic',sans-serif;
 --type-hero:80px;--type-page:56px;--type-section:40px;
 --type-feature:30px;--type-card:22px;--type-body:16px;--type-small:13px;
 --tracking-heading:-.035em;--tracking-body:-.015em;
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--font-ui);font-size:var(--type-body);font-weight:400;line-height:1.75;letter-spacing:var(--tracking-body);overflow-wrap:break-word}
button,input,select,textarea{font-family:var(--font-ui)}
h1,h2,h3{font-family:var(--font-ui);font-weight:700;letter-spacing:var(--tracking-heading);line-height:1.35;text-wrap:balance}
p,dd,td{overflow-wrap:anywhere}
main p{line-height:1.8;letter-spacing:var(--tracking-body)}
.page-heading h1,.directory-title h1,.detail-title h1{font-family:var(--font-ui);font-size:var(--type-page);font-weight:700;line-height:1.3;letter-spacing:var(--tracking-heading)}
.section h2,.section-head h2,.story-main h2,.cms-extra h2{font-family:var(--font-ui);font-size:var(--type-section);font-weight:700;line-height:1.35;letter-spacing:var(--tracking-heading)}
.event-panel h3,.event-info-board h3,.reserve h3,.company-name h3{font-size:var(--type-feature);font-weight:700;line-height:1.4;letter-spacing:var(--tracking-heading)}
.festival-card h3,.visit-grid h3,.company-editorial h3,.program h3{font-size:var(--type-card);font-weight:700;line-height:1.45;letter-spacing:-.025em}
.directory-bar h2,.organization-strip h2,.company-schedule h2,.map-card h2{font-size:var(--type-feature);line-height:1.4;letter-spacing:var(--tracking-heading)}
.page-heading p,.directory-title>p,.detail-title p,.section-head p,.event-info-board p,.reserve p,.story-main>p,.company-editorial p,.event-panel p,.visit-grid p,.map-card p,.cms-extra p{font-size:var(--type-body);font-weight:400;line-height:1.8;letter-spacing:var(--tracking-body)}
.festival-card p,.program p,.company-person p,.notice,.fact,.organization-strip dl div{font-size:var(--type-body);line-height:1.75}
.company-person strong,.company-schedule dd{font-size:18px;font-weight:600;line-height:1.65;letter-spacing:-.02em}
.source-note,.small,.map-note,.breadcrumb,.company-next,.poster-button span,.phone-links,.company-schedule small,.company-schedule dt,.directory-bar>span{font-size:var(--type-small);line-height:1.75;letter-spacing:0}
.eyebrow,.kicker,.info-small,.event-label,.company-name .eyebrow{font-size:12px;font-weight:600;line-height:1.6;letter-spacing:.09em}
.button,.hero-actions .button,.event-panel .button,.card-link,.text-link,.company-open{font-size:15px;font-weight:600;line-height:1.5;letter-spacing:-.015em}
.button{min-height:48px;padding:13px 24px}.hero-actions .button{padding:15px 28px;min-height:54px}
.brand{font-size:11px;line-height:1.4;letter-spacing:-.02em}.brand strong{font-size:19px;line-height:1.4;letter-spacing:-.035em}
nav{font-size:16px;line-height:1.5;letter-spacing:-.02em}.header-cta{font-size:13px;line-height:1.5;letter-spacing:-.01em}
.hero-brand h1{font-size:var(--type-hero);font-weight:900;line-height:1.2;letter-spacing:-.04em;min-height:2.4em;margin:0}
.hero-brand h1>span{font-size:inherit;line-height:inherit;letter-spacing:inherit}
.hero .edition{font-size:18px;font-weight:600;line-height:1.5;letter-spacing:.16em;margin-bottom:16px}
.hero .hero-tagline{font-size:18px;font-weight:500;line-height:1.7;letter-spacing:-.02em;margin:18px 0 0}
.hero-date{font-size:18px;font-weight:700;line-height:1.5;letter-spacing:.035em;font-variant-numeric:tabular-nums}
.hero .hero-desc{font-size:18px;font-weight:500;line-height:1.8;letter-spacing:-.015em;min-height:5.4em;margin:20px 0 0;max-width:720px}
.hero-actions{margin-top:24px}.slider-controls{font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums}
.hero .slider-controls{align-self:center;transform:none}
.event-panel .event-price,.reserve-price{font-size:24px;font-weight:700;line-height:1.5;letter-spacing:-.025em}
.event-price small{font-size:var(--type-small);line-height:1.75;letter-spacing:0}
.cover-type{font-size:28px;line-height:1.5;letter-spacing:-.03em}
.detail-word{font-family:var(--font-ui);font-size:64px;line-height:1.15;letter-spacing:0;font-weight:500}
.logo-track span{font-size:22px;font-weight:700;line-height:1.5;letter-spacing:-.02em}
.footer-top>p{font-size:16px;line-height:1.75}.footer-info{font-size:13px;line-height:1.8;letter-spacing:0}footer small{font-size:12px;line-height:1.7;letter-spacing:0}
table{font-size:var(--type-body);line-height:1.75;letter-spacing:-.015em}
/* Natural layout keeps title, date and actions from overlapping when text wraps. */
@media(min-width:768px){
 .hero{height:auto;min-height:850px;padding:120px 24px 60px;display:flex;align-items:center;flex-direction:column}
 .hero-brand{position:relative;inset:auto;width:100%;padding:0;max-width:1100px}
 .hero-copy{position:relative;inset:auto;width:100%;margin-top:28px}
 .hero-background img{object-position:center}
 .hero .scroll-cue{bottom:12px}
}
@media(min-width:768px) and (max-width:1100px){:root{--type-hero:64px;--type-page:48px;--type-section:36px;--type-feature:28px;--type-card:21px}.hero{min-height:800px}}
@media(max-width:767px){
 :root{--type-hero:40px;--type-page:36px;--type-section:28px;--type-feature:24px;--type-card:20px;--type-body:15px;--type-small:12px}
 .section-head{margin-bottom:30px}.section-head h2{line-height:1.4}
 .brand{font-size:9px}.brand strong{font-size:15px}.header-cta{font-size:12px}
 .hero-brand{padding:25px 16px 0}.hero-brand h1{font-size:var(--type-hero);line-height:1.25;min-height:2.5em;letter-spacing:-.04em}
 .hero .edition{font-size:14px;letter-spacing:.14em;margin-bottom:12px}
 .hero .hero-tagline{font-size:15px;line-height:1.65;margin-top:14px}
 .hero-copy{margin:24px 16px 0}.hero-date{font-size:14px;line-height:1.6;letter-spacing:.025em;padding:9px 15px}
 .hero .hero-desc{font-size:15px;line-height:1.8;min-height:7.2em;max-width:520px;margin-top:18px}
 .hero-actions{margin-top:20px;gap:10px;flex-direction:column}
 .hero-actions .button,.event-panel .button,.button{font-size:15px;line-height:1.5;min-height:48px;padding:13px 20px}
 .hero .scroll-cue{font-size:11px;line-height:1.6}
 .directory-title h1{font-size:var(--type-page);line-height:1.3;letter-spacing:var(--tracking-heading)}
 .directory-title>p{margin-top:20px}.directory-title{margin-bottom:28px}
 .detail-title{align-items:flex-start}.detail-title>div{min-width:0}.detail-title h1{font-size:32px;line-height:1.35;margin:18px 0}
 .detail-word{font-size:40px;padding-top:32px}.detail-title p{font-size:15px}
 .company-name h3{font-size:24px}.company-person strong,.company-schedule dd{font-size:16px}
 .company-name .eyebrow,.eyebrow,.kicker,.info-small,.event-label{font-size:11px;letter-spacing:.07em}
 .directory-bar>span{font-size:12px;max-width:145px;text-align:right}
 .cover-type{font-size:22px;line-height:1.5;left:20px;bottom:24px}
 .event-panel .event-price,.reserve-price{font-size:22px;line-height:1.5}
 .program p{font-size:14px}.program h3{font-size:18px}.fact{font-size:14px}
 .event-info-board dl div{font-size:15px;line-height:1.75}.event-info-board dd{min-width:0}
 .mobile-cta a{font-size:14px;line-height:1.5;letter-spacing:-.015em}
 .footer-top>p{font-size:15px}.logo-track span{font-size:18px}
}
@media(max-width:359px){:root{--type-hero:36px;--type-page:32px;--type-section:26px}.hero .hero-desc{min-height:9em}.detail-title h1{font-size:28px}}
