/* Hallmark · macrostructure: graph-first explorer · tone: 활기 있는 도시 안내 · anchor hue: cyan · theme: Riso · nav: compact utility · footer: Ft2
 * Hallmark · pre-emit critique: P4 H4 E3 S4 R4 V4 · provisional; browser QA pending */
*{box-sizing:border-box}html,body{overflow-x:clip}html{scroll-behavior:auto}body{margin:0;background:var(--color-paper);color:var(--color-ink);font:400 var(--text-base)/1.65 var(--font-body)}button,input,select{font:inherit;color:inherit}button,select{min-height:44px}button{cursor:pointer;border:0;background:var(--color-transparent);white-space:nowrap}button:active{transform:translateY(1px)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}button:disabled{opacity:.55;cursor:not-allowed}h1,h2,h3,p{margin:0}h1,h2,h3{font-style:normal;overflow-wrap:anywhere;min-width:0;line-height:1.25}h2,h3{font-family:var(--font-display);font-weight:400}img{max-width:100%;display:block}a{color:inherit}.page{max-width:1440px;margin:auto;padding:var(--space-md)}.skip{position:absolute;top:-80px;padding:var(--space-sm);background:var(--color-paper);z-index:5}.skip:focus{top:0}.edition{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-lg);justify-content:space-between;border-top:var(--rule-strong) solid var(--color-ink);padding-block:var(--space-xs);font-size:var(--text-xs)}.demo{color:var(--color-accent-dark)}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding-block:var(--space-lg)}h1{font-family:var(--font-display);font-size:var(--text-display);font-weight:400;letter-spacing:-.07em;line-height:1.02}.wordmark-dot{color:var(--color-accent-dark)}.brand-note{display:none}.city-control{flex:0 0 86px}.city-control label{display:block;font-size:var(--text-xs);margin-bottom:var(--space-2xs)}select{width:100%;min-width:0;border:1px solid var(--color-rule-2);border-radius:var(--radius-input);padding:var(--space-xs);background:var(--color-paper);color:var(--color-ink)}.navline{border-block:var(--rule-strong) solid var(--color-ink);display:flex;justify-content:space-between;gap:var(--space-md);align-items:center}.navlinks{display:flex;gap:var(--space-xl)}.nav-button{padding:var(--space-xs) 0;font-weight:600}.nav-button.active{box-shadow:inset 0 -3px var(--color-accent-dark)}.navline>span{display:none}.intro{padding-block:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-sm)}.intro h2{font-size:clamp(1.65rem,3vw,2.75rem)}.intro p{font-size:var(--text-sm);color:var(--color-muted)}.desktop-break{display:none}.filter-section{border-block:1px solid var(--color-rule-2);padding-block:var(--space-lg)}form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.field label{font-size:var(--text-xs);display:block;margin-bottom:var(--space-xs)}.checkbox{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm);min-height:44px;align-self:end}.checkbox input{width:19px;height:19px;accent-color:var(--color-accent-dark)}.search-button{background:var(--color-ink);color:var(--color-paper);padding:var(--space-sm) var(--space-lg);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);min-height:48px}.search-button span{font-size:var(--text-lg)}form>.search-button{grid-column:1/-1}.filter-foot{display:flex;flex-direction:column;align-items:start;gap:var(--space-xs);margin-top:var(--space-sm);font-size:var(--text-xs);color:var(--color-muted)}.text-button{padding:var(--space-xs) 0;text-decoration:underline;text-underline-offset:5px;font-size:var(--text-sm)}.status{min-height:var(--space-xl);font-size:var(--text-sm);color:var(--color-accent-dark);padding-top:var(--space-xs)}.section-heading{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-lg)}.section-heading h2{font-size:var(--text-xl)}.section-heading p{font-size:var(--text-sm);color:var(--color-muted)}.event-grid{display:grid;gap:var(--space-2xl)}.event{min-width:0;border-bottom:1px solid var(--color-rule);padding-bottom:var(--space-lg)}.visual{position:relative;aspect-ratio:4/3;overflow:clip;margin-bottom:var(--space-md);background:var(--color-paper-2);color:var(--color-ink)}.visual img{width:100%;height:100%;object-fit:cover}.poster-type{height:100%;display:flex;flex-direction:column;justify-content:space-between;padding:var(--space-lg);background:var(--color-accent-2);color:var(--color-ink)}.poster-type strong{font-family:var(--font-display);font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.06;letter-spacing:-.05em}.poster-type small{font-size:var(--text-xs);letter-spacing:.08em}.poster-type.blue{background:var(--color-accent);color:var(--color-ink)}.poster-type.ink{background:var(--color-ink);color:var(--color-paper)}.visual .sample{position:absolute;bottom:var(--space-xs);right:var(--space-xs);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-xs);padding:2px 7px}.event-top{display:flex;gap:var(--space-xs);justify-content:space-between;align-items:center;font-size:var(--text-xs);color:var(--color-muted)}.save{border:1px solid var(--color-rule-2);padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);min-width:64px}.save[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.event h3{font-size:var(--text-xl);margin-block:var(--space-xs) var(--space-sm)}.event.feature h3{font-size:var(--text-feature)}.summary{color:var(--color-muted);font-size:var(--text-sm);margin-bottom:var(--space-md);max-width:50ch}.facts{display:grid;grid-template-columns:42px minmax(0,1fr);gap:var(--space-2xs) var(--space-sm);font-size:var(--text-sm);margin:0}.facts dt{color:var(--color-muted)}.facts dd{margin:0}.event-bottom{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-md)}.event-bottom p{font-size:var(--text-xs);max-width:28ch}.detail-button{text-decoration:underline;text-underline-offset:5px;min-height:44px;font-size:var(--text-sm);padding:0}.empty{padding:var(--space-2xl) 0;max-width:55ch}.empty h3{font-size:var(--text-xl)}.empty p{margin-block:var(--space-md);color:var(--color-muted)}.discover{padding-top:var(--space-3xl)}.topic-list{border-top:2px solid var(--color-ink)}.topic-list button{display:grid;width:100%;grid-template-columns:60px minmax(0,1fr) 25px;align-items:center;gap:var(--space-sm);text-align:left;padding:var(--space-lg) 0;border-bottom:1px solid var(--color-rule-2)}.topic-list span{font-family:var(--font-display);font-size:var(--text-lg)}.topic-list small{font-size:var(--text-xs);white-space:normal}.topic-list b{font-size:var(--text-lg)}.last-chance{display:grid;gap:var(--space-xl);padding-block:var(--space-3xl);margin-top:var(--space-xl);border-bottom:2px solid var(--color-ink)}.last-chance h2{font-size:clamp(2rem,4vw,3.5rem)}.end-label{color:var(--color-accent-dark);font-size:var(--text-sm);margin-bottom:var(--space-md)}.ending{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);border-bottom:1px solid var(--color-rule-2);padding-block:var(--space-lg)}.ending h3{font:600 var(--text-md)/1.4 var(--font-body)}.ending p{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-xs)}footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md) var(--space-xl);padding-block:var(--space-xl)}footer strong{font-family:var(--font-display);font-size:var(--text-xl);font-weight:400}footer p,footer>span{font-size:var(--text-xs);color:var(--color-muted)}dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(600px,100%);height:100dvh;max-height:100dvh;max-width:100%;padding:var(--space-lg);border:0;border-left:2px solid var(--color-ink);background:var(--color-paper);color:var(--color-ink);overflow-y:auto}dialog::backdrop{background:var(--color-backdrop)}.drawer-top{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);border-bottom:1px solid var(--color-ink);padding-bottom:var(--space-md);font-size:var(--text-xs)}.close-button{font-size:var(--text-sm)}#detail-content{padding-top:var(--space-xl)}#detail-content h2{font-size:var(--text-feature);margin-bottom:var(--space-md)}#detail-content>.summary{font-size:var(--text-base)}.drawer-facts{padding-block:var(--space-xl);border-block:1px solid var(--color-rule-2);margin-block:var(--space-xl)}.connection-list{list-style:none;padding:0;margin-block:var(--space-lg)}.connection-list li{padding-block:var(--space-sm);border-bottom:1px solid var(--color-rule)}.source-note{background:var(--color-paper-2);color:var(--color-ink);padding:var(--space-md);font-size:var(--text-sm);margin-top:var(--space-xl)}.drawer-actions{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-xl)}[hidden]{display:none!important}[aria-invalid=true],.error{color:var(--color-error)}[data-state=loading]{opacity:.65;cursor:wait}[data-state=success]{color:var(--color-accent-dark)}
@media(hover:hover){button:hover{background:var(--color-paper-2);color:var(--color-ink)}.search-button:hover{background:var(--color-ink-2);color:var(--color-paper)}select:hover{background:var(--color-paper-2);color:var(--color-ink)}.topic-list button:hover{padding-inline:var(--space-sm)}}
@media(min-width:40rem){.page{padding:var(--space-xl)}.edition{font-size:var(--text-sm)}.brand-note{display:block;font-size:var(--text-sm)}.brand-row{padding-block:var(--space-xl)}.city-control{flex-basis:130px}.section-heading{flex-direction:row;justify-content:space-between;align-items:baseline}.event-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-xl)}.event.feature{grid-column:1/-1}.event.feature .visual{aspect-ratio:16/8}.intro{flex-direction:row;justify-content:space-between;align-items:center}.desktop-break{display:block}.filter-foot{flex-direction:row;align-items:center;justify-content:space-between}.last-chance{grid-template-columns:1fr 1.5fr}.topic-list button{grid-template-columns:120px minmax(0,1fr) 30px}.topic-list small{font-size:var(--text-sm)}dialog{padding:var(--space-xl)}}
@media(min-width:60rem){.page{padding-inline:var(--space-3xl)}.navline>span{display:block;font-size:var(--text-sm)}.intro{padding-block:var(--space-2xl)}form{grid-template-columns:1.05fr 1.35fr 1fr 1fr 1fr;align-items:end;gap:var(--space-lg)}form>.search-button{grid-column:auto}.event-grid{grid-template-columns:1.55fr 1fr 1fr;gap:var(--space-xl)}.event.feature{grid-column:auto;grid-row:span 2}.event.feature .visual{aspect-ratio:4/4.4}.event:not(.feature) h3{font-size:var(--text-lg)}.event:nth-child(4){grid-column:2/4;display:grid;grid-template-columns:.7fr 1fr;gap:var(--space-lg)}.event:nth-child(4) .visual{margin:0;height:100%;min-height:260px}.topic-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-2xl)}.last-chance{grid-template-columns:1fr 1.6fr}footer>span{margin-inline-start:auto}}
/* Stable controls and image tracks after static review. */
@media(max-width:39.99rem){h1{font-size:clamp(2.5rem,7.8vw,3.2rem);white-space:nowrap;letter-spacing:-.07em}.brand-row{gap:var(--space-xs)}.field:has(#date){grid-column:1/-1;grid-row:2}.field:has(#interest){grid-column:2;grid-row:1}}
.more-results{margin-top:var(--space-xl);margin-inline:auto}
@media(max-width:39.99rem){.edition{gap:var(--space-xs);font-size:var(--text-xs)}.edition .demo{display:none}.brand-row{padding-block:var(--space-md)}.intro{padding-block:var(--space-md)}.intro p{display:none}.filter-section{padding-block:var(--space-md)}form{gap:var(--space-sm)}form>.checkbox{grid-column:1;grid-row:3}form>.search-button{grid-column:2;grid-row:3;padding-inline:var(--space-sm);gap:var(--space-xs)}.filter-foot{flex-direction:row;align-items:center;gap:var(--space-sm)}.filter-foot p{font-size:var(--text-xs);max-width:22ch}.filter-foot .text-button{font-size:var(--text-xs)}.status{min-height:var(--space-lg)}#results>.section-heading{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2xs);margin-bottom:var(--space-md)}#results>.section-heading h2{flex-basis:100%;font-size:var(--text-lg)}#results>.section-heading p{font-size:var(--text-xs)}.connection-jump{font-size:var(--text-xs)}}
.event-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.event-bottom{flex-wrap:wrap}.connections{margin-top:var(--space-2xl);border-block:2px solid var(--color-ink);padding-block:var(--space-xl);scroll-margin-top:var(--space-md)}.connection-heading{display:flex;flex-direction:column;gap:var(--space-lg);margin-bottom:var(--space-xl)}.connection-heading h2{font-size:var(--text-xl)}.connection-heading p,.connection-note{font-size:var(--text-sm);color:var(--color-muted)}.connection-heading p{margin-top:var(--space-xs)}.connection-map{display:grid;gap:var(--space-lg)}.connection-origin{padding:var(--space-lg);background:var(--color-ink);color:var(--color-paper)}.connection-origin small{font-size:var(--text-xs)}.connection-origin h3{font-size:var(--text-lg);margin-block:var(--space-sm)}.connection-origin button:focus-visible{outline-color:var(--color-paper)}.connection-branches{display:grid;gap:var(--space-md)}.branch{border-left:2px solid var(--color-rule-2);padding-inline-start:var(--space-md);display:flex;flex-direction:column;align-items:start}.branch>span{font-size:var(--text-xs);color:var(--color-muted)}.branch button{padding:var(--space-xs) 0;font-weight:600;font-size:var(--text-sm);text-decoration:underline;text-underline-offset:2px}.connection-note{margin-top:var(--space-lg);font-size:var(--text-xs)}.connection-jump{color:var(--color-accent-dark);font-weight:600}
@media(min-width:40rem){.connection-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end}.connection-map{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);align-items:center}.connection-branches{grid-template-columns:repeat(2,minmax(0,1fr))}.connection-jump{margin-inline-start:auto}.section-heading{flex-wrap:wrap}.connection-origin{padding:var(--space-xl)}}
select{min-height:48px}select:disabled,input:disabled{opacity:.55;cursor:not-allowed}select:active{background:var(--color-paper-2);color:var(--color-ink)}.visual .sample{padding:var(--space-2xs) var(--space-xs)}.text-button,.detail-button{text-underline-offset:2px}.search-button:focus-visible,.save[aria-pressed=true]:focus-visible{box-shadow:0 0 0 2px var(--color-paper)}.poster-type.blue{color:var(--color-accent-ink)}.poster-type strong{overflow-wrap:anywhere;min-width:0}
@media(hover:hover){.topic-list button:hover{padding-inline:0}}
@media(min-width:60rem){.event-grid{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr) minmax(0,1fr)}.event:nth-child(4){grid-template-columns:minmax(0,.7fr) minmax(0,1fr)}}
@media(min-width:60rem){.event:not(.feature) .poster-type strong{font-size:clamp(2rem,2.8vw,2.75rem);word-break:keep-all}}
/* Empty CSS pseudo-elements form presentational connectors; no spoken content. */
.connection-origin{position:relative}.connection-origin::after{content:"";position:absolute;left:var(--space-lg);top:100%;height:var(--space-lg);width:1px;background:var(--color-rule-2)}.connection-branches{position:relative;grid-template-columns:minmax(0,1fr);padding-left:var(--space-2xl);gap:var(--space-sm)}.connection-branches::before{content:"";position:absolute;left:var(--space-lg);top:0;bottom:0;width:1px;background:var(--color-rule-2)}.branch{position:relative;border-left:0;padding-left:0;gap:var(--space-2xs)}.branch::before{content:"";position:absolute;left:calc(-1 * var(--space-lg));top:50%;width:var(--space-lg);height:1px;background:var(--color-rule-2)}.branch::after{content:"";position:absolute;left:calc(-1 * var(--space-lg) - 3px);top:calc(50% - 3px);width:7px;height:7px;border:1px solid var(--color-ink);border-radius:50%;background:var(--color-paper)}.branch button{border:1px solid var(--color-rule-2);background:var(--color-paper-2);color:var(--color-ink);padding:var(--space-xs) var(--space-sm);text-decoration:none;max-width:100%}
@media(min-width:40rem){.connection-origin::after{left:100%;top:50%;width:var(--space-lg);height:1px}.connection-branches{padding-left:var(--space-lg)}.connection-branches::before{left:0}.branch{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);align-items:center;gap:var(--space-sm)}.branch>span{background:var(--color-paper);color:var(--color-muted)}.branch button{font-size:var(--text-xs)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}button:active{transform:none}}
/* Participation actions remain visible without adding a large header block. */
.participate-nav{display:flex;align-items:center;gap:var(--space-xs)}
@media(max-width:40rem){.navline{flex-wrap:wrap;gap:0}.participate-nav{margin-left:auto}.participate-nav .nav-button{font-size:var(--text-xs);padding-inline:var(--space-xs)}}

/* Graph-first explorer: the relationship map leads, while lists stay available below. */
.page{max-width:none;padding:var(--space-xs) var(--space-md) var(--space-md)}
.skip{inset-inline-start:var(--space-md)}
.skip-results{inset-inline-start:10rem}
.masthead{border-block:var(--rule-strong) solid var(--color-ink)}
.brand-row{justify-content:space-between;gap:var(--space-md);padding-block:var(--space-xs)}
.brand-lockup{display:flex;min-width:0;align-items:center;gap:var(--space-md)}
.brand-lockup h1{flex:0 0 auto;font-size:clamp(2rem,4vw,3rem);letter-spacing:-.06em;white-space:nowrap}
.brand-lockup .edition{display:grid;gap:0;border:0;padding:0;font-size:var(--text-xs);line-height:1.35}
.brand-lockup .edition span{white-space:nowrap}
.city-control{flex:0 0 92px}
.city-control label{margin-bottom:0}
.city-control select{min-height:44px}
.navline{border:0;border-top:var(--rule-thin) solid var(--color-rule-2);gap:var(--space-sm)}
.navlinks,.participate-nav{gap:var(--space-sm)}
.nav-button{min-height:44px;padding:var(--space-xs) 0;font-size:var(--text-sm)}
.intro{display:none}
.intro h2{font:400 var(--text-md)/1.25 var(--font-display)}
.intro p{font-size:var(--text-xs)}
.filter-section{padding-block:var(--space-xs);border-top:0;border-bottom:var(--rule-strong) solid var(--color-ink)}
#filters{gap:var(--space-sm)}
#filters .field label{margin-bottom:var(--space-2xs)}
#filters .search-button{min-height:44px;padding-block:var(--space-xs)}
.filter-foot{margin-top:var(--space-xs)}
.status{min-height:0;padding-top:var(--space-2xs)}
.status:empty{display:none}
#graph-anchor{min-height:1px}
#connections{margin-top:0;scroll-margin-top:var(--space-md)}
#results{padding-top:var(--space-3xl)}

@media(max-width:39.99rem){
  .page{padding:var(--space-xs) var(--space-sm) var(--space-sm)}
  .skip-results{inset-inline-start:9rem}
  .brand-row{gap:var(--space-xs)}
  .brand-lockup{gap:var(--space-xs)}
  .brand-lockup h1{font-size:clamp(2rem,10vw,2.5rem)}
  .brand-lockup .edition{display:none}
  .city-control{flex-basis:82px}
  .navline{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center}
  .navlinks,.participate-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs);margin:0}
  .nav-button{min-width:0;font-size:var(--text-xs);padding-inline:var(--space-2xs)}
  .filter-section{padding-top:var(--space-xs)}
  #filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xs)}
  #filters .field:has(#district){grid-column:1;grid-row:1}
  #filters .field:has(#date){grid-column:2;grid-row:1}
  #filters .field:has(#interest){grid-column:1;grid-row:2}
  #filters>.checkbox{grid-column:2;grid-row:2}
  #filters>.search-button{grid-column:1/-1;grid-row:3}
  .filter-foot{margin-top:var(--space-2xs)}
  .filter-foot p{max-width:20ch}
  .status{font-size:var(--text-xs)}
  #results{padding-top:var(--space-2xl)}
}

@media(min-width:40rem){
  .page{padding:var(--space-xs) var(--space-lg) var(--space-lg)}
  .filter-section{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--space-md)}
  #filters{grid-template-columns:minmax(8rem,1.05fr) minmax(10rem,1.25fr) minmax(8rem,1fr) minmax(7rem,.8fr) minmax(8rem,.9fr);align-items:end}
  #filters>.search-button{grid-column:auto}
  .filter-foot{align-items:flex-end;margin:0;white-space:nowrap}
}

@media(min-width:64rem){
  .page{padding:var(--space-xs) var(--space-xl) var(--space-lg)}
  .masthead{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}
  .brand-row{padding-inline-end:var(--space-lg)}
  .navline{height:100%;border-top:0;border-inline-start:var(--rule-thin) solid var(--color-rule-2);padding-inline-start:var(--space-lg);justify-content:flex-end}
  .brand-lockup .edition{grid-template-columns:repeat(3,auto);gap:var(--space-md);align-items:center}
  .city-control{flex-basis:100px}
}
