:root {
  --paper: #f2f2ef;
  --panel: #f7f6f2;
  --white: #fdfcf9;
  --ink: #2b2b29;
  --ink-soft: #5e5d58;
  --muted: #898780;
  --line: #d9d8d2;
  --line-dark: #bdbbb2;
  --sage: #b4aa94;
  --sage-dark: #6f695d;
  --signal: #7f4a43;
  --signal-soft: #eee7e4;
  --amber: #b99a5a;
  --warm-shadow: rgba(45,44,40,.11);
  --mono: "SFMono-Regular", "Roboto Mono", Consolas, monospace;
  --sans: "Avenir Next", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --display: "Arial Narrow", "Avenir Next Condensed", "PingFang SC", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); }
button, input, select { font: inherit; }
button, select { cursor: pointer; }
button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; }

.topbar { position: sticky; top: 0; z-index: 20; display: flex; justify-content: space-between; align-items: center; min-height: 62px; padding: 0 4vw; border-bottom: 1px solid var(--line-dark); background: rgba(242,242,239,.96); backdrop-filter: blur(12px); }
.brand { display: inline-flex; align-items: center; gap: 13px; color: inherit; text-decoration: none; }
.brand-word { font: 800 24px/1 var(--display); letter-spacing: -.04em; }
.brand-rule { width: 1px; height: 24px; background: var(--sage-dark); }
.brand-context { color: var(--ink-soft); font: 600 11px/1 var(--mono); letter-spacing: .08em; }
.event-meta { display: flex; align-items: center; gap: 14px; color: var(--ink-soft); font: 600 10px/1 var(--mono); }
.event-meta i { width: 5px; height: 5px; border-radius: 50%; background: var(--signal); }
.topbar-actions { display: flex; align-items: center; gap: 20px; }
.wishlist-trigger { display: inline-flex; align-items: center; gap: 7px; min-height: 36px; padding: 0 10px; border: 1px solid var(--line-dark); color: var(--ink); background: rgba(253,252,249,.8); }
.wishlist-trigger span { color: var(--signal); font: 500 19px/1 var(--sans); }
.wishlist-trigger b { font-size: 10px; font-weight: 650; }
.wishlist-trigger em { display: grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 10px; color: #fff; background: var(--signal); font: normal 700 8px/1 var(--mono); }
.wishlist-trigger em:empty { display: none; }

main { width: min(1500px, 94vw); margin: 0 auto; }
.hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 56px; align-items: end; padding: 58px 0 36px; }
.eyebrow { margin: 0 0 14px; color: var(--sage-dark); font: 700 10px/1 var(--mono); letter-spacing: .15em; }
.hero h1 { max-width: 850px; margin: 0; font: 700 clamp(38px, 5.2vw, 78px)/.98 var(--display); letter-spacing: -.055em; }
.hero-copy > p:not(.eyebrow) { max-width: 720px; margin: 24px 0 0; color: var(--ink-soft); font-size: 14px; line-height: 1.8; }
.unofficial-badge { display: inline-flex; align-items: center; gap: 8px; margin-top: 16px; padding: 7px 10px; border: 1px solid var(--line-dark); color: var(--sage-dark); background: rgba(253,252,249,.66); font: 700 9px/1 var(--mono); letter-spacing: .07em; }
.unofficial-badge::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--signal); }
.hero-index { display: grid; min-width: 255px; border-top: 1px solid var(--line-dark); }
.hero-index div { display: grid; grid-template-columns: 90px 1fr; align-items: baseline; gap: 15px; padding: 13px 0; border-bottom: 1px solid var(--line); }
.hero-index strong { font: 600 28px/1 var(--mono); letter-spacing: -.08em; }
.hero-index span { color: var(--muted); font-size: 11px; }

.filter-deck { position: sticky; top: 62px; z-index: 15; display: grid; grid-template-columns: minmax(250px, 1.7fr) repeat(4, minmax(132px, .75fr)) auto; min-height: 66px; border: 1px solid var(--line-dark); background: var(--panel); box-shadow: 0 8px 28px rgba(45,44,40,.07); }
.search-box { display: flex; align-items: center; gap: 11px; min-width: 0; padding: 0 17px; border-right: 1px solid var(--line); }
.search-box svg { width: 18px; fill: none; stroke: var(--ink-soft); stroke-width: 1.7; }
.search-box input { width: 100%; min-width: 0; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 13px; }
.search-box kbd { padding: 3px 7px; border: 1px solid var(--line); color: var(--muted); background: var(--white); font: 10px/1.2 var(--mono); }
.select-field { display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 0 12px; border-right: 1px solid var(--line); }
.select-field span { color: var(--muted); font: 600 9px/1 var(--mono); letter-spacing: .08em; }
.select-field select { width: 100%; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 12px; }
.clear-button { padding: 0 17px; border: 0; color: var(--ink-soft); background: transparent; font-size: 11px; }
.clear-button:hover { color: var(--signal); }

.workspace { display: grid; grid-template-columns: 235px minmax(0, 1fr); min-height: 720px; margin-top: 22px; border: 1px solid var(--line-dark); background: var(--panel); box-shadow: 0 22px 55px rgba(45,44,40,.08); }
.venue-rail { display: flex; flex-direction: column; border-right: 1px solid var(--line-dark); background: #ebeae5; }
.rail-heading { display: flex; justify-content: space-between; padding: 18px 16px 14px; border-bottom: 1px solid var(--line-dark); }
.rail-heading span { font: 700 11px/1 var(--mono); letter-spacing: .12em; }
.rail-heading small { color: var(--muted); font-size: 10px; }
.area-group { border-bottom: 1px solid var(--line); }
.area-button { width: 100%; padding: 16px; border: 0; color: inherit; background: transparent; text-align: left; }
.area-button:hover, .area-button.active { background: var(--white); }
.area-button.active { box-shadow: inset 3px 0 var(--signal); }
.area-button strong { display: block; font-size: 14px; }
.area-button span { display: block; margin-top: 5px; color: var(--muted); font: 10px/1.5 var(--mono); }
.hall-list { padding: 0 8px 10px; }
.hall-button { display: grid; grid-template-columns: 1fr auto; gap: 8px; width: 100%; padding: 9px 8px; border: 0; color: var(--ink-soft); background: transparent; text-align: left; font-size: 11px; }
.hall-button:hover, .hall-button.active { color: var(--ink); background: rgba(255,255,255,.64); }
.hall-button.active { font-weight: 700; }
.hall-button em { color: var(--muted); font: normal 9px/1 var(--mono); }
.verification-key { margin-top: auto; padding: 18px 16px; border-top: 1px solid var(--line-dark); color: var(--muted); font-size: 10px; line-height: 1.9; }
.verification-key p { margin: 0 0 7px; color: var(--ink-soft); font: 700 9px/1 var(--mono); letter-spacing: .1em; }
.verification-key span { display: block; }
.dot { display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; }
.dot.checked { background: var(--sage-dark); }
.dot.partial { border: 1px solid var(--amber); }
.dot.single { border: 1px solid var(--line-dark); }
.dot.conflict { background: #b34c44; }
.dot.article { border: 1px solid var(--signal); }

.atlas-panel { position: relative; min-width: 0; }
.atlas-toolbar { display: flex; justify-content: space-between; align-items: end; min-height: 86px; padding: 17px 20px; border-bottom: 1px solid var(--line-dark); }
.atlas-toolbar p { margin: 0 0 7px; color: var(--muted); font: 600 9px/1 var(--mono); letter-spacing: .08em; }
.atlas-toolbar h2 { margin: 0; font: 650 21px/1.05 var(--display); letter-spacing: -.02em; }
.atlas-status { display: flex; gap: 12px; color: var(--ink-soft); font: 600 10px/1 var(--mono); }
.atlas-status span + span { padding-left: 12px; border-left: 1px solid var(--line); }
.map-viewport { position: relative; height: 650px; overflow: hidden; touch-action: none; background-color: #efefeb; background-image: linear-gradient(#d9d8d2 1px, transparent 1px), linear-gradient(90deg, #d9d8d2 1px, transparent 1px); background-size: 24px 24px; }
.map-canvas { position: absolute; left: 0; top: 0; overflow: visible; transform-origin: 0 0; user-select: none; }
.map-canvas[hidden] { display: none !important; }
.map-paper { fill: var(--white); stroke: var(--line-dark); stroke-width: 1; }
.floor-section-frame { fill: #fbfaf7; stroke: var(--line-dark); stroke-width: 1; stroke-dasharray: 6 6; }
.floor-booth .touch-cell { fill: var(--white); stroke: #bbb8b0; stroke-width: 1.15; }
.floor-booth:hover .touch-cell { fill: #fff; stroke: #69645c; stroke-width: 1.6; }
.floor-booth.selected .touch-cell { fill: var(--signal-soft); stroke: var(--signal); stroke-width: 2.4; filter: drop-shadow(0 5px 6px rgba(127,74,67,.18)); }
.map-source-label { fill: #6f6b63; font: 700 10px/1 var(--mono); letter-spacing: .07em; }
.zone-frame { fill: none; stroke: #c4c1b8; stroke-width: 1; stroke-dasharray: 5 5; }
.zone-label { fill: #6f6b63; font: 700 11px/1 var(--mono); letter-spacing: .08em; }
.zone-count { fill: #929088; font: 500 9px/1 var(--mono); }
.booth { cursor: pointer; transition: opacity .15s ease; }
.booth > * { pointer-events: none; }
.booth .touch-cell, .booth > .cell:first-of-type { pointer-events: all; }
.booth .cell { fill: var(--white); stroke: #c1beb6; stroke-width: 1; vector-effect: non-scaling-stroke; }
.booth:hover .cell { fill: #ffffff; stroke: #69645d; }
.booth.selected .cell { fill: var(--signal-soft); stroke: var(--signal); stroke-width: 2; }
.booth.favorite .cell { fill: #f1ece8; }
.booth-heart { display: none; fill: var(--signal); font: 700 13px/1 var(--sans); text-anchor: middle; paint-order: stroke; stroke: #fbfcf9; stroke-width: 3px; stroke-linejoin: round; }
.booth.favorite .booth-heart { display: block; }
.booth .cat-stripe { vector-effect: non-scaling-stroke; }
.booth-code { fill: #41413e; font: 700 10px/1 var(--mono); }
.booth-code-html { width: 100%; overflow: hidden; color: #41413e; font: 700 9px/1.2 var(--mono); white-space: nowrap; text-overflow: clip; }
.booth-name { display: flex; align-items: center; width: 100%; height: 100%; overflow: hidden; color: #56544f; font: 600 10px/1.28 var(--sans); text-align: center; overflow-wrap: anywhere; }
.booth-name .label-short { display: none; width: 100%; }
.booth[data-label-level="short"] .booth-name .label-full { display: none; }
.booth[data-label-level="short"] .booth-name .label-short { display: block; }
.mini-label-fo { display: none; overflow: visible; }
.mini-name { display: grid; place-items: center; width: 100%; height: 100%; overflow: hidden; color: #494843; font: 800 var(--mini-font-size, 8px)/1 var(--sans); letter-spacing: -.04em; text-align: center; white-space: nowrap; }
.booth[data-label-level="mini"] .mini-label-fo { display: block; }
.booth[data-label-level="mini"] .booth-name,
.booth[data-label-level="mini"] .booth-code,
.booth[data-label-level="mini"] .booth-code-html,
.booth[data-label-level="mini"] .verify-mark { display: none; }
.verify-mark { fill: var(--sage-dark); }
.verify-mark.partial { fill: none; stroke: var(--amber); stroke-width: 1.2; }
.verify-mark.single { fill: none; stroke: var(--line-dark); stroke-width: 1; }
.verify-mark.conflict { fill: #b34c44; }
.verify-mark.article { fill: none; stroke: var(--signal); stroke-width: 1.2; }
.map-controls { position: absolute; right: 16px; bottom: 40px; z-index: 4; display: flex; border: 1px solid var(--line-dark); background: var(--white); box-shadow: 0 8px 20px var(--warm-shadow); }
.map-controls button { min-width: 39px; height: 38px; padding: 0 10px; border: 0; border-right: 1px solid var(--line); color: var(--ink); background: transparent; }
.map-controls button:last-child { border-right: 0; font-size: 10px; }
.zone-jump { position: absolute; right: 16px; top: 50%; z-index: 7; display: grid; gap: 5px; padding: 7px; border: 1px solid var(--line-dark); background: rgba(253,252,249,.94); box-shadow: 0 10px 28px var(--warm-shadow); transform: translateY(-50%); backdrop-filter: blur(10px); }
.zone-jump[hidden] { display: none; }
.zone-jump::before { content: "ZONE"; padding: 3px 2px 5px; color: var(--muted); text-align: center; font: 700 8px/1 var(--mono); letter-spacing: .12em; }
.zone-jump button { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 1px solid var(--line); color: var(--ink-soft); background: var(--white); font: 800 12px/1 var(--mono); }
.zone-jump button:hover, .zone-jump button.active { color: #fff; border-color: var(--signal); background: var(--signal); }
.zone-jump .zone-all { display: none; }
.map-feature .feature-cell { fill: #eeece5; stroke: #aaa392; stroke-width: 1; stroke-dasharray: 4 3; }
.map-feature text { fill: #726d63; font: 700 9px/1 var(--mono); }
.map-help { position: absolute; left: 16px; top: 13px; bottom: auto; z-index: 3; margin: 0; padding: 6px 8px; color: var(--muted); background: rgba(253,252,249,.92); font: 9px/1 var(--mono); backdrop-filter: blur(6px); }
.booth-callout { position: absolute; z-index: 9; width: max-content; max-width: min(280px, calc(100% - 20px)); padding: 9px 11px 10px; border: 1px solid var(--signal); color: var(--ink); background: rgba(253,252,249,.97); box-shadow: 0 10px 28px rgba(45,44,40,.2); pointer-events: none; transform: translateY(-100%); backdrop-filter: blur(10px); }
.booth-callout[hidden] { display: none; }
.booth-callout span { display: block; margin-bottom: 5px; color: var(--signal); font: 800 8px/1 var(--mono); letter-spacing: .08em; }
.booth-callout strong { display: block; max-width: 255px; font-size: 11px; line-height: 1.42; }
.booth-callout::after { content: ""; position: absolute; left: var(--arrow-x, 50%); top: 100%; width: 1px; height: var(--leader-height, 14px); background: var(--signal); }
.booth-callout[data-side="below"] { transform: none; }
.booth-callout[data-side="below"]::after { top: auto; bottom: 100%; }
.empty-state { position: absolute; inset: 0; display: grid; place-content: center; gap: 8px; text-align: center; }
.empty-state[hidden] { display: none; }
.empty-state strong { font-size: 16px; }
.empty-state span { color: var(--muted); font-size: 12px; }

.result-board { position: relative; z-index: 5; height: 100%; overflow: auto; padding: 18px; touch-action: pan-y; background: #efefeb; }
.result-board[hidden] { display: none; }
.result-summary { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; color: var(--muted); font: 10px/1 var(--mono); }
.result-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.result-card { position: relative; min-height: 128px; padding: 15px; border: 1px solid var(--line); color: inherit; background: var(--white); text-align: left; }
.result-card:hover { border-color: var(--ink-soft); transform: translateY(-1px); }
.result-card .card-code { color: var(--sage-dark); font: 700 10px/1 var(--mono); }
.result-card strong { display: block; margin-top: 9px; font-size: 13px; line-height: 1.45; }
.result-card small { display: block; margin-top: 9px; color: var(--muted); font-size: 10px; line-height: 1.45; }
.result-card .dot { position: absolute; top: 15px; right: 10px; }
.show-more { display: block; min-width: 180px; margin: 20px auto 5px; padding: 11px 18px; border: 1px solid var(--line-dark); background: var(--white); }

.source-note { display: grid; grid-template-columns: 180px 1fr; gap: 40px; margin: 28px 0 80px; padding-top: 17px; border-top: 1px solid var(--line-dark); }
.source-note span { color: var(--sage-dark); font: 700 10px/1 var(--mono); letter-spacing: .1em; }
.source-note p { max-width: 900px; margin: 0; color: var(--ink-soft); font-size: 12px; line-height: 1.8; }

.scrim { position: fixed; inset: 0; z-index: 30; visibility: hidden; opacity: 0; background: rgba(48,37,27,.34); transition: opacity .2s ease; }
.scrim.open { visibility: visible; opacity: 1; }
.detail-sheet { position: fixed; right: 0; bottom: 0; z-index: 31; width: min(680px, 100%); height: 100%; overflow: auto; padding: 58px 42px 36px; border-left: 1px solid var(--line-dark); background: var(--white); box-shadow: -20px 0 60px rgba(75,57,39,.18); transform: translateX(102%); transition: transform .28s cubic-bezier(.22,.8,.24,1); }
.detail-sheet.open { transform: translateX(0); }
.sheet-handle { display: none; }
.sheet-close { position: absolute; top: 20px; right: 22px; padding: 7px 12px; border: 1px solid var(--line); background: transparent; font-size: 11px; }
.detail-kicker { color: var(--signal); font: 700 10px/1 var(--mono); letter-spacing: .1em; }
.detail-head { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 18px; }
.detail-head.no-logo { grid-template-columns: minmax(0, 1fr); }
.detail-copy { min-width: 0; max-width: 100%; }
.detail-logo { width: 72px; height: 72px; padding: 7px; object-fit: contain; border: 1px solid var(--line); background: #fff; }
.detail-title { max-width: 100%; margin: 15px 0 0; font: 700 34px/1.12 var(--display); letter-spacing: -.02em; word-break: normal; overflow-wrap: break-word; }
.detail-title.is-medium { font-size: 30px; line-height: 1.16; }
.detail-title.is-long { font-size: 27px; line-height: 1.18; }
.detail-fullname { margin: 9px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.detail-path { display: flex; flex-wrap: wrap; gap: 6px; margin: 22px 0 0; }
.detail-path span { padding: 6px 8px; border: 1px solid var(--line); color: var(--ink-soft); font: 9px/1 var(--mono); }
.detail-quick-actions { display: grid; grid-template-columns: 1fr 1.35fr; gap: 8px; margin-top: 14px; }
.favorite-btn, .profy-action { min-height: 44px; padding: 10px 12px; border: 1px solid var(--line-dark); color: var(--ink); background: var(--panel); text-align: left; font-size: 11px; font-weight: 650; }
.favorite-btn::before { content: "♡"; margin-right: 8px; color: var(--signal); font-size: 17px; vertical-align: -1px; }
.favorite-btn.active { color: var(--signal); border-color: rgba(139,68,56,.45); background: var(--signal-soft); }
.favorite-btn.active::before { content: "♥"; }
.favorite-btn:disabled { cursor: not-allowed; opacity: .55; }
.profy-action { color: #fff; border-color: var(--ink); background: var(--ink); }
.verification-banner { display: grid; grid-template-columns: auto 1fr; gap: 12px; margin: 20px 0 0; padding: 13px; border: 1px solid var(--line); background: var(--panel); }
.verification-banner .dot { margin-top: 4px; }
.verification-banner strong { display: block; font-size: 11px; }
.verification-banner p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.detail-grid { display: grid; gap: 0; margin-top: 25px; border-top: 1px solid var(--line-dark); }
.detail-block { padding: 19px 0; border-bottom: 1px solid var(--line); }
.detail-block h3 { margin: 0 0 11px; color: var(--sage-dark); font: 700 9px/1 var(--mono); letter-spacing: .1em; }
.detail-block p { margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.78; }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.tag { padding: 7px 9px; border: 1px solid var(--line); background: var(--panel); font-size: 10px; }
.product-list { margin: 0; padding-left: 18px; color: var(--ink-soft); font-size: 12px; line-height: 1.8; }
.data-empty { padding: 14px; border: 1px dashed var(--line-dark); color: var(--muted) !important; background: var(--panel); font-size: 11px !important; }
.official-products { display: grid; gap: 10px; }
.product-card { display: grid; grid-template-columns: 112px minmax(0, 1fr); min-height: 112px; border: 1px solid var(--line); background: var(--panel); }
.product-image { width: 112px; height: 100%; min-height: 112px; object-fit: cover; border-right: 1px solid var(--line); background: #fff; }
.product-image.placeholder { display: grid; place-items: center; color: var(--muted); font: 8px/1 var(--mono); }
.product-copy { min-width: 0; padding: 13px 14px; }
.product-heading { display: flex; align-items: start; gap: 8px; }
.product-heading h4 { flex: 1; margin: 0; color: var(--ink); font-size: 13px; line-height: 1.45; }
.product-heading span { flex: 0 0 auto; padding: 4px 6px; color: var(--signal); border: 1px solid rgba(139,68,56,.35); font: 8px/1 var(--mono); }
.product-copy > small { display: block; margin-top: 4px; color: var(--muted); font-size: 9px; line-height: 1.4; }
.product-copy > p { display: -webkit-box; margin-top: 9px; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 4; color: var(--ink-soft); font-size: 11px; line-height: 1.6; }
.product-meta { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.product-meta span { padding: 4px 6px; border: 1px solid var(--line); color: var(--muted); background: var(--white); font: 8px/1 var(--mono); }
.shared-booth { display: grid; gap: 6px; }
.shared-booth button { display: grid; grid-template-columns: 85px 1fr; gap: 10px; padding: 10px; border: 1px solid var(--line); color: var(--ink-soft); background: var(--panel); text-align: left; font-size: 11px; }
.shared-booth button:hover { border-color: var(--signal); color: var(--ink); }
.shared-booth span { color: var(--signal); font: 700 9px/1.4 var(--mono); }
.detail-actions { display: flex; align-items: start; justify-content: space-between; gap: 24px; margin-top: 23px; }
.locate-btn { padding: 11px 16px; border: 1px solid var(--ink); color: var(--white); background: var(--ink); font-size: 11px; white-space: nowrap; }
.source-list { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; text-align: right; }
.source-list > span { color: var(--muted); font: 700 9px/1 var(--mono); letter-spacing: .1em; }
.source-list a { color: var(--sage-dark); font-size: 10px; text-underline-offset: 3px; }
.source-list small { display: block; margin-top: 2px; color: var(--muted); text-decoration: none; }

.wishlist-sheet { position: fixed; right: 0; bottom: 0; z-index: 32; display: flex; flex-direction: column; width: min(520px, 100%); height: 100%; border-left: 1px solid var(--line-dark); background: var(--white); box-shadow: -20px 0 60px rgba(75,57,39,.18); transform: translateX(102%); transition: transform .28s cubic-bezier(.22,.8,.24,1); }
.wishlist-sheet.open { transform: translateX(0); }
.wishlist-sheet .sheet-close { z-index: 2; }
.wishlist-head { padding: 56px 32px 20px; border-bottom: 1px solid var(--line-dark); }
.wishlist-head p { margin: 0 0 9px; color: var(--signal); font: 700 9px/1 var(--mono); letter-spacing: .12em; }
.wishlist-head h2 { margin: 0; font: 700 34px/1 var(--display); letter-spacing: -.035em; }
.wishlist-head span { display: block; margin-top: 10px; color: var(--muted); font: 600 10px/1 var(--mono); }
.wishlist-content { flex: 1; overflow: auto; padding: 10px 16px 24px; }
.wishlist-item { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; gap: 11px; align-items: start; padding: 15px 4px; border-bottom: 1px solid var(--line); }
.wishlist-order { display: grid; place-items: center; width: 32px; height: 32px; color: var(--signal); border: 1px solid rgba(139,68,56,.3); font: 700 9px/1 var(--mono); }
.wishlist-item strong { display: block; font-size: 12px; line-height: 1.45; }
.wishlist-item p { margin: 6px 0 0; color: var(--muted); font: 9px/1.55 var(--mono); }
.wishlist-item-actions { display: grid; grid-template-columns: repeat(3, auto); gap: 3px; }
.wishlist-item-actions button { padding: 6px; border: 0; color: var(--ink-soft); background: transparent; font-size: 9px; }
.wishlist-item-actions button:hover { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }
.wishlist-empty { display: grid; place-content: center; min-height: 360px; padding: 36px; text-align: center; }
.wishlist-empty i { color: var(--signal); font: normal 300 42px/1 var(--sans); }
.wishlist-empty strong { margin-top: 16px; font-size: 15px; }
.wishlist-empty p { max-width: 280px; margin: 8px auto 0; color: var(--muted); font-size: 11px; line-height: 1.7; }
.wishlist-empty button { justify-self: center; margin-top: 20px; padding: 9px 13px; border: 1px solid var(--line-dark); background: var(--panel); font-size: 10px; }
.wishlist-footer { padding: 16px 20px 20px; border-top: 1px solid var(--line-dark); background: var(--panel); }
.wishlist-footer[hidden] { display: none; }
.profy-primary { width: 100%; min-height: 48px; border: 1px solid var(--signal); color: #fff; background: var(--signal); font-size: 12px; font-weight: 700; }
.wishlist-footer small { display: block; margin-top: 9px; color: var(--muted); font-size: 9px; line-height: 1.5; text-align: center; }

.prompt-dialog { position: fixed; left: 50%; top: 50%; z-index: 35; width: min(680px, calc(100% - 28px)); padding: 24px; border: 1px solid var(--line-dark); background: var(--white); box-shadow: 0 26px 80px rgba(75,57,39,.25); transform: translate(-50%, -50%); }
.prompt-dialog[hidden] { display: none; }
.prompt-dialog-head { display: flex; justify-content: space-between; gap: 20px; }
.prompt-dialog-head p { margin: 0 0 7px; color: var(--signal); font: 700 9px/1 var(--mono); letter-spacing: .12em; }
.prompt-dialog-head h2 { margin: 0; font: 700 24px/1.1 var(--display); }
.prompt-dialog-head button { align-self: start; padding: 6px 9px; border: 1px solid var(--line); background: transparent; font-size: 10px; }
.prompt-dialog > p { color: var(--ink-soft); font-size: 11px; line-height: 1.65; }
.prompt-dialog textarea { width: 100%; height: min(42vh, 320px); padding: 12px; resize: vertical; border: 1px solid var(--line); color: var(--ink); background: var(--panel); font: 10px/1.65 var(--mono); }
.prompt-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.prompt-dialog-actions button, .prompt-dialog-actions a { padding: 10px 13px; border: 1px solid var(--line-dark); color: var(--ink); background: var(--panel); text-decoration: none; font-size: 10px; }
.prompt-dialog-actions a { color: #fff; border-color: var(--ink); background: var(--ink); }
.community-fab { position: fixed; right: 22px; bottom: 82px; z-index: 18; display: grid; grid-template-columns: 48px minmax(0, 1fr); align-items: center; column-gap: 10px; row-gap: 3px; min-width: 208px; padding: 9px 12px 9px 9px; border: 1px solid rgba(127,74,67,.38); color: var(--ink); background: rgba(253,252,249,.94); box-shadow: 0 18px 48px rgba(45,44,40,.14); backdrop-filter: blur(12px); text-align: left; }
.community-fab img { grid-row: 1 / 4; width: 48px; height: 48px; padding: 4px; object-fit: contain; border: 1px solid rgba(127,74,67,.28); background: #fff; filter: contrast(1.06); }
.community-fab span { color: var(--signal); font: 800 8px/1 var(--mono); letter-spacing: .14em; }
.community-fab strong { grid-column: 2; font-size: 12px; line-height: 1.2; }
.community-fab em { grid-column: 2; color: var(--muted); font: normal 9px/1 var(--mono); }
.community-fab:hover { border-color: var(--signal); transform: translateY(-1px); }
.community-dialog { position: fixed; left: 50%; top: 50%; z-index: 35; display: grid; gap: 16px; width: min(390px, calc(100% - 28px)); padding: 24px; border: 1px solid var(--line-dark); background: var(--white); box-shadow: 0 26px 80px rgba(75,57,39,.25); transform: translate(-50%, -50%); }
.community-dialog[hidden] { display: none; }
.community-close { position: absolute; top: 14px; right: 14px; padding: 6px 9px; border: 1px solid var(--line); background: transparent; font-size: 10px; }
.community-copy p { margin: 0 0 8px; color: var(--signal); font: 800 9px/1 var(--mono); letter-spacing: .14em; }
.community-copy h2 { margin: 0; font: 700 32px/1 var(--display); letter-spacing: -.035em; }
.community-copy span { display: block; max-width: 285px; margin-top: 10px; color: var(--ink-soft); font-size: 12px; line-height: 1.7; }
.community-qr-frame { padding: 12px; border: 1px solid var(--line); background: #fff; }
.community-qr-frame img { display: block; width: 100%; height: auto; }
.community-dialog small { color: var(--muted); text-align: center; font: 700 10px/1 var(--mono); letter-spacing: .06em; }
.toast { position: fixed; left: 50%; bottom: 24px; z-index: 50; max-width: calc(100% - 28px); padding: 11px 15px; color: #fff; background: var(--ink); box-shadow: 0 12px 36px rgba(75,57,39,.25); font-size: 11px; transform: translateX(-50%); }
.toast[hidden] { display: none; }

@media (max-width: 1050px) {
  .hero { grid-template-columns: 1fr; gap: 30px; }
  .hero-index { grid-template-columns: repeat(3, 1fr); }
  .hero-index div { grid-template-columns: 1fr; }
  .filter-deck { grid-template-columns: 1.4fr repeat(2, 1fr); }
  .filter-deck > * { min-height: 58px; border-bottom: 1px solid var(--line); }
  .clear-button { border-right: 1px solid var(--line); }
}

@media (max-width: 760px) {
  .topbar { min-height: 54px; padding: 0 16px; }
  .brand-context { display: none; }
  .brand-rule { height: 18px; }
  .topbar-actions { gap: 9px; }
  .event-meta span:last-child, .event-meta i, .event-meta span:nth-child(2) { display: none; }
  .event-meta { gap: 0; }
  .wishlist-trigger { min-height: 34px; padding: 0 8px; }
  .wishlist-trigger b { display: none; }
  .wishlist-trigger span { font-size: 18px; }
  main { width: 100%; }
  .hero { padding: 34px 18px 24px; }
  .hero h1 { font-size: 42px; }
  .hero-copy > p:not(.eyebrow) { font-size: 13px; }
  .unofficial-badge { margin-top: 13px; }
  .hero-index { min-width: 0; }
  .hero-index strong { font-size: 20px; }
  .filter-deck { top: 54px; grid-template-columns: 1fr 1fr; margin: 0 10px; }
  .search-box { grid-column: 1 / -1; }
  .select-field { border-top: 0; }
  .clear-button { min-height: 42px; grid-column: 1 / -1; }
  .workspace { display: block; min-height: 0; margin: 12px 10px 0; }
  .venue-rail { display: block; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line-dark); white-space: nowrap; }
  .rail-heading, .verification-key { display: none; }
  #venueNav { display: flex; }
  .area-group { display: flex; flex: 0 0 auto; border-right: 1px solid var(--line); border-bottom: 0; }
  .area-button { width: auto; min-width: 116px; padding: 13px; }
  .area-button.active { box-shadow: inset 0 -3px var(--signal); }
  .area-button span { display: none; }
  .hall-list { display: flex; padding: 5px; }
  .hall-button { width: auto; min-width: 104px; align-items: center; padding: 8px; }
  .atlas-panel { display: flex; flex-direction: column; }
  .atlas-toolbar { order: 1; min-height: 76px; padding: 14px; }
  .atlas-toolbar h2 { font-size: 18px; }
  .atlas-status span:last-child { display: none; }
  .map-viewport { order: 3; height: 62vh; min-height: 470px; }
  .map-controls { right: 10px; bottom: 36px; }
  .zone-jump { position: relative; inset: auto; order: 2; display: flex; gap: 6px; width: 100%; padding: 7px 10px; overflow-x: auto; border: 0; border-bottom: 1px solid var(--line); box-shadow: none; background: #ebeae5; transform: none; scrollbar-width: none; }
  .zone-jump::-webkit-scrollbar { display: none; }
  .zone-jump::before { display: none; }
  .zone-jump button { flex: 0 0 auto; width: auto; min-width: 38px; height: 30px; padding: 0 11px; border-color: #c8c5bd; background: rgba(253,252,249,.8); font-size: 10px; font-weight: 600; }
  .zone-jump .zone-all { display: grid; }
  .map-viewport.mobile-overview .booth-code,
  .map-viewport.mobile-overview .booth-code-html,
  .map-viewport.mobile-overview .booth-name,
  .map-viewport.mobile-overview .verify-mark { display: none !important; }
  .map-viewport.mobile-overview .mini-label-fo { display: block !important; }
  .map-viewport.mobile-overview .mini-name { overflow: hidden; color: #62605a; font-family: var(--mono); font-weight: 600; letter-spacing: -.03em; }
  .map-viewport.mobile-overview .booth .cell,
  .map-viewport.mobile-overview .floor-booth .touch-cell { fill: #fbfaf7; stroke: #c5c2ba; }
  .map-viewport.mobile-overview .booth.favorite .cell,
  .map-viewport.mobile-overview .floor-booth.favorite .touch-cell { fill: var(--signal-soft); stroke: var(--signal); }
  .map-viewport.mobile-overview .booth-heart { display: none; }
  .map-viewport.mobile-overview .booth.favorite .booth-heart { display: block; font-size: 18px; }
  .map-viewport.mobile-overview .cat-stripe { opacity: .45; }
  .booth-callout { display: none !important; }
  .booth .cell, .floor-booth .touch-cell { stroke: #c7c4bc; stroke-width: .65; }
  .booth:hover .cell, .floor-booth:hover .touch-cell { stroke-width: .65; }
  .booth.selected .cell, .floor-booth.selected .touch-cell { stroke: var(--signal); stroke-width: 1.45; filter: none; }
  .booth .cat-stripe { opacity: .68; transform: scaleX(.62); transform-origin: left center; }
  .floor-section-frame, .zone-frame { stroke: #cfccc4; stroke-width: .7; }
  .mini-name { overflow: visible; color: #5e5c56; font-family: "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif; font-weight: 400; letter-spacing: 0; }
  .booth-name { color: #56544f; font-family: "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif; font-size: var(--label-font-size, 10px); font-weight: 400; line-height: 1.22; }
  .map-help { left: 10px; top: 10px; }
  .result-board { padding: 10px; }
  .result-grid { grid-template-columns: 1fr; }
  .source-note { grid-template-columns: 1fr; gap: 10px; margin: 24px 18px 60px; }
  .detail-sheet { top: auto; width: 100%; height: min(82vh, 720px); padding: 48px 20px 28px; border-top: 1px solid var(--line-dark); border-left: 0; transform: translateY(102%); border-radius: 18px 18px 0 0; }
  .detail-sheet.open { transform: translateY(0); }
  .sheet-handle { display: block; position: absolute; top: 10px; left: 50%; width: 38px; height: 4px; border-radius: 4px; background: var(--line-dark); transform: translateX(-50%); }
  .sheet-close { top: 17px; }
  .detail-title { padding-right: 52px; font-size: 24px; line-height: 1.18; letter-spacing: 0; }
  .detail-title.is-medium { font-size: 22px; line-height: 1.2; }
  .detail-title.is-long { font-size: 20px; line-height: 1.22; }
  .detail-head { grid-template-columns: 54px minmax(0, 1fr); gap: 12px; }
  .detail-head.no-logo { grid-template-columns: minmax(0, 1fr); }
  .detail-logo { width: 54px; height: 54px; }
  .product-card { grid-template-columns: 88px minmax(0, 1fr); }
  .product-image { width: 88px; min-height: 104px; }
  .detail-actions { align-items: stretch; flex-direction: column; }
  .source-list { align-items: flex-start; text-align: left; }
  .detail-quick-actions { grid-template-columns: 1fr; }
  .wishlist-sheet { top: auto; width: 100%; height: min(84vh, 760px); border-top: 1px solid var(--line-dark); border-left: 0; border-radius: 18px 18px 0 0; transform: translateY(102%); }
  .wishlist-sheet.open { transform: translateY(0); }
  .wishlist-head { padding: 46px 20px 16px; }
  .wishlist-head h2 { font-size: 27px; }
  .wishlist-content { padding: 6px 12px 18px; }
  .wishlist-item { grid-template-columns: 32px minmax(0, 1fr); }
  .wishlist-item-actions { grid-column: 2; justify-content: start; }
  .wishlist-footer { padding-bottom: max(18px, env(safe-area-inset-bottom)); }
  .prompt-dialog { padding: 18px; }
  .prompt-dialog-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .prompt-dialog-actions button, .prompt-dialog-actions a { text-align: center; }
  .community-fab { left: 12px; right: auto; bottom: max(14px, env(safe-area-inset-bottom)); display: grid; grid-template-columns: 40px minmax(0, 1fr); justify-content: start; column-gap: 9px; row-gap: 3px; width: 176px; min-width: 0; min-height: 56px; padding: 8px 10px 8px 8px; border-color: rgba(127,74,67,.32); }
  .community-fab img { grid-row: 1 / 4; width: 40px; height: 40px; padding: 3px; }
  .community-fab span { font-size: 8px; }
  .community-fab strong { grid-column: 2; font-size: 11px; }
  .community-fab em { display: block; grid-column: 2; font-size: 8px; }
  .community-dialog { top: auto; bottom: 0; width: 100%; max-height: 86vh; overflow: auto; padding: 46px 22px max(22px, env(safe-area-inset-bottom)); border-right: 0; border-bottom: 0; border-left: 0; border-radius: 18px 18px 0 0; transform: translateX(-50%); }
  .community-dialog::before { content: ""; position: absolute; top: 10px; left: 50%; width: 38px; height: 4px; border-radius: 4px; background: var(--line-dark); transform: translateX(-50%); }
  .community-copy h2 { font-size: 28px; }
  .community-copy span { max-width: none; font-size: 12px; }
  .community-qr-frame { max-width: 330px; justify-self: center; }
  .toast { bottom: max(18px, env(safe-area-inset-bottom)); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
