:root { --display: "Cormorant Garamond", Georgia, serif; --sans: Inter, system-ui, sans-serif; }
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: #000; color: #f8f5ed; font-family: var(--sans); }
.hall { min-height: 100%; display: grid; place-items: center; }
.hall[data-theme="royal"] { --bg: #071629; --ink: #f8f5ed; --gold: #d6ad55; --soft: #a7b0bc; --card: rgba(8,20,34,.55); }
.hall[data-theme="cinematic"] { --bg: #05080d; --ink: #ffffff; --gold: #f1d38a; --soft: #c8c8c8; --card: rgba(0,0,0,.35); }
.hall[data-theme="archive"] { --bg: #f8f5ed; --ink: #071629; --gold: #8a6a2f; --soft: #3d4a5c; --card: rgba(12,35,64,.06); }
.stage {
    width: min(100vw, calc(100vh * 16 / 9));
    aspect-ratio: 16 / 9;
    background: var(--bg);
    color: var(--ink);
    position: relative;
    overflow: hidden;
    container-type: inline-size;
    box-shadow: 0 0 0 1px rgba(214,173,85,.3);
}
.hall-marquee {
    position: absolute; top: 0; left: 0; right: 0; z-index: 6;
    overflow: hidden;
    background: rgba(5, 8, 13, .82);
    border-bottom: 1px solid var(--gold);
    color: var(--gold);
    font-size: 1.55cqi;
    letter-spacing: .14em;
    text-transform: uppercase;
    line-height: 1;
}
.hall-marquee-track { display: flex; width: max-content; animation: hall-marquee 110s linear infinite; }
.hall-marquee-group { display: flex; flex: none; }
.hall-marquee a {
    color: inherit; text-decoration: none; white-space: nowrap;
    padding: .7cqi 2.2cqi;
}
@keyframes hall-marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
.slide {
    position: absolute; inset: 0;
    display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr);
    gap: 3cqi; padding: 7cqi 4.5cqi 4.5cqi;
    background:
        linear-gradient(100deg, rgba(10,122,50,.18), transparent 12%),
        radial-gradient(80cqi 40cqi at 80% 20%, rgba(214,173,85,.18), transparent 50%),
        var(--bg);
    opacity: 0; visibility: hidden;
    transform: scale(1.02);
}
.slide.is-active { opacity: 1; visibility: visible; transform: none; z-index: 2; }
.slide.is-leaving { opacity: 0; z-index: 1; }
.stage[data-effect="fade"] .slide, .stage[data-effect="crossfade"] .slide { transition: opacity 1s ease, transform 1.4s ease; }
.stage[data-effect="slide"] .slide { transition: opacity .6s ease, transform .8s ease; transform: translateX(4cqi); }
.stage[data-effect="slide"] .slide.is-active { transform: none; }
.stage[data-effect="zoom"] .slide { transition: opacity 1s ease, transform 6s linear; }
.stage[data-effect="zoom"] .slide.is-active { transform: scale(1.06); }
.stage[data-effect="cinematic"] .slide { transition: opacity 1.2s ease, filter 1.2s ease; filter: saturate(.7); }
.stage[data-effect="cinematic"] .slide.is-active { filter: none; }
.slide-index { position: absolute; top: 5.6cqi; right: 4cqi; margin: 0; letter-spacing: .2em; color: var(--gold); font-size: 1.6cqi; }
.slide-body { min-width: 0; }
.slide-kicker { letter-spacing: .12em; text-transform: uppercase; color: var(--gold); font-size: 1.35cqi; margin: 0 0 1cqi; }
.slide h2 { font-family: var(--display); font-weight: 600; font-size: 4.5cqi; line-height: .98; margin: 0 0 1cqi; overflow-wrap: break-word; }
.slide-sub { font-family: var(--display); font-size: 2.15cqi; margin: 0 0 1cqi; overflow-wrap: break-word; }
.slide-copy, .slide-points { font-size: 1.7cqi; line-height: 1.35; color: var(--ink); max-width: 100%; }
.slide-points { padding-left: 1.2cqi; }
.slide-points li { margin: .4cqi 0; }
.slide-visual { display: grid; place-items: center; }
.slide-visual img, .portrait-placeholder { width: min(34cqi, 100%); aspect-ratio: 4/5; object-fit: cover; border: 1px solid var(--gold); }
.portrait-placeholder { display: grid; place-items: center; align-content: center; text-align: center; background: rgba(0,0,0,.15); }
.portrait-placeholder span { font-family: var(--display); font-size: 6cqi; letter-spacing: .08em; color: var(--gold); }
.portrait-placeholder small { color: var(--soft); font-size: 1.4cqi; max-width: 16cqi; }
.layout-statement, .layout-welcome.align-center { grid-template-columns: 1fr; text-align: center; }
.align-center .slide-body { margin: auto; }
.align-center .slide-copy, .align-center .slide-points { margin-left: auto; margin-right: auto; }
.layout-statement .slide-visual, .layout-topics .slide-visual { display: none; }
.layout-welcome { grid-template-columns: minmax(0, 1.35fr) minmax(0, .65fr); }
.layout-statement h2 { font-size: 5.4cqi; }
.slide-mosaic { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6cqi; }
.slide-mosaic img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.slide-quotes { display: grid; gap: 1cqi; }
.slide-quotes blockquote { margin: 0; border-left: 2px solid var(--gold); padding-left: 1cqi; font-family: var(--display); font-size: 2.2cqi; }
.slide-flag { position: absolute; left: 0; top: 0; bottom: 0; width: .7cqi; background: linear-gradient(#0a7a32, #fff 50%, #0a7a32); opacity: .8; }
.progress { position: fixed; left: 0; right: 0; bottom: 0; height: 4px; background: rgba(255,255,255,.12); }
.progress span { display: block; height: 100%; width: 0; background: #d6ad55; }
.controls, .keys, .controls-toggle { position: fixed; z-index: 5; font-size: 14px; }
.controls {
    left: 50%; bottom: 1.2rem; transform: translateX(-50%);
    display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; justify-content: center;
    max-width: calc(100% - 2rem);
    background: rgba(5,8,13,.78); color: #f8f5ed; border: 1px solid rgba(214,173,85,.45);
    padding: .55rem; border-radius: 999px;
}
.controls button, .controls select, .controls-toggle { background: transparent; color: inherit; border: 1px solid rgba(214,173,85,.4); padding: .35rem .55rem; border-radius: 999px; }
.controls label { display: flex; gap: .35rem; align-items: center; }
.controls.is-hidden, .keys.is-hidden { opacity: 0; pointer-events: none; }
.controls-toggle { right: .8rem; bottom: .8rem; }
.keys { left: 1rem; bottom: 4.5rem; color: rgba(248,245,237,.7); margin: 0; }
@media (prefers-reduced-motion: reduce) {
    .slide { transition: none !important; transform: none !important; }
}
