/* ==========================================================================
   Presentation deck — used by /investors/pitch/
   Full-viewport slides with keyboard, click and touch navigation.
   Prints as one slide per page so it exports cleanly to PDF.
   ========================================================================== */

.deck-stage {
    position: relative;
    width: 100%;
    /* 16:10 rather than 16:9 — several content slides (the ownership grid, the
       IP layer table) need the extra vertical room and were showing a scrollbar. */
    aspect-ratio: 16 / 10;
    max-height: calc(100vh - 150px);
    min-height: 560px;
    background: var(--color-bg-card);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.deck-stage:fullscreen,
.deck-stage:-webkit-full-screen {
    aspect-ratio: auto;
    max-height: none;
    height: 100vh;
    border: none;
    border-radius: 0;
}

/* --- Slides --------------------------------------------------------------- */
.slide {
    position: absolute;
    inset: 0;
    display: none;
    flex-direction: column;
    justify-content: center;
    padding: clamp(1rem, 2.6vw, 2.4rem) clamp(1.25rem, 3.4vw, 3rem);
    overflow-y: auto;
}

.slide.active { display: flex; animation: slideIn .35s ease-out; }

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

.slide-num {
    position: absolute;
    top: clamp(.75rem, 2vw, 1.5rem);
    right: clamp(.9rem, 2.5vw, 2rem);
    font-size: 0.72rem;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    opacity: 0.55;
}

.slide h2 {
    font-size: clamp(1.35rem, 3.4vw, 2.6rem);
    line-height: 1.15;
    margin-bottom: clamp(.5rem, 1.4vw, 1rem);
}

.slide .kicker {
    font-size: clamp(.65rem, 1.3vw, .78rem);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--color-primary);
    font-weight: 700;
    margin-bottom: clamp(.5rem, 1.2vw, .9rem);
}

.slide .lead {
    font-size: clamp(.9rem, 1.7vw, 1.2rem);
    color: var(--color-text-muted);
    line-height: 1.6;
    max-width: 62ch;
    margin-bottom: clamp(.6rem, 1.4vw, 1rem);
}

.slide p { font-size: clamp(.82rem, 1.4vw, 1.02rem); line-height: 1.6; max-width: 68ch; }

/* Title slide */
.slide.title-slide { justify-content: center; align-items: center; text-align: center;
    background: radial-gradient(ellipse at 50% 35%, rgba(167,0,0,0.18) 0%, transparent 62%); }
.slide.title-slide h1 { font-size: clamp(1.8rem, 5.5vw, 4rem); margin-bottom: clamp(.5rem, 1.5vw, 1rem); }
.slide.title-slide .lead { margin: 0 auto; }

.title-badge {
    display: inline-block;
    background: var(--color-primary);
    color: #fff;
    padding: .3rem 1rem;
    border-radius: var(--radius-full);
    font-size: clamp(.6rem, 1.2vw, .74rem);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: clamp(.8rem, 2vw, 1.6rem);
}

/* --- In-slide layout helpers --------------------------------------------- */
.slide-cols {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(146px, 1fr));
    gap: clamp(.5rem, 1.4vw, 1.1rem);
    margin-top: clamp(.5rem, 1.2vw, 1rem);
}

.slide-card {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: var(--radius-md);
    padding: clamp(.6rem, 1.5vw, 1.1rem);
}

.slide-card h3 { font-size: clamp(.78rem, 1.35vw, .95rem); margin-bottom: .3rem; color: var(--color-primary); }
.slide-card p, .slide-card li { font-size: clamp(.68rem, 1.15vw, .84rem); line-height: 1.45; color: var(--color-text-muted); margin: 0; }
.slide-card ul { margin: 0; padding-left: 1rem; }
.slide-card li { margin-bottom: .25rem; }

.slide-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: clamp(.5rem, 1.4vw, 1.1rem);
    margin-top: clamp(.6rem, 1.5vw, 1.2rem);
}

.slide-stat { text-align: center; padding: clamp(.5rem, 1.4vw, 1.1rem);
    background: rgba(167, 0, 0, 0.12); border: 1px solid rgba(167, 0, 0, 0.24); border-radius: var(--radius-md); }
.slide-stat .n { display: block; font-family: var(--font-heading); font-size: clamp(1.1rem, 3vw, 2.1rem);
    color: var(--color-primary); line-height: 1.1; }
.slide-stat .l { font-size: clamp(.58rem, 1.05vw, .72rem); text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-muted); }

.slide table { width: 100%; border-collapse: collapse; font-size: clamp(.7rem, 1.25vw, .92rem); margin-top: .6rem; }
.slide th, .slide td { text-align: left; padding: .35rem .6rem; border-bottom: 1px solid rgba(255,255,255,.08); }
.slide th { color: var(--color-primary); font-size: clamp(.58rem, 1vw, .72rem); text-transform: uppercase; letter-spacing: .05em; }
.slide td.num { text-align: right; font-variant-numeric: tabular-nums; }

.slide-bars { display: grid; gap: .5rem; margin-top: .8rem; }
.slide-bar .top { display: flex; justify-content: space-between; font-size: clamp(.72rem, 1.25vw, .9rem); margin-bottom: .2rem; }
.slide-bar .track { height: 8px; background: rgba(255,255,255,.08); border-radius: var(--radius-full); overflow: hidden; }
.slide-bar .track span { display: block; height: 100%; background: var(--color-primary); }

/* --- Controls ------------------------------------------------------------- */
.deck-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    margin-top: var(--spacing-md);
    flex-wrap: wrap;
}

.deck-btns { display: flex; align-items: center; gap: .5rem; }

.deck-btn {
    background: var(--color-bg-card);
    border: 1px solid rgba(255, 255, 255, 0.14);
    color: var(--color-text);
    border-radius: var(--radius-md);
    padding: .45rem .9rem;
    font: inherit;
    font-size: .88rem;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.deck-btn:hover:not(:disabled) { border-color: var(--color-primary); color: var(--color-primary); }
.deck-btn:disabled { opacity: .35; cursor: not-allowed; }
.deck-btn svg { width: 15px; height: 15px; }

.deck-progress { flex: 1; min-width: 120px; height: 4px; background: rgba(255,255,255,.09); border-radius: var(--radius-full); overflow: hidden; }
.deck-progress span { display: block; height: 100%; background: var(--color-primary); transition: width .3s ease; }

.deck-hint { font-size: .78rem; color: var(--color-text-muted); opacity: .7; }

/* --- Print / PDF export --------------------------------------------------- */
@media print {
    #xperto-nav, footer, .deck-controls, .inv-back, .deck-hint, .slide-num { display: none !important; }
    .deck-stage { position: static; aspect-ratio: auto; max-height: none; height: auto; border: none; overflow: visible; }
    .slide {
        position: static !important;
        display: flex !important;
        page-break-after: always;
        break-after: page;
        min-height: 92vh;
        border: none;
        animation: none;
    }
    body { background: #fff; }
}

/* Slides carrying a full table or a stat row under a title run tight; give
   them slightly smaller type rather than a scrollbar. */
.slide.dense table { font-size: clamp(.64rem, 1.1vw, .8rem); }
.slide.dense th, .slide.dense td { padding: .28rem .5rem; }
.slide.title-slide .slide-stats { margin-top: clamp(.4rem, 1vw, .8rem); }
.slide.title-slide .lead { margin-bottom: clamp(.3rem, .8vw, .6rem); }
