/* Base styles */
:root {
    --bg: #0a0a0f;
    --fg: #e0e0e0;
    --accent: #00ff88;
    --accent-dim: #00aa55;
    --highlight: #ff6b6b;
    --matrix-green: #00ff41;
    --code-bg: #1a1a2e;
    --border: #333;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background: var(--bg);
    color: var(--fg);
    min-height: 100vh;
    overflow: hidden;
}

/* Presentation container */
#presentation {
    width: 100vw;
    height: 100vh;
    position: relative;
}

/* Individual slides */
.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: none;
    padding: 60px;
    overflow-y: auto;
}

.slide.active {
    display: flex;
    justify-content: center;
    align-items: flex-start;
}

.slide-content {
    max-width: 1200px;
    width: 100%;
}

/* Typography */
h1 {
    font-size: 3rem;
    margin-bottom: 1.5rem;
    color: var(--accent);
    text-shadow: 0 0 20px var(--accent-dim);
}

h2 {
    font-size: 2rem;
    margin-bottom: 1rem;
    color: var(--fg);
    opacity: 0.9;
}

h3 {
    font-size: 1.4rem;
    margin-bottom: 0.8rem;
    color: var(--accent);
}

p {
    font-size: 1.3rem;
    line-height: 1.6;
    margin-bottom: 1rem;
}

/* Title slide */
.title-slide {
    text-align: center;
    padding-top: 10vh;
}

.title-slide h1 {
    font-size: 4rem;
}

.subtitle {
    font-size: 1.5rem;
    opacity: 0.7;
    margin-top: 2rem;
}

/* ASCII art */
.ascii-art, pre.ascii-dance {
    font-family: 'Courier New', monospace;
    font-size: 1rem;
    color: var(--matrix-green);
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    margin: 2rem auto;
    display: inline-block;
    text-align: left;
    white-space: pre;
}

/* Big question */
.big-question {
    font-size: 2.5rem;
    text-align: center;
    margin: 3rem 0;
}

.big-question em {
    color: var(--highlight);
}

/* Examples grid */
.examples {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    margin: 2rem 0;
}

.example {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    border: 1px solid var(--border);
}

.verdict {
    font-weight: bold;
    margin-top: 1rem;
}

.verdict.yes {
    color: var(--accent);
}

.verdict.no {
    color: var(--highlight);
}

.verdict.unknown {
    color: #ffaa00;
    font-style: italic;
}

/* Cantor table */
.cantor-table {
    font-family: 'Courier New', monospace;
    font-size: 1.5rem;
    margin: 2rem auto;
    border-collapse: collapse;
}

.cantor-table td {
    padding: 0.5rem;
    text-align: center;
}

.cantor-table .index {
    color: var(--accent-dim);
    padding-right: 1rem;
}

.cantor-table .d {
    color: var(--highlight);
    background: rgba(255, 107, 107, 0.2);
    font-weight: bold;
}

.list-display {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    overflow-x: auto;
}

.punchline {
    font-size: 1.8rem;
    text-align: center;
    margin-top: 2rem;
    color: var(--accent);
}

/* Diagonal demo */
.diagonal-demo {
    display: grid;
    gap: 2rem;
    margin: 2rem 0;
}

.step {
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
    border-left: 4px solid var(--accent);
}

.step code {
    display: block;
    font-size: 1.5rem;
    color: var(--highlight);
    margin-top: 1rem;
}

.diagonal-digits {
    color: var(--highlight) !important;
}

.flipped-digits {
    color: var(--accent) !important;
}

.new-number {
    font-size: 2rem !important;
    color: var(--matrix-green) !important;
}

/* Why box */
.why-box {
    background: rgba(0, 255, 136, 0.1);
    border: 2px solid var(--accent);
    padding: 2rem;
    border-radius: 8px;
    margin-top: 2rem;
}

.why-box ul {
    list-style: none;
    padding-left: 1rem;
}

.why-box li {
    padding: 0.5rem 0;
    font-size: 1.2rem;
}

.why-box li::before {
    content: "→ ";
    color: var(--accent);
}

/* Revelation */
.revelation {
    text-align: center;
    margin: 3rem 0;
}

.revelation .big {
    font-size: 2.5rem;
}

.revelation em {
    color: var(--highlight);
    font-style: normal;
    font-weight: bold;
}

/* Infinity comparison */
.infinity-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 2rem 0;
}

.infinity-box {
    padding: 2rem;
    border-radius: 8px;
}

.infinity-box.countable {
    background: rgba(0, 255, 136, 0.1);
    border: 2px solid var(--accent);
}

.infinity-box.uncountable {
    background: rgba(255, 107, 107, 0.1);
    border: 2px solid var(--highlight);
}

.infinity-box .note {
    font-size: 1rem;
    opacity: 0.7;
    font-style: italic;
}

.infinity-box .matrix-shape {
    font-family: 'Courier New', monospace;
    font-size: 0.85rem;
    background: rgba(0, 0, 0, 0.3);
    padding: 0.8rem;
    border-radius: 4px;
    margin: 1rem 0;
    line-height: 1.2;
}

.deep-note {
    text-align: center;
    font-style: italic;
    margin-top: 2rem;
    opacity: 0.9;
}

/* Gödel */
.godel-portrait {
    text-align: center;
    margin: 2rem 0;
}

.thought-bubble {
    display: inline-block;
    background: var(--code-bg);
    padding: 2rem 3rem;
    border-radius: 20px;
    position: relative;
    font-size: 1.5rem;
    font-style: italic;
}

.thought-bubble::after {
    content: "...";
    position: absolute;
    bottom: -30px;
    left: 50%;
    font-size: 2rem;
    color: var(--accent);
}

.godel-insight {
    margin-top: 3rem;
}

.encoding-demo {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2rem;
    margin: 2rem 0;
    flex-wrap: wrap;
}

.encoding-demo .statement {
    background: var(--code-bg);
    padding: 1rem 2rem;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 1.5rem;
}

.encoding-demo .arrow {
    font-size: 2rem;
    color: var(--accent);
}

.encoding-demo .number {
    background: rgba(0, 255, 136, 0.1);
    padding: 1rem 2rem;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 1rem;
    color: var(--accent);
}

/* Detailed Gödel encoding */
.encoding-demo-detailed {
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
    margin: 1.5rem 0;
}

.encoding-step {
    margin: 1rem 0;
}

.step-label {
    font-size: 1rem;
    color: var(--accent-dim);
    margin-bottom: 0.5rem;
}

.symbol-table {
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
    font-family: 'Courier New', monospace;
    font-size: 1.1rem;
}

.symbol-code {
    background: rgba(255, 255, 255, 0.05);
    padding: 0.3rem 0.6rem;
    border-radius: 4px;
}

.encoding-table {
    font-family: 'Courier New', monospace;
    font-size: 1.1rem;
    border-collapse: collapse;
    margin: 0.5rem 0;
}

.encoding-table td {
    padding: 0.4rem 0.8rem;
    text-align: center;
    border: 1px solid var(--border);
}

.encoding-table td:first-child {
    color: var(--accent-dim);
    text-align: right;
    border: none;
}

.encoding-header td {
    color: var(--highlight);
    font-weight: bold;
}

.encoding-result td {
    color: var(--accent);
    font-weight: bold;
}

.final-number {
    font-family: 'Courier New', monospace;
    font-size: 1.2rem;
    color: var(--matrix-green);
    text-shadow: 0 0 10px var(--matrix-green);
}

.implication {
    text-align: center;
    font-size: 1.5rem;
    color: var(--accent);
}

/* Self-reference chain */
.self-ref-setup {
    margin-top: 1.5rem;
    padding: 1rem;
    background: rgba(0, 255, 136, 0.05);
    border-radius: 8px;
}

.ref-chain {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
}

.ref-step {
    font-size: 1.1rem;
    padding: 0.5rem 1rem;
}

.ref-step code {
    background: var(--code-bg);
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
    color: var(--highlight);
}

.ref-step.highlight {
    color: var(--accent);
    font-weight: bold;
    font-size: 1.3rem;
}

.ref-arrow {
    color: var(--accent-dim);
    font-size: 1.2rem;
}

/* Gödel construction */
.godel-construction {
    text-align: center;
    margin: 2rem 0;
}

.construction-intro {
    font-size: 1.2rem;
    margin-bottom: 1rem;
}

.self-ref-reveal {
    font-size: 1.4rem;
    margin-top: 1rem;
    color: var(--highlight);
}

.diagonal-parallel {
    margin-top: 2rem;
    padding: 1.5rem;
    background: var(--code-bg);
    border-radius: 8px;
    border-left: 4px solid var(--accent);
    text-align: center;
}

.diagonal-parallel p {
    margin: 0.5rem 0;
    font-size: 1.2rem;
}

/* Gödel statement */
.godel-statement {
    text-align: center;
    margin: 3rem 0;
}

.statement-box {
    display: inline-block;
    background: var(--code-bg);
    padding: 2rem 4rem;
    border-radius: 12px;
    border: 3px solid var(--highlight);
}

.statement-g {
    font-size: 4rem;
    font-weight: bold;
    color: var(--highlight);
    margin-bottom: 1rem;
}

.statement-text {
    font-size: 1.5rem;
    font-style: italic;
}

/* Paradox analysis */
.paradox-analysis {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 2rem 0;
}

.case {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
}

.case .result {
    margin-top: 1rem;
    font-weight: bold;
    color: var(--accent);
}

.case .result.bad {
    color: var(--highlight);
}

.conclusion {
    text-align: center;
    font-size: 1.5rem;
    margin-top: 2rem;
    padding: 1.5rem;
    background: rgba(0, 255, 136, 0.1);
    border-radius: 8px;
}

/* Turing */
.turing-question {
    text-align: center;
    margin: 2rem 0;
}

.turing-question .question {
    font-size: 1.8rem;
}

.halting-demo {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    margin: 2rem 0;
}

.program {
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
    text-align: center;
}

.program code {
    display: block;
    text-align: left;
    font-size: 0.9rem;
    white-space: pre;
    margin-bottom: 1rem;
}

.program.good {
    border: 2px solid var(--accent);
}

.program.bad {
    border: 2px solid var(--highlight);
}

.program.tricky {
    border: 2px solid #ffaa00;
}

.program .verdict {
    font-size: 1.2rem;
}

.turing-diagonal {
    background: rgba(255, 107, 107, 0.1);
    padding: 2rem;
    border-radius: 8px;
    margin-top: 2rem;
    text-align: center;
}

.turing-diagonal .conclusion {
    background: none;
    padding: 0;
    margin-top: 1rem;
}

/* Pattern table */
.pattern-reveal {
    text-align: center;
    margin: 2rem 0;
}

.pattern-statement {
    font-size: 2rem;
    color: var(--accent);
    font-weight: bold;
}

.pattern-breakdown {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    margin: 1.5rem 0;
    flex-wrap: wrap;
}

.pattern-term {
    background: var(--code-bg);
    padding: 1rem 1.5rem;
    border-radius: 8px;
    text-align: center;
    min-width: 150px;
}

.pattern-term h4 {
    color: var(--accent);
    margin-bottom: 0.5rem;
    font-size: 1.1rem;
}

.pattern-term p {
    font-size: 0.95rem;
    margin: 0;
    opacity: 0.8;
}

.pattern-plus, .pattern-equals {
    font-size: 2rem;
    color: var(--accent);
    font-weight: bold;
}

.pattern-table {
    width: 100%;
    border-collapse: collapse;
    margin: 2rem 0;
}

.pattern-table th,
.pattern-table td {
    padding: 1rem;
    border: 1px solid var(--border);
    text-align: left;
}

.pattern-table th {
    background: var(--code-bg);
    color: var(--accent);
}

.pattern-table tr.highlight {
    background: rgba(0, 255, 65, 0.1);
}

.pattern-table tr.highlight td {
    color: var(--matrix-green);
    font-weight: bold;
}

.ghost-note {
    text-align: center;
    font-style: italic;
    font-size: 1.5rem;
    margin-top: 2rem;
    color: var(--accent);
}

/* Matrix theme */
.matrix-theme {
    background: linear-gradient(180deg, var(--bg) 0%, #001a00 100%);
}

.matrix-theme h1 {
    color: var(--matrix-green);
    text-shadow: 0 0 30px var(--matrix-green);
}

.matrix-analysis {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 2rem 0;
}

.matrix-box,
.neo-box {
    padding: 2rem;
    border-radius: 8px;
}

.matrix-box {
    background: rgba(255, 0, 0, 0.1);
    border: 2px solid #ff0000;
}

.neo-box {
    background: rgba(0, 255, 65, 0.1);
    border: 2px solid var(--matrix-green);
}

.matrix-box h3 {
    color: #ff0000;
}

.neo-box h3 {
    color: var(--matrix-green);
}

.matrix-box ul,
.neo-box ul {
    list-style: none;
}

.matrix-box li::before {
    content: "▪ ";
    color: #ff0000;
}

.neo-box li::before {
    content: "▪ ";
    color: var(--matrix-green);
}

.matrix-quote {
    text-align: center;
    margin: 3rem 0;
    padding: 2rem;
    background: var(--code-bg);
    border-radius: 8px;
    font-style: italic;
}

.matrix-quote .attribution {
    margin-top: 1rem;
    font-size: 1rem;
    opacity: 0.7;
}

.insight {
    text-align: center;
    font-size: 1.5rem;
    color: var(--matrix-green);
}

/* Machine dilemma */
.machine-dilemma {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    margin: 2rem 0;
}

.attempt {
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
    text-align: center;
}

.attempt .result {
    margin-top: 1rem;
    color: var(--highlight);
    font-weight: bold;
}

.godel-parallel {
    margin-top: 2rem;
    padding: 2rem;
    background: rgba(0, 255, 65, 0.1);
    border-radius: 8px;
}

/* AI section */
.formal-system-intro {
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
    margin-bottom: 1.5rem;
}

.formal-system-intro h3 {
    margin-bottom: 0.5rem;
}

.formal-system-intro p {
    margin-bottom: 1rem;
    font-size: 1.1rem;
}

.formal-examples {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.formal-eg {
    background: rgba(0, 255, 136, 0.1);
    padding: 0.4rem 0.8rem;
    border-radius: 4px;
    font-size: 0.9rem;
    border-left: 3px solid var(--accent);
}

.formal-conclusion {
    margin-top: 1rem;
    font-style: italic;
    color: var(--accent);
}

.nfa-preview-small {
    margin-top: 1rem;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 8px;
    padding: 1rem;
}

.nfa-preview-small pre {
    font-family: 'Courier New', monospace;
    font-size: 0.85rem;
    color: var(--matrix-green);
    margin: 0;
    line-height: 1.3;
}

.nfa-caption {
    margin: 0.5rem 0 0 0;
    font-size: 0.9rem;
    font-style: italic;
    color: var(--accent);
    text-align: center;
}

.ai-context {
    margin: 1.5rem 0;
}

.ai-context .question {
    font-size: 1.8rem;
    text-align: center;
    margin-bottom: 2rem;
}

.ai-anatomy,
.ai-limits {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    margin: 1.5rem 0;
}

.ai-anatomy ul,
.ai-limits ul {
    list-style: none;
    padding-left: 1rem;
}

.ai-anatomy li::before,
.ai-limits li::before {
    content: "→ ";
    color: var(--accent);
}

.hopeful {
    text-align: center;
    font-size: 1.8rem;
    color: var(--accent);
    margin-top: 2rem;
}

/* Dance */
.dance-insight {
    text-align: center;
    margin: 2rem 0;
}

.dance-insight .big,
.dance-insight .also-big {
    font-size: 2rem;
    margin: 1rem 0;
}

.dance-insight .also-big {
    color: var(--highlight);
}

.dance-description {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    margin: 2rem 0;
}

.dance-description ul {
    list-style: none;
}

.dance-description li {
    padding: 0.5rem 0;
}

.dance-description li::before {
    content: "◈ ";
    color: var(--accent);
}

.dance-visual {
    text-align: center;
}

/* NFA section */
.nfa-intro {
    text-align: center;
}

.nfa-preview {
    margin: 2rem 0;
}

.nfa-link {
    display: inline-block;
    padding: 1.5rem 3rem;
    background: var(--accent);
    color: var(--bg);
    text-decoration: none;
    font-size: 1.5rem;
    font-weight: bold;
    border-radius: 8px;
    transition: all 0.3s;
}

.nfa-link:hover {
    background: var(--matrix-green);
    transform: scale(1.05);
}

.nfa-explanation {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    text-align: left;
    max-width: 600px;
    margin: 2rem auto;
}

.nfa-explanation ul {
    list-style: none;
}

.nfa-explanation li {
    padding: 0.5rem 0;
}

.observation {
    font-style: italic;
    opacity: 0.9;
    margin-top: 2rem;
    text-align: center;
}

/* Challenges */
.click-hint {
    text-align: center;
    font-size: 1rem;
    opacity: 0.6;
    margin-bottom: 1rem;
}

.challenges {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin: 2rem 0;
}

.challenge-card {
    perspective: 1000px;
    height: 220px;
    cursor: pointer;
}

.card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    transition: transform 0.6s;
    transform-style: preserve-3d;
}

.challenge-card.flipped .card-inner {
    transform: rotateY(180deg);
}

.card-front, .card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    border-radius: 8px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.card-front {
    background: var(--code-bg);
    border-left: 4px solid var(--accent);
}

.card-front h3 {
    margin-bottom: 1rem;
    color: var(--accent);
}

.card-front p {
    font-size: 1.1rem;
    margin: 0;
}

.card-back {
    background: rgba(0, 255, 136, 0.1);
    border: 2px solid var(--accent);
    transform: rotateY(180deg);
}

.card-back h4 {
    color: var(--accent);
    margin-bottom: 0.8rem;
    font-size: 1rem;
}

.card-back p {
    font-size: 0.95rem;
    margin: 0.3rem 0;
}

.card-back pre {
    font-family: 'Courier New', monospace;
    font-size: 0.85rem;
    background: rgba(0, 0, 0, 0.3);
    padding: 0.5rem;
    border-radius: 4px;
    margin: 0.5rem 0;
}

.challenge {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 8px;
    border-left: 4px solid var(--accent);
}

.challenge h3 {
    margin-bottom: 1rem;
}

/* Takeaways */
.takeaways {
    display: grid;
    gap: 1.5rem;
    margin: 2rem 0;
}

.takeaway {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    background: var(--code-bg);
    padding: 1.5rem;
    border-radius: 8px;
}

.takeaway .number {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    background: var(--accent);
    color: var(--bg);
    border-radius: 50%;
    font-size: 1.5rem;
    font-weight: bold;
    flex-shrink: 0;
}

.takeaway p {
    margin: 0;
    font-size: 1.3rem;
}

.final-quote {
    text-align: center;
    margin-top: 3rem;
    padding: 2rem;
    background: rgba(0, 255, 136, 0.1);
    border-radius: 8px;
}

.final-quote p:first-child {
    font-size: 2rem;
    font-style: italic;
    color: var(--accent);
}

.final-quote .interpretation {
    font-size: 1.1rem;
    opacity: 0.8;
    margin-top: 1rem;
}

/* Contact */
.contact {
    margin-top: 2rem;
    font-size: 1.3rem;
}

/* Navigation */
#nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 1rem 2rem;
    background: rgba(10, 10, 15, 0.95);
    border-top: 1px solid var(--border);
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 2rem;
    z-index: 1000;
}

#nav button {
    padding: 0.8rem 2rem;
    font-size: 1.1rem;
    background: var(--code-bg);
    color: var(--fg);
    border: 1px solid var(--border);
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.2s;
}

#nav button:hover {
    background: var(--accent);
    color: var(--bg);
    border-color: var(--accent);
}

#slide-counter {
    font-size: 1.2rem;
    color: var(--accent);
    min-width: 80px;
    text-align: center;
}

/* Responsive */
@media (max-width: 900px) {
    .slide {
        padding: 30px;
    }

    h1 {
        font-size: 2rem;
    }

    p {
        font-size: 1.1rem;
    }

    .examples,
    .infinity-compare,
    .paradox-analysis,
    .matrix-analysis,
    .machine-dilemma,
    .halting-demo,
    .challenges {
        grid-template-columns: 1fr;
    }
}

/* Keyboard hints */
.keyboard-hint {
    position: fixed;
    bottom: 80px;
    right: 20px;
    font-size: 0.9rem;
    color: var(--accent-dim);
    opacity: 0.5;
}

/* ============================================
   INTERACTIVE DEMOS
   ============================================ */

/* Animated list counters */
.animated-list {
    font-family: 'Courier New', monospace;
    font-size: 1.4rem;
    margin: 1rem 0;
    min-height: 2rem;
}

.list-item {
    display: inline-block;
    transition: all 0.3s;
}

.list-item.counting {
    color: var(--accent);
    font-weight: bold;
    animation: pulse 0.5s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.2); }
}

.formula {
    font-family: 'Courier New', monospace;
    color: var(--accent);
    font-size: 1.2rem;
    margin: 0.5rem 0;
}

.finite-note {
    font-size: 0.9rem;
    opacity: 0.7;
    margin: 0.5rem 0;
}

.finite-note em {
    color: var(--accent);
    font-style: normal;
}

/* Real numbers demo */
.reals-list {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.real-number {
    font-family: 'Courier New', monospace;
    font-size: 1.1rem;
}

.real-number.mystery {
    color: var(--highlight);
    animation: flicker 0.5s infinite;
}

@keyframes flicker {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.example.danger {
    border-color: var(--highlight);
    background: rgba(255, 107, 107, 0.05);
}

.example.mystery {
    border-color: #ffaa00;
    background: rgba(255, 170, 0, 0.05);
}

/* Cantor grid interactive */
#cantor-grid {
    position: relative;
}

.cantor-table .digit {
    width: 30px;
    height: 30px;
    text-align: center;
    transition: all 0.3s;
    border-radius: 4px;
}

.cantor-table .digit.highlighted {
    background: var(--highlight);
    color: var(--bg);
    transform: scale(1.2);
    box-shadow: 0 0 15px var(--highlight);
}

.cantor-table .digit.d {
    color: var(--highlight);
    font-weight: bold;
}

.cantor-table .digit.d.active {
    background: var(--highlight);
    color: var(--bg);
    animation: pop 0.3s ease-out;
}

.cantor-table .diagonal-row {
    background: rgba(0, 255, 136, 0.1);
}

.cantor-table .diagonal-row td {
    color: var(--accent);
}

.cantor-table .row-note {
    font-size: 0.9rem;
    color: var(--accent);
    padding-left: 1rem;
    font-style: italic;
}

@keyframes pop {
    0% { transform: scale(1); }
    50% { transform: scale(1.4); }
    100% { transform: scale(1.2); }
}

.cantor-controls, .builder-controls {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin: 1.5rem 0;
}

.demo-btn {
    padding: 0.8rem 2rem;
    font-size: 1.1rem;
    background: var(--accent);
    color: var(--bg);
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
    transition: all 0.2s;
}

.demo-btn:hover {
    transform: scale(1.05);
    box-shadow: 0 0 20px var(--accent);
}

.demo-btn:active {
    transform: scale(0.98);
}

/* Diagonal builder */
.diagonal-demo-interactive {
    background: var(--code-bg);
    padding: 2rem;
    border-radius: 12px;
    margin: 2rem 0;
}

.escapee-builder {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    font-family: 'Courier New', monospace;
    font-size: 1.5rem;
}

.builder-row {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.builder-label {
    width: 100px;
    color: var(--accent-dim);
    font-size: 1.1rem;
}

.builder-note {
    font-size: 0.9rem;
    color: var(--accent);
    margin-left: 1rem;
    font-style: italic;
}

.builder-digits {
    display: flex;
    gap: 0.3rem;
}

.digit-slot {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: rgba(255, 255, 255, 0.05);
    border: 2px solid var(--border);
    border-radius: 6px;
    transition: all 0.3s;
}

.digit-slot.filled {
    border-color: var(--highlight);
    color: var(--highlight);
    animation: fillIn 0.3s ease-out;
}

.digit-slot.flipped.filled {
    border-color: var(--accent);
    color: var(--accent);
    background: rgba(0, 255, 136, 0.1);
}

@keyframes fillIn {
    0% { transform: scale(0); opacity: 0; }
    50% { transform: scale(1.3); }
    100% { transform: scale(1); opacity: 1; }
}

.flip-row {
    opacity: 0.5;
    transition: opacity 0.3s;
}

.flip-row.active {
    opacity: 1;
}

.escapee-row {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 2px dashed var(--border);
}

.escapee-number {
    font-size: 2rem;
    color: var(--matrix-green);
    text-shadow: 0 0 10px var(--matrix-green);
}

#escapee-result {
    letter-spacing: 0.2rem;
}

/* Why box enhancements */
.why-box .why-row {
    transition: all 0.3s;
}

.why-box .why-row.highlight {
    color: var(--highlight);
    font-weight: bold;
}

.why-box .conclusion {
    color: var(--accent);
    font-weight: bold;
}

/* Slide 7: Halting programs */
.program code {
    background: rgba(0, 0, 0, 0.3);
    padding: 1rem;
    border-radius: 6px;
    font-size: 0.85rem;
}

.program.running code {
    animation: codeRun 1s infinite;
}

@keyframes codeRun {
    0%, 100% { box-shadow: 0 0 5px var(--accent); }
    50% { box-shadow: 0 0 20px var(--accent); }
}

/* Slide 17: The Finale - Who is ??? */
.finale-slide {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.mystery-question {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
}

.mini-table {
    width: auto;
    margin: 0 auto;
}

.mini-table th,
.mini-table td {
    padding: 0.8rem 1.5rem;
    font-size: 1.1rem;
}

.mystery-cell {
    font-size: 1.5rem;
    color: var(--matrix-green);
    text-shadow: 0 0 10px var(--matrix-green);
}

.reveal-btn {
    padding: 1.2rem 3rem;
    font-size: 1.5rem;
    font-weight: bold;
    background: transparent;
    border: 2px solid var(--matrix-green);
    color: var(--matrix-green);
    cursor: pointer;
    transition: all 0.3s ease;
    font-family: inherit;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.reveal-btn:hover {
    background: var(--matrix-green);
    color: var(--bg);
    box-shadow: 0 0 30px var(--matrix-green);
}

.reveal-content {
    display: none;
    max-width: 700px;
    margin-top: 2rem;
}

.reveal-content.visible {
    display: block;
    animation: fadeInUp 0.8s ease-out;
}

.reveal-line {
    font-size: 1.4rem;
    margin: 1rem 0;
    opacity: 0;
    animation: revealLine 0.5s ease-out forwards;
}

.reveal-content.visible .reveal-line:nth-child(1) { animation-delay: 0.1s; }
.reveal-content.visible .reveal-line:nth-child(2) { animation-delay: 0.4s; }
.reveal-content.visible .reveal-line:nth-child(3) { animation-delay: 0.8s; }
.reveal-content.visible .reveal-line:nth-child(4) { animation-delay: 1.1s; }
.reveal-content.visible .reveal-line:nth-child(5) { animation-delay: 1.4s; }
.reveal-content.visible .reveal-line:nth-child(6) { animation-delay: 1.7s; }
.reveal-content.visible .reveal-line:nth-child(7) { animation-delay: 2.2s; }

@keyframes revealLine {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.reveal-line em {
    color: var(--accent);
    font-style: normal;
    font-weight: bold;
}

.reveal-line.breathe {
    margin-top: 1.5rem;
}

.reveal-line.finale {
    margin-top: 2rem;
    font-size: 1.8rem;
    color: var(--matrix-green);
    font-weight: bold;
    text-shadow: 0 0 20px var(--matrix-green);
}

/* Hide the question once revealed */
.mystery-question.hidden {
    display: none;
}
