@import url("./fonts/lxgw/lxgwwenkai-regular.css");

:root {
  --ink: #080b0f;
  --ink-soft: #10151b;
  --paper: #f0eee8;
  --paper-deep: #e4e0d6;
  --white: #faf9f6;
  --muted: #a9aaab;
  --line: rgba(255,255,255,.16);
  --line-dark: rgba(8,11,15,.16);
  --vermillion: #d55a40;
  --gold: #c5a36a;
  --green: #7b9b80;
  --radius: 22px;
  --page: min(1340px, calc(100vw - 64px));
  --display: "LXGW WenKai", "Yu Mincho", "Hiragino Mincho ProN", "Noto Serif JP", "Songti SC", serif;
  --serif: "LXGW WenKai", "Yu Mincho", "Hiragino Mincho ProN", "Noto Serif JP", "Songti SC", serif;
  --sans: "LXGW WenKai", "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--ink); }
body { margin: 0; color: var(--paper); background: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.65; overflow-x: hidden; }
body.light-page { color: var(--ink); background: var(--paper); }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
::selection { background: var(--vermillion); color: white; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.container { width: var(--page); margin-inline: auto; }
.section { position: relative; padding: 124px 0; }
.section--paper { background: var(--paper); color: var(--ink); }
.section--soft { color: var(--paper); background: var(--ink-soft); }
.eyebrow { display: flex; gap: 12px; align-items: center; margin: 0 0 22px; font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.eyebrow::before { content: ""; width: 26px; height: 1px; background: currentColor; opacity: .7; }
.display { margin: 0; max-width: 1000px; font-family: var(--display); font-size: clamp(48px, 7vw, 110px); font-weight: 400; line-height: .98; letter-spacing: -.025em; }
.display em { color: var(--gold); font-family: var(--serif); font-weight: 400; }
.section-title { margin: 0; font-family: var(--display); font-size: clamp(40px, 5.5vw, 78px); font-weight: 400; line-height: 1.05; letter-spacing: -.02em; }
.section-lead { max-width: 600px; color: #5f625f; font-size: 17px; }
.text-muted { color: var(--muted); }
.accent { color: var(--vermillion); }

.site-header { position: fixed; inset: 0 0 auto; z-index: 50; padding: 18px 0; color: var(--paper); transition: background .35s ease, padding .35s ease, border-color .35s ease; border-bottom: 1px solid transparent; }
.site-header.is-scrolled { padding: 11px 0; background: rgba(8,11,15,.82); border-color: var(--line); backdrop-filter: blur(18px); }
.nav { display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 13px; font-family: var(--serif); font-weight: 700; letter-spacing: .08em; }
.brand-mark { position: relative; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; }
.brand-mark::before, .brand-mark::after { content: ""; position: absolute; border-radius: 50%; border: 1px solid var(--gold); }
.brand-mark::before { inset: 7px; }
.brand-mark::after { inset: 14px; background: var(--vermillion); border: 0; }
.brand small { display: block; color: var(--muted); font-family: var(--sans); font-size: 8px; font-weight: 600; letter-spacing: .16em; }
.nav-links { display: flex; gap: 27px; align-items: center; font-family: var(--serif); font-size: 14px; }
.nav-links a { position: relative; opacity: .76; transition: opacity .25s ease; }
.nav-links a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -7px; height: 1px; background: var(--gold); transition: right .3s ease; }
.nav-links a:hover, .nav-links a[aria-current="page"] { opacity: 1; }
.nav-links a:hover::after, .nav-links a[aria-current="page"]::after { right: 0; }
.nav-settings { display: flex; align-items: center; gap: 3px; margin-left: auto; }
.nav-settings label { position: relative; }
.nav-settings select { min-height: 34px; padding: 0 22px 0 8px; color: rgba(255,255,255,.76); border: 0; background: transparent; appearance: auto; font-size: 10px; letter-spacing: .04em; cursor: pointer; }
.nav-settings select:hover, .nav-settings select:focus { color: white; outline: none; }
.nav-settings option { color: var(--ink); background: var(--paper); }
.nav-cta { display: inline-flex; min-height: 42px; padding: 0 17px; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 999px; background: rgba(255,255,255,.06); }
.nav-cta-arrow { display: inline-grid; width: 22px; height: 22px; place-items: center; font-family: var(--sans); font-size: 15px; line-height: 1; transition: transform .25s ease; }
.nav-cta:hover .nav-cta-arrow { transform: translateX(3px); }
.menu-toggle { display: none; width: 44px; height: 44px; place-items: center; border: 1px solid var(--line); border-radius: 50%; color: white; background: transparent; cursor: pointer; }
.menu-toggle span, .menu-toggle span::after { display: block; width: 17px; height: 1px; background: currentColor; content: ""; transition: transform .25s ease; }
.menu-toggle span::after { transform: translateY(6px); }
.menu-toggle[aria-expanded="true"] span { transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] span::after { transform: rotate(-90deg); }

.hero { position: relative; min-height: 100svh; display: flex; align-items: flex-end; overflow: hidden; background: #070b10; }
.hero-media { position: absolute; inset: 0; background-image: linear-gradient(90deg, rgba(5,8,12,.94) 0%, rgba(5,8,12,.55) 39%, rgba(5,8,12,.08) 70%), linear-gradient(0deg, rgba(5,8,12,.88), transparent 52%), url("./images/hero-fireworks.png"); background-size: cover; background-position: center; transform: scale(1.025); animation: hero-breathe 16s ease-in-out infinite alternate; }
.hero-noise { position: absolute; inset: 0; opacity: .11; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E"); mix-blend-mode: soft-light; }
#firework-canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: .62; }
.hero-content { position: relative; z-index: 2; width: var(--page); padding: 190px 0 64px; }
.hero-copy { max-width: 900px; }
.hero .eyebrow { color: rgba(255,255,255,.74); }
.hero-sub { max-width: 520px; margin: 28px 0 34px; color: rgba(255,255,255,.72); font-size: clamp(15px, 1.5vw, 18px); }
.hero-actions { display: flex; align-items: center; gap: 13px; flex-wrap: wrap; }
.button { display: inline-flex; min-height: 54px; align-items: center; justify-content: center; gap: 12px; padding: 0 24px; border: 1px solid transparent; border-radius: 999px; font-size: 14px; font-weight: 650; cursor: pointer; transition: transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease; }
.button:hover { transform: translateY(-2px); }
.button--light { background: var(--paper); color: var(--ink); }
.button--light:hover { background: white; }
.button--outline { border-color: rgba(255,255,255,.35); color: white; background: rgba(255,255,255,.04); backdrop-filter: blur(8px); }
.button--dark { background: var(--ink); color: var(--paper); }
.button--accent { background: var(--vermillion); color: white; }
.button svg { width: 16px; height: 16px; }
.scroll-cue { position: absolute; right: 32px; bottom: 32px; z-index: 3; display: flex; align-items: center; gap: 11px; color: rgba(255,255,255,.55); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; transform: rotate(90deg); transform-origin: right bottom; }
.scroll-cue::after { content: ""; width: 54px; height: 1px; background: currentColor; animation: cue 1.7s ease-in-out infinite; }
@keyframes hero-breathe { to { transform: scale(1.07); } }
@keyframes cue { 50% { transform: scaleX(.45); opacity: .4; } }

.intro-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 11vw; align-items: start; }
.vertical-ja { margin: 0; writing-mode: vertical-rl; font-family: var(--serif); font-size: clamp(25px, 3vw, 46px); letter-spacing: .12em; line-height: 1.5; }
.culture-copy { display: grid; grid-template-columns: 150px 1fr; gap: 50px; }
.culture-copy p { margin: 0 0 24px; color: #575b59; }
.culture-stat { margin-top: 55px; padding-top: 26px; border-top: 1px solid var(--line-dark); display: flex; justify-content: space-between; gap: 20px; }
.culture-stat strong { display: block; font-family: var(--display); font-size: 40px; line-height: 1; }
.culture-stat span { font-size: 12px; color: #666; }

.section-head { display: flex; justify-content: space-between; gap: 48px; align-items: end; margin-bottom: 54px; }
.section-head > *:last-child { max-width: 470px; }
.ranking-list { border-top: 1px solid var(--line); }
.rank-row { position: relative; display: grid; grid-template-columns: 74px minmax(280px, 1.4fr) minmax(210px, .8fr) 150px 46px; align-items: center; gap: 22px; min-height: 118px; border-bottom: 1px solid var(--line); transition: background .3s ease, padding .3s ease; overflow: hidden; }
.rank-row::before { content: ""; position: absolute; inset: 0; opacity: 0; background: linear-gradient(90deg, rgba(213,90,64,.11), transparent 60%); transition: opacity .3s ease; }
.rank-row:hover { padding-inline: 18px; }
.rank-row:hover::before { opacity: 1; }
.rank-number { font-family: var(--serif); color: var(--gold); font-size: 33px; }
.rank-name { position: relative; z-index: 1; }
.rank-name strong { display: block; font-family: var(--serif); font-size: clamp(20px, 2vw, 29px); font-weight: 400; }
.rank-name span, .rank-location { color: var(--muted); font-size: 13px; }
.rank-date strong { display: block; font-size: 15px; }
.rank-date span { color: var(--muted); font-size: 11px; }
.rank-arrow { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; transition: background .25s ease, color .25s ease; }
.rank-row:hover .rank-arrow { color: var(--ink); background: var(--paper); }

.region-section { overflow: hidden; }
.region-explorer { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(330px, .65fr); gap: 30px; align-items: stretch; }
.region-map { position: relative; min-height: 650px; border: 0; background: radial-gradient(circle at 70% 28%, rgba(197,163,106,.11), transparent 32%), linear-gradient(145deg, #111821, #0b1016 72%); overflow: hidden; }
.map-stage { position: absolute; inset: 42px 36px 46px; display: grid; place-items: center; }
.japan-map-svg { width: auto; height: 100%; max-width: 100%; overflow: hidden; transition: filter .35s ease; filter: drop-shadow(0 18px 24px rgba(0,0,0,.32)); }
.japan-map-svg .prefecture-shape { outline: none; }
.japan-map-svg .prefecture-shape path { fill: var(--prefecture-fill) !important; stroke: #0a0e13 !important; stroke-width: 4.5 !important; stroke-linejoin: round; cursor: pointer; outline: none; transition: fill .25s ease, opacity .3s ease, filter .25s ease; }
.japan-map-svg .prefecture-shape:hover path, .japan-map-svg .prefecture-shape:focus-visible path { filter: brightness(1.28); }
.japan-map-svg [data-region="北海道"] { --prefecture-fill: #7f9c9d; }
.japan-map-svg [data-region="東北"] { --prefecture-fill: #748a70; }
.japan-map-svg [data-region="関東"] { --prefecture-fill: #b55f4d; }
.japan-map-svg [data-region="中部"] { --prefecture-fill: #b08a52; }
.japan-map-svg [data-region="関西"] { --prefecture-fill: #7e708b; }
.japan-map-svg [data-region="中国"] { --prefecture-fill: #617b91; }
.japan-map-svg [data-region="四国"] { --prefecture-fill: #648f86; }
.japan-map-svg [data-region="九州・沖縄"] { --prefecture-fill: #9a6a68; }
.japan-map-svg .is-region-muted { opacity: .055; pointer-events: none; }
.japan-map-svg .is-region-active { opacity: 1; }
.japan-map-svg .is-prefecture-active path { fill: var(--paper) !important; filter: drop-shadow(0 0 12px rgba(197,163,106,.78)); }
.region-labels { opacity: 1; transition: opacity .22s ease; }
.region-labels.is-hidden { opacity: 0; pointer-events: none; }
.region-labels text { fill: #f8f4ec; stroke: rgba(8,11,15,.88); stroke-width: 10; paint-order: stroke; font-family: var(--sans); font-size: 48px; font-weight: 700; letter-spacing: .04em; text-anchor: middle; dominant-baseline: middle; cursor: pointer; outline: none; transition: fill .2s ease; }
.region-labels text:hover, .region-labels text:focus-visible { fill: #e8c27f; }
.prefecture-labels { pointer-events: none; }
.prefecture-labels text { fill: #f6f1e8; stroke: rgba(8,11,15,.72); stroke-width: 4; paint-order: stroke; font-family: var(--sans); font-size: 18px; font-weight: 700; text-anchor: middle; dominant-baseline: middle; }
.map-hint { position: absolute; left: 22px; bottom: 15px; margin: 0; color: rgba(255,255,255,.45); font-size: 9px; letter-spacing: .08em; }
.map-back, .detail-back { border: 0; color: inherit; background: transparent; cursor: pointer; }
.map-back { position: absolute; left: 18px; top: 16px; z-index: 3; padding: 8px 11px; color: var(--paper); border: 1px solid rgba(255,255,255,.18); border-radius: 999px; font-size: 10px; backdrop-filter: blur(12px); }
.detail-back { margin: -8px 0 24px; padding: 0; color: #696b67; font-size: 11px; }
.map-loading, .map-error { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 14px; color: var(--muted); }
.map-loading span { width: 32px; height: 32px; border: 1px solid rgba(255,255,255,.18); border-top-color: var(--gold); border-radius: 50%; animation: orbit 1s linear infinite; }
.map-loading p, .map-error span { margin: 0; font-size: 11px; }
.map-error strong { color: var(--paper); font-family: var(--serif); font-size: 22px; font-weight: 400; }
.region-detail { min-height: 610px; padding: 46px 40px; color: var(--ink); background: var(--paper); }
.region-detail .eyebrow { color: #77736c; }
.region-detail-title { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding-bottom: 25px; border-bottom: 1px solid var(--line-dark); }
.region-detail-title h3 { margin: 0; font-family: var(--display); font-size: clamp(48px, 5vw, 72px); font-weight: 400; line-height: 1; }
.region-detail-title > strong { color: var(--vermillion); font-family: var(--serif); font-size: 42px; font-weight: 400; line-height: 1; white-space: nowrap; }
.region-detail-title small { color: #72736f; font-family: var(--sans); font-size: 11px; font-weight: 400; }
.region-detail > p { margin: 28px 0; color: #62645f; }
.region-directory, .prefecture-grid { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line-dark); border-left: 1px solid var(--line-dark); }
.region-directory button, .prefecture-grid button { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; min-height: 50px; padding: 9px 11px; color: var(--ink); text-align: left; border: 0; border-right: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark); background: transparent; cursor: pointer; transition: background .2s ease; }
.region-directory button:hover, .prefecture-grid button:hover, .prefecture-grid button.is-active { background: rgba(197,163,106,.17); }
.region-directory b, .region-directory em, .prefecture-grid b, .prefecture-grid em { font-size: 11px; font-style: normal; font-weight: 400; }
.region-directory em, .prefecture-grid em { color: #777; white-space: nowrap; }
.prefecture-grid button { grid-template-columns: 1fr auto; }
.region-swatch { width: 8px; height: 8px; border-radius: 50%; background: #888; }
.region-swatch[data-color="北海道"] { background: #7f9c9d; }
.region-swatch[data-color="東北"] { background: #748a70; }
.region-swatch[data-color="関東"] { background: #b55f4d; }
.region-swatch[data-color="中部"] { background: #b08a52; }
.region-swatch[data-color="関西"] { background: #7e708b; }
.region-swatch[data-color="中国"] { background: #617b91; }
.region-swatch[data-color="四国"] { background: #648f86; }
.region-swatch[data-color="九州・沖縄"] { background: #9a6a68; }
.region-link { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 34px; font-size: 13px; font-weight: 700; }
.region-link svg { width: 19px; }

.tool-section { overflow: hidden; }
.journey-tools { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line-dark); border: 1px solid var(--line-dark); }
.journey-tool { position: relative; min-height: 400px; padding: 32px; display: flex; flex-direction: column; justify-content: space-between; color: var(--ink); background: var(--paper); overflow: hidden; transition: color .35s ease, background .35s ease; }
.journey-tool::before { content: ""; position: absolute; width: 260px; height: 260px; right: -130px; bottom: -150px; border: 1px solid currentColor; border-radius: 50%; opacity: .12; transition: transform .5s ease; }
.journey-tool:hover { color: var(--paper); background: var(--ink); }
.journey-tool:hover::before { transform: scale(1.2); }
.tool-index { color: var(--vermillion); font-family: var(--serif); font-size: 15px; }
.journey-tool p { margin: 0 0 13px; color: var(--gold); font-size: 10px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.journey-tool h3 { margin: 0 0 20px; font-family: var(--display); font-size: clamp(29px, 3vw, 42px); font-weight: 400; line-height: 1.12; }
.journey-tool div > span { display: block; max-width: 330px; color: #666963; font-size: 13px; }
.journey-tool:hover div > span { color: var(--muted); }
.journey-tool i { position: absolute; top: 28px; right: 28px; display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid currentColor; border-radius: 50%; font-family: var(--sans); font-size: 17px; font-style: normal; }

.ai-band { overflow: hidden; }
.ai-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 80px; align-items: center; }
.ai-orb { position: relative; width: min(420px, 80vw); aspect-ratio: 1; margin-inline: auto; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(197,163,106,.34); }
.ai-orb::before, .ai-orb::after { content: ""; position: absolute; border-radius: inherit; border: 1px solid rgba(255,255,255,.15); animation: orbit 10s linear infinite; }
.ai-orb::before { inset: 13%; border-style: dashed; }
.ai-orb::after { inset: 29%; background: radial-gradient(circle, rgba(213,90,64,.6), rgba(197,163,106,.15) 45%, transparent 69%); filter: blur(3px); }
.ai-orb span { position: relative; z-index: 2; font-family: var(--serif); font-size: 72px; }
@keyframes orbit { to { transform: rotate(360deg); } }

.page-hero { padding: 170px 0 80px; background: var(--ink); color: var(--paper); }
.page-hero .display { max-width: 930px; font-size: clamp(54px, 7vw, 98px); }
.page-hero-row { display: flex; justify-content: space-between; align-items: end; gap: 50px; }
.page-hero-copy { max-width: 440px; color: var(--muted); }
.notice { padding: 13px 0; background: #2b211b; color: #e9d8bd; font-size: 12px; text-align: center; }

.filters { position: sticky; top: 65px; z-index: 20; padding: 18px 0; background: rgba(240,238,232,.92); border-bottom: 1px solid var(--line-dark); backdrop-filter: blur(15px); }
.filter-bar { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr auto; gap: 10px; }
.field { position: relative; }
.field label { position: absolute; left: 15px; top: 7px; color: #737570; font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; pointer-events: none; }
.field input, .field select, .field textarea { width: 100%; min-height: 57px; padding: 22px 40px 7px 15px; color: var(--ink); background: #faf9f6; border: 1px solid rgba(8,11,15,.14); border-radius: 10px; outline: 0; appearance: none; transition: border .2s ease, box-shadow .2s ease; }
.field textarea { min-height: 130px; padding-top: 28px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--vermillion); box-shadow: 0 0 0 3px rgba(213,90,64,.1); }
.filter-count { min-width: 92px; display: grid; place-items: center; border-left: 1px solid var(--line-dark); font-family: var(--serif); font-size: 13px; }

.events-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 20px; }
.event-card { position: relative; display: flex; min-height: 480px; flex-direction: column; justify-content: space-between; padding: 24px; color: white; border-radius: var(--radius); overflow: hidden; isolation: isolate; background: #17191b; transition: transform .35s ease; }
.event-card:hover { transform: translateY(-7px); }
.event-card::before { content: ""; position: absolute; inset: 0; z-index: -2; background-image: linear-gradient(180deg, rgba(5,8,12,.08), rgba(5,8,12,.92)), url("./images/hero-fireworks.png"); background-size: auto 125%; background-position: var(--card-position, 70%) center; transition: transform .7s ease, filter .4s ease; filter: saturate(var(--card-sat, .85)) hue-rotate(var(--card-hue, 0deg)); }
.event-card:hover::before { transform: scale(1.055); }
.event-card::after { content: attr(data-kanji); position: absolute; right: -8px; top: 55px; z-index: -1; font-family: var(--serif); font-size: 150px; line-height: 1; color: rgba(255,255,255,.08); }
.card-top { display: flex; justify-content: space-between; gap: 10px; align-items: start; }
.card-index { font-family: var(--serif); font-size: 14px; }
.status { display: inline-flex; align-items: center; gap: 7px; padding: 7px 10px; border-radius: 999px; background: rgba(9,12,15,.55); border: 1px solid rgba(255,255,255,.22); backdrop-filter: blur(10px); font-size: 10px; }
.status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 12px var(--gold); }
.status.sale::before { background: #7bc49b; box-shadow: 0 0 12px #7bc49b; }
.card-bottom h2 { margin: 0 0 4px; font-family: var(--serif); font-size: clamp(25px, 2vw, 34px); font-weight: 400; line-height: 1.2; }
.card-bottom > p { margin: 0 0 24px; color: rgba(255,255,255,.65); font-size: 12px; }
.card-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.25); }
.card-facts span { display: block; color: rgba(255,255,255,.52); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.card-facts strong { font-size: 13px; font-weight: 500; }
.empty-state { display: none; padding: 90px 20px; text-align: center; border: 1px solid var(--line-dark); border-radius: var(--radius); }

.events-search-hero { padding: 158px 0 62px; color: var(--paper); background: radial-gradient(circle at 82% 12%, rgba(197,163,106,.15), transparent 28%), var(--ink); }
.events-search-hero h1 { max-width: 920px; margin: 0; font-family: var(--display); font-size: clamp(52px, 6.7vw, 94px); font-weight: 400; line-height: 1.02; letter-spacing: -.035em; }
.events-search-hero > .container > p:not(.eyebrow) { max-width: 650px; margin: 26px 0 38px; color: rgba(255,255,255,.66); font-size: 16px; }
.festival-search { position: relative; display: grid; grid-template-columns: .85fr .85fr 1.45fr auto; gap: 1px; padding: 7px; color: var(--ink); background: var(--paper); border-radius: 15px; box-shadow: 0 24px 55px rgba(0,0,0,.3); }
.search-field { min-width: 0; padding: 8px 17px; border-right: 1px solid var(--line-dark); }
.search-field label { display: block; color: #77736c; font-size: 9px; font-weight: 700; letter-spacing: .13em; }
.search-field input { width: 100%; height: 31px; padding: 0; color: var(--ink); border: 0; outline: 0; background: transparent; font-size: 14px; }
.date-trigger { width: 100%; height: 31px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0; color: #77736c; border: 0; background: transparent; text-align: left; cursor: pointer; }
.date-trigger.has-value { color: var(--ink); }
.date-trigger i { position: relative; width: 14px; height: 13px; flex: 0 0 auto; border: 1.5px solid currentColor; border-radius: 2px; }
.date-trigger i::before { content: ""; position: absolute; left: -1.5px; right: -1.5px; top: 3px; border-top: 1.5px solid currentColor; }
.date-trigger i::after { content: ""; position: absolute; left: 2px; right: 2px; top: -3px; height: 4px; border-left: 1.5px solid currentColor; border-right: 1.5px solid currentColor; }
.date-trigger.is-open { color: var(--vermillion); }
.location-trigger { width: 100%; height: 31px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0; color: #77736c; border: 0; background: transparent; text-align: left; cursor: pointer; }
.location-trigger.has-value { color: var(--ink); }
.location-trigger i { width: 8px; height: 8px; flex: 0 0 auto; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform .2s ease; }
.location-trigger.is-open { color: var(--vermillion); }
.location-trigger.is-open i { transform: rotate(225deg) translate(-2px, -2px); }
.festival-search > button { min-width: 180px; display: flex; align-items: center; justify-content: center; gap: 13px; padding: 0 22px; color: white; border: 0; border-radius: 10px; background: var(--vermillion); font-weight: 700; cursor: pointer; }
.festival-search > button svg { width: 17px; }
.date-picker-popover[hidden] { display: none; }
.date-picker-popover { position: absolute; left: 7px; top: calc(100% + 12px); z-index: 30; width: min(390px, calc(100vw - 40px)); padding: 22px; color: var(--ink); border: 1px solid rgba(8,11,15,.12); border-radius: 14px; background: #faf8f3; box-shadow: 0 28px 65px rgba(0,0,0,.28); }
.date-picker-top { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.date-picker-top small, .date-picker-top strong { display: block; }
.date-picker-top small { color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .08em; }
.date-picker-top strong { margin-top: 2px; font-family: var(--serif); font-size: 21px; font-weight: 400; }
.date-picker-top > div:last-child { display: flex; gap: 5px; }
.date-picker-top button { width: 35px; height: 35px; border: 1px solid var(--line-dark); border-radius: 50%; background: transparent; cursor: pointer; }
.calendar-weekdays, .calendar-days { display: grid; grid-template-columns: repeat(7, 1fr); }
.calendar-weekdays { margin-bottom: 5px; color: #888b87; text-align: center; font-size: 9px; }
.calendar-days button { position: relative; aspect-ratio: 1; color: #353937; border: 0; border-radius: 50%; background: transparent; font-size: 12px; cursor: pointer; }
.calendar-days button:hover { background: #e7e1d6; }
.calendar-days button.is-outside { color: #b7b5b0; }
.calendar-days button.is-in-range { border-radius: 0; background: rgba(213,90,64,.09); }
.calendar-days button.is-selected { z-index: 1; color: white; background: var(--vermillion); }
.calendar-days button.is-today:not(.is-selected)::after { content: ""; position: absolute; left: 50%; bottom: 5px; width: 3px; height: 3px; border-radius: 50%; background: var(--vermillion); transform: translateX(-50%); }
.date-picker-foot { display: flex; justify-content: space-between; margin-top: 15px; padding-top: 14px; border-top: 1px solid var(--line-dark); }
.date-picker-foot button { padding: 5px 0; color: #666a66; border: 0; background: transparent; font-size: 11px; cursor: pointer; }
.date-picker-foot button:last-child { color: var(--vermillion); font-weight: 700; }
.location-picker-popover[hidden] { display: none; }
.location-picker-popover { position: absolute; right: 7px; top: calc(100% + 12px); z-index: 30; width: min(720px, calc(100vw - 40px)); padding: 23px; color: var(--ink); border: 1px solid rgba(8,11,15,.12); border-radius: 14px; background: #faf8f3; box-shadow: 0 28px 65px rgba(0,0,0,.28); }
.location-picker-head { display: flex; align-items: start; justify-content: space-between; gap: 20px; }
.location-picker-head small, .location-picker-head strong { display: block; }
.location-picker-head small { color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .1em; }
.location-picker-head strong { margin-top: 2px; font-family: var(--serif); font-size: 22px; font-weight: 400; }
.location-picker-head > button { width: 34px; height: 34px; padding: 0; color: #777; border: 1px solid var(--line-dark); border-radius: 50%; background: transparent; font-size: 20px; cursor: pointer; }
.location-breadcrumb { min-height: 37px; display: flex; align-items: center; gap: 7px; margin: 17px 0 12px; padding: 8px 10px; background: #ede9e1; font-size: 11px; }
.location-breadcrumb button { padding: 0; color: #626662; border: 0; background: transparent; cursor: pointer; }
.location-breadcrumb b { color: var(--vermillion); font-weight: 600; }
.location-levels { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark); }
.location-levels section { min-width: 0; padding: 15px 12px 15px 0; }
.location-levels section + section { padding-left: 12px; border-left: 1px solid var(--line-dark); }
.location-levels h3 { margin: 0 0 8px; color: #858781; font-size: 9px; letter-spacing: .12em; }
.location-levels section > div { max-height: 245px; overflow: auto; scrollbar-width: thin; }
.location-levels button { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 9px; color: #4f534f; border: 0; border-radius: 6px; background: transparent; text-align: left; font-size: 12px; cursor: pointer; }
.location-levels button:hover, .location-levels button.is-active { color: var(--ink); background: #e8e3da; }
.location-levels button.is-active { box-shadow: inset 2px 0 var(--vermillion); }
.location-levels button em { color: #999b96; font-size: 9px; font-style: normal; }
.location-levels .is-disabled p { margin: 12px 8px; color: #aaa; font-size: 11px; }
.location-picker-foot { display: flex; justify-content: space-between; padding-top: 15px; }
.location-picker-foot button { padding: 7px 0; color: #666a66; border: 0; background: transparent; font-size: 11px; cursor: pointer; }
.location-picker-foot button:last-child { min-width: 96px; color: white; border-radius: 7px; background: var(--vermillion); font-weight: 700; }
.event-results-section { padding: 62px 0 110px; color: var(--ink); background: var(--paper); scroll-margin-top: 62px; }
.results-layout { display: grid; grid-template-columns: 245px minmax(0,1fr); gap: 48px; align-items: start; }
.event-filter-sidebar { position: sticky; top: 92px; border-top: 1px solid var(--line-dark); }
.filter-sidebar-head { display: flex; align-items: center; justify-content: space-between; padding: 19px 0; border-bottom: 1px solid var(--line-dark); }
.filter-sidebar-head strong { font-family: var(--serif); font-size: 17px; }
.filter-sidebar-head button { padding: 0; color: #777; border: 0; background: transparent; font-size: 11px; cursor: pointer; }
.filter-group { padding: 22px 0; border-bottom: 1px solid var(--line-dark); }
.filter-group h3 { margin: 0 0 12px; font-size: 11px; letter-spacing: .11em; }
.region-filter { width: 100%; display: flex; justify-content: space-between; padding: 7px 9px; color: #595d5a; border: 0; border-radius: 6px; background: transparent; text-align: left; cursor: pointer; }
.region-filter:hover, .region-filter.is-active { color: var(--ink); background: rgba(8,11,15,.065); }
.region-filter em { color: #8a8d89; font-size: 11px; font-style: normal; }
.check-filter { display: flex; align-items: center; gap: 10px; padding: 7px 0; color: #595d5a; font-size: 13px; cursor: pointer; }
.check-filter input { width: 16px; height: 16px; accent-color: var(--vermillion); }
.filter-note { margin-top: 22px; padding: 17px; background: #e4e0d6; }
.filter-note strong, .filter-note span { display: block; }
.filter-note strong { margin-bottom: 5px; font-size: 11px; letter-spacing: .12em; }
.filter-note span { color: #666a66; font-size: 11px; line-height: 1.55; }
.results-toolbar { min-height: 58px; display: flex; align-items: start; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line-dark); }
.results-toolbar > div strong, .results-toolbar > div span { display: block; }
.results-toolbar > div strong { font-family: var(--serif); font-size: 22px; font-weight: 400; }
.results-toolbar > div span { color: #777; font-size: 11px; }
.results-toolbar label { display: flex; align-items: center; gap: 8px; color: #777; font-size: 11px; }
.results-toolbar select { padding: 5px 26px 5px 8px; color: var(--ink); border: 0; border-bottom: 1px solid var(--line-dark); background: transparent; }
.events-list { display: grid; gap: 18px; padding-top: 24px; }
.event-result-card { min-width: 0; display: grid; grid-template-columns: minmax(220px, .68fr) minmax(0, 1.32fr); overflow: hidden; border: 1px solid rgba(8,11,15,.13); border-radius: 16px; background: #f8f6f1; transition: transform .3s ease, box-shadow .3s ease; }
.event-result-card:hover { transform: translateY(-3px); box-shadow: 0 18px 35px rgba(30,27,21,.09); }
.result-card-image { min-height: 310px; background-image: linear-gradient(180deg, rgba(5,8,12,.04), rgba(5,8,12,.45)), url("./images/hero-fireworks.png"); background-size: auto 135%; background-position: var(--card-position, 70%) center; filter: saturate(.82) hue-rotate(var(--card-hue, 0deg)); }
.result-card-body { min-width: 0; display: flex; flex-direction: column; padding: 25px 27px 22px; }
.result-card-heading { display: flex; justify-content: space-between; gap: 14px; }
.result-card-heading > div { min-width: 0; }
.result-card-heading > div > span { color: var(--vermillion); font-size: 10px; font-weight: 700; letter-spacing: .1em; }
.result-card-heading h2 { margin: 5px 0 1px; font-family: var(--serif); font-size: clamp(23px, 2vw, 31px); font-weight: 400; line-height: 1.2; }
.result-card-heading p { margin: 0; color: #777; font-size: 11px; }
.status--light { flex: 0 0 auto; align-self: start; color: var(--ink); border-color: rgba(8,11,15,.12); background: #ebe7df; }
.result-highlight { display: -webkit-box; margin: 19px 0; overflow: hidden; color: #585c58; font-size: 12px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.result-facts { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 13px; padding: 15px 0; border-top: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark); }
.result-facts small, .result-facts strong { display: block; }
.result-facts small { color: #8a8d88; font-size: 9px; }
.result-facts strong { margin-top: 3px; font-size: 12px; font-weight: 500; }
.result-card-foot { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin-top: auto; padding-top: 17px; }
.result-card-foot small, .result-card-foot strong { display: block; }
.result-card-foot small { color: #777; font-size: 10px; }
.result-card-foot strong { font-family: var(--serif); font-size: 18px; font-weight: 400; }
.result-card-foot > a { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; }
.result-card-foot > a svg { width: 16px; }

.detail-hero { min-height: 88svh; display: flex; align-items: flex-end; position: relative; overflow: hidden; color: var(--paper); background: #070a0e; }
.detail-bg { position: absolute; inset: 0; background-image: linear-gradient(0deg, #080b0f 0%, rgba(8,11,15,.08) 70%), linear-gradient(90deg, rgba(8,11,15,.5), transparent), url("./images/hero-fireworks.png"); background-size: cover; background-position: center; }
.detail-content { position: relative; z-index: 2; width: var(--page); padding: 180px 0 55px; }
.detail-location { margin: 0 0 18px; color: #e1c69a; font-size: 12px; font-weight: 700; letter-spacing: .12em; }
.detail-location::before { content: ""; width: 28px; display: inline-block; margin: 0 12px 3px 0; border-top: 1px solid currentColor; }
.detail-title { max-width: 1080px; margin: 0; font-family: var(--serif); font-size: clamp(46px, 6vw, 88px); font-weight: 400; line-height: 1.06; letter-spacing: -.035em; }
.detail-title small { display: block; margin-top: 14px; color: rgba(255,255,255,.68); font-family: var(--sans); font-size: 15px; font-weight: 400; letter-spacing: .08em; }
.detail-quick { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin-top: 55px; border-top: 1px solid var(--line); }
.detail-quick div { padding: 20px 18px 0 0; }
.detail-quick span { color: var(--muted); font-size: 10px; letter-spacing: .1em; }
.detail-quick strong { display: block; margin-top: 5px; font-family: var(--serif); font-size: 19px; font-weight: 400; }
.detail-quick small { display: block; margin-top: 4px; color: rgba(255,255,255,.42); font-size: 9px; }
.detail-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(290px, .5fr); gap: 80px; }
.detail-block { padding: 52px 0; border-bottom: 1px solid var(--line-dark); }
.detail-block:first-child { padding-top: 0; }
.detail-block h2 { margin: 0 0 24px; font-family: var(--serif); font-size: 34px; font-weight: 400; }
.detail-block p { color: #4f5351; font-size: 17px; }
.detail-block .editorial-copy { white-space: pre-line; }
.detail-index { margin: 0 0 9px !important; color: var(--vermillion) !important; font-size: 10px !important; font-weight: 700; letter-spacing: .13em; }
.fact-table { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line-dark); }
.fact { padding: 19px 16px 19px 0; border-bottom: 1px solid var(--line-dark); }
.fact--wide { grid-column: 1 / -1; }
.fact span { display: block; color: #777; font-size: 10px; letter-spacing: .08em; }
.fact strong { display: block; margin-top: 5px; font-family: var(--serif); font-size: 17px; font-weight: 400; }
.fact-platforms { display: flex !important; flex-wrap: wrap; gap: 24px; }
.fact-platforms > a { min-width: 260px; display: inline-flex; align-items: baseline; gap: 18px; padding: 5px 0 3px; border-bottom: 1px solid #aaa59b; transition: color .2s ease, border-color .2s ease; }
.fact-platforms > a:hover { color: var(--vermillion); border-color: currentColor; }
.fact-platforms b { font-family: var(--serif); font-size: 17px; font-weight: 400; }
.fact-platforms small { display: inline-flex; align-items: center; gap: 6px; color: #777; font-family: var(--sans); font-size: 10px; white-space: nowrap; }
.fact-platforms svg { width: 14px; height: 14px; }
.detail-links { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin-top: 25px; }
.text-link { display: inline-flex; align-items: center; gap: 7px; padding-bottom: 3px; border-bottom: 1px solid currentColor; font-size: 12px; font-weight: 700; }
.text-link svg { width: 16px; height: 16px; }
.detail-aside { position: sticky; top: 100px; align-self: start; overflow: hidden; padding: 29px; color: var(--ink); border: 1px solid rgba(74,50,38,.13); border-radius: var(--radius); background: linear-gradient(145deg, #eee3d6, #e8d7c8); box-shadow: 0 18px 45px rgba(55,38,27,.09); }
.detail-aside::before { content: ""; position: absolute; width: 150px; height: 150px; top: -92px; right: -72px; border: 1px solid rgba(190,96,68,.16); border-radius: 50%; }
.detail-aside h3 { position: relative; margin: 11px 0 10px; font-family: var(--serif); font-size: 26px; font-weight: 400; line-height: 1.3; }
.detail-aside p { position: relative; margin: 0; color: #655d57; font-size: 12px; line-height: 1.75; }
.detail-aside .button { width: 100%; margin-top: 15px; }
.purchase-kicker { position: relative; display: block; color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .12em; }
.purchase-card-link { position: relative; min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 22px; padding: 0 17px; color: white; border-radius: 999px; background: var(--ink); font-size: 12px; font-weight: 700; transition: transform .2s ease, background .2s ease; }
.purchase-card-link:hover { transform: translateY(-2px); }
.purchase-card-link--accent { background: var(--vermillion); }
.purchase-card-link svg { width: 17px; height: 17px; }
.purchase-state { display: block; margin: 9px 0 0; padding: 13px 14px; color: #f3d9aa; border: 1px solid rgba(231,184,102,.25); border-radius: 8px; background: rgba(231,184,102,.1); font-size: 14px; font-weight: 700; }
.purchase-state.supported { color: #bfe8cf; border-color: rgba(107,195,143,.3); background: rgba(107,195,143,.11); }
.purchase-state.blocked { color: #ffc5ba; border-color: rgba(224,105,83,.3); background: rgba(224,105,83,.12); }
.purchase-state.conditional { color: #f3d9aa; }
.purchase-checks { margin: 24px 0 4px; border-top: 1px solid rgba(255,255,255,.13); }
.purchase-checks div { padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.13); }
.purchase-checks dt { color: rgba(255,255,255,.42); font-size: 9px; letter-spacing: .1em; }
.purchase-checks dd { margin: 4px 0 0; color: rgba(255,255,255,.88); font-size: 12px; line-height: 1.5; }
.source-line { display: flex; justify-content: space-between; gap: 20px; margin-top: 20px; color: #777; font-size: 11px; }
.seat-intro { display: flex; justify-content: space-between; align-items: end; gap: 24px; }
.seat-intro p { max-width: 650px; margin: 0; }
.seat-intro > span { flex: 0 0 auto; color: #777; font-size: 10px; }
.seat-filters { display: grid; gap: 10px; margin-top: 27px; padding: 16px; border-radius: 12px; background: #e6e1d8; }
.seat-filters > div { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.seat-filters span { width: 38px; color: #777; font-size: 10px; }
.seat-filters button { padding: 7px 11px; color: #5f625f; border: 1px solid transparent; border-radius: 999px; background: transparent; font-size: 11px; cursor: pointer; }
.seat-filters button:hover { border-color: rgba(8,11,15,.16); }
.seat-filters button.is-active { color: white; background: var(--ink); }
.seat-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.seat-item { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 16px 18px; padding: 20px; border: 1px solid rgba(8,11,15,.12); border-radius: 12px; background: #f8f6f1; }
.seat-item[hidden] { display: none; }
.seat-heading strong, .seat-heading span, .seat-channel small, .seat-channel span, .seat-stock small, .seat-stock span { display: block; }
.seat-heading span { margin-bottom: 4px; color: var(--vermillion); font-size: 9px; font-weight: 700; }
.seat-heading strong { font-family: var(--serif); font-size: 18px; font-weight: 400; }
.seat-item > b { align-self: start; font-family: var(--serif); font-size: 18px; font-weight: 400; white-space: nowrap; }
.seat-channel small, .seat-stock small { color: #8a8d89; font-size: 9px; }
.seat-channel span, .seat-stock span { margin-top: 3px; color: #5c605d; font-size: 11px; line-height: 1.5; }
.seat-stock .seat-stock__value { display: inline-flex; width: fit-content; align-items: center; gap: 6px; font-weight: 700; }
.seat-stock__value::before { width: 6px; height: 6px; border-radius: 50%; background: #989b96; content: ""; }
.seat-stock__value--available::before { background: #4f8b6d; }
.seat-stock__value--low { color: #9a681d !important; }
.seat-stock__value--low::before { background: #c59038; }
.seat-stock__value--soldout { color: #a34b43 !important; }
.seat-stock__value--soldout::before { background: #b9544c; }
.seat-item details { grid-column: 1 / -1; padding-top: 13px; border-top: 1px solid var(--line-dark); }
.seat-item summary { color: #555956; font-size: 11px; cursor: pointer; }
.seat-item details p { margin: 12px 0 0; font-size: 12px; line-height: 1.65; }
.seat-empty { margin: 20px 0 0 !important; padding: 18px; text-align: center; background: #e6e1d8; font-size: 13px !important; }
.transport-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.transport-list article { padding: 23px; border: 1px solid rgba(8,11,15,.1); border-radius: 11px; background: rgba(255,255,255,.4); }
.transport-list article:only-child { grid-column: 1 / -1; }
.transport-list article > span { color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .1em; }
.transport-list h3 { margin: 7px 0 10px; font-family: var(--serif); font-size: 22px; font-weight: 400; }
.transport-list p { margin: 0 0 15px; font-size: 13px; }
.transport-alert { margin: 14px 0; padding: 12px; color: #6f493e; border-left: 2px solid var(--vermillion); background: #ece2db; font-size: 11px; line-height: 1.6; }
.navigation-address { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 18px; margin-bottom: 20px; padding: 24px; border-radius: 14px; background: #e6dfd3; }
.navigation-address__pin { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%; background: var(--vermillion); color: #fff; }
.navigation-address__pin svg { width: 22px; height: 22px; }
.navigation-address span { display: block; color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .1em; }
.navigation-address strong { display: block; margin-top: 5px; font-family: var(--serif); font-size: 19px; font-weight: 400; }
.navigation-address p { margin: 7px 0 0; font-size: 11px; line-height: 1.6; }
.transport-accordions { display: grid; gap: 12px; }
.transport-accordion { overflow: hidden; border: 1px solid transparent; border-radius: 14px; background: #ece7de; transition: border-color .2s ease, background .2s ease; }
.transport-accordion[open] { border-color: rgba(8,11,15,.1); background: #e8e2d8; }
.transport-accordion summary { display: grid; grid-template-columns: 46px minmax(0, 1fr) auto 22px; align-items: center; gap: 15px; padding: 14px 18px; cursor: pointer; list-style: none; }
.transport-accordion summary::-webkit-details-marker { display: none; }
.transport-accordion__icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: #dfcfc4; color: #a34d38; }
.transport-accordion__icon svg { width: 27px; height: 27px; }
.transport-accordion--taxi .transport-accordion__icon { background: #dfe2d3; color: #657054; }
.transport-accordion--drive .transport-accordion__icon { background: #d9dfe0; color: #50666b; }
.transport-accordion__title { font-family: var(--serif); font-size: 21px; }
.transport-accordion summary > small { color: #777b77; font-size: 10px; }
.transport-accordion summary > i { position: relative; width: 18px; height: 18px; }
.transport-accordion summary > i::before, .transport-accordion summary > i::after { position: absolute; left: 3px; top: 8px; width: 12px; height: 1px; background: currentColor; content: ""; transition: transform .25s ease; }
.transport-accordion summary > i::after { transform: rotate(90deg); }
.transport-accordion[open] summary > i::after { transform: rotate(0); }
.transport-accordion__body { padding: 2px 16px 16px; }
.transport-note { padding: 24px; border-radius: 12px; background: #e9e3d9; }
.transport-note h3 { margin: 0 0 8px; font-family: var(--serif); font-size: 20px; font-weight: 400; }
.transport-note p { margin: 0; font-size: 12px; line-height: 1.7; }
.transport-parking { margin: 14px 0; padding: 12px; border-left: 2px solid #9c7d45; background: #ece8df; color: #62543e; font-size: 11px; line-height: 1.6; }
.material-empty { margin-top: 15px; padding: 26px; border: 1px dashed rgba(8,11,15,.2); border-radius: 12px; background: rgba(255,255,255,.26); }
.material-empty span, .material-empty strong { display: block; }
.material-empty span { color: #777; font-size: 9px; letter-spacing: .1em; }
.material-empty strong { margin-top: 7px; font-family: var(--serif); font-size: 20px; font-weight: 400; }
.material-empty p { max-width: 660px; margin: 8px 0 0; font-size: 12px; }
.detail-reminder { margin-top: 30px; padding: 35px !important; border: 0; border-radius: 14px; background: #e5ddd0; }
.detail-reminder p:last-child { margin-bottom: 0; }

.guide-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.ai-panel { padding: 42px; border-radius: var(--radius); background: #141920; color: white; }
.ai-panel h2 { margin: 0 0 10px; font-family: var(--serif); font-size: 36px; font-weight: 400; }
.ai-form { display: grid; gap: 12px; margin-top: 30px; }
.ai-form .field input, .ai-form .field select, .ai-form .field textarea { background: rgba(255,255,255,.07); color: white; border-color: rgba(255,255,255,.16); }
.ai-form .field select option { color: black; }
.ai-form .field label { color: rgba(255,255,255,.5); }
.ai-result { min-height: 100%; padding: 42px; border: 1px solid var(--line-dark); border-radius: var(--radius); background: #e6e1d7; }
.ai-result-head { display: flex; align-items: center; gap: 12px; }
.ai-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--vermillion); box-shadow: 0 0 18px var(--vermillion); animation: pulse 1.8s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .35; transform: scale(.7); } }
.recommendation { display: block; padding: 20px 0; border-bottom: 1px solid var(--line-dark); }
.recommendation strong { display: block; font-family: var(--serif); font-size: 20px; }
.recommendation small { color: #666; }

.advisor-hero { min-height: 100svh; display: flex; align-items: center; padding: 145px 0 80px; color: var(--paper); background: radial-gradient(circle at 74% 24%, rgba(213,90,64,.12), transparent 28%), radial-gradient(circle at 18% 85%, rgba(197,163,106,.09), transparent 28%), #080b0f; }
.advisor-hero-grid { display: grid; grid-template-columns: minmax(0,.85fr) minmax(480px,1.15fr); gap: 90px; align-items: center; }
.advisor-intro h1 { margin: 13px 0 27px; font-family: var(--display); font-size: clamp(56px,6.2vw,92px); font-weight: 400; line-height: .99; letter-spacing: -.03em; }
.advisor-intro h1 em { color: var(--gold); font-style: normal; }
.advisor-intro > p:not(.eyebrow) { max-width: 560px; color: rgba(255,255,255,.62); font-size: 15px; line-height: 1.9; }
.advisor-path { display: flex; flex-wrap: wrap; gap: 22px; margin-top: 45px; color: rgba(255,255,255,.38); font-size: 9px; letter-spacing: .1em; }
.advisor-console { padding: 29px; border: 1px solid rgba(255,255,255,.13); border-radius: 19px; background: rgba(255,255,255,.055); box-shadow: 0 30px 80px rgba(0,0,0,.25); backdrop-filter: blur(14px); }
.advisor-console-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 1px solid rgba(255,255,255,.12); }
.advisor-console-head span { display: flex; align-items: center; gap: 9px; font-size: 11px; font-weight: 700; }
.advisor-console-head i { width: 7px; height: 7px; border-radius: 50%; background: var(--vermillion); box-shadow: 0 0 13px var(--vermillion); }
.advisor-console-head small { color: rgba(255,255,255,.38); font-size: 9px; }
.journey-prompt { margin-top: 24px; }
.journey-prompt > label { display: block; margin-bottom: 9px; color: rgba(255,255,255,.48); font-size: 10px; }
.journey-prompt textarea { width: 100%; min-height: 180px; padding: 18px; resize: vertical; color: white; border: 1px solid rgba(255,255,255,.15); border-radius: 11px; outline: none; background: rgba(255,255,255,.05); font: 14px/1.8 var(--sans); }
.journey-prompt textarea:focus { border-color: rgba(213,90,64,.7); box-shadow: 0 0 0 3px rgba(213,90,64,.1); }
.journey-prompt textarea::placeholder { color: rgba(255,255,255,.3); }
.prompt-examples { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.prompt-examples button { padding: 7px 10px; color: rgba(255,255,255,.57); border: 1px solid rgba(255,255,255,.12); border-radius: 999px; background: transparent; font-size: 9px; cursor: pointer; }
.prompt-examples button:hover { color: white; border-color: rgba(255,255,255,.3); }
.prompt-actions { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-top: 23px; }
.prompt-actions > label { color: rgba(255,255,255,.43); font-size: 9px; }
.prompt-actions select { display: block; margin-top: 5px; padding: 6px 24px 6px 0; color: white; border: 0; border-bottom: 1px solid rgba(255,255,255,.24); background: #0f1318; }
.prompt-actions .button { min-width: 180px; }
.advisor-privacy { margin: 17px 0 0; color: rgba(255,255,255,.3); font-size: 9px; }
.advisor-results { min-height: 420px; scroll-margin-top: 70px; }
.advisor-empty { max-width: 760px; padding: 20px 0 50px; }
.advisor-empty > span, .advisor-result-head span { color: var(--vermillion); font-size: 10px; font-weight: 700; letter-spacing: .1em; }
.advisor-empty h2, .advisor-result-head h2 { margin: 10px 0 16px; font-family: var(--display); font-size: clamp(42px,5vw,70px); font-weight: 400; line-height: 1.05; }
.advisor-empty p { color: #676a67; }
.advisor-result-head { display: flex; align-items: end; justify-content: space-between; gap: 28px; padding-bottom: 28px; border-bottom: 1px solid var(--line-dark); }
.advisor-result-head h2 { margin-bottom: 0; font-size: clamp(34px,4vw,56px); }
.advisor-match-list { display: grid; }
.advisor-match { display: grid; grid-template-columns: 60px minmax(0,1fr) 185px; gap: 25px; align-items: center; padding: 27px 0; border-bottom: 1px solid var(--line-dark); }
.match-rank { color: var(--vermillion); font-family: var(--serif); font-size: 18px; }
.advisor-match > div:nth-child(2) > span { color: var(--vermillion); font-size: 9px; font-weight: 700; }
.advisor-match h3 { margin: 5px 0; font-family: var(--serif); font-size: 25px; font-weight: 400; }
.advisor-match p { margin: 0; color: #666a66; font-size: 11px; }
.match-facts { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 12px; color: #444844; font-size: 10px; }
.match-actions { text-align: right; }
.match-actions a { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; }
.match-actions a svg { width: 16px; }
.match-actions small { display: block; margin-top: 7px; color: #777; font-size: 9px; }
.advisor-result-note { margin: 22px 0 0; color: #777; font-size: 11px; }
.advisor-result-note a { margin-left: 3px; text-decoration: underline; text-underline-offset: 3px; }
.advisor-ai-summary { max-width: 720px; margin: 13px 0 0; color: #656963; font-size: 12px; line-height: 1.8; }
.match-caution { display: block; margin-top: 8px; color: #8a6e62; font-size: 9px; line-height: 1.7; }
.advisor-loading { min-height: 250px; display: flex; align-items: center; justify-content: center; gap: 20px; text-align: left; }
.advisor-loading > span { width: 44px; height: 44px; display: grid; place-items: center; color: var(--vermillion); border: 1px solid var(--line-dark); border-radius: 50%; animation: advisor-pulse 1.4s ease-in-out infinite; }
.advisor-loading svg { width: 20px; }
.advisor-loading small { color: var(--vermillion); font-size: 9px; letter-spacing: .12em; }
.advisor-loading h2 { margin: 8px 0 0; font-family: var(--display); font-size: clamp(25px, 3vw, 42px); font-weight: 400; }
.prompt-actions button:disabled { cursor: wait; opacity: .68; }
@keyframes advisor-pulse { 50% { transform: scale(1.08); box-shadow: 0 0 0 9px rgba(213,90,64,.08); } }
.assistant-tool-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; overflow: hidden; border: 1px solid rgba(255,255,255,.12); border-radius: 15px; background: rgba(255,255,255,.12); }
.assistant-tool-card { min-height: 430px; display: flex; flex-direction: column; padding: 28px; overflow: hidden; color: var(--paper); background: #12171d; transition: background .3s ease; }
.assistant-tool-card:hover { background: #181e25; }
.tool-visual { height: 178px; display: grid; place-items: center; margin: -28px -28px 25px; color: var(--paper); border-bottom: 1px solid rgba(255,255,255,.09); background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.045), transparent 67%); }
.tool-visual svg { width: 88%; height: 88%; stroke: currentColor; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.assistant-tool-card--compare .tool-visual { color: #cf866d; }
.assistant-tool-card--route .tool-visual { color: #82aaa0; }
.assistant-tool-card--ticket .tool-visual { color: #a994b8; }
.tool-card-copy { margin-top: auto; }
.assistant-tool-card small { color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .1em; }
.assistant-tool-card h3 { margin: 9px 0 16px; font-family: var(--display); font-size: 34px; font-weight: 400; line-height: 1.12; }
.assistant-tool-card p { margin: 0; color: rgba(255,255,255,.48); font-size: 12px; }
.assistant-tool-card i { align-self: end; width: 43px; height: 43px; display: grid; place-items: center; margin-top: 20px; color: rgba(255,255,255,.78); border: 1px solid rgba(255,255,255,.3); border-radius: 50%; font-style: normal; transition: color .2s ease, border-color .2s ease, transform .2s ease; }
.assistant-tool-card:hover i { color: white; border-color: white; transform: translateX(3px); }
.tool-page-hero { padding: 155px 0 80px; color: var(--paper); background: var(--ink); }
.tool-back { display: inline-block; margin-bottom: 55px; color: rgba(255,255,255,.5); font-size: 10px; }
.tool-page-hero h1 { max-width: 900px; margin: 12px 0 24px; font-family: var(--display); font-size: clamp(55px,7vw,96px); font-weight: 400; line-height: 1; }
.tool-page-hero > .container > p:last-child { max-width: 650px; color: rgba(255,255,255,.58); }
.release-empty-page { min-height: 70svh; }
.release-list { display: grid; }
.release-list article { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 45px; padding: 38px 0; border-bottom: 1px solid var(--line-dark); }
.release-list article > div:first-child span, .release-list article > div:first-child strong { display: block; }
.release-list article > div:first-child span { color: #777; font-size: 10px; }
.release-list article > div:first-child strong { margin-top: 7px; color: var(--vermillion); }
.release-list h2 { margin: 0 0 10px; font-family: var(--serif); font-size: 28px; font-weight: 400; }
.release-list p, .release-list li { color: #5c605d; font-size: 13px; }
.article-copy { max-width: 820px; }
.article-copy h2 { margin: 0 0 14px; padding-top: 34px; font-family: var(--serif); font-size: 30px; font-weight: 400; }
.article-copy h2:first-child { padding-top: 0; }
.article-copy p { margin: 0; color: #555b58; font-size: 15px; line-height: 2; }
.article-copy a { color: var(--vermillion); text-underline-offset: 4px; }
.compare-selector { display: flex; align-items: center; flex-wrap: wrap; gap: 11px; margin-bottom: 32px; padding-bottom: 25px; border-bottom: 1px solid var(--line-dark); }
.compare-selector > div { margin-right: 18px; }
.compare-selector > div span, .compare-selector > div small { display: block; }
.compare-selector > div span { font-weight: 700; }
.compare-selector > div small { color: #777; font-size: 9px; }
.compare-selector label { cursor: pointer; }
.compare-selector input { position: absolute; opacity: 0; }
.compare-selector label span { display: block; padding: 9px 13px; color: #555; border: 1px solid var(--line-dark); border-radius: 999px; font-size: 11px; }
.compare-selector input:checked + span { color: white; background: var(--ink); }
.compare-table-wrap { overflow-x: auto; }
.compare-table { width: 100%; min-width: 760px; border-collapse: collapse; }
.compare-table th, .compare-table td { min-width: 190px; padding: 19px; border: 1px solid var(--line-dark); text-align: left; vertical-align: top; }
.compare-table thead th { background: #e5e0d7; }
.compare-table thead th:first-child, .compare-table tbody th { min-width: 125px; color: #777; background: #ebe7df; font-size: 10px; }
.compare-table thead span, .compare-table thead strong, .compare-table thead a { display: block; }
.compare-table thead span { color: var(--vermillion); font-size: 9px; }
.compare-table thead strong { margin: 6px 0 12px; font-family: var(--serif); font-size: 18px; font-weight: 400; }
.compare-table thead a { font-size: 10px; text-decoration: underline; text-underline-offset: 3px; }
.compare-table td { color: #444844; font-size: 12px; line-height: 1.6; }
.itinerary-layout { display: grid; grid-template-columns: minmax(340px,.7fr) minmax(0,1.3fr); gap: 20px; align-items: start; }
.itinerary-form, .itinerary-result { padding: 34px; border-radius: 15px; }
.itinerary-form { color: white; background: var(--ink); }
.itinerary-form h2, .itinerary-result h2 { margin: 7px 0 25px; font-family: var(--serif); font-size: 30px; font-weight: 400; }
.itinerary-form label { display: block; margin-top: 12px; color: rgba(255,255,255,.5); font-size: 9px; }
.itinerary-form select, .itinerary-form input { width: 100%; margin-top: 6px; padding: 13px; color: white; border: 1px solid rgba(255,255,255,.15); border-radius: 8px; background: #141920; }
.itinerary-form select option { color: black; background: white; }
.itinerary-form .button { width: 100%; margin-top: 22px; }
.itinerary-result { min-height: 410px; border: 1px solid var(--line-dark); background: #e7e2d9; }
.itinerary-result > span { color: var(--vermillion); font-size: 9px; font-weight: 700; }
.itinerary-result > p { color: #666; font-size: 12px; }
.day-timeline { margin: 25px 0 0; padding: 0; list-style: none; }
.day-timeline li { display: grid; grid-template-columns: 105px 1fr; gap: 20px; padding: 17px 0; border-top: 1px solid var(--line-dark); }
.day-timeline time { color: var(--vermillion); font-size: 10px; font-weight: 700; }
.day-timeline strong { font-family: var(--serif); font-size: 17px; font-weight: 400; }
.day-timeline p { margin: 4px 0 0; color: #666; font-size: 11px; }
.tool-empty { padding: 50px; text-align: center; background: #e7e2d9; }

.platform-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; }
.platform-card { min-height: 310px; display: flex; flex-direction: column; justify-content: space-between; padding: 26px; border: 1px solid var(--line-dark); border-radius: var(--radius); transition: background .25s ease, transform .25s ease; }
.platform-card:hover { background: white; transform: translateY(-5px); }
.platform-mark { width: 58px; height: 58px; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: white; font-family: var(--serif); font-size: 22px; }
.platform-card h3 { margin: 20px 0 5px; font-family: var(--serif); font-size: 24px; font-weight: 400; }
.platform-card p { color: #686b68; font-size: 13px; }
.platform-card .arrow-link { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding-top: 14px; border-top: 1px solid var(--line-dark); font-size: 12px; }
.platform-card .arrow-link svg { width: 18px; height: 18px; flex: 0 0 auto; }

.platform-detail { display: grid; grid-template-columns: .7fr 1.3fr; gap: 70px; }
.platform-facts { display: grid; border-top: 1px solid var(--line-dark); }
.platform-fact { display: grid; grid-template-columns: 160px 1fr; gap: 20px; padding: 22px 0; border-bottom: 1px solid var(--line-dark); }
.platform-fact span { color: #777; font-size: 12px; }
.steps { counter-reset: step; }
.step { position: relative; padding: 0 0 34px 57px; counter-increment: step; }
.step::before { content: counter(step, decimal-leading-zero); position: absolute; left: 0; top: 0; color: var(--vermillion); font-family: var(--serif); }
.step::after { content: ""; position: absolute; left: 15px; top: 29px; bottom: 7px; width: 1px; background: var(--line-dark); }

.contact-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 90px; }
.contact-links { margin-top: 50px; border-top: 1px solid var(--line); }
.contact-link { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 22px 0; border-bottom: 1px solid var(--line); }
.contact-link span { color: var(--muted); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
.contact-link strong { font-weight: 500; }
.contact-form { padding: 38px; background: var(--paper); color: var(--ink); border-radius: var(--radius); }
.contact-form form { display: grid; gap: 12px; }
.form-note, .success-message { color: #666; font-size: 11px; }
.success-message { display: none; padding: 14px; background: #dce8df; border-radius: 8px; }
.success-message a { text-decoration: underline; text-underline-offset: 3px; }

.missing-event-link { display: inline-flex; align-items: center; gap: 10px; margin: -18px 0 28px; color: #d8c49f; font-size: 12px; border-bottom: 1px solid rgba(216,196,159,.45); }
.missing-event-link span { transition: transform .2s ease; }
.missing-event-link:hover span { transform: translateX(4px); }
.empty-state .button { width: max-content; margin: 22px auto 0; }
.support-hero { min-height: 100svh; padding: 155px 0 110px; color: var(--paper); background: radial-gradient(circle at 12% 18%, rgba(197,163,106,.13), transparent 31%), var(--ink); }
.support-layout { display: grid; grid-template-columns: minmax(0, .85fr) minmax(520px, 1.15fr); gap: 90px; align-items: start; }
.support-back { display: inline-block; margin-bottom: 54px; color: rgba(255,255,255,.55); font-size: 11px; }
.support-intro h1 { margin: 0; font-family: var(--display); font-size: clamp(58px, 6.4vw, 92px); font-weight: 400; line-height: 1; }
.support-intro > p:not(.eyebrow) { max-width: 530px; margin: 30px 0 46px; color: rgba(255,255,255,.64); }
.support-promise { display: grid; grid-template-columns: 35px 1fr; gap: 14px; max-width: 470px; padding: 18px 0; border-top: 1px solid var(--line); }
.support-promise > span { color: var(--gold); font-family: var(--serif); }
.support-promise p, .support-promise strong { display: block; margin: 0; }
.support-promise p { color: rgba(255,255,255,.55); font-size: 12px; }
.support-promise strong { color: var(--paper); font-size: 14px; }
.support-form-card { padding: 38px; color: var(--ink); border-radius: 18px; background: var(--paper); box-shadow: 0 32px 70px rgba(0,0,0,.25); }
.support-form-head { margin-bottom: 28px; padding-bottom: 20px; border-bottom: 1px solid var(--line-dark); }
.support-form-head span, .support-form-head strong { display: block; }
.support-form-head span { color: var(--vermillion); font-size: 9px; font-weight: 700; letter-spacing: .13em; }
.support-form-head strong { margin-top: 4px; font-family: var(--serif); font-size: 26px; font-weight: 400; }
.support-form-card form { display: grid; gap: 12px; }
.support-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.support-form-card .button { margin-top: 5px; }

.footer { padding: 80px 0 30px; background: #05070a; color: white; }
.footer-top { display: grid; grid-template-columns: 1.3fr .7fr; gap: 80px; padding-bottom: 70px; }
.footer-title { margin: 0; font-family: var(--display); font-size: clamp(50px, 7vw, 98px); font-weight: 400; line-height: 1; letter-spacing: -.025em; }
.footer-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 15px 30px; align-content: start; padding-top: 10px; }
.footer-nav a { color: var(--muted); font-size: 13px; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; padding-top: 23px; border-top: 1px solid var(--line); color: #777; font-size: 10px; }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .8s cubic-bezier(.2,.75,.2,1), transform .8s cubic-bezier(.2,.75,.2,1); }
.reveal.is-visible { opacity: 1; transform: none; }
.reveal-delay { transition-delay: .12s; }

@media (max-width: 980px) {
  :root { --page: min(100% - 40px, 820px); }
  .nav-links { position: fixed; inset: 0; z-index: -1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 26px; padding: 100px 32px 50px; background: rgba(7,10,14,.97); font-family: var(--serif); font-size: 28px; transform: translateX(100%); transition: transform .45s cubic-bezier(.2,.8,.2,1); }
  .nav-links.is-open { transform: none; }
  .nav-cta { display: none; }
  .menu-toggle { display: grid; }
  .intro-grid, .ai-grid, .detail-layout, .platform-detail, .contact-layout, .guide-grid, .region-explorer, .support-layout { grid-template-columns: 1fr; gap: 55px; }
  .culture-copy { grid-template-columns: 100px 1fr; }
  .rank-row { grid-template-columns: 52px 1.2fr .8fr 42px; }
  .rank-location { display: none; }
  .events-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .filter-bar { grid-template-columns: 1fr 1fr; }
  .filter-count { min-height: 45px; grid-column: span 2; border-left: 0; }
  .platform-grid { grid-template-columns: repeat(2,1fr); }
  .detail-aside { position: static; }
  .journey-tools { grid-template-columns: 1fr; }
  .journey-tool { min-height: 300px; }
  .advisor-hero-grid, .itinerary-layout { grid-template-columns: 1fr; }
  .advisor-hero-grid { gap: 55px; }
  .assistant-tool-grid { grid-template-columns: 1fr; }
  .assistant-tool-card { min-height: 300px; }
  .results-layout { grid-template-columns: 210px minmax(0,1fr); gap: 28px; }
  .event-result-card { grid-template-columns: 190px minmax(0,1fr); }
  .result-card-image { min-height: 340px; }
}

@media (max-width: 760px) {
  .festival-search { grid-template-columns: 1fr 1fr; }
  .search-field--place { grid-column: 1 / -1; border-top: 1px solid var(--line-dark); }
  .festival-search > button { grid-column: 1 / -1; min-height: 52px; }
  .results-layout { grid-template-columns: 1fr; }
  .event-filter-sidebar { position: static; }
  .filter-group:first-of-type { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; }
  .filter-group:first-of-type h3 { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
  :root { --page: calc(100% - 32px); --radius: 17px; }
  body { font-size: 15px; }
  .section { padding: 82px 0; }
  .site-header { padding: 13px 0; }
  .brand { font-size: 13px; }
  .brand-mark { width: 30px; height: 30px; }
  .brand small { display: none; }
  .nav { gap: 8px; }
  .nav-settings { gap: 0; }
  .nav-settings select { width: 58px; padding: 0 2px; font-size: 9px; }
  .hero { min-height: 760px; }
  .hero-media { background-image: linear-gradient(180deg, rgba(5,8,12,.33), rgba(5,8,12,.93) 78%), url("./images/hero-fireworks.png"); background-position: 64% center; }
  .hero-content { padding: 145px 0 37px; }
  .display { font-size: clamp(48px, 15vw, 68px); line-height: .96; }
  .hero-sub { margin: 20px 0 27px; }
  .hero-actions { align-items: stretch; flex-direction: column; }
  .hero-actions .button { width: 100%; }
  .scroll-cue { display: none; }
  .intro-grid { gap: 45px; }
  .culture-copy { grid-template-columns: 1fr; gap: 28px; }
  .vertical-ja { writing-mode: horizontal-tb; font-size: 28px; }
  .culture-stat { margin-top: 35px; }
  .culture-stat strong { font-size: 29px; }
  .section-head, .page-hero-row { display: block; }
  .section-head > *:last-child, .page-hero-copy { margin-top: 22px; }
  .rank-row { grid-template-columns: 38px 1fr 35px; gap: 10px; min-height: 104px; }
  .rank-date { display: none; }
  .rank-name strong { font-size: 20px; }
  .rank-arrow { width: 35px; height: 35px; }
  .region-map { min-height: 510px; }
  .map-stage { inset: 50px 18px 45px; }
  .japan-map-svg { width: 100%; height: auto; max-height: 100%; }
  .region-detail { min-height: auto; padding: 34px 25px; }
  .region-detail-title h3 { font-size: 48px; }
  .region-directory, .prefecture-grid { grid-template-columns: 1fr 1fr; }
  .journey-tool { min-height: 270px; padding: 26px; }
  .ai-orb { width: 72vw; }
  .page-hero { padding: 130px 0 55px; }
  .page-hero .display { font-size: 52px; }
  .filters { top: 56px; }
  .filter-bar { grid-template-columns: 1fr 1fr; }
  .filter-bar .field:first-child { grid-column: span 2; }
  .field label { font-size: 8px; }
  .events-grid { grid-template-columns: 1fr; }
  .event-card { min-height: 430px; }
  .events-search-hero { padding: 122px 0 42px; }
  .events-search-hero h1 { font-size: 46px; }
  .events-search-hero > .container > p:not(.eyebrow) { margin: 20px 0 28px; font-size: 14px; }
  .festival-search { grid-template-columns: 1fr; gap: 0; padding: 6px; }
  .search-field, .search-field--place { grid-column: auto; padding: 10px 12px; border-right: 0; border-top: 1px solid var(--line-dark); }
  .search-field:first-child { border-top: 0; }
  .festival-search > button { grid-column: auto; min-height: 50px; margin-top: 5px; }
  .date-picker-popover, .location-picker-popover { position: fixed; left: 16px; right: 16px; top: 92px; width: auto; max-height: calc(100svh - 120px); overflow: auto; padding: 19px; }
  .location-levels { grid-template-columns: 1fr; }
  .location-levels section { padding: 12px 0; }
  .location-levels section + section { padding-left: 0; border-top: 1px solid var(--line-dark); border-left: 0; }
  .location-levels section > div { max-height: 145px; }
  .event-results-section { padding: 42px 0 80px; }
  .results-toolbar { align-items: end; }
  .results-toolbar > div strong { font-size: 18px; }
  .event-result-card { grid-template-columns: 1fr; }
  .result-card-image { min-height: 220px; }
  .result-card-body { padding: 22px 19px 19px; }
  .result-card-heading { display: block; }
  .result-card-heading .status { margin-top: 12px; }
  .result-facts { grid-template-columns: 1fr 1fr; }
  .result-facts span:last-child { grid-column: 1 / -1; }
  .result-card-foot { align-items: start; flex-direction: column; }
  .support-hero { padding: 120px 0 75px; }
  .support-back { margin-bottom: 34px; }
  .support-intro h1 { font-size: 55px; }
  .support-form-card { padding: 25px 20px; }
  .support-form-row { grid-template-columns: 1fr; }
  .detail-hero { min-height: 760px; }
  .detail-bg { background-position: 65% center; }
  .detail-title { font-size: 46px; }
  .detail-title small { font-size: 12px; line-height: 1.5; }
  .detail-content { padding-bottom: 34px; }
  .detail-quick { grid-template-columns: 1fr 1fr; gap: 18px 1px; }
  .detail-layout { gap: 35px; }
  .fact-table { grid-template-columns: 1fr; }
  .fact--wide { grid-column: auto; }
  .seat-intro { align-items: start; flex-direction: column; gap: 8px; }
  .seat-filters { margin-left: -4px; margin-right: -4px; padding: 13px; }
  .seat-filters span { width: 100%; margin: 3px 0 1px; }
  .seat-list, .transport-list { grid-template-columns: 1fr; }
  .seat-item { padding: 17px; }
  .navigation-address { grid-template-columns: auto 1fr; padding: 20px; }
  .navigation-address .button { grid-column: 1 / -1; width: 100%; }
  .transport-accordion summary { grid-template-columns: 40px minmax(0, 1fr) 18px; gap: 11px; padding: 13px; }
  .transport-accordion summary > small { display: none; }
  .transport-accordion__icon { width: 38px; height: 38px; border-radius: 10px; }
  .transport-accordion__title { font-size: 19px; }
  .transport-list article:only-child { grid-column: auto; }
  .detail-reminder { margin-left: -6px; margin-right: -6px; padding: 27px 22px !important; }
  .source-line { flex-direction: column; gap: 5px; }
  .guide-grid { grid-template-columns: 1fr; }
  .ai-panel, .ai-result, .contact-form { padding: 25px; }
  .platform-grid { grid-template-columns: 1fr; }
  .platform-card { min-height: 260px; }
  .platform-fact { grid-template-columns: 1fr; gap: 4px; }
  .advisor-hero { min-height: auto; padding: 125px 0 70px; }
  .advisor-intro h1 { font-size: 50px; }
  .advisor-console { padding: 21px 18px; }
  .journey-prompt textarea { min-height: 165px; }
  .prompt-actions { align-items: stretch; flex-direction: column; }
  .prompt-actions .button { width: 100%; }
  .advisor-results { min-height: 350px; }
  .advisor-result-head { align-items: stretch; flex-direction: column; }
  .advisor-result-head .button { width: 100%; }
  .advisor-match { grid-template-columns: 35px minmax(0,1fr); gap: 14px; }
  .match-actions { grid-column: 2; text-align: left; }
  .assistant-tool-card { min-height: 270px; padding: 24px; }
  .tool-page-hero { padding: 120px 0 60px; }
  .tool-back { margin-bottom: 38px; }
  .tool-page-hero h1 { font-size: 50px; }
  .release-list article { grid-template-columns: 1fr; gap: 16px; }
  .compare-selector { align-items: stretch; flex-direction: column; }
  .compare-selector label span { border-radius: 8px; }
  .itinerary-form, .itinerary-result { padding: 25px 20px; }
  .day-timeline li { grid-template-columns: 85px 1fr; gap: 12px; }
  .footer-top { grid-template-columns: 1fr; gap: 45px; }
  .footer-nav { grid-template-columns: 1fr 1fr; }
  .footer-bottom { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1; transform: none; }
}
