:root {
    --blue: #0099d8;
    --blue-soft: #b9ddfb;
    --black: #000000;
    --muted: #3f3f3f;
    --white: #ffffff;
    --card: rgba(199, 199, 199, 0.2);
    --page: #e8f4fc;
    --trap-h: clamp(36.23px, calc(4.49px + 8.4641vw), 167px);
    --trap-out: clamp(31.56px, calc(3.905px + 7.3748vw), 145.5px);
    --corner: clamp(8px, calc(2.66px + 1.4239vw), 30px);
    --sh-l: clamp(60.71px, calc(9.062px + 13.7728vw), 273.5px);
    --sh-r: clamp(61.15px, calc(10.337px + 13.5502vw), 270.5px);
    --fl-l: clamp(23.3px, calc(3.106px + 5.3851vw), 106.5px);
    --fl-r: clamp(23.74px, calc(4.381px + 5.1625vw), 103.5px);
    --arc-x: calc(var(--corner) * 0.4142);
    --arc-y: calc(var(--corner) * 0.293);
    --out-x: calc(var(--corner) * 0.3747);
    --out-dx: calc(var(--corner) * 0.2823);
    --out-dy: calc(var(--corner) * 0.246);
    --rail-dot: clamp(12px, calc(8.359px + 0.9709vw), 27px);
    --rail-line: clamp(2px, calc(1.029px + 0.2589vw), 6px);
    --glow-size: clamp(56px, calc(18.621px + 9.9676vw), 210px);
    --glow-opacity: 0.38;
    --glow-blur: clamp(14px, calc(4.2718vw - 2.019px), 80px);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    height: 100%;
    max-width: 100%;
    overflow-x: clip;
    font-size: 16px;
}

body {
    height: 100%;
    font-family: "Inter", Arial, sans-serif;
    font-size: clamp(0.750rem, calc(0.568rem + 0.777vw), 1.500rem);
    font-weight: 500;
    color: var(--black);
    background: var(--white);
    max-width: 100%;
    overflow-x: clip;
}

h1 {
    font-size: clamp(1.000rem, calc(0.272rem + 3.107vw), 4.000rem);
    font-weight: 700;
    text-transform: uppercase;
}

h2 {
    font-size: clamp(0.688rem, calc(0.172rem + 2.201vw), 2.813rem);
    font-weight: 700;
}

h3 {
    font-size: clamp(0.875rem, calc(0.602rem + 1.165vw), 2.000rem);
    font-weight: 600;
}

img {
    max-width: 100%;
    display: block;
}

a {
    color: var(--blue);
    font-size: clamp(0.750rem, calc(0.447rem + 1.294vw), 2.000rem);
    font-weight: 700;
    text-decoration: underline;
}

.wrapper {
    min-height: 100%;
    max-width: 100%;
    overflow-x: clip;
    display: flex;
    flex-direction: column;
}

.main {
    flex: 1 0 auto;
    padding-top: clamp(4.313rem, calc(3.008rem + 5.566vw), 9.688rem);
}

.container {
    width: 100%;
    max-width: 1920px;
    margin: 0 auto;
    padding-inline: clamp(1.656rem, calc(-1.734rem + 14.466vw), 15.625rem);
}

.header,
.footer {
    width: 100%;
}

.header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: auto;
    z-index: 100;
    display: flex;
    align-items: center;
    padding: clamp(1.063rem, calc(0.668rem + 1.683vw), 2.688rem) 0 clamp(1.125rem, calc(0.837rem + 1.23vw), 2.313rem);
    background: var(--blue);
    border-radius: 0 0 clamp(0.563rem, calc(0.214rem + 1.489vw), 2.000rem) clamp(0.563rem, calc(0.214rem + 1.489vw), 2.000rem);
    box-shadow: 0 4px 18.9px rgba(0, 0, 0, 0.17);
}

.header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.header__logos {
    display: flex;
    align-items: center;
    gap: clamp(0.438rem, calc(0.301rem + 0.583vw), 1.000rem);
}

.header__logos img {
    height: clamp(1.9375rem, calc(1.270rem + 2.848vw), 4.675rem);
    width: auto;
}

.header__divider {
    width: 1px;
    align-self: stretch;
    min-height: clamp(2.125rem, calc(1.503rem + 2.654vw), 4.675rem);
    background: var(--white);
}

.header__nav {
    display: flex;
    align-items: center;
    gap: clamp(1.250rem, calc(0.188rem + 4.531vw), 5.625rem);
}

.nav__item {
    position: relative;
    color: var(--white);
    font-size: clamp(0.875rem, calc(0.723rem + 0.647vw), 1.500rem);
    font-weight: 400;
    text-transform: uppercase;
    text-decoration: none;
}

.nav__item::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 3px;
    background: var(--white);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.35s ease;
}

.nav__item:hover::after {
    transform: scaleX(1);
}

.hero {
    position: relative;
    z-index: 0;
    margin-top: clamp(-2.313rem, calc(-0.138rem - 1.812vw), -0.563rem);
    min-height: clamp(10.750rem, calc(3.651rem + 30.291vw), 40.000rem);
    padding: clamp(2.625rem, calc(0.805rem + 7.767vw), 10.125rem) 0 clamp(3.188rem, calc(1.170rem + 8.608vw), 11.500rem);
    background-color: var(--blue-soft);
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
}

.hero--local {
    background-image: url("../img/hero.jpg");
}

.hero__plate {
    position: absolute;
    z-index: 1;
    left: 0;
    right: 0;
    height: 214px;
    bottom: -133px;
    background: linear-gradient(180deg, rgba(185, 221, 251, 0) 0%, #b9ddfb 100%);
    pointer-events: none;
}

.hero__container {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.hero__title {
    max-width: clamp(12.625rem, calc(4.069rem + 36.505vw), 47.875rem);
    color: var(--blue);
    font-size: clamp(0.813rem, calc(0.266rem + 2.33vw), 3.063rem);
}

.hero__subtitle {
    margin-top: clamp(0.625rem, calc(0.473rem + 0.647vw), 1.250rem);
    max-width: clamp(9.625rem, calc(1.995rem + 32.557vw), 41.063rem);
    color: var(--muted);
}

.hero__date-place {
    max-width: clamp(9.625rem, calc(1.995rem + 32.557vw), 41.063rem);
    color: var(--muted);
    margin-top: clamp(0.625rem, calc(0.473rem + 0.647vw), 1.250rem);
    font-weight: 500;
}

.panel {
    --panel-pad-b: clamp(7.313rem, calc(5.962rem + 5.761vw), 12.875rem);
    position: relative;
    z-index: 1;
    width: 100dvw;
    margin-left: calc(50% - 50dvw);
    padding: clamp(3.875rem, calc(0.886rem + 12.751vw), 16.188rem) calc(clamp(1.656rem, calc(-1.734rem + 14.466vw), 15.625rem) + (100dvw - min(100dvw, 1920px)) / 2) var(--panel-pad-b);
    background: transparent;
}

.panel::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: 0;
    left: 0;
    width: 100%;
    background-repeat: no-repeat;
    opacity: 0.17;
    filter: blur(18.9px);
    transform: translateY(-9px);
    pointer-events: none;
}

.panel--in::before {
    height: calc(var(--trap-h) + 120px);
    background-image:
            linear-gradient(#000, #000),
            linear-gradient(#000, #000),
            linear-gradient(#000, #000),
            linear-gradient(to top right, #000 50%, transparent 50%),
            linear-gradient(to top left, #000 50%, transparent 50%);
    background-size:
            calc(50% - var(--sh-l)) 100%,
            calc(50% - var(--sh-r)) 100%,
            100% calc(100% - var(--trap-h)),
            calc(var(--sh-l) - var(--fl-l)) var(--trap-h),
            calc(var(--sh-r) - var(--fl-r)) var(--trap-h);
    background-position:
            0 0,
            100% 0,
            0 100%,
            calc(50% - (var(--sh-l) + var(--fl-l)) / 2) 0,
            calc(50% + (var(--fl-r) + var(--sh-r)) / 2) 0;
}

.panel--out::before {
    height: calc(var(--trap-out) + 120px);
    background-image:
            linear-gradient(#000, #000),
            linear-gradient(#000, #000),
            linear-gradient(to top left, #000 50%, transparent 50%),
            linear-gradient(to top right, #000 50%, transparent 50%);
    background-size:
            100% calc(100% - var(--trap-out)),
            calc(var(--fl-l) + var(--fl-r)) var(--trap-out),
            calc(var(--sh-l) - var(--fl-l)) var(--trap-out),
            calc(var(--sh-r) - var(--fl-r)) var(--trap-out);
    background-position:
            0 100%,
            calc(50% + (var(--fl-r) - var(--fl-l)) / 2) 0,
            calc(50% - (var(--sh-l) + var(--fl-l)) / 2) 0,
            calc(50% + (var(--fl-r) + var(--sh-r)) / 2) 0;
}

.panel > * {
    position: relative;
    z-index: 1;
}

.panel > .panel__glow {
    position: absolute;
    z-index: 1;
    width: var(--glow-size);
    height: var(--glow-size);
    border-radius: 50%;
    background: #6ac2ff;
    opacity: var(--glow-opacity);
    filter: blur(var(--glow-blur));
    pointer-events: none;
}

.panel__glow--tl {
    left: calc((100% - 100vw) / 2 - 119px);
    top: -36px;
}

.panel__glow--tr {
    right: calc((100% - 100vw) / 2 - 119px);
    top: -36px;
}

.panel__glow--bl {
    left: calc((100% - 100vw) / 2 + 17px);
    bottom: -85.5px;
}

.panel__glow--br {
    right: calc((100% - 100vw) / 2 - 37px);
    bottom: -85.5px;
}

#program .panel__glow--bl,
#program .panel__glow--br {
    top: auto;
    bottom: calc(var(--glow-size) / -2);
}

#program .panel__glow--bl {
    left: calc((100% - 100vw) / 2 + clamp(-8px, calc(-6.757px - 0.0647vw), -7px));
    right: auto;
}

#program .panel__glow--br {
    left: auto;
    right: calc((100% - 100vw) / 2 + clamp(-12px, calc(-2.058px - 0.5178vw), -4px));
}

.panel::after {
    content: "";
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    margin-left: 0;
    background: var(--white);
}

.main__content > .panel:first-child,
.main__content > .cell-container:first-of-type {
    margin-top: calc(clamp(9px, calc(1.476px + 2.0065vw), 40px) * -1);
}

.main__content > .panel:first-child::before,
.main__content > .cell-container:first-of-type > .panel::before {
    filter: blur(12.1px);
    transform: translateY(-8px);
}

.main__content > .panel--out,
.main__content > .cell-container:has(.panel--out) {
    margin-top: calc(var(--trap-out) * -1);
}

.main__content > .cell-container:has(.panel--in):not(:first-of-type),
.main__content > .panel--in ~ .panel--in {
    position: relative;
    z-index: 2;
    margin-top: calc(var(--trap-h) * -1);
}

.main__content > .cell-container:has(#program) {
    position: relative;
    z-index: 2;
    margin-top: calc(var(--trap-h) * -1);
}

.main__content > .cell-container:has(#program)::before {
    content: "";
    position: absolute;
    z-index: 2;
    left: 50%;
    top: calc(var(--trap-h) / 2);
    width: var(--glow-size);
    height: var(--glow-size);
    border-radius: 50%;
    background: #6ac2ff;
    opacity: var(--glow-opacity);
    filter: blur(var(--glow-blur));
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.panel--in::after {
    clip-path: polygon(
            0 0,
            calc(50% - var(--sh-l)) 0,
            calc(50% - var(--fl-l)) var(--trap-h),
            calc(50% + var(--fl-r)) var(--trap-h),
            calc(50% + var(--sh-r)) 0,
            100% 0,
            100% 100%,
            0 100%
    );
    clip-path: shape(
            from 0 var(--corner),
            arc to var(--corner) 0 of var(--corner) small cw,
            line to calc(50% - var(--sh-l) - var(--arc-x)) 0,
            arc to calc(50% - var(--sh-l) + var(--arc-y)) var(--arc-y) of var(--corner) small cw,
            line to calc(50% - var(--fl-l) - var(--arc-y)) calc(var(--trap-h) - var(--arc-y)),
            arc to calc(50% - var(--fl-l) + var(--arc-x)) var(--trap-h) of var(--corner) small ccw,
            line to calc(50% + var(--fl-r) - var(--arc-x)) var(--trap-h),
            arc to calc(50% + var(--fl-r) + var(--arc-y)) calc(var(--trap-h) - var(--arc-y)) of var(--corner) small ccw,
            line to calc(50% + var(--sh-r) - var(--arc-y)) var(--arc-y),
            arc to calc(50% + var(--sh-r) + var(--arc-x)) 0 of var(--corner) small cw,
            line to calc(100% - var(--corner)) 0,
            arc to 100% var(--corner) of var(--corner) small cw,
            line to 100% 100%,
            line to 0 100%,
            close
    );
}

.panel--out::after {
    clip-path: polygon(
            0 var(--trap-out),
            calc(50% - var(--sh-l)) var(--trap-out),
            calc(50% - var(--fl-l)) 0,
            calc(50% + var(--fl-r)) 0,
            calc(50% + var(--sh-r)) var(--trap-out),
            100% var(--trap-out),
            100% 100%,
            0 100%
    );
    clip-path: shape(
            from 0 calc(var(--trap-out) + var(--corner)),
            arc to var(--corner) var(--trap-out) of var(--corner) small cw,
            line to calc(50% - var(--sh-l) - var(--out-x)) var(--trap-out),
            arc to calc(50% - var(--sh-l) + var(--out-dx)) calc(var(--trap-out) - var(--out-dy)) of var(--corner) small ccw,
            line to calc(50% - var(--fl-l) - var(--out-dx)) var(--out-dy),
            arc to calc(50% - var(--fl-l) + var(--out-x)) 0 of var(--corner) small cw,
            line to calc(50% + var(--fl-r) - var(--out-x)) 0,
            arc to calc(50% + var(--fl-r) + var(--out-dx)) var(--out-dy) of var(--corner) small cw,
            line to calc(50% + var(--sh-r) - var(--out-dx)) calc(var(--trap-out) - var(--out-dy)),
            arc to calc(50% + var(--sh-r) + var(--out-x)) var(--trap-out) of var(--corner) small ccw,
            line to calc(100% - var(--corner)) var(--trap-out),
            arc to 100% calc(var(--trap-out) + var(--corner)) of var(--corner) small cw,
            line to 100% 100%,
            line to 0 100%,
            close
    );
}

.section-title {
    margin-bottom: clamp(0.750rem, calc(0.522rem + 0.971vw), 1.688rem);
    text-align: center;
}

.section-title--left {
    text-align: left;
}

.about__list {
    --about-dot: var(--rail-dot);
    --about-line: var(--rail-line);
    --about-gap: clamp(3.750rem, calc(-7.375rem + 23.177vw), 20.438rem);
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: var(--about-gap);
    position: relative;
}

.about__list::before {
    content: "";
    position: absolute;
    z-index: 0;
    left: calc((100% - var(--about-gap)) / 4);
    right: calc((100% - var(--about-gap)) / 4);
    top: calc((var(--about-dot) - var(--about-line)) / 2);
    height: var(--about-line);
    background: var(--blue);
}

.about__item {
    position: relative;
    display: flex;
    flex-direction: column;
}

.about__item h3 {
    position: relative;
    z-index: 1;
    margin-bottom: clamp(0.750rem, calc(0.462rem + 1.23vw), 1.938rem);
    text-align: center;
}

.about__item h3::before {
    content: "";
    display: block;
    width: var(--about-dot);
    height: var(--about-dot);
    margin: 0 auto 1.875rem;
    border-radius: 50%;
    background: var(--blue);
}

.about__card,
.about__item > ul {
    flex: 1 1 auto;
    padding: clamp(1.375rem, calc(1.102rem + 1.165vw), 2.500rem) clamp(1.500rem, calc(1.333rem + 0.712vw), 2.188rem);
    border-radius: clamp(1.000rem, calc(0.742rem + 1.1vw), 2.063rem);
    background: var(--card);
}

.about__item > ul {
    list-style: none;
}

.about__item > ul > li {
    position: relative;
    padding-left: 1.2em;
}

.about__item > ul > li + li {
    margin-top: 1em;
}

.about__item > ul > li::before {
    content: "\2013";
    position: absolute;
    left: 0;
}

.about__item li p {
    margin: 0;
}

.about__item li.about__card {
    padding: 0 0 0 1.2em;
    border-radius: 0;
    background: none;
}

#about {
    padding-bottom: calc(42px + var(--trap-out));
}

.organizer {
    --organizer-pad-t: clamp(1.438rem, calc(0.709rem + 3.107vw), 4.438rem);
    --organizer-pad-r: clamp(1.375rem, calc(0.328rem + 4.466vw), 5.688rem);
    --organizer-pad-b: clamp(1.688rem, calc(-0.391rem + 8.867vw), 10.250rem);
    --organizer-pad-l: clamp(1.500rem, calc(0.226rem + 5.437vw), 6.750rem);
    display: flex;
    align-items: flex-start;
    gap: clamp(0.875rem, calc(-0.005rem + 3.754vw), 4.500rem);
    margin-bottom: calc(var(--panel-pad-b) * -1);
    padding: var(--organizer-pad-t) var(--organizer-pad-r) calc(clamp(36px, calc(0.806px + 9.3851vw), 181px) + var(--trap-h)) var(--organizer-pad-l);
    border: clamp(0.125rem, calc(0.064rem + 0.259vw), 0.375rem) solid var(--blue);
    border-bottom: 0;
    border-radius: clamp(0.500rem, calc(0.106rem + 1.683vw), 2.125rem) clamp(0.500rem, calc(0.106rem + 1.683vw), 2.125rem) 0 0;
}

.organizer img {
    width: clamp(3.188rem, calc(-0.286rem + 14.822vw), 17.500rem);
    height: auto;
    flex: none;
}

.organizer__content .section-title {
    margin-bottom: clamp(0.250rem, calc(0.068rem + 0.777vw), 1.000rem);
}

.organizer__name {
    margin-bottom: clamp(0.375rem, calc(-0.217rem + 2.524vw), 2.813rem);
}

.organizer__content p {
    max-width: 53.3125rem;
}

#program .section-title {
    margin-bottom: 4px;
}

#program {
    padding-bottom: clamp(44px, calc(35.99px + 2.1359vw), 77px);
}

.program__download {
    margin-bottom: clamp(1.563rem, calc(0.501rem + 4.531vw), 5.938rem);
    text-align: center;
}

.program {
    --dot: var(--rail-dot);
    --pline: var(--rail-line);
    --rule: var(--rail-line);
    --row-gap: clamp(0.5rem, calc(0.35rem + 0.65vw), 1rem);
    --item-gap: clamp(35px, calc(28.932px + 1.618vw), 60px);
    --side-pad: clamp(32px, calc(17.922px + 3.754vw), 90px);
    --title-gap: clamp(26px, calc(14.835px + 2.9773vw), 72px);
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-auto-rows: auto;
    grid-template-rows: none !important;
}

.program a {
    font-size: clamp(0.750rem, calc(0.568rem + 0.777vw), 1.500rem);
    font-weight: 500;
}

.program::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: var(--rail-top, 0);
    bottom: var(--rail-bottom, 0);
    left: 50%;
    width: var(--pline);
    background: var(--blue);
    transform: translateX(-50%);
    pointer-events: none;
}

.program__item {
    display: grid;
    grid-row: span 2;
    grid-template-rows: subgrid;
    column-gap: 0;
    row-gap: 0;
    min-width: 0;
    min-height: 0;
    padding-bottom: var(--item-gap);
    overflow: visible;
}

.program__item:last-child {
    padding-bottom: 0;
}

.program__item:nth-child(odd) {
    grid-column: 2;
    grid-template-columns: auto minmax(0, 1fr);
}

.program__item:nth-child(even) {
    grid-column: 1;
    grid-template-columns: minmax(0, 1fr) auto;
}

.program__head {
    position: relative;
    display: grid;
    grid-template-columns: subgrid;
    grid-column: 1 / -1;
    grid-row: 1;
    align-self: end;
    column-gap: 0;
    align-items: end;
    padding-bottom: clamp(0.250rem, calc(0.189rem + 0.259vw), 0.500rem);
    border-bottom: var(--rule) solid var(--blue);
}

.program__item:nth-child(odd) .program__head {
    padding-left: var(--side-pad);
}

.program__item:nth-child(even) .program__head {
    padding-right: var(--side-pad);
}

.program__head::before {
    content: "";
    position: absolute;
    bottom: calc((var(--rule) + var(--dot)) / -2);
    width: var(--dot);
    height: var(--dot);
    border-radius: 50%;
    background: var(--blue);
    z-index: 2;
}

.program__item:nth-child(odd) .program__head::before {
    left: calc(var(--dot) / -2);
}

.program__item:nth-child(even) .program__head::before {
    right: calc(var(--dot) / -2);
}

.program__time {
    font-size: clamp(0.875rem, calc(0.481rem + 1.683vw), 2.500rem);
    font-weight: 700;
    white-space: nowrap;
}

.program__item:nth-child(odd) .program__time {
    grid-column: 1;
}

.program__item:nth-child(even) .program__time {
    grid-column: 2;
}

.program__head h3,
.program__text {
    min-width: 0;
    overflow-wrap: anywhere;
}

.program__head h3,
.program__time {
    grid-row: 1;
}

.program__text {
    grid-row: 2;
    align-self: start;
    margin-top: var(--row-gap);
    margin-bottom: 0;
}

.program__item:nth-child(odd) .program__head h3,
.program__item:nth-child(odd) .program__text {
    grid-column: 2;
    margin-left: var(--title-gap);
}

.program__item:nth-child(even) .program__head h3,
.program__item:nth-child(even) .program__text {
    grid-column: 1;
    margin-right: var(--title-gap);
}

.program__item:first-child::after {
    content: "";
    position: relative;
    z-index: 1;
    grid-row: 1;
    align-self: stretch;
    width: calc(var(--pline) + 2px);
    background: linear-gradient(to bottom, var(--white) calc(100% - var(--rule) / 2), transparent calc(100% - var(--rule) / 2));
    pointer-events: none;
}

.program__item:nth-child(odd):first-child::after {
    grid-column: 1;
    justify-self: start;
    margin-left: calc((var(--pline) + 2px) / -2);
}

.program__item:nth-child(even):first-child::after {
    grid-column: 2;
    justify-self: end;
    margin-right: calc((var(--pline) + 2px) / -2);
}

.program__item:last-child::after {
    content: "";
    position: relative;
    z-index: 1;
    grid-row: 2;
    align-self: stretch;
    width: calc(var(--pline) + 2px);
    background: var(--white);
    pointer-events: none;
}

.program__item:nth-child(odd):last-child::after {
    grid-column: 1;
    justify-self: start;
    margin-left: calc((var(--pline) + 2px) / -2);
}

.program__item:nth-child(even):last-child::after {
    grid-column: 2;
    justify-self: end;
    margin-right: calc((var(--pline) + 2px) / -2);
}

.program.program--js .program__item:first-child::after,
.program.program--js .program__item:last-child::after {
    content: none;
}

.program--masonry .program__item,
.program--masonry .program__item:nth-child(odd),
.program--masonry .program__item:nth-child(even) {
    position: absolute;
    left: 0;
    width: 50%;
    grid-row: auto;
    grid-column: auto;
    grid-template-rows: auto auto;
}

.program--masonry .program__item:nth-child(odd) {
    left: 50%;
}

.footer {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 0;
    padding: clamp(1.688rem, calc(1.066rem + 2.654vw), 4.250rem) 0 clamp(1.688rem, calc(1.217rem + 2.006vw), 3.625rem);
    background: var(--blue);
    border-radius: clamp(0.563rem, calc(0.214rem + 1.489vw), 2.000rem) clamp(0.563rem, calc(0.214rem + 1.489vw), 2.000rem) 0 0;
    color: var(--white);
    text-align: center;
}

.footer p {
    color: var(--white);
    font-size: clamp(0.688rem, calc(0.369rem + 1.359vw), 2.000rem);
}

.menu__button {
    display: none;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
    z-index: 3001;
    -webkit-tap-highlight-color: transparent;
    outline: none;
}

.ham {
    display: block;
    width: 35px;
    height: 35px;
    cursor: pointer;
    transition: transform 400ms;
    user-select: none;
}

.header.is-open .ham {
    transform: rotate(45deg);
}

.ham .line {
    fill: none;
    transition: stroke-dasharray 400ms, stroke-dashoffset 400ms;
    stroke: var(--white);
    stroke-width: 5.5;
    stroke-linecap: round;
}

.ham .top {
    stroke-dasharray: 40 139;
}

.ham .bottom {
    stroke-dasharray: 40 180;
}

.header.is-open .ham .top {
    stroke-dashoffset: -98px;
}

.header.is-open .ham .bottom {
    stroke-dashoffset: -138px;
}

body:has(.header.is-open) {
    overflow: hidden;
}

@media (max-width: 767px) {
    :root { --glow-opacity: 0.16; }
    .menu__button {
        display: block;
        position: absolute;
        top: 50%;
        right: 1rem;
        transform: translateY(-50%);
    }

    .header__nav {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 80vh;
        overflow-y: auto;
        flex-direction: column;
        justify-content: flex-start;
        align-items: stretch;
        gap: 0;
        margin: 0;
        padding-top: clamp(8.25rem, 7.7143rem + 2.381vw, 9.5rem);
        padding-bottom: clamp(1.25rem, 0.7143rem + 2.381vw, 2.5rem);
        background: var(--blue);
        z-index: 2000;
    }

    .header.is-open .header__nav {
        display: flex;
    }

    .header__nav .nav__item {
        width: 100%;
        padding: 19px 0;
        font-size: 1.25rem;
        color: var(--white);
        text-align: center;
        transition: background-color 300ms;
    }

    .header__nav .nav__item:hover {
        background: rgba(255, 255, 255, 0.15);
    }

    .header__nav .nav__item.selected {
        background: rgba(255, 255, 255, 0.15);
    }

    .header__nav .nav__item::after {
        content: none;
    }

    .panel__glow--tl,
    .panel__glow--tr {
        top: -5px;
    }

    .panel__glow--tl {
        left: calc((100% - 100vw) / 2 - 11px);
    }

    .panel__glow--tr {
        right: calc((100% - 100vw) / 2 - 12px);
    }

    .panel__glow--bl,
    .panel__glow--br {
        bottom: 24px;
    }

    .panel__glow--bl {
        left: calc((100% - 100vw) / 2 - 11px);
    }

    .panel__glow--br {
        right: calc((100% - 100vw) / 2 - 12px);
    }

    .about__list {
        grid-template-columns: 1fr;
        row-gap: var(--about-gap);
        padding-left: calc(var(--about-dot));
    }

    .about__list::before {
        content: none;
    }

    .about__item:not(:last-child)::after {
        content: "";
        position: absolute;
        z-index: 0;
        left: calc((var(--about-dot) + 13px) * -1 + var(--about-dot) / 2);
        top: calc(var(--about-dot) / 2);
        width: var(--about-line);
        height: calc(100% + var(--about-gap));
        background: var(--blue);
        transform: translateX(-50%);
    }

    .about__item h3 {
        text-align: left;
    }

    .about__item h3::before {
        position: absolute;
        left: calc((var(--about-dot) + 13px) * -1);
        top: 0;
        margin: 0;
    }
}

@media (max-width: 960px) {
    :root { --glow-opacity: 0.22; }
    .program {
        display: flex;
        flex-direction: column;
        height: auto !important;
    }

    .program::before {
        left: calc(var(--dot) / 2);
    }

    .program__item,
    .program__item:nth-child(odd),
    .program__item:nth-child(even),
    .program--masonry .program__item,
    .program--masonry .program__item:nth-child(odd),
    .program--masonry .program__item:nth-child(even) {
        position: relative;
        top: auto !important;
        left: auto;
        width: auto;
        display: grid;
        grid-column: auto;
        grid-row: auto;
        grid-template-columns: auto minmax(0, 1fr);
        grid-template-rows: auto auto;
        overflow: visible;
    }

    .program__item:nth-child(odd) .program__head,
    .program__item:nth-child(even) .program__head {
        padding: 0 0 6px calc(var(--dot) / 2 + var(--side-pad));
    }

    .program__item:nth-child(odd) .program__head::before,
    .program__item:nth-child(even) .program__head::before {
        left: 0;
        right: auto;
    }

    .program__item:nth-child(odd) .program__time,
    .program__item:nth-child(even) .program__time {
        grid-column: 1;
    }

    .program__item:nth-child(odd) .program__head h3,
    .program__item:nth-child(even) .program__head h3,
    .program__item:nth-child(odd) .program__text,
    .program__item:nth-child(even) .program__text {
        grid-column: 2;
        margin-left: var(--title-gap);
        margin-right: 0;
    }

    .program__item:first-child::after,
    .program__item:nth-child(odd):first-child::after,
    .program__item:nth-child(even):first-child::after,
    .program__item:last-child::after,
    .program__item:nth-child(odd):last-child::after,
    .program__item:nth-child(even):last-child::after {
        grid-column: 1;
        justify-self: start;
        width: calc(var(--pline) + 2px);
        margin-left: calc(var(--dot) / 2 - (var(--pline) + 2px) / 2);
        margin-right: 0;
    }

    .program__time,
    .program__head h3 {
        font-weight: 600;
    }
}

@media (max-width: 767px) and (max-height: 500px) and (orientation: landscape) {
    .header__nav {
        height: 100vh;
        padding-top: 5rem;
    }
}
