:root{--paper:#fffdf8;--white:#fff;--ink:#2f3537;--muted:#687072;--accent:#c74928;--peach:#ffe7d8;--line:#e9e6dd;--mint:#e1f0e9;--purple:#eae5fa;--radius:22px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Noto Sans KR',sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,select:focus-visible{outline:3px solid #ae5235;outline-offset:3px}button{border:1px solid var(--line);background:white;border-radius:12px;min-height:44px;padding:9px 15px}button[aria-pressed=true]{background:var(--peach);color:#8e351c;border-color:#eab392;font-weight:750}.wrap{width:min(1120px,calc(100% - 40px));margin:auto}.site-header{border-bottom:1px solid var(--line);background:white}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0}.brand{font-size:24px;font-weight:900;letter-spacing:-1px;white-space:nowrap}.brand span{color:var(--accent)}.service-nav{display:flex;gap:8px;flex-wrap:wrap;font-size:14px}.service-nav a{padding:8px 12px;border-radius:12px;background:#f7f7f3}.service-nav a[aria-current=page]{background:var(--peach);color:#923419}.skip{position:absolute;left:12px;top:-80px;background:white;z-index:99}.skip:focus{top:12px}.intro{padding:30px 0 18px}.eyebrow{font-size:14px;color:var(--accent);font-weight:750;margin:0 0 6px}h1{font-size:clamp(27px,4vw,38px);letter-spacing:-1.4px;line-height:1.35;margin:0 0 8px}h2{font-size:23px;letter-spacing:-.7px;line-height:1.4;margin:0 0 16px}h3{font-size:20px;line-height:1.4;margin:0 0 8px}p{margin:0 0 10px}.subcopy{color:var(--muted);margin:0}.search-panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 5px 20px #65553805}.search-form{display:flex;gap:8px;margin-bottom:16px}.search-form input{width:100%;min-width:0;min-height:48px;border-radius:13px;border:1px solid #d9dcd7;padding:10px 15px;background:#fdfdfb}.primary{background:var(--accent);color:white;border-color:var(--accent);font-weight:700}.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.quick button{padding:12px 5px}.quick small{display:block;color:var(--muted);font-size:14px;font-weight:400}.filters-line{border-top:1px solid var(--line);margin-top:16px;padding-top:14px;display:flex;align-items:start;gap:14px}.filter-caption{font-size:14px;font-weight:700;margin:10px 0;min-width:35px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chips button{font-size:14px;min-height:42px;padding:7px 12px;border-radius:30px}.filter-details{margin-top:12px}.filter-details summary{font-weight:700;min-height:44px;cursor:pointer;padding:9px 0}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:24px 0 16px}.toolbar h2{margin:0}.toolbar small{font-size:14px;color:var(--muted)}.toolbar-actions{display:flex;align-items:center;gap:12px;font-size:14px}.toolbar select{background:white;border:1px solid var(--line);border-radius:10px;min-height:44px;padding:6px 12px}.toolbar input{width:18px;height:18px;vertical-align:middle}.result-note{font-size:14px;color:var(--muted);margin-top:12px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card{position:relative;overflow:hidden;border-radius:var(--radius);border:1px solid var(--line);background:white;transition:transform .16s,box-shadow .16s}.card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #4030210c}.card-media{height:175px;background:#f0eee5;position:relative}.card-media img{width:100%;height:100%;object-fit:cover;object-position:center 32%;display:block}.card-media.poster img{object-fit:contain;background:#f6f4ee}.image-fallback{display:grid;place-content:center;height:100%;font-size:15px;color:var(--muted)}.badge{font-size:14px;font-weight:700;background:white;padding:5px 12px;border-radius:25px;border:1px solid #ffffff88;display:inline-block}.card-media .badge{position:absolute;top:12px;left:12px;box-shadow:0 2px 8px #0001}.badge.ongoing{background:var(--mint);color:#205b43}.badge.ended{background:#ebebeb;color:#555}.card-body{padding:18px}.location{font-size:14px;color:var(--muted);margin-bottom:7px}.card h3{font-size:21px;letter-spacing:-.6px}.card h3 a:after{content:'';position:absolute;inset:0}.date{font-weight:700;margin:12px 0 5px;font-size:16px}.price{font-size:14px;color:var(--muted);margin-bottom:12px}.tag-row{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:13px;padding:3px 7px;background:#f7f5ef;border-radius:6px}.family-label{color:#755638;font-size:14px;margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.empty{padding:40px 20px;text-align:center;border:1px dashed #d5d5cd;border-radius:var(--radius);grid-column:1/-1;background:white}.empty button{margin-top:14px}.ad-slot{display:none;border:1px solid var(--line);border-radius:14px;padding:12px;margin:24px 0;background:white;grid-column:1/-1}.ad-slot.visible{display:block}.ad-label{font-size:13px;color:var(--muted);display:block;margin-bottom:8px}.footer{border-top:1px solid var(--line);margin-top:44px;padding:28px 0;color:var(--muted);font-size:14px}.footer-links{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0}.footer a{text-decoration:underline;text-underline-offset:4px}.breadcrumb{font-size:14px;color:var(--muted);padding:22px 0 12px}.detail-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:26px;align-items:center;background:white;border:1px solid var(--line);border-radius:var(--radius);padding:26px}.detail-image{width:100%;max-height:360px;object-fit:contain;background:#f8f6f0;border-radius:16px}.detail-hero .tag-row{margin-top:16px}.detail-hero h1{font-size:34px;margin-top:14px}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;margin-top:24px}.detail-main{min-width:0}.section{background:white;padding:24px;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;margin:0}.info-grid div{min-width:0}.info-grid dt{font-size:14px;color:var(--muted);margin-bottom:4px}.info-grid dd{margin:0;overflow-wrap:anywhere;font-weight:600}.unknown{color:var(--muted);font-weight:400}.side{align-self:start;position:sticky;top:20px}.side .primary,.side .map-link{display:block;text-align:center;padding:13px;margin-top:10px;border-radius:12px;min-height:48px}.map-link{background:#f5f5ef;border:1px solid var(--line)}.side p{font-size:14px;color:var(--muted)}.kids-box{background:#fffbf4}.kid-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kid-tile{padding:14px;background:white;border-radius:14px;border:1px solid var(--line)}.kid-tile strong{display:block;margin-bottom:6px}.kid-tile p{font-size:14px;margin:0}.list{padding-left:22px}.list li{margin:8px 0}.notice{padding:16px 20px;background:#f0efec;border-radius:14px;margin:12px 0 20px;font-weight:650}.source-list a{color:#944327;text-decoration:underline;overflow-wrap:anywhere}.confirmed{font-size:14px;color:var(--muted)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line)}.blog-link{display:inline-block;padding:12px;background:var(--purple);border-radius:12px;font-weight:700}.map-box{padding:20px;background:#edf3ee;border-radius:16px}.map-box a{display:inline-block;background:white;padding:10px 15px;border-radius:12px;border:1px solid #d7e1d9;margin:8px 6px 0 0;min-height:44px}.more{display:block;margin:24px auto;min-width:200px}.admin-layout{display:grid;grid-template-columns:300px 1fr;gap:20px}.admin-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.admin-fields label{font-size:14px;font-weight:650}.admin-fields input,.admin-fields textarea,.admin-fields select{display:block;width:100%;min-height:44px;border:1px solid #d8d8cf;border-radius:10px;padding:9px;font-weight:400;background:white}.admin-fields textarea{min-height:100px}.admin-fields .wide{grid-column:1/-1}.admin-list button{display:block;width:100%;text-align:left;margin:6px 0}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.danger{color:#b32c30}.image-credit{font-size:12px;color:var(--muted);margin-top:8px}.noscript-note{background:#fff1d7;padding:14px;border-radius:12px}.tiny-link{font-size:13px}.status-message{min-height:24px;color:#924124} [hidden]{display:none!important}@media(max-width:860px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout{grid-template-columns:1fr}.side{position:static;order:-1}.side.section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.side h2{font-size:18px;margin:0}.side .primary,.side .map-link{margin:0;flex:1}.side p{width:100%;margin:0}.detail-hero{gap:18px}.detail-hero h1{font-size:29px}.admin-layout{grid-template-columns:1fr}.admin-list{max-height:240px;overflow:auto}}@media(max-width:560px){.wrap{width:calc(100% - 28px)}.header-inner{display:block;padding:14px 0}.service-nav{margin-top:12px;gap:5px;flex-wrap:nowrap;justify-content:space-between}.service-nav a{font-size:13px;padding:8px 7px;white-space:nowrap}.intro{padding:22px 0 14px}h1{font-size:28px}.subcopy{font-size:14px}.search-panel{padding:14px}.quick{gap:6px}.quick button{font-size:14px;min-height:64px}.quick small{font-size:12px}.filters-line{gap:8px;margin-top:12px;padding-top:10px}.chips{gap:5px}.chips button{padding:7px 10px;min-height:40px}.filter-caption{margin-top:8px}.grid{grid-template-columns:1fr;gap:16px}.card{display:grid;grid-template-columns:118px minmax(0,1fr);border-radius:18px}.card-media{height:100%;min-height:208px}.card-media .badge{left:7px;top:9px;padding:4px 8px;font-size:13px}.card-body{padding:14px}.card h3{font-size:19px}.location{font-size:13px}.date{font-size:14px;margin-top:9px}.price{font-size:13px}.tag{font-size:12px}.family-label{font-size:13px;margin-top:9px;padding-top:7px}.toolbar{margin-top:20px}.toolbar h2{font-size:21px}.toolbar-actions{width:100%;justify-content:space-between}.detail-hero{display:flex;flex-direction:column-reverse;padding:18px;align-items:stretch}.detail-image{max-height:280px}.detail-hero h1{font-size:28px}.section{padding:18px;border-radius:18px}.info-grid{gap:16px;grid-template-columns:1fr 1fr}.info-grid .wide{grid-column:1/-1}.kid-grid{grid-template-columns:1fr}.detail-layout{gap:0}.admin-fields{grid-template-columns:1fr}.ad-slot{margin:0}.footer-links{gap:14px}.detail-related .card-media{min-height:190px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.action-link{margin:14px 0 0}.action-link a{display:inline-flex;align-items:center;min-height:44px;color:#944327;font-weight:650;text-decoration:underline;text-underline-offset:4px}.visit-check summary{cursor:pointer;font-size:18px;font-weight:700;min-height:44px;padding:6px 0}.visit-check summary span{font-size:14px;color:var(--muted);font-weight:400;margin-left:8px}.visit-check[open] summary{margin-bottom:12px}.visit-check p:last-child{margin-bottom:0}

/* Keep date controls aligned; the select alone yields space on narrow screens. */
.toolbar-actions .month-control{display:flex;align-items:center;gap:6px;min-width:0}
.toolbar-actions .ended-control{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;min-height:44px;cursor:pointer}
.toolbar-actions .ended-control input{margin:0;flex:none}
.toolbar-actions #all-dates{white-space:nowrap}
@media(max-width:560px){
 .toolbar-actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:100%}
 .toolbar-actions #all-dates{padding:8px 10px;min-height:44px}
 .toolbar-actions .month-caption{display:none}
 .toolbar-actions #month{width:100%;max-width:100%;min-width:0;padding:6px 8px;font-size:14px;min-height:44px}
 .toolbar-actions .ended-control{gap:5px;font-size:14px}
}
/* Omit missing facts without adding repeated warning text or empty spacing. */
.price:empty,.family-label:empty,.tag-row:empty{display:none}
/* Date navigation: reachable current month and every weekend, including month boundaries. */
.search-form input{flex:1;width:auto}.search-form button{flex:0 0 auto;min-width:64px;white-space:nowrap;padding:10px 16px}.quick{grid-template-columns:repeat(4,minmax(0,1fr))}.weekend-picker{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}.weekend-picker label{font-size:14px;font-weight:700}.weekend-picker select{flex:1;min-width:180px;min-height:46px;border:1px solid var(--line);border-radius:12px;background:white;padding:10px;font-size:14px}.weekend-picker button{min-height:46px;white-space:nowrap;font-size:14px}
@media(max-width:560px){.quick{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.quick button{min-height:68px;font-size:15px}.quick small{font-size:14px}.weekend-picker{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.weekend-picker label{grid-column:1/-1}.weekend-picker select{width:100%;min-width:0}.search-form button{min-width:60px;padding:10px 12px}.search-form input{padding:10px;font-size:16px}.toolbar-actions{grid-template-columns:auto minmax(0,1fr)}.toolbar-actions .ended-control{grid-column:1/-1;justify-self:end}.toolbar-actions .month-control{width:100%}.toolbar-actions #month{font-size:15px}}
/* Compact calendar controls in the requested order. */
.search-panel .quick{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.search-panel .quick button{white-space:nowrap;font-size:15px;padding:12px 3px}.search-panel .quick small{font-size:13px}.schedule-rows{margin-top:16px;display:grid;gap:10px}.schedule-row{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;align-items:center}.schedule-row label{font-size:15px;font-weight:700;white-space:nowrap}.schedule-row select{width:100%;min-width:0;min-height:48px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-size:15px}.toolbar-actions{display:flex;justify-content:flex-end}.filters-line .filter-caption{white-space:nowrap}@media(max-width:560px){.search-panel .quick{gap:6px}.search-panel .quick button{font-size:14px;min-height:66px}.search-panel .quick small{font-size:12px}.schedule-row{grid-template-columns:68px minmax(0,1fr);gap:8px}.schedule-row select{padding:10px 8px;font-size:14px}.toolbar-actions{display:flex;justify-content:space-between}.toolbar-actions .ended-control{grid-column:auto}}

/* Preserve the region label and give event titles enough readable width. */
.filters-line{display:grid;grid-template-columns:max-content minmax(0,1fr)}
.filters-line .filter-caption{min-width:max-content;white-space:nowrap}
.filters-line .chips{min-width:0}
.card-body{min-width:0}
.card h3,.detail-hero h1{word-break:keep-all;overflow-wrap:anywhere;text-wrap:balance}
.card h3{font-size:18px;line-height:1.45;letter-spacing:-.45px}
@media(max-width:560px){
 .card{display:block}
 .card-media,.detail-related .card-media{height:150px;min-height:0}
 .card-body{padding:14px}
 .card h3{font-size:clamp(16px,4.3vw,18px);line-height:1.45}
 .detail-hero h1{font-size:clamp(19px,5.3vw,26px);letter-spacing:-.6px}
}

/* Visit actions keep their complete labels; narrow screens wrap the buttons. */
.side .primary,.side .map-link{white-space:nowrap;word-break:keep-all}
@media(max-width:860px){
 .side.section .primary,.side.section .map-link{flex:1 1 max-content;min-width:max-content;padding:12px 14px;text-align:center}
}

/* Emphasize place names without widening compact region chips. */
#regions button{font-size:16px;font-weight:700;line-height:1.4;white-space:nowrap;padding:8px 10px}
.filters-line .filter-caption{font-size:15px;font-weight:750}
.card .location,.detail-hero .location{font-size:16px;font-weight:700;color:#424d48;line-height:1.45;word-break:keep-all;overflow-wrap:anywhere;text-wrap:pretty}
@media(max-width:560px){
 #regions{gap:5px}
 #regions button{font-size:15px;padding:8px;min-height:40px}
 .card .location,.detail-hero .location{font-size:15px}
}

/* Compact common venue preview, directly after the core facts. */
.festival-location.section{padding:14px;margin-bottom:12px}
.festival-location h2{font-size:18px;margin:0 0 8px;word-break:keep-all}
.festival-map-preview{display:block;width:100%;height:165px;border:0;border-radius:12px;background:#edf3ee}
.festival-map-address{font-size:14px;font-weight:600;margin:8px 0;overflow-wrap:anywhere;word-break:keep-all}
.festival-map-note{font-size:13px;color:var(--muted);margin:6px 0;word-break:keep-all;overflow-wrap:anywhere}
.festival-map-action{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:10px 8px;border:1px solid #bdd5c6;border-radius:11px;background:#edf6f0;color:#245e42;font-size:15px;font-weight:700;word-break:keep-all;text-align:center}
@media(max-width:560px){.festival-map-preview{height:150px}.festival-location.section{padding:12px;margin-bottom:12px}.festival-map-action{font-size:14px}}
/* Monthly schedule: one full-width control, compact mobile filters. */
.schedule-rows{display:block;margin:12px 0}.schedule-rows .schedule-row{display:flex;align-items:center;gap:12px;width:100%;min-width:0;margin:0}.schedule-row label{flex:0 0 auto;white-space:nowrap;font-size:14px}.schedule-row select{flex:1;width:0;min-width:0;max-width:100%;min-height:44px}.search-form{min-width:0}.search-form input{min-width:0}.quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.quick button{min-width:0;min-height:44px;padding:9px 4px;font-size:14px;white-space:nowrap}.quick small{font-size:12px}.search-panel{padding:16px}.filters-line{margin-top:12px}.search-panel .result-note{margin-bottom:0}
/* Accessible discovery controls and mobile map, October 2026. */
#exclude-ended{min-height:44px;border:1.5px solid #bc7660;background:#fff;color:#693d31;border-radius:12px;padding:10px 14px;font-weight:750;cursor:pointer}
#exclude-ended[aria-pressed="true"]{background:#8f402b;border-color:#8f402b;color:#fff}
#exclude-ended[aria-pressed="true"]::before{content:'✓ ';font-weight:900}
.view-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 18px;padding:5px;border-radius:16px;background:#f1e8e2}
.view-switch button{min-height:48px;border:0;border-radius:12px;font:inherit;font-weight:750;background:transparent;color:#714d43;cursor:pointer;white-space:nowrap}
.view-switch button[aria-pressed="true"]{background:#fff;color:#923e27;box-shadow:0 2px 8px #55322315}
button.more{width:min(100%,520px);min-height:64px;padding:16px 24px;margin:28px auto;border:2px solid #a44329;border-radius:18px;background:#b94f30;color:white;font-size:20px;font-weight:800;box-shadow:0 6px 0 #873720,0 10px 20px #ab4d3020;cursor:pointer}
button.more span{display:block;font-size:13px;font-weight:600;margin-top:5px;color:#fff1e7}
button.more:hover{background:#a44329}button.more:active{transform:translateY(2px);box-shadow:0 3px 0 #873720}
button:focus-visible,summary:focus-visible{outline:3px solid #2369a2;outline-offset:3px}
.map-panel{padding:16px;border:1px solid #e7d6c9;border-radius:20px;background:#fffaf5;min-width:0}
#map-summary{margin:0 0 10px;font-weight:750;font-size:14px}.map-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#655850;margin:8px 0}
#festival-map{height:460px;width:100%;border-radius:14px;background:#e9eeea;isolation:isolate;z-index:0}
#festival-map .leaflet-control a{min-width:32px;min-height:32px}.festival-pin span{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font:800 13px system-ui;border:2px solid white;box-shadow:0 2px 5px #0004}
.venue-pin span{background:#b4472d;color:white;border-radius:50%}.region-pin span{background:#fff;color:#493352;border:2px dashed #765284;border-radius:9px}
.map-event-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:320px;overflow:auto;overscroll-behavior:contain}
.map-event-list article{padding:12px;background:white;border:1px solid #ebddd4;border-radius:12px;min-width:0}.map-event-list a{color:#86412f;font-weight:700;overflow-wrap:anywhere}.map-event-list p{font-size:12px;margin:7px 0}.map-event-list .map-place-link{display:inline-block;padding:6px 0;font-size:13px}
.pending-section{margin:30px 0;padding:18px;background:#f7f3fc;border:1px solid #ded4ec;border-radius:18px}.pending-section>summary{font-size:16px;font-weight:800;cursor:pointer;min-height:30px}.pending-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:600px;overflow:auto}
.pending-card{background:white;border:1px solid #e9e0ed;border-radius:12px;padding:15px;min-width:0}.pending-card h3{font-size:15px;margin:9px 0;overflow-wrap:anywhere}.pending-card p{font-size:13px;color:#6e6375;margin:6px 0}.pending-card a{display:inline-block;font-size:13px;color:#70518b;padding:8px 0;font-weight:750}.pending-badge{font-size:11px;border-radius:6px;background:#f0e8f8;color:#674c7d;padding:4px 7px}
@media(max-width:560px){.map-panel{padding:10px}#festival-map{height:390px}.map-event-list,.pending-grid{grid-template-columns:1fr}.pending-section{padding:14px}.view-switch button{font-size:14px}.toolbar-actions{width:100%;justify-content:space-between}button.more{font-size:19px;min-height:68px}.map-event-list{max-height:300px}}

.image-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.image-fallback small{font-size:12px;font-weight:650;text-align:center;color:#776754}
/* One-tap family discovery */
.intro{padding:20px 0 12px}.search-panel{padding:18px}.discovery-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.discovery-shortcuts button{min-height:48px;font-size:15px;font-weight:700;background:#fffaf5;border-color:#eadbd0}.discovery-shortcuts .weekend-feature{grid-column:1/-1;min-height:70px;background:#ffdac8;border:2px solid #e5a48a;color:#743b2c;font-size:21px;font-weight:850;text-align:left;padding:12px 18px}.weekend-feature small{display:block;font-size:13px;font-weight:500;margin-top:2px}.discovery-shortcuts button[aria-pressed=true]{background:#93432e;border-color:#93432e;color:white}.discovery-shortcuts button[aria-pressed=true]::after{content:' ✓'}.discovery-shortcuts .weekend-feature[aria-pressed=true]::after{content:none}.weekend-feature[aria-pressed=true] small::before{content:'✓ 적용 중 · '}
#region-picker{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px;background:#f7f1ea;border-radius:12px}#quick-region{min-width:120px;min-height:44px;border:1px solid #dbcbbf;border-radius:8px;background:#fff;padding:8px}.selected-filters{display:flex;align-items:center;gap:12px;justify-content:space-between;border-top:1px solid #eadfd5;margin-top:12px;padding-top:10px}#active-filters{font-size:13px;color:#80503c;margin:0;overflow-wrap:anywhere}#reset-all{flex-shrink:0;font-size:13px;padding:8px 10px}.empty-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.empty-actions button{background:#fff1e4;color:#743b2c}
.card{position:relative;display:flex;flex-direction:column;min-width:0}.card-media.poster{aspect-ratio:4/3;height:auto;min-height:0;position:relative}.festival-picture{margin:0;position:relative;aspect-ratio:4/3;width:100%;overflow:hidden;background:#f5f1eb}.festival-picture img{width:100%;height:100%;object-fit:contain;display:block;max-height:none}.illustration-label{position:absolute;bottom:8px;right:8px;border-radius:5px;background:#fffef0e8;color:#5f564a;font-size:12px;padding:2px 6px}.card-body{flex:1;display:flex;flex-direction:column;padding:16px}.card-detail::after{content:'';position:absolute;inset:0;z-index:1;border-radius:inherit}.card:focus-within{outline:3px solid #aa634e;outline-offset:2px}.card-reserve{position:relative;z-index:2;align-self:flex-start;font-size:14px;color:#7b4634;padding:8px 0;text-decoration:underline}.detail-label{font-size:14px;color:#94412d;font-weight:700;margin-top:auto;padding-top:12px}.program-copy{font-size:14px;line-height:1.55;margin:8px 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.price-detail{font-size:13px;margin:0}.fee-all_free,.fee-admission_free{color:#22694e;font-weight:750}.fee-partial_free{color:#924927;font-weight:750}.reservation{background:#eee5fa;color:#694889}.detail-picture{max-width:640px;margin:auto}.detail-picture .detail-image{max-height:none;object-fit:contain}.map-legend{display:none}#festival-map{height:520px}#map-selection h3{font-size:17px;margin:18px 0 10px}.map-unlocated{margin-top:16px;border-top:1px solid #e6dacc;padding-top:14px}.map-unlocated summary{font-weight:700;cursor:pointer}.map-result-card{display:grid;grid-template-columns:90px minmax(0,1fr);gap:12px}.map-result-card .festival-picture{width:90px;align-self:start;border-radius:8px}.map-result-card .illustration-label{font-size:10px;right:2px;bottom:2px;padding:1px 2px}.leaflet-popup-content .map-result-card{grid-template-columns:1fr}.leaflet-popup-content .festival-picture{width:100%;max-height:140px}.leaflet-popup-content p{margin:8px 0}.leaflet-popup-content{max-height:360px;overflow:auto}.map-event-list{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:861px){.discovery-shortcuts{grid-template-columns:repeat(4,minmax(0,1fr))}.discovery-shortcuts .weekend-feature{grid-column:1/-1}.detail-hero .detail-picture{min-width:240px}}
@media(max-width:560px){.intro{padding:16px 0 10px}.intro h1{font-size:25px}.search-panel{padding:12px}.discovery-shortcuts .weekend-feature{font-size:20px;padding:12px 14px}.discovery-shortcuts button{font-size:13px;padding:8px 5px;min-height:50px;white-space:normal}.quick button{min-height:52px}.card-media.poster{aspect-ratio:4/3}.card h3{font-size:20px}.card-body{padding:15px}.program-copy{font-size:14px}.grid{gap:18px}.selected-filters{align-items:flex-start}.map-event-list{grid-template-columns:1fr}#festival-map{height:400px}.map-result-card .festival-picture{width:80px}.map-result-card{grid-template-columns:80px minmax(0,1fr)}.view-switch button{font-size:14px}.detail-hero{flex-direction:column}.detail-hero>div{min-width:0;width:100%}.detail-picture{width:100%}.detail-hero .detail-image{max-height:none}}
@media(max-width:380px){.discovery-shortcuts button:not(.weekend-feature){font-size:12px;padding-left:4px;padding-right:4px;white-space:nowrap}}
.pending-card .festival-picture{margin:0 0 12px;border-radius:12px;overflow:hidden}
#festival-map{height:auto!important;min-height:0!important;background:#f4f9fb;border-radius:20px;padding:16px;overflow:visible}
#festival-map h3{margin:0}.korea-city-map{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(9,46px);gap:5px;max-width:490px;margin:16px auto;background:#edf5f8 url("/festival/korea-outline.svg") center / 100% 100% no-repeat;border-radius:22px;padding:12px}
.korea-city-map button{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #dfc6b8;background:#fff7ee;color:#703f31;border-radius:12px;padding:3px;min-width:0;font:inherit;font-size:14px;cursor:pointer}.korea-city-map button span{font-size:12px}.korea-city-map button[aria-pressed=true],.city-map-controls button[aria-pressed=true]{background:#a94a31;color:white;border-color:#a94a31}.city-map-controls{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 22px}.city-map-controls button{font:inherit;font-size:14px;padding:10px 12px;border-radius:12px;border:1px solid #e0d7d0;background:white;cursor:pointer;min-height:44px}.price:empty{display:none}

.intro .creator-note{margin:12px 0 0;font-size:13px;line-height:1.65;color:#74685f}.creator-note a{color:inherit;text-decoration:none}.creator-note span{white-space:nowrap;text-decoration:underline;text-underline-offset:3px}.creator-note a:hover{color:var(--accent)}.creator-note a:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:3px}
/* Three consistent result modes; compact view retains links and filters. */
.view-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.compact-results{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff}
.compact-results .card{border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}
.compact-results .card:last-child{border-bottom:0}
.compact-results .card-media,.compact-results .program-copy,.compact-results .price-detail,.compact-results .detail-label,.compact-results .card-reserve{display:none}
.compact-results .card-body{padding:14px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px}
.compact-results .location{grid-column:1/-1;font-size:12px;margin:0}
.compact-results h3{grid-column:1/-1;font-size:17px;margin:0;line-height:1.45}
.compact-results .date,.compact-results .price{font-size:13px;margin:0}
.compact-results .tag-row{grid-column:1/-1;margin:3px 0 0}
.event-calendar{margin:18px 0;padding:16px;background:#fcfaf6;border:1px solid var(--line);border-radius:16px}
.calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.calendar-heading h3{margin:0;font-size:18px}.calendar-heading label{font-size:12px;color:var(--muted)}.calendar-heading select{min-height:44px;max-width:100%;padding:6px;border:1px solid var(--line);border-radius:8px;background:white;font:inherit;color:var(--ink)}
.event-calendar .calendar-legend{font-size:12px;margin:10px 0;color:var(--muted)}.calendar-legend span{color:#934128;font-weight:700}
.event-calendar table{width:100%;table-layout:fixed;border-spacing:4px;border-collapse:separate}.event-calendar caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.event-calendar th,.event-calendar td{padding:4px 0;border:0;text-align:center;font-size:13px}.event-calendar td{height:43px;border-radius:8px;color:#777;background:#f2f0ec}.event-calendar td:empty{background:transparent}.event-calendar td.event-day{background:#f5d6c5;color:#76351e;font-weight:750}.event-calendar small{display:block;font-size:9px;line-height:1.1}.event-calendar [hidden]{display:none!important}.event-calendar th:first-child{color:#b64a42}.event-calendar th:last-child{color:#386695}
@media(max-width:430px){.event-calendar{padding:10px}.event-calendar table{border-spacing:3px}.compact-results .card-body{padding:12px}.view-switch button{font-size:13px;padding:8px 2px}}
