:root {
    /* IBM Plex Mono used sparingly for proposition numbers and proof notation. */
    --ink: #12100D;
    --limestone: #E8DDC6;
    --proof-blue: #273F63;
    --verdigris: #3D7B73;
    --gold: #C99A45;
    --oxide: #9B3A2F;
    --serif: "Cormorant Garamond", serif;
    --sans: "Commissioner", sans-serif;
    --mono: "IBM Plex Mono", monospace;
}

* { box-sizing: border-box; }

html {
    background: var(--ink);
    color: var(--limestone);
    scroll-behavior: smooth;
}

body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--sans);
    background:
        radial-gradient(circle at 50% 15%, rgba(201, 154, 69, 0.18), transparent 24rem),
        radial-gradient(circle at 70% 60%, rgba(39, 63, 99, 0.33), transparent 38rem),
        linear-gradient(180deg, #12100D 0%, #17130E 38%, #101720 70%, #12100D 100%);
    overflow-x: hidden;
}

.atmosphere,
.grain {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
}

.atmosphere {
    background:
        radial-gradient(circle at var(--mx, 50%) var(--my, 48%), rgba(232, 221, 198, 0.10), transparent 13rem),
        radial-gradient(circle at 50% 45%, rgba(61, 123, 115, 0.09), transparent 34rem);
    mix-blend-mode: screen;
}

.grain {
    opacity: 0.16;
    background-image:
        linear-gradient(30deg, rgba(232, 221, 198, 0.06) 12%, transparent 12.5%, transparent 87%, rgba(232, 221, 198, 0.06) 87.5%, rgba(232, 221, 198, 0.06)),
        linear-gradient(150deg, rgba(232, 221, 198, 0.05) 12%, transparent 12.5%, transparent 87%, rgba(232, 221, 198, 0.05) 87.5%, rgba(232, 221, 198, 0.05));
    background-size: 9px 9px;
}

.chamber-story {
    position: relative;
    z-index: 1;
}

.chamber {
    min-height: 100vh;
    position: relative;
    display: grid;
    place-items: center;
    padding: 8vh 7vw;
}

.radial-stage {
    position: fixed;
    inset: 50% auto auto 50%;
    width: min(88vw, 900px);
    aspect-ratio: 1;
    transform: translate(-50%, -50%) rotate(var(--table-rotation, 0deg)) scale(var(--table-scale, 1));
    transition: filter 600ms ease;
    z-index: 1;
    filter: drop-shadow(0 42px 80px rgba(0,0,0,0.58));
}

.logic-table {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.table-shadow { fill: url(#tableGlow); }
.table-core { fill: rgba(18, 16, 13, 0.60); stroke: rgba(232, 221, 198, 0.13); stroke-width: 1.5; }
.rim { fill: none; stroke: rgba(232, 221, 198, 0.24); stroke-width: 1; }
.rim.outer { stroke: rgba(201, 154, 69, 0.45); stroke-width: 2; }
.rim.middle { stroke: rgba(61, 123, 115, 0.38); }
.rim.inner { stroke: rgba(232, 221, 198, 0.30); stroke-dasharray: 3 9; }

.spokes line,
.construction-marks path,
.construction-marks circle {
    stroke: rgba(232, 221, 198, 0.11);
    stroke-width: 1;
    fill: none;
}

.seat-glyphs circle {
    fill: rgba(232, 221, 198, var(--seat-opacity, 0.08));
    stroke: rgba(201, 154, 69, 0.42);
    transition: fill 500ms ease;
}

.proof-lines path,
.agreement-arcs path {
    fill: none;
    stroke-linecap: round;
    stroke-dasharray: 620;
    stroke-dashoffset: calc(620 - (620 * var(--draw, 0)));
}

.proof-lines path { stroke: rgba(232, 221, 198, 0.45); stroke-width: 1.35; }
.agreement-arcs path { stroke: rgba(61, 123, 115, 0.74); stroke-width: 2.4; filter: drop-shadow(0 0 12px rgba(61, 123, 115, 0.38)); }

.arc-wordmark {
    font-family: var(--serif);
    font-size: 42px;
    letter-spacing: 0.18em;
    text-anchor: middle;
    fill: rgba(232, 221, 198, 0.64);
}

.proposition-card,
.vellum-pane,
.theorem-pane,
.mini-card {
    background:
        linear-gradient(135deg, rgba(232, 221, 198, 0.92), rgba(232, 221, 198, 0.74)),
        radial-gradient(circle at 15% 10%, rgba(201, 154, 69, 0.18), transparent 40%);
    color: var(--ink);
    border: 1px solid rgba(232, 221, 198, 0.55);
    box-shadow: 0 24px 70px rgba(0,0,0,0.35), inset 0 0 0 1px rgba(18,16,13,0.10);
    backdrop-filter: blur(10px);
}

.center-card {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(34vw, 360px);
    min-width: 270px;
    padding: 28px 30px;
    transform: translate(-50%, calc(-50% + var(--card-rise, 36px))) rotate(calc(var(--table-rotation, 0deg) * -1));
    opacity: var(--center-card-opacity, 1);
    border-radius: 2px 18px 2px 18px;
}

.card-number,
.operator,
.marginalia,
.qed,
.edge-annotation,
.counter-ribbon,
.stamp,
.proof-tree,
.theorem-pane {
    font-family: var(--mono);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

h1,
h2 {
    font-family: var(--serif);
    font-weight: 500;
    line-height: 0.98;
    margin: 0;
}

h1 { font-size: clamp(2rem, 4.5vw, 4.8rem); }
h2 { font-size: clamp(2.5rem, 6vw, 7rem); }

p {
    font-size: clamp(1rem, 1.25vw, 1.2rem);
    line-height: 1.65;
    font-weight: 300;
}

.card-number,
.operator { display: block; font-size: 0.74rem; margin-bottom: 18px; color: var(--proof-blue); }
.operator.oxide { color: var(--oxide); }
.operator.verdigris { color: var(--verdigris); }
.operator.gold { color: var(--gold); }

.chamber-copy {
    position: relative;
    z-index: 4;
    width: min(47rem, 70vw);
    padding: clamp(1.8rem, 4vw, 4rem);
    border-radius: 22px 3px 26px 3px;
    transform: translate3d(var(--copy-x, 0), var(--copy-y, 0), 0);
}

.left-copy { justify-self: start; margin-left: 2vw; }
.right-copy { justify-self: end; margin-right: 2vw; }
.upper-copy { align-self: start; margin-top: 4vh; }
.final-copy { text-align: center; width: min(42rem, 74vw); }

.proposition-index {
    position: fixed;
    top: 28px;
    right: 30px;
    z-index: 8;
    display: grid;
    place-items: center;
    color: var(--limestone);
    font-family: var(--mono);
    font-size: 0.68rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.index-ring {
    width: 86px;
    height: 86px;
    border: 1px solid rgba(232, 221, 198, 0.32);
    border-radius: 50%;
    position: relative;
    transform: rotate(var(--index-rotation, 0deg));
    transition: transform 250ms ease-out;
}

.index-ring span { position: absolute; left: 50%; top: 50%; transform-origin: 0 0; color: var(--gold); }
.index-ring span:nth-child(1) { transform: rotate(0deg) translate(33px) rotate(0deg); }
.index-ring span:nth-child(2) { transform: rotate(72deg) translate(33px) rotate(-72deg); color: var(--oxide); }
.index-ring span:nth-child(3) { transform: rotate(144deg) translate(33px) rotate(-144deg); }
.index-ring span:nth-child(4) { transform: rotate(216deg) translate(33px) rotate(-216deg); color: var(--verdigris); }
.index-ring span:nth-child(5) { transform: rotate(288deg) translate(33px) rotate(-288deg); }

#depthLabel { margin: 10px 0 0; font-size: 0.62rem; color: rgba(232, 221, 198, 0.58); }

.candle {
    position: absolute;
    left: 50%;
    top: 10%;
    width: 18px;
    height: 54px;
    transform: translateX(-50%) rotate(calc(var(--flame-lean, 0deg)));
    border-radius: 50% 50% 45% 45%;
    background: linear-gradient(#C99A45, #9B3A2F);
    filter: blur(0.3px) drop-shadow(0 0 24px rgba(201,154,69,0.75));
    opacity: 0.88;
}

.candle span {
    position: absolute;
    inset: 10px 5px 18px;
    border-radius: 50%;
    background: #E8DDC6;
}

.cursor-lens {
    position: fixed;
    width: 190px;
    height: 190px;
    border: 1px solid rgba(201, 154, 69, 0.34);
    border-radius: 50%;
    pointer-events: none;
    z-index: 7;
    opacity: var(--lens-opacity, 0);
    transform: translate(calc(var(--mx, 50vw) - 95px), calc(var(--my, 50vh) - 95px));
    background: radial-gradient(circle, rgba(232,221,198,0.10), transparent 66%);
    mix-blend-mode: screen;
}

.edge-annotation {
    position: absolute;
    z-index: 6;
    color: rgba(232, 221, 198, 0.72);
    font-size: 0.62rem;
    opacity: var(--annotation-opacity, 0);
    transition: opacity 280ms ease;
}

.annotation-one { left: 8%; top: 34%; transform: rotate(-18deg); }
.annotation-two { right: 4%; bottom: 24%; transform: rotate(14deg); }

.marginalia {
    position: absolute;
    right: 9vw;
    top: 22vh;
    writing-mode: vertical-rl;
    color: rgba(232, 221, 198, 0.56);
    z-index: 4;
    font-size: 0.72rem;
}

.counter-ribbon {
    position: absolute;
    z-index: 3;
    left: 14vw;
    top: 31vh;
    width: 46vw;
    height: 1px;
    color: var(--oxide);
    background: linear-gradient(90deg, transparent, #9B3A2F, transparent);
    transform: rotate(-18deg);
    padding-left: 34%;
    line-height: 0;
}

.stamp {
    display: inline-block;
    margin-top: 20px;
    padding: 9px 13px;
    color: var(--oxide);
    border: 2px solid var(--oxide);
    transform: rotate(-7deg) scale(var(--stamp-scale, 0.92));
    opacity: var(--stamp-opacity, 0.25);
}

.proof-tree {
    position: absolute;
    left: 8vw;
    bottom: 16vh;
    z-index: 4;
    color: rgba(232, 221, 198, 0.60);
    display: grid;
    gap: 9px;
    justify-items: center;
}

.proof-tree i { display: block; width: 1px; height: 42px; background: rgba(201,154,69,0.48); }

.orbit-cards {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
}

.mini-card {
    position: absolute;
    width: 116px;
    padding: 16px;
    text-align: center;
    font-family: var(--mono);
    color: var(--proof-blue);
    transform: translate(-50%, -50%) rotate(var(--mini-rot, 0deg));
}

.mini-card small { color: var(--ink); text-transform: lowercase; letter-spacing: 0; }
.mini-card:nth-child(1) { left: calc(50% + var(--orbit-a, 250px)); top: 48%; }
.mini-card:nth-child(2) { left: 50%; top: calc(50% + var(--orbit-b, 255px)); }
.mini-card:nth-child(3) { left: calc(50% - var(--orbit-c, 240px)); top: 44%; }

.theorem-pane {
    position: absolute;
    right: 9vw;
    bottom: 15vh;
    z-index: 5;
    padding: 24px 28px;
    line-height: 1.8;
    color: var(--proof-blue);
    transform: rotate(5deg);
}

.accord-ring {
    position: absolute;
    z-index: 4;
    width: min(66vw, 660px);
    aspect-ratio: 1;
    border-radius: 50%;
    border: 1px solid rgba(61, 123, 115, 0.56);
    box-shadow: 0 0 80px rgba(61, 123, 115, 0.28), inset 0 0 64px rgba(201,154,69,0.12);
    opacity: var(--accord-opacity, 0.2);
    transform: scale(var(--accord-scale, 0.82));
}

.accord-ring span {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 13px;
    height: 13px;
    margin: -6px;
    border-radius: 50%;
    background: #E8DDC6;
    box-shadow: 0 0 14px #C99A45;
    transform: rotate(calc(var(--i) * 30deg)) translate(calc(min(33vw, 330px))) rotate(calc(var(--i) * -30deg));
}

.accord-ring span:nth-child(1) { --i: 0; } .accord-ring span:nth-child(2) { --i: 1; }
.accord-ring span:nth-child(3) { --i: 2; } .accord-ring span:nth-child(4) { --i: 3; }
.accord-ring span:nth-child(5) { --i: 4; } .accord-ring span:nth-child(6) { --i: 5; }
.accord-ring span:nth-child(7) { --i: 6; } .accord-ring span:nth-child(8) { --i: 7; }
.accord-ring span:nth-child(9) { --i: 8; } .accord-ring span:nth-child(10) { --i: 9; }
.accord-ring span:nth-child(11) { --i: 10; } .accord-ring span:nth-child(12) { --i: 11; }

.qed { color: var(--verdigris); }

@media (max-width: 760px) {
    .radial-stage { width: 118vw; }
    .center-card { width: 78vw; }
    .chamber { padding: 8vh 5vw; align-items: end; }
    .chamber-copy { width: 88vw; }
    .left-copy, .right-copy { justify-self: center; margin: 0; }
    .proposition-index { right: 14px; top: 14px; transform: scale(0.82); transform-origin: top right; }
    .marginalia, .proof-tree, .theorem-pane { display: none; }
}
