/* Taegeuk-inspired interface palette, based on the user's red/blue/black/white reference. */
:root {
  color-scheme: light;
  --taegeuk-red: #bc353b;
  --taegeuk-blue: #23458d;
  --taegeuk-black: #17181b;
  --taegeuk-white: #ffffff;
  --taegeuk-red-soft: #fcf0f1;
  --taegeuk-blue-soft: #eff3fb;
  --ink: var(--taegeuk-black);
  --forest: var(--taegeuk-blue);
  --forest-2: #18366f;
  --paper: #fbfbfc;
  --white: var(--taegeuk-white);
  --line: #d9dbe1;
  --muted: #646770;
  --clay: var(--taegeuk-red);
  --sage: var(--taegeuk-blue-soft);
  --gold: var(--taegeuk-red);
}
body { background: var(--paper); color: var(--ink); }
::selection { background: #dbe5fb; color: #17181b; }
.site-header { background: #ffffffed; border-bottom-color: #d9dbe1; }
.brand { color: var(--taegeuk-black); }
.brand-mark { width:220px; height:96px; flex:0 0 auto; background:transparent; border:0; border-radius:0; padding:0; box-shadow:none; }
.brand-mark img { display:block; width:100%; height:100%; object-fit:contain; background:transparent; border:0; box-shadow:none; }
.brand-copy strong { color:var(--taegeuk-black); }
.site-header .header-inner { min-height:108px; flex-wrap:wrap; gap:12px 24px; padding-block:6px; }
.site-header .brand { flex-shrink:0; gap:0; }
.site-header .main-nav { flex:1 1 480px; flex-wrap:wrap; }
.site-header .main-nav a { white-space:nowrap; }
@media (max-width:700px) {
  .site-header .header-inner { min-height:82px; gap:8px 12px; padding-block:4px; }
  .site-header .brand-mark { width:165px; height:74px; }
  .site-header .main-nav { flex-basis:100%; gap:8px 12px; padding-bottom:6px; }
}
.main-nav .nav-cta { border-color: var(--taegeuk-blue); color: var(--taegeuk-blue); }
.main-nav .nav-cta:hover { color: #fff; background: var(--taegeuk-blue); }
.main-nav .lang-select { border-color: #c9cdd6; color: var(--taegeuk-black); background: #fff; }
.site-footer { background: #17181b; color: #e2e3e7; border-top: 4px solid; border-image: linear-gradient(90deg,var(--taegeuk-red) 50%,var(--taegeuk-blue) 50%) 1; }
.footer-brand { display:inline-flex; flex-direction:column; align-items:center; gap:12px; flex-shrink:0; color:#fff; }
.footer-brand .footer-logo { display:block; width:165px; height:80px; max-width:100%; object-fit:contain; background:transparent; border:0; padding:0; box-shadow:none; filter:brightness(0) invert(1); }
.brand-copyright { font-family:Arial,sans-serif; font-size:10px; letter-spacing:.06em; color:#c9ccd3; }
.hero .brand,.area-guide-page .brand { text-decoration:none; }
.hero .source-note { line-height:1.6; }
.area-guide-page .area-guide-copyright { position:relative; z-index:1; padding:0 7vw 20px; color:#c9ccd3; font-size:10px; letter-spacing:.06em; }
.footer-note { color: #c9ccd3; }
.eyebrow, .card-eyebrow > span:first-child { color: var(--taegeuk-red); }
.card-index { background: var(--taegeuk-blue); border-color: #fff; }
.button { background: var(--taegeuk-blue); border-color: var(--taegeuk-blue); color: #fff; }
.button:hover { background: #18366f; }
.button--quiet { background: #fff; color: var(--taegeuk-blue); }
.button--quiet:hover { color: #fff; }
.place-manager, .photo-editor, .info-export { background: #f3f5fb; border-color: #d9dbe1; }
.place-manager__remove { margin-top:28px; padding-top:24px; border-top:1px solid var(--line); }
.place-manager__remove h3 { margin:0 0 10px; color:var(--ink); font-size:20px; line-height:1.4; }
.place-manager__remove > p { margin:0 0 18px; color:var(--muted); line-height:1.7; }
.place-manager__remove-controls { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto; align-items:end; gap:14px; }
.place-manager__remove-controls .place-manager__field { min-width:0; }
.place-manager__remove-controls :is(input,select) { min-width:0; width:100%; min-height:44px; }
:is(.place-manager__remove-button,.place-manager__restore-button) { min-height:44px; padding:10px 16px; border:1px solid; border-radius:3px; background:#fff; font:inherit; font-weight:700; line-height:1.4; cursor:pointer; }
.place-manager__remove-button { color:var(--taegeuk-red); border-color:var(--taegeuk-red); }
.place-manager__remove-button:hover:not(:disabled) { background:var(--taegeuk-red-soft); }
.place-manager__restore-button { flex-shrink:0; color:var(--taegeuk-blue); border-color:var(--taegeuk-blue); }
.place-manager__restore-button:hover:not(:disabled) { background:var(--taegeuk-blue-soft); }
:is(.place-manager__remove-button,.place-manager__restore-button):focus-visible { outline:3px solid var(--taegeuk-blue); outline-offset:3px; }
:is(.place-manager__remove-button,.place-manager__restore-button):disabled { opacity:.45; cursor:not-allowed; }
.place-manager__removed-list { display:grid; gap:10px; margin:18px 0 0; padding:0; list-style:none; }
.place-manager__removed-list li { display:flex; align-items:center; justify-content:space-between; gap:12px 20px; padding:14px 16px; border:1px solid var(--line); border-radius:5px; background:#fff; }
.place-manager__removed-list li > div { min-width:0; }
.place-manager__removed-list strong { display:block; color:var(--ink); overflow-wrap:anywhere; }
.place-manager__removed-list span { display:block; margin-top:4px; color:var(--muted); font-size:13px; line-height:1.5; }
.place-manager__remove .place-manager__remove-status { margin:14px 0 0; color:var(--taegeuk-blue); line-height:1.7; }
.place-manager__remove [hidden], .venue-card[hidden], .category-section[hidden] { display:none !important; }
@media (max-width:700px) {
  .place-manager__remove-controls { grid-template-columns:minmax(0,1fr); }
  .place-manager__remove-button { width:100%; }
  .place-manager__removed-list li { flex-wrap:wrap; padding:12px; }
  .place-manager__removed-list li > div { flex:1 1 180px; }
}
.photo-editor__item-actions button { background: #fff; }
.hero-ribbon { background: #f2f4fa; }
.about-band { background: #f1f4fb; }
.district-aside { background: #f3f5fa; color: var(--muted); }
.photo-frame,.venue-exterior { background: #f0f1f5; }
.photo-frame--empty,.venue-exterior.photo-frame--empty { color: var(--taegeuk-blue); background: linear-gradient(135deg,#f1f4fc,#fbf1f2); }
.photo-frame figcaption,.photo-kind,.venue-exterior__label { background: #17181bde; }
.custom-place-card .custom-place-photo { background: linear-gradient(135deg,#f1f4fc,#fbf1f2); color: var(--taegeuk-blue); }
.custom-place-photo span { color: var(--muted); }
.custom-place-card .card-index { background: var(--taegeuk-red); }
.english-card .eyebrow { color: #f2b7ba; }
.address-copy-button:hover,.address-copy-button:focus-visible { background: #eff3fb; outline-color: var(--taegeuk-red); }
:is(.place-manager__field,.photo-editor__field,.info-editor__field) { color: var(--muted); }
:is(.place-manager__intro,.place-manager__hint,.source-note,.review-note,.review-disclaimer,.visit-caution) { color: var(--muted); }
:is(.info-editor__menu-row,.info-editor__hours-day) label { color: var(--muted); }
:is(.place-manager__field,.photo-editor__field,.info-editor__field) :is(input,select,textarea) { accent-color: var(--taegeuk-blue); }
:is(.button,.info-card__edit,.photo-editor__button,.address-copy-button):focus-visible { outline: 3px solid var(--taegeuk-red); outline-offset: 3px; }

/* Arrival guidance sits over the original neighborhood photograph. */
.arrival-hero { background: #17181b; color: #fff; }
.arrival-hero::before { background: linear-gradient(100deg,#17181be8,#172039c2 48%,#17181bb3),url('temp-photos/seoknam-neighborhood.jpg') center 48% / cover; }
.arrival-hero::after { background: linear-gradient(transparent,#17181b73); }
.arrival-heading .eyebrow { color: #f2b7ba; }
.arrival-heading h1 span { color: #cbd9fc; }
.arrival-heading p { color: #e0e3eb; }
.arrival-side-note { background: #17181ba6; border-left-color: var(--taegeuk-red); color: #e0e3eb; }
.arrival-film,.arrival-guide,.arrival-lastmile { background: #17181bd6; border-color: #d9dbe14d; }
.arrival-film video { background: #17181b; }
.arrival-film figcaption a { color: #cad8fb; }
.arrival-guide-intro,.arrival-caveat { color: #b9bfcb; }
.arrival-tab { background: #ffffff0d; border-color: #d9dbe14f; color: #e2e5ec; }
.arrival-tab[aria-selected="true"] { background: var(--taegeuk-blue); border-color: #6c88c7; color: #fff; box-shadow: inset 0 -2px var(--taegeuk-red); }
.arrival-mode-panel { background: #ffffff0d; }
.arrival-mode-panel h3 { color: #cad8fb; }
.arrival-live-links a { border-color: #d9dbe15c; }
.arrival-live-links a:first-child { background: var(--taegeuk-blue); border-color: #6c88c7; color: #fff; }
.arrival-credit { color: var(--muted); }

/* Venue pages keep the established layout and use the same palette in every panel. */
.venue-page {
  color: var(--taegeuk-black);
  background-color: #fbfbfc;
  background-image: radial-gradient(ellipse at 1% 12%,#bc353b08 0,transparent 46%),radial-gradient(ellipse at 98% 46%,#23458d0a 0,transparent 48%),repeating-linear-gradient(90deg,#17181b03 0 1px,transparent 1px 84px),repeating-linear-gradient(0deg,#17181b03 0 1px,transparent 1px 84px);
}
.venue-page .detail-head h1 { color: var(--taegeuk-black); }
.venue-page .eyebrow { color: var(--taegeuk-red); }
.venue-page :is(.english-name,.detail-dek,.photo-source-note,.info-label,.info-card h2 span,.price-list__description,.venue-carousel__status,.venue-carousel__hint,.venue-visit-note small,.venue-visit-note p[lang],.review-analysis-intro,.review-research-meta) { color: var(--muted); }
.venue-page .info-card { background: #fff; border-color: #d9dbe1; }
.venue-page :is(.info-card h2,.info-value,.price-list__name,.price-list strong) { color: var(--taegeuk-black); }
.venue-page :is(.info-card__heading,.info-row,.venue-visit-note,.review-research-meta) { border-color: #e0e2e8; }
.venue-page .info-card__edit { border-color: #c3cbdc; color: var(--taegeuk-blue); background: #fff; }
.venue-page .review-research-sources a { color: var(--taegeuk-blue); }
.venue-page .venue-tab-panel { --section-tone: #f7f8fc; border-color: #d9dbe1; }
.venue-page #venue-panel-home { --section-tone: #f7f8fc; }
.venue-page #venue-panel-menu { --section-tone: #fcf2f3; }
.venue-page #venue-panel-visit { --section-tone: #f0f4fc; }
.venue-page #venue-panel-review { --section-tone: #f9f3f4; }
.venue-page .venue-tabs { border-bottom-color: #d9dbe1; }
.venue-page .venue-tabs button { color: #565a65; }
.venue-page .venue-tabs button:hover { color: var(--taegeuk-blue); background: #edf2fb; }
.venue-page :is(#venue-tab-home,#venue-tab-visit) { border-bottom-color: var(--taegeuk-red); }
.venue-page :is(#venue-tab-menu,#venue-tab-review) { border-bottom-color: var(--taegeuk-blue); }
.venue-page .venue-tabs button[aria-selected="true"] { color: #fff; background: var(--taegeuk-blue); border-color: var(--taegeuk-blue); border-bottom-color: var(--taegeuk-red); }
.venue-page .venue-tabs button:focus-visible { outline-color: var(--taegeuk-red); }
.venue-page .venue-carousel { background: #fff; border-color: #cfd3dd; box-shadow: 0 15px 45px #17181b09; }
.venue-page .venue-carousel__viewport,
.venue-page .venue-carousel__slide > .photo-frame,
.venue-page .venue-carousel__slide > .venue-exterior,
.venue-page .detail-head .venue-exterior img { background: #f0f1f5; }
.venue-page .venue-carousel__slide figcaption,
.venue-page .venue-carousel__slide .venue-exterior__label { background: #17181bde; color: #fff; border-top: 2px solid var(--taegeuk-red); border-bottom: 2px solid var(--taegeuk-blue); }
.venue-page .venue-carousel__arrow { color: var(--taegeuk-blue); border-color: #17181b26; background: #ffffffd9; }
.venue-page .venue-carousel__arrow--previous { color: var(--taegeuk-red); }
.venue-page .venue-carousel__categories button { color: #555b67; border-color: #cfd3dd; background: #fff; }
.venue-page .venue-carousel__categories button[aria-pressed="true"] { color: #fff; border-color: var(--taegeuk-blue); background: var(--taegeuk-blue); }
.venue-page .venue-carousel__thumbs button { background: #edf0f6; }
.venue-page .venue-carousel__thumbs button span { background: #17181bd6; }
.venue-page .venue-carousel__thumbs button[aria-pressed="true"] { border-color: var(--taegeuk-blue); box-shadow: 0 0 0 1px var(--taegeuk-red); }
.venue-page .venue-carousel button:focus-visible { outline-color: var(--taegeuk-red); }
.venue-page .venue-carousel__slide .photo-frame--empty { color: #515d78; }
.venue-page .venue-carousel__slide .empty-mark { color: #23458d24; }
.venue-page .venue-tab-overview > .venue-videos { background: var(--taegeuk-blue-soft); border-color: #ccd6e9; }
.venue-page .venue-tab-overview > .venue-videos h2 { color: var(--taegeuk-black); }
.venue-page .venue-video__frame { background: #17181b; }
.venue-page .photo-editor { background: #f1f4fb; }
@media (hover:hover) and (pointer:fine) {
  .venue-page .venue-carousel__thumbs button:hover { border-color: var(--taegeuk-red); }
}

/* Visitor-review composer. */
.venue-page .venue-community { color: var(--taegeuk-black); background: #fff; border-color: #d9dbe1; }
.venue-page .venue-community__heading { border-bottom-color: #e0e2e8; }
.venue-page :is(.venue-community__count,.venue-community__empty,.venue-community__ready,.venue-community__optional,.venue-community__help,.venue-community__length,.venue-community__photo-count,.venue-community__private,.venue-community__previews figcaption) { color: var(--muted); }
.venue-page :is(.venue-community h2,.venue-community h3,.venue-community__form label,.venue-community__form legend) { color: var(--taegeuk-black); }
.venue-page .venue-community__badge { color: var(--taegeuk-blue); background: var(--taegeuk-blue-soft); }
.venue-page .venue-community__form { background: #f4f6fb; border-color: #d6dce9; }
.venue-page .venue-community__form :is(input[type="date"],textarea) { color: var(--taegeuk-black); background: #fff; border-color: #ccd2df; }
.venue-page .venue-community__form textarea::placeholder { color: #747984; }
.venue-page .venue-community__keywords button { color: var(--taegeuk-blue); background: #fff; border-color: #cbd4e7; }
.venue-page .venue-community__keywords button:hover { background: #e9effb; border-color: var(--taegeuk-blue); }
.venue-page .venue-community__keywords button[aria-pressed="true"] { color: #fff; background: var(--taegeuk-blue); border-color: var(--taegeuk-blue); }
.venue-page .venue-community__photo-button { color: var(--taegeuk-red); background: #fff; border-color: #bf7d82; }
.venue-page .venue-community__previews figure { background: #fff; border-color: #d9dbe1; }
.venue-page .venue-community__previews button { background: #17181bde; }
.venue-page .venue-community__save { color: #fff; background: var(--taegeuk-blue); border-color: var(--taegeuk-blue) !important; }
.venue-page .venue-community__clear { color: var(--taegeuk-red); border-color: #b9777d; background: #fff; }
.venue-page .venue-community__publish { color: #646770; background: #e8eaf0; border-color: #d4d7df; }
.venue-page .venue-community__message { color: var(--taegeuk-blue); }
.venue-page .venue-community :is(button,input,textarea):focus-visible { outline-color: var(--taegeuk-red); }

/* The map landing page has its own photo backdrop and a light selection interface. */
.hero { --ink:#fff; --muted:#d3d6dd; --lime:#fff; --gold:#ffd35c; color:#fff; background:#17181b; }
.hero .topbar {
  --header-background:transparent;
  --header-ink:#fff;
  --header-border:#ffffff30;
  --header-control-background:#07101538;
  --header-control-scheme:dark;
  --header-logo-on-photo:1;
  --header-text-shadow:0 1px 8px #0006;
  height:auto; min-height:108px; gap:24px; padding-block:6px;
  color:var(--header-ink); background:var(--header-background);
  border-bottom:0;
  backdrop-filter:none; -webkit-backdrop-filter:none;
  transition:background-color .28s ease,color .28s ease,border-color .28s ease;
}
/* Keyboard focus gets the same legible surface without keeping mouse focus white. */
.hero .topbar:has(:focus-visible) {
  --header-background:#fff;
  --header-ink:#17181b;
  --header-border:#d9dbe1;
  --header-control-background:#fff;
  --header-control-scheme:light;
  --header-logo-on-photo:0;
  --header-text-shadow:none;
}
@media (hover:hover) and (pointer:fine) {
  .hero .topbar:hover {
    --header-background:#fff;
    --header-ink:#17181b;
    --header-border:#d9dbe1;
    --header-control-background:#fff;
    --header-control-scheme:light;
    --header-logo-on-photo:0;
    --header-text-shadow:none;
  }
}
.hero .brand { gap:0; flex-shrink:0; }
.hero .brand-mark { width:220px; height:96px; flex:0 0 auto; border:0; border-radius:0; background:transparent; }
.hero .brand-mark::before { content:none; }
.hero .brand-mark img { display:block; width:100%; height:100%; object-fit:contain; }
.hero .brand-mark .brand-mark__on-photo { position:absolute; inset:0; filter:url(#header-logo-light-ink); opacity:var(--header-logo-on-photo); transition:opacity .28s ease; }
.hero .nav { min-width:0; flex-wrap:wrap; justify-content:flex-end; color:var(--header-ink); font-weight:650; text-shadow:var(--header-text-shadow); transition:color .28s ease; }
.hero .nav a { white-space:nowrap; }
.hero .nav a:hover { color:var(--taegeuk-blue); }
.hero .nav .lang-select { color:var(--header-ink); background:var(--header-control-background); border-color:var(--header-border); color-scheme:var(--header-control-scheme); transition:color .28s ease,background-color .28s ease,border-color .28s ease; }
.hero .nav .lang-select option { background:#fff; color:#17181b; }
.hero .topbar :is(a,select):focus-visible { outline:2px solid var(--taegeuk-blue); outline-offset:5px; }
.hero .content h1 { color:#fff; }
.hero .content h1 span { color:#fff; text-decoration:underline; text-decoration-color:var(--taegeuk-blue); text-decoration-thickness:5px; text-underline-offset:8px; }
.hero .content .eyebrow { color:#fff; }
.hero .cta { background:var(--taegeuk-blue); color:#fff; border:1px solid #fff; box-shadow:0 3px 0 var(--taegeuk-red),0 12px 34px #0004; }
.hero .loc-dot { background:var(--gold); box-shadow:0 0 0 7px #ffd35c29,0 0 36px 15px #ffbe30b8; }
.hero .loc-dot::before,.hero .loc-dot::after { border-color:#ffd35cc7; }
.hero .locator { color:#17181b; background:#fffffff5; border-color:#d0d5e0; }
.hero .explorer-head,.hero .panel-footer { border-color:#d9dbe1; }
.hero :is(.explorer-head p,.selection-head p,.crumb,.place-button small,.foot-note) { color:#646770; }
.hero :is(.kicker,.crumb button,.foot-note strong) { color:var(--taegeuk-blue); }
.hero .crumb b { color:#17181b; }
.hero :is(.head-button,.back-button,.place-button) { color:#17181b; background:#fff; border-color:#ccd2df; }
.hero :is(.head-button,.back-button):hover { color:var(--taegeuk-blue); border-color:var(--taegeuk-blue); }
.hero .place-button .tag { color:var(--taegeuk-blue); }
.hero .place-button:hover,.hero .place-button:focus-visible,.hero .place-button.selected { color:var(--taegeuk-blue); background:#eff3fb; border-color:var(--taegeuk-blue); }
.hero .place-button:disabled { color:#6b6f77; background:#f1f2f5; border-color:#d9dbe1; opacity:1; }
.hero .place-button:disabled small { color:#737783; }
.hero .result-count { color:var(--taegeuk-blue); border-color:#cad5eb; background:#eff3fb; }
.hero .map-shell { border-color:#ccd2df; }
.hero :is(.map-badge,.map-note) { background:#17181bd9; color:#fff; }
.hero .map-note a { color:#fff; }
.hero .north-mark span { color:var(--taegeuk-red); }
.hero .extent-button:hover { background:#eff3fb; }
.hero .leaflet-tooltip.geo-label,.hero .leaflet-tooltip.geo-label.dong-label { background:#23458de8; }
.hero .place-list { scrollbar-color:#8496b9 transparent; }
@media (max-width:820px) {
  .hero .topbar { min-height:82px; gap:12px; padding-block:4px; }
  .hero .brand { gap:0; }
  .hero .brand-mark { width:165px; height:74px; }
  .hero .nav { gap:8px 12px; }
  .hero .locator { top:94px; }
}
@media (max-width:480px) {
  .hero .brand-mark { width:150px; height:68px; }
  .hero .nav { gap:6px 9px; }
  .hero .nav .lang-select { max-width:88px; padding:7px 8px; }
}

/* Independent neighborhood placeholder pages share the same interface colors. */
.area-guide-page { --ink:#fff; --muted:#d3d6dd; --lime:#fff; color:#fff; background:#17181b; }
.area-guide-page .backdrop { background:linear-gradient(90deg,#17181bdc,#17181b70 65%,#17181b59),url('../assets/concepts/incheon-earth-hero-concept.png') center/cover no-repeat; }
.area-guide-page .topbar { height:auto; min-height:108px; justify-content:space-between; gap:24px; padding-block:6px; background:rgba(255,255,255,.48); color:#17181b; border-bottom-color:#ffffff45; backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); }
.area-guide-page .brand { gap:0; flex-shrink:0; }
.area-guide-page .mark { width:220px; height:96px; flex:0 0 auto; background:transparent; border:0; border-radius:0; padding:0; box-shadow:none; }
.area-guide-page .mark img { display:block; width:100%; height:100%; object-fit:contain; background:transparent; border:0; box-shadow:none; }
.area-guide-page .mark::after { content:none; }
.area-guide-page main { min-height:calc(100vh - 108px); }
@media (max-width:640px) {
  .area-guide-page .topbar { min-height:82px; gap:12px; padding-block:4px; }
  .area-guide-page .mark { width:165px; height:74px; }
  .area-guide-page main { min-height:calc(100vh - 82px); }
}
.area-guide-page .lang-select { flex:0 0 auto; min-width:84px; max-width:100px; padding:8px 11px; border:1px solid #c9cdd6; border-radius:100px; font:inherit; font-size:11px; cursor:pointer; }
.area-guide-page .lang-select,.area-guide-page .lang-select option { background:#fff; color:#17181b; border-color:#c9cdd6; }
.area-guide-page .eyebrow,.area-guide-page h1 { color:#fff; }
.area-guide-page h1 span { color:#fff; text-decoration:underline; text-decoration-color:var(--taegeuk-blue); }
.area-guide-page .lead { color:#e0e3eb; }
.area-guide-page .notice { background:#17181b94; color:#e0e3eb; border-left-color:var(--taegeuk-red); }
.area-guide-page .button { color:#fff; background:#17181ba3; border-color:#ffffff80; }
.area-guide-page .button.primary { color:#fff; background:var(--taegeuk-blue); border-color:#6c88c7; box-shadow:0 3px var(--taegeuk-red); }
