@font-face {
font-family: "Plus Jakarta Sans";
src: url("../assets/fonts/plus-jakarta-sans-400.ttf") format("truetype");
font-style: normal;
font-weight: 400;
font-display: swap;
}

@font-face {
font-family: "Plus Jakarta Sans";
src: url("../assets/fonts/plus-jakarta-sans-500.ttf") format("truetype");
font-style: normal;
font-weight: 500;
font-display: swap;
}

@font-face {
font-family: "Plus Jakarta Sans";
src: url("../assets/fonts/plus-jakarta-sans-600.ttf") format("truetype");
font-style: normal;
font-weight: 600;
font-display: swap;
}

@font-face {
font-family: "Plus Jakarta Sans";
src: url("../assets/fonts/plus-jakarta-sans-700.ttf") format("truetype");
font-style: normal;
font-weight: 700;
font-display: swap;
}

@font-face {
font-family: "Plus Jakarta Sans";
src: url("../assets/fonts/plus-jakarta-sans-800.ttf") format("truetype");
font-style: normal;
font-weight: 800;
font-display: swap;
}

:root {
--bg-1: #081117;
--bg-2: #12202b;
--bg-3: #1a3140;
--panel: rgba(9, 17, 24, 0.72);
--panel-strong: rgba(9, 17, 24, 0.92);
--panel-soft: rgba(255, 255, 255, 0.04);
--line: rgba(201, 228, 255, 0.12);
--line-strong: rgba(201, 228, 255, 0.22);
--text: #f5f1e8;
--muted: #bbcad6;
--muted-strong: #d7e3ea;
--accent: #f3ba6c;
--accent-deep: #ca8e43;
--accent-soft: rgba(243, 186, 108, 0.16);
--shadow: 0 28px 80px rgba(0, 0, 0, 0.38);
--shadow-soft: 0 16px 40px rgba(0, 0, 0, 0.24);
--carousel-max-height: clamp(320px, 46vh, 520px);
}

* {
box-sizing: border-box;
}

html {
scroll-behavior: smooth;
}

body {
margin: 0;
min-height: 100vh;
font-family: "Plus Jakarta Sans", "Segoe UI", sans-serif;
color: var(--text);
background:
radial-gradient(circle at top left, rgba(243, 186, 108, 0.16), transparent 26%),
radial-gradient(circle at top right, rgba(94, 155, 202, 0.12), transparent 24%),
linear-gradient(180deg, var(--bg-3), var(--bg-2) 28%, var(--bg-1) 100%);
overflow-x: hidden;
overflow-y: auto;
}

body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
opacity: 0.35;
background:
linear-gradient(rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.02)),
repeating-linear-gradient(
90deg,
transparent 0,
transparent 95px,
rgba(255, 255, 255, 0.028) 96px
);
}

a,
button,
select {
font: inherit;
}

.site-shell {
position: relative;
z-index: 1;
padding: 18px 20px 20px;
min-height: 100vh;
display: flex;
flex-direction: column;
overflow: visible;
}

.hero {
display: grid;
grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.85fr);
gap: 18px;
align-items: stretch;
width: 100%;
max-width: 1460px;
margin: 0 auto 10px;
}

.hero-copy,
.hero-panel,
.toolbar,
.timeline-viewport,
.timeline-rail {
border: 1px solid var(--line);
background: var(--panel);
backdrop-filter: blur(12px);
box-shadow: var(--shadow-soft);
}

.hero-copy {
position: relative;
overflow: hidden;
padding: 22px 28px;
border-radius: 32px;
min-height: clamp(136px, 17vh, 168px);
background:
linear-gradient(135deg, rgba(243, 186, 108, 0.14), transparent 34%),
linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0)),
var(--panel-strong);
}

.hero-copy::after {
content: "";
position: absolute;
right: -80px;
bottom: -80px;
width: 260px;
height: 260px;
border-radius: 50%;
background: radial-gradient(circle, rgba(243, 186, 108, 0.22), transparent 68%);
filter: blur(6px);
}

.eyebrow,
.panel-label,
.filter-label {
display: inline-flex;
font-size: 0.78rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: rgba(245, 241, 232, 0.7);
}

.filter-label {
min-height: 1.1rem;
align-items: center;
}

.hero h1 {
position: relative;
margin: 8px 0 10px;
font-size: clamp(1.95rem, 3.7vw, 3.35rem);
line-height: 0.95;
letter-spacing: 0.04em;
text-transform: uppercase;
font-weight: 800;
}

.hero-text {
position: relative;
max-width: 640px;
margin: 0;
font-size: 0.96rem;
line-height: 1.55;
color: var(--muted-strong);
}

.hero-actions {
position: relative;
display: flex;
gap: 12px;
flex-wrap: wrap;
margin-top: 14px;
}

.hero-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 11px 16px;
border-radius: 999px;
border: 1px solid transparent;
text-decoration: none;
cursor: pointer;
transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.hero-button:hover {
transform: translateY(-2px);
}

.hero-button-primary {
background: var(--accent);
color: #1d1307;
font-weight: 700;
}

.hero-button-secondary {
background: rgba(255, 255, 255, 0.05);
border-color: var(--line);
color: var(--text);
}

.hero-panel {
display: flex;
flex-direction: column;
justify-content: flex-start;
padding: 20px 22px;
border-radius: 30px;
gap: 10px;
min-height: clamp(136px, 17vh, 168px);
}

.hero-panel-section strong,
.toolbar-status strong {
display: block;
margin-top: 6px;
font-size: 1.35rem;
line-height: 1.1;
}

.hero-panel-section p,
.toolbar-status p {
margin: 6px 0 0;
color: var(--muted);
line-height: 1.55;
}

.featured-event {
padding: 14px 16px 13px;
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.08);
background:
linear-gradient(135deg, rgba(243, 186, 108, 0.1), transparent 48%),
rgba(255, 255, 255, 0.03);
}

.featured-event strong {
display: block;
margin-top: 6px;
font-size: 1.02rem;
line-height: 1.15;
}

.featured-event p {
margin: 6px 0 0;
color: var(--muted-strong);
line-height: 1.4;
}

.featured-event-actions {
display: flex;
gap: 10px;
margin-top: 10px;
}

.layout {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto auto;
gap: 10px;
width: 100%;
max-width: 1460px;
margin: 0 auto;
flex: 1 0 auto;
min-height: 0;
}

.site-footer {
width: 100%;
max-width: 1460px;
margin: 12px auto 0;
padding: 12px 18px 0;
border-top: 1px solid rgba(201, 228, 255, 0.08);
display: flex;
justify-content: flex-end;
gap: 16px;
flex-wrap: wrap;
}

.site-footer-link {
padding: 0;
border: 0;
background: transparent;
color: rgba(245, 241, 232, 0.62);
font-size: 0.82rem;
letter-spacing: 0.06em;
cursor: pointer;
text-decoration: underline;
text-underline-offset: 0.22em;
}

.site-footer-link:hover {
color: rgba(245, 241, 232, 0.86);
}

.toolbar {
display: grid;
grid-template-columns: minmax(280px, 0.92fr) minmax(620px, 1.45fr) auto;
grid-template-areas:
"scope filters status";
gap: 12px 16px;
align-items: start;
padding: 12px 16px;
border-radius: 26px;
}

.scope-switch {
grid-area: scope;
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
align-content: flex-start;
}

.scope-button,
.filter-select {
border: 1px solid var(--line);
background: rgba(255, 255, 255, 0.04);
color: var(--text);
}

.scope-button {
padding: 10px 14px;
border-radius: 999px;
cursor: pointer;
transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}

.scope-button:hover,
.scope-button:hover {
transform: translateY(-1px);
border-color: var(--line-strong);
}

.scope-button.active {
background: var(--accent-soft);
border-color: rgba(243, 186, 108, 0.36);
color: #ffe6c2;
}

.filter-group {
display: flex;
flex-direction: column;
gap: 8px;
min-width: 180px;
justify-content: flex-start;
}

.filter-group-wide {
min-width: 0;
}

.filter-group > * {
min-width: 0;
}

.quick-jumps,
.type-chip-row {
display: flex;
flex-wrap: wrap;
gap: 7px;
align-items: center;
align-content: flex-start;
min-height: 30px;
}

.quick-jumps {
flex-basis: 100%;
padding-top: 2px;
}

.filter-select {
height: 44px;
width: 100%;
padding: 0 13px;
border-radius: 16px;
outline: none;
}

.quick-jump-button,
.type-chip-button,
.filter-toggle,
.toolbar-help-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 11px;
border-radius: 999px;
border: 1px solid var(--line);
background: rgba(255, 255, 255, 0.04);
color: var(--text);
cursor: pointer;
transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.toolbar > .scope-switch {
min-width: 0;
}

.toolbar > .scope-switch,
.toolbar > .filter-stack,
.toolbar > .toolbar-status {
min-width: 0;
}

.filter-stack {
grid-area: filters;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(260px, 1.08fr);
gap: 16px 18px;
align-items: start;
justify-items: stretch;
}

.filter-stack .filter-group {
min-width: 0;
}

.quick-jump-button:hover,
.type-chip-button:hover,
.filter-toggle:hover,
.toolbar-help-button:hover {
transform: translateY(-1px);
border-color: var(--line-strong);
}

.quick-jumps:empty,
.type-chip-row:empty {
display: none;
}

.hero-button:focus-visible,
.scope-button:focus-visible,
.quick-jump-button:focus-visible,
.type-chip-button:focus-visible,
.filter-toggle:focus-visible,
.toolbar-help-button:focus-visible,
.site-footer-link:focus-visible,
.modal-link-button:focus-visible,
.modal-related-pill:focus-visible,
.filter-select:focus-visible,
#modal-close:focus-visible,
#legal-notice-close:focus-visible,
#transparency-close:focus-visible,
#event-venue-info-close:focus-visible {
outline: 2px solid rgba(243, 186, 108, 0.9);
outline-offset: 3px;
}

.type-chip-button.active {
background: var(--accent-soft);
border-color: rgba(243, 186, 108, 0.36);
color: #ffe6c2;
}

.filter-toggle-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
align-content: flex-start;
min-height: 44px;
width: 100%;
}

.filter-toggle {
height: 44px;
padding-inline: 14px;
flex: 0 1 auto;
}

.filter-toggle.active,
.toolbar-help-button {
background: var(--accent-soft);
border-color: rgba(243, 186, 108, 0.36);
color: #ffe6c2;
}

.toolbar-help-button {
width: fit-content;
max-width: 100%;
text-align: center;
cursor: pointer;
align-self: flex-start;
white-space: normal;
line-height: 1.35;
}

.toolbar-status {
grid-area: status;
justify-self: end;
text-align: right;
min-width: 126px;
}

.timeline-stage {
display: grid;
grid-template-columns: 56px minmax(0, 1fr);
gap: 14px;
align-items: stretch;
height: 100%;
min-height: 0;
}

.timeline-rail {
display: flex;
justify-content: center;
padding: 16px 0;
border-radius: 30px;
min-height: 0;
overflow: hidden;
}

.timeline-dots {
display: flex;
flex-direction: column;
justify-content: flex-start;
gap: 10px;
max-height: 100%;
padding: 8px 0;
overflow-y: auto;
scrollbar-width: none;
}

.timeline-dots::-webkit-scrollbar {
display: none;
}

.timeline-dot {
appearance: none;
padding: 0;
width: 8px;
height: 8px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.18);
border: 1px solid transparent;
cursor: pointer;
transition: transform 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.timeline-dot.active {
transform: scale(1.35);
background: var(--accent);
border-color: rgba(255, 255, 255, 0.16);
}

.timeline-dot.has-events {
background: rgba(243, 186, 108, 0.45);
}

.timeline-viewport {
overflow-x: hidden;
overflow-y: visible;
border-radius: 34px;
padding: 0;
height: 100%;
min-height: 0;
}

#timeline-track {
display: flex;
flex-direction: column;
transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
will-change: transform;
height: 100%;
min-height: 0;
}

.day-slide {
display: grid;
grid-template-rows: auto 1fr;
gap: 12px;
padding: 16px;
flex: 0 0 100%;
height: 100%;
min-height: 0;
overflow-x: hidden;
overflow-y: visible;
}

.day-body {
min-height: 0;
height: 100%;
display: flex;
flex-direction: column;
overflow: auto;
padding-right: 4px;
padding-bottom: 6px;
}

.day-header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 12px;
align-items: center;
padding: 14px 18px;
border-radius: 26px;
border: 1px solid rgba(255, 255, 255, 0.08);
background:
linear-gradient(135deg, rgba(243, 186, 108, 0.08), transparent 30%),
rgba(255, 255, 255, 0.03);
}

.day-header-meta {
display: flex;
align-items: center;
justify-content: flex-end;
}

.day-marker {
display: inline-flex;
width: fit-content;
margin-bottom: 8px;
padding: 5px 9px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.05);
font-size: 0.72rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(245, 241, 232, 0.72);
}

.day-transition {
display: inline-flex;
width: fit-content;
margin: 0 0 8px;
padding: 5px 9px;
border-radius: 999px;
border: 1px solid rgba(243, 186, 108, 0.2);
background: rgba(243, 186, 108, 0.1);
font-size: 0.71rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #ffe4be;
}

.day-title {
margin: 0;
font-size: clamp(1.3rem, 1.8vw, 1.8rem);
}

.day-subtitle {
margin: 6px 0 0;
color: var(--muted);
line-height: 1.45;
}

.day-count {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 92px;
padding: 10px 12px;
border-radius: 18px;
background: rgba(243, 186, 108, 0.1);
border: 1px solid rgba(243, 186, 108, 0.2);
font-size: 0.8rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #ffe3be;
}

.day-empty-cta {
display: inline-flex;
width: fit-content;
margin-top: 10px;
padding: 10px 13px;
border-radius: 999px;
border: 1px solid rgba(243, 186, 108, 0.26);
background: rgba(243, 186, 108, 0.1);
color: #ffe5c3;
text-decoration: none;
line-height: 1.35;
}

.carousel-shell {
position: relative;
display: block;
padding-inline: 52px;
min-height: 0;
height: auto;
max-height: none;
overflow: visible;
}

.carousel-track {
display: flex;
gap: 22px;
width: 100%;
height: auto;
max-height: none;
overflow-x: auto;
overflow-y: visible;
padding: 4px 2px 10px;
scrollbar-width: none;
-ms-overflow-style: none;
align-items: flex-start;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
overscroll-behavior-x: contain;
scroll-padding-inline: 2px;
touch-action: pan-x;
}

.carousel-track::-webkit-scrollbar {
display: none;
}

.event-card {
position: relative;
width: clamp(286px, 22vw, 348px);
min-width: clamp(286px, 22vw, 348px);
height: auto;
max-height: none;
align-self: flex-start;
display: flex;
flex-direction: column;
border-radius: 28px;
border: 1px solid var(--line);
overflow: hidden;
cursor: pointer;
background: var(--panel-strong);
box-shadow: var(--shadow);
transition: transform 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
scroll-snap-align: start;
scroll-snap-stop: always;
}

.event-card:hover {
transform: translateY(-6px);
border-color: rgba(243, 186, 108, 0.34);
box-shadow: 0 32px 80px rgba(0, 0, 0, 0.44);
}

.event-media {
position: relative;
height: clamp(96px, 11vh, 132px);
min-height: 96px;
max-height: 132px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
overflow: hidden;
}

.event-image {
width: 100%;
height: 100%;
object-fit: cover;
background:
radial-gradient(circle at top, rgba(243, 186, 108, 0.18), transparent 34%),
linear-gradient(180deg, rgba(17, 17, 17, 0.7), rgba(17, 17, 17, 0.95));
}

.event-image-fallback {
display: flex;
align-items: center;
justify-content: center;
padding: 18px;
font-size: 1rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(255, 228, 190, 0.92);
background:
radial-gradient(circle at top, rgba(243, 186, 108, 0.2), transparent 30%),
linear-gradient(135deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0)),
linear-gradient(180deg, #172833, #0c161d);
}

.event-title-banner {
display: flex;
align-items: center;
min-height: 48px;
padding: 10px 16px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
background:
linear-gradient(135deg, rgba(243, 186, 108, 0.08), transparent 38%),
rgba(255, 255, 255, 0.03);
}

.event-title-banner h3 {
margin: 0;
font-size: 1.02rem;
line-height: 1.15;
}

.event-info {
display: flex;
flex-direction: column;
gap: 8px;
flex: 1;
padding: 10px 14px 12px;
overflow: hidden;
}

.event-card-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
}

.event-card-chip-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
flex: 1 1 100%;
min-width: 0;
}

.event-info p {
margin: 0;
}

.event-chip,
.event-time-chip,
.event-status-chip {
display: inline-flex;
align-items: center;
padding: 5px 8px;
border-radius: 999px;
font-size: 0.68rem;
letter-spacing: 0.1em;
text-transform: uppercase;
line-height: 1.15;
white-space: normal;
}

.event-chip {
background: var(--accent-soft);
color: #ffe4be;
}

.event-time-chip {
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(255, 255, 255, 0.04);
color: var(--text);
}

.event-status-chip-cancelled {
border: 1px solid rgba(255, 122, 122, 0.34);
background: rgba(180, 54, 54, 0.18);
color: #ffd7d7;
}

.event-card-cancelled {
border-color: rgba(255, 122, 122, 0.24);
}

.event-meta {
display: flex;
flex-direction: column;
gap: 4px;
}

.event-card-compact-footer {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 6px;
align-items: end;
}

.event-meta-item {
display: flex;
justify-content: space-between;
gap: 10px;
padding-bottom: 4px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.event-meta-label {
font-size: 0.64rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(245, 241, 232, 0.62);
}

.event-meta-value {
text-align: right;
color: var(--text);
line-height: 1.25;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}

.event-summary {
color: rgba(245, 241, 232, 0.78);
line-height: 1.45;
font-size: 0.92rem;
}

.event-link-hint {
width: fit-content;
font-size: 0.76rem;
letter-spacing: 0.05em;
color: #ffe4be;
}

.event-card-expand-toggle {
display: inline-flex;
align-items: center;
justify-content: center;
align-self: end;
width: 18px;
height: 18px;
padding: 0;
border: 0;
background: transparent;
color: rgba(255, 228, 190, 0.72);
cursor: pointer;
transition: color 0.2s ease, opacity 0.2s ease;
opacity: 0.9;
}

.event-card-expand-toggle:hover {
color: #ffe4be;
opacity: 1;
}

@media (min-width: 769px) and (max-height: 980px) {
.event-card {
width: clamp(268px, 20vw, 318px);
min-width: clamp(268px, 20vw, 318px);
}

.event-media {
height: clamp(86px, 9.4vh, 108px);
min-height: 86px;
max-height: 108px;
}

.event-title-banner {
min-height: 42px;
padding: 8px 14px;
}

.event-title-banner h3 {
font-size: 0.96rem;
}

.event-info {
gap: 6px;
padding: 8px 12px 10px;
}

.event-chip,
.event-time-chip,
.event-status-chip {
font-size: 0.64rem;
padding: 4px 7px;
}
}

@media (min-width: 769px) and (min-aspect-ratio: 21/10) and (max-height: 1080px) {
.event-card {
width: clamp(272px, 18vw, 324px);
min-width: clamp(272px, 18vw, 324px);
}
}

@media (min-width: 1600px) and (min-height: 1000px) {
.event-card {
width: clamp(304px, 20vw, 388px);
min-width: clamp(304px, 20vw, 388px);
}

.event-media {
height: clamp(108px, 12vh, 148px);
min-height: 108px;
max-height: 148px;
}

.event-title-banner {
padding: 11px 18px;
}

.event-title-banner h3 {
font-size: 1.08rem;
}
}

.event-card-expand-toggle span {
font-size: 0.82rem;
line-height: 1;
transform: translateY(-1px);
}

.event-card-expanded-content {
display: none;
padding-top: 2px;
border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.event-meta-expanded {
margin-bottom: 4px;
}

.event-card-expanded .event-card-expanded-content {
display: flex;
flex-direction: column;
gap: 6px;
}

.event-card-expanded .event-summary {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}

.event-card-expanded .event-link-hint {
display: inline-flex;
}

.carousel-hint {
display: none;
color: rgba(245, 241, 232, 0.62);
font-size: 0.84rem;
letter-spacing: 0.04em;
padding: 10px 4px 2px;
}

.carousel-nav {
position: absolute;
inset: 0;
display: block;
pointer-events: none;
}

.carousel-nav-button {
pointer-events: auto;
position: absolute;
top: 50%;
transform: translateY(-50%);
display: inline-flex;
align-items: center;
justify-content: center;
width: 46px;
height: 88px;
border-radius: 24px;
border: 1px solid rgba(201, 228, 255, 0.12);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.03)),
rgba(9, 17, 24, 0.78);
color: var(--text);
cursor: pointer;
backdrop-filter: blur(12px);
box-shadow: var(--shadow-soft);
transition: transform 0.2s ease, border-color 0.2s ease, opacity 0.2s ease, background 0.2s ease;
}

.carousel-nav-button span {
font-size: 2rem;
line-height: 1;
transform: translateY(-2px);
}

.carousel-nav-button-prev {
left: 0;
}

.carousel-nav-button-next {
right: 0;
}

.carousel-nav-button:hover:not(:disabled) {
transform: translateY(calc(-50% - 1px));
border-color: rgba(243, 186, 108, 0.34);
background:
linear-gradient(180deg, rgba(243, 186, 108, 0.14), rgba(255, 255, 255, 0.03)),
rgba(9, 17, 24, 0.88);
}

.carousel-nav-button:disabled {
opacity: 0.28;
cursor: default;
}

.info-card {
justify-content: center;
align-items: center;
text-align: center;
}

.info-card::after {
display: none;
}

.info-card .event-info {
align-items: center;
background: transparent;
padding: 30px;
}

.info-card a {
color: #ffe4be;
}

#event-modal {
position: fixed;
inset: 0;
display: none;
align-items: center;
justify-content: center;
z-index: 999;
}

#event-modal.active {
display: flex;
}

#legal-notice-modal {
position: fixed;
inset: 0;
display: none;
align-items: center;
justify-content: center;
z-index: 1000;
}

#legal-notice-modal.active {
display: flex;
}

#transparency-modal {
position: fixed;
inset: 0;
display: none;
align-items: center;
justify-content: center;
z-index: 1000;
}

#transparency-modal.active {
display: flex;
}

#event-venue-info-modal {
position: fixed;
inset: 0;
display: none;
align-items: center;
justify-content: center;
z-index: 1000;
}

#event-venue-info-modal.active {
display: flex;
}

.modal-overlay {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.75);
backdrop-filter: blur(10px);
}

.modal-window {
position: relative;
z-index: 2;
width: min(860px, calc(100vw - 32px));
max-height: 90vh;
overflow: auto;
overscroll-behavior: contain;
padding: 28px;
border-radius: 30px;
border: 1px solid var(--line);
background: var(--panel-strong);
box-shadow: var(--shadow);
}

.legal-modal-window {
position: relative;
z-index: 2;
width: min(760px, calc(100vw - 32px));
max-height: 86vh;
overflow: auto;
overscroll-behavior: contain;
padding: 28px;
border-radius: 30px;
border: 1px solid var(--line);
background: var(--panel-strong);
box-shadow: var(--shadow);
}

body.event-modal-open .day-body,
body.event-modal-open .timeline-viewport,
body.event-modal-open .carousel-track {
overflow: hidden;
}

.legal-modal-window h2 {
margin: 0 36px 18px 0;
font-size: clamp(1.55rem, 2.6vw, 2.15rem);
}

.legal-copy {
margin: 0;
line-height: 1.72;
color: rgba(245, 241, 232, 0.9);
}

.legal-copy + .legal-copy {
margin-top: 14px;
}

.legal-copy-muted {
color: rgba(245, 241, 232, 0.72);
}

.legal-link {
color: #ffe4be;
text-decoration: underline;
text-underline-offset: 0.18em;
}

.legal-link:hover {
color: #fff1d8;
}

.modal-window img {
display: block;
width: 100%;
height: min(360px, 42vw);
max-height: 360px;
object-fit: contain;
object-position: center;
border-radius: 20px;
margin-bottom: 18px;
background:
radial-gradient(circle at top, rgba(243, 186, 108, 0.12), transparent 42%),
rgba(255, 255, 255, 0.03);
}

.modal-window h2,
.modal-window p {
margin: 0;
}

.modal-top-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
margin-bottom: 14px;
padding-right: 44px;
}

.modal-chip-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
align-items: center;
flex: 1 1 100%;
min-width: 0;
}

.modal-window h2 {
font-size: clamp(1.75rem, 3vw, 2.45rem);
margin-bottom: 18px;
}

.modal-details-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
margin: 0 0 10px;
}

.modal-detail-item {
display: flex;
flex-direction: column;
gap: 6px;
padding: 15px 16px;
border-radius: 18px;
border: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.03);
}

.modal-detail-label,
.modal-section-title {
font-size: 0.78rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(245, 241, 232, 0.64);
}

.modal-detail-value {
line-height: 1.5;
}

.modal-section-title {
margin: 22px 0 10px;
}

.modal-copy {
line-height: 1.75;
color: rgba(245, 241, 232, 0.92);
}

.modal-copy-muted {
color: rgba(245, 241, 232, 0.78);
}

.modal-copy-cancelled {
color: #ffd7d7;
}

.modal-link-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 12px 18px;
border-radius: 999px;
border: 1px solid rgba(243, 186, 108, 0.34);
background: rgba(243, 186, 108, 0.14);
color: #ffe4be;
text-decoration: none;
letter-spacing: 0.06em;
text-transform: uppercase;
font-size: 0.82rem;
}

.modal-link-row {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 22px;
align-items: flex-start;
}

.modal-related {
margin-top: 18px;
padding-top: 16px;
border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.modal-related-list {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 10px;
}

.modal-related-pill {
display: inline-flex;
align-items: center;
padding: 8px 12px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.04);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(245, 241, 232, 0.82);
font-size: 0.84rem;
cursor: pointer;
}

#modal-close {
position: absolute;
top: 10px;
right: 14px;
border: 0;
background: transparent;
color: var(--text);
font-size: 28px;
cursor: pointer;
}

#legal-notice-close {
position: absolute;
top: 10px;
right: 14px;
border: 0;
background: transparent;
color: var(--text);
font-size: 28px;
cursor: pointer;
}

#transparency-close {
position: absolute;
top: 10px;
right: 14px;
border: 0;
background: transparent;
color: var(--text);
font-size: 28px;
cursor: pointer;
}

#event-venue-info-close {
position: absolute;
top: 10px;
right: 14px;
border: 0;
background: transparent;
color: var(--text);
font-size: 28px;
cursor: pointer;
}

@media (max-width: 1080px) {
.hero {
grid-template-columns: 1fr;
}

.toolbar {
grid-template-columns: 1fr;
grid-template-areas:
"scope"
"filters"
"status";
}

.toolbar-status {
justify-self: start;
text-align: left;
}

.filter-stack {
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(240px, 1.05fr);
}

.toolbar-help-button {
width: 100%;
}
}

@media (max-width: 920px) {
.filter-stack {
grid-template-columns: 1fr;
}
}

@media (min-width: 769px) {
body {
overflow: hidden;
}

.site-shell {
height: 100dvh;
min-height: 100dvh;
overflow: hidden;
padding: clamp(14px, 1.6vw, 18px) clamp(16px, 1.8vw, 20px) 16px;
}

.hero {
flex: 0 0 auto;
gap: 16px;
margin-bottom: 12px;
}

.hero-copy,
.hero-panel {
padding: clamp(20px, 2vw, 28px);
}

.layout {
flex: 1 1 auto;
min-height: 0;
}

.toolbar {
flex: 0 0 auto;
padding: clamp(12px, 1.3vw, 16px) clamp(14px, 1.5vw, 18px);
}

.timeline-stage {
flex: 1 1 auto;
min-height: 0;
}

.timeline-rail,
.timeline-viewport,
#timeline-track,
.day-slide,
.carousel-shell,
.carousel-track {
min-height: 0;
}

.day-body {
overflow-y: auto;
overflow-x: hidden;
scrollbar-width: thin;
}

.site-footer {
flex: 0 0 auto;
margin-top: 8px;
padding-top: 8px;
}
}

@media (max-width: 768px) {
.site-shell {
padding: 16px;
min-height: auto;
}

.hero-copy,
.hero-panel,
.toolbar,
.timeline-viewport,
.timeline-rail {
border-radius: 24px;
}

.hero-copy,
.hero-panel {
padding: 24px;
}

.hero h1 {
font-size: clamp(2rem, 12vw, 3.1rem);
}

.hero-actions {
flex-direction: column;
align-items: stretch;
}

.hero-button {
width: 100%;
}

.toolbar {
grid-template-columns: 1fr;
grid-template-areas:
"scope"
"filters"
"status";
padding: 16px;
}

.toolbar-status {
min-width: 0;
}

.scope-switch,
.quick-jumps,
.type-chip-row,
.filter-toggle-row {
gap: 8px;
}

.timeline-stage {
grid-template-columns: 1fr;
height: auto;
min-height: auto;
}

.timeline-rail {
display: none;
}

.timeline-viewport {
overflow: visible;
height: auto;
}

#timeline-track {
transform: none !important;
height: auto;
}

.day-slide {
height: auto;
min-height: auto;
padding: 16px;
}

.day-body {
height: auto;
}

.day-header {
grid-template-columns: 1fr;
padding: 14px 16px;
}

.day-header-meta {
justify-content: flex-start;
}

.carousel-shell {
padding-inline: 0;
height: auto;
max-height: none;
}

.carousel-track {
flex-direction: column;
gap: 14px;
height: auto;
max-height: none;
overflow: visible;
padding: 0;
scroll-snap-type: none;
}

.carousel-nav {
display: none;
}

.carousel-hint {
display: none;
}

.event-card {
width: 100%;
min-width: 0;
height: auto;
max-height: none;
}

.event-media {
height: 180px;
min-height: 180px;
}

.event-summary {
-webkit-line-clamp: 3;
}

.modal-window {
padding: 20px;
border-radius: 22px;
}

.legal-modal-window {
padding: 22px;
border-radius: 22px;
}

.modal-details-grid {
grid-template-columns: 1fr;
}

.modal-top-row {
padding-right: 34px;
}
}

body.handbook-page {
overflow-x: hidden;
overflow-y: auto;
}

#privacy-first-visit-modal {
position: fixed;
inset: 0;
display: none;
align-items: center;
justify-content: center;
z-index: 1100;
}

#privacy-first-visit-modal.active {
display: flex;
}

body.handbook-page::before {
opacity: 0.22;
}

.handbook-shell {
height: auto;
min-height: 100vh;
overflow: visible;
}

.handbook-hero {
margin-bottom: 18px;
}

.handbook-hero-copy {
min-height: 220px;
}

.handbook-summary-panel {
min-height: 220px;
}

.handbook-highlight-card {
margin-top: auto;
}

.handbook-layout {
width: 100%;
max-width: 1460px;
margin: 0 auto;
display: grid;
grid-template-columns: minmax(260px, 320px) minmax(0, 1fr);
gap: 18px;
align-items: start;
}

.handbook-sidebar {
position: sticky;
top: 18px;
align-self: start;
}

.handbook-sidebar-card,
.handbook-section {
border: 1px solid var(--line);
background: var(--panel);
backdrop-filter: blur(12px);
box-shadow: var(--shadow-soft);
border-radius: 28px;
}

.handbook-sidebar-card {
padding: 18px;
}

.handbook-sidebar-head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}

.handbook-toc-toggle {
display: none;
}

.handbook-toc {
display: flex;
flex-direction: column;
gap: 6px;
}

.handbook-toc-link {
display: block;
padding: 11px 13px;
border-radius: 16px;
border: 1px solid transparent;
color: var(--muted-strong);
text-decoration: none;
line-height: 1.35;
transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.handbook-toc-link:hover {
transform: translateX(2px);
background: rgba(255, 255, 255, 0.04);
border-color: var(--line);
color: var(--text);
}

.handbook-toc-link.active {
background: linear-gradient(135deg, rgba(243, 186, 108, 0.16), rgba(255, 255, 255, 0.03));
border-color: rgba(243, 186, 108, 0.28);
color: #ffe4b8;
}

.handbook-content {
display: flex;
flex-direction: column;
gap: 18px;
min-width: 0;
}

.handbook-section {
padding: 28px 30px;
scroll-margin-top: 22px;
}

.handbook-section h2 {
margin: 10px 0 14px;
font-size: clamp(1.55rem, 2.3vw, 2.2rem);
line-height: 1.05;
letter-spacing: 0.02em;
}

.handbook-section h3 {
margin: 18px 0 8px;
font-size: 1.02rem;
color: #ffe3bc;
}

.handbook-section p,
.handbook-section li {
color: var(--muted-strong);
line-height: 1.7;
}

.handbook-section ul,
.handbook-section ol {
margin: 12px 0 0;
padding-left: 22px;
}

.handbook-section code {
padding: 2px 7px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.07);
border: 1px solid rgba(255, 255, 255, 0.08);
color: #fff1d3;
font-size: 0.92em;
}

.handbook-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
margin-top: 16px;
}

.handbook-card,
.handbook-callout,
.handbook-note {
border-radius: 22px;
border: 1px solid rgba(255, 255, 255, 0.08);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)),
rgba(255, 255, 255, 0.03);
}

.handbook-card {
padding: 18px;
}

.handbook-card h3 {
margin-top: 0;
}

.handbook-callout,
.handbook-note {
padding: 18px 20px;
margin-top: 18px;
}

.handbook-callout {
background:
linear-gradient(135deg, rgba(243, 186, 108, 0.14), rgba(255, 255, 255, 0.03)),
rgba(255, 255, 255, 0.03);
}

.handbook-callout strong,
.handbook-note strong {
display: block;
margin-bottom: 6px;
color: #ffe3bc;
}

.handbook-step-list {
display: flex;
flex-direction: column;
gap: 14px;
margin-top: 18px;
}

.handbook-step {
display: grid;
grid-template-columns: 54px minmax(0, 1fr);
gap: 16px;
align-items: start;
padding: 18px;
border-radius: 24px;
border: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.03);
}

.handbook-step-number {
display: inline-flex;
align-items: center;
justify-content: center;
width: 54px;
height: 54px;
border-radius: 18px;
background: linear-gradient(135deg, var(--accent), #f6d39e);
color: #201103;
font-weight: 800;
font-size: 1.15rem;
box-shadow: 0 12px 26px rgba(243, 186, 108, 0.22);
}

.handbook-step h3 {
margin-top: 2px;
}

.handbook-footer {
justify-content: flex-start;
}

.privacy-first-visit-window {
width: min(720px, calc(100vw - 32px));
}

.privacy-first-visit-actions {
display: flex;
gap: 12px;
flex-wrap: wrap;
margin-top: 22px;
}

.privacy-first-visit-list {
margin: 16px 0 0;
padding-left: 1.2rem;
display: grid;
gap: 0.65rem;
color: rgba(245, 241, 232, 0.9);
line-height: 1.62;
}

.privacy-first-visit-list li::marker {
color: rgba(243, 201, 106, 0.92);
}

.privacy-first-visit-actions .hero-button {
min-width: 220px;
}

.privacy-shell {
height: auto;
overflow: visible;
}

.privacy-layout {
align-items: start;
}

@media (min-width: 769px) {
body.handbook-page {
overflow-y: auto;
}

.handbook-shell {
height: auto;
min-height: 100vh;
overflow: visible;
}
}

@media (max-width: 980px) {
.handbook-layout {
grid-template-columns: 1fr;
}

.handbook-sidebar {
position: static;
top: auto;
}

.handbook-toc-toggle {
display: inline-flex;
}

.handbook-toc {
display: none;
padding-top: 8px;
}

.handbook-toc.open {
display: flex;
}
}

@media (max-width: 768px) {
.handbook-hero-copy,
.handbook-summary-panel,
.handbook-section,
.handbook-sidebar-card {
border-radius: 24px;
}

.handbook-section {
padding: 22px 20px;
}

.handbook-grid {
grid-template-columns: 1fr;
}

.handbook-step {
grid-template-columns: 1fr;
}

.handbook-step-number {
width: 48px;
height: 48px;
border-radius: 16px;
}

.privacy-first-visit-actions {
flex-direction: column;
}

.privacy-first-visit-actions .hero-button {
width: 100%;
min-width: 0;
}
}
