/* =============================================================
   SLIDE BASE — общие токены и базовые правила для всех слайдов
   презентации ВКР. Подключается через <link> в каждом iframe-
   файле и в index.html. Унифицирует цвета, типографику, отступы,
   скругления, тени, анимации.
   ============================================================= */

:root {
    /* ===== ЦВЕТА ===== */
    --bg: #f5f7fa;
    --ink: #1f2933;
    --ink-strong: #1e293b;
    --muted: #6b7280;
    --line: #94a3b8;
    --border: #e5e7eb;
    --border-soft: #eef2f6;

    --urfu-blue: #1B6AA8;
    --urfu-blue-soft: #eaf2fb;

    --c-coral:  #c25a48;
    --c-green:  #4f9b4f;
    --c-indigo: #6f7ec3;
    --c-slate:  #6b7280;
    --c-amber:  #c78a2e;
    --c-violet: #8b5cb6;
    --c-orange: #d97026;
    --c-rose:   #c84a85;
    --c-teal:   #2e9b80;

    /* Bright accent (for emphasis) */
    --accent-green: #16a34a;
    --accent-red: #dc2626;
    --accent-blue: #2563eb;

    /* ===== ТИПОГРАФИКА ===== */
    --font-sans: 'Inter', 'Segoe UI', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
    --font-mono: 'JetBrains Mono', 'Menlo', 'Consolas', monospace;

    --fs-h1: 28px;
    --fs-h2: 22px;
    --fs-h3: 17px;
    --fs-body: 14px;
    --fs-small: 12px;
    --fs-eyebrow: 11px;
    --fs-tiny: 10px;

    --lh-tight: 1.2;
    --lh-base: 1.5;
    --lh-loose: 1.65;

    --ls-tight: -0.02em;
    --ls-caps: 0.10em;
    --ls-eyebrow: 0.14em;

    /* ===== ОТСТУПЫ ===== */
    --pad-frame: 28px 24px;
    --pad-frame-tight: 22px 20px;
    --pad-card: 18px 20px;
    --pad-card-tight: 14px 16px;

    /* ===== РАДИУСЫ ===== */
    --r-frame: 18px;
    --r-card: 14px;
    --r-card-sm: 10px;
    --r-pill: 999px;
    --r-tag: 6px;

    /* ===== ТЕНИ ===== */
    --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
    --shadow-md: 0 4px 14px rgba(15, 23, 42, 0.10);
    --shadow-lg: 0 12px 28px rgba(15, 23, 42, 0.16);

    /* ===== АНИМАЦИИ ===== */
    --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
    --ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
    --dur-enter: 0.55s;
    --dur-enter-slow: 0.7s;
    --dur-hover: 0.25s;
}

/* ===== БАЗОВЫЕ ПРАВИЛА ===== */

*, *::before, *::after {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--font-sans);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ===== ОБЁРТКА .page > .frame ===== */

.page {
    max-width: 1720px;
    margin: 0 auto;
    padding: 32px 24px 48px;
}

.frame {
    background: #ffffff;
    border: 1px solid var(--border);
    border-radius: var(--r-frame);
    padding: var(--pad-frame);
    box-shadow: var(--shadow-md);
}

/* =============================================================
   IFRAME FIT — гарантирует, что .page > .frame вписываются
   в высоту iframe; если контента слишком много, скроллится
   ИМЕННО .frame (а не вся страница), что приятнее визуально.
   Применяется ТОЛЬКО к слайдам с body > .page > .frame
   (index.html сам по себе не использует .page → не задет).
   ============================================================= */

html, body {
    height: 100% !important;
    overflow: hidden !important;
}

body > .page {
    box-sizing: border-box;
    height: 100vh !important;
    max-width: 100% !important;
    margin: 0 auto !important;
    padding: 14px 22px 18px !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
}

body > .page > .frame {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
    box-sizing: border-box;
}

/* Прячем скроллбар в .frame, но позволяем колесо мыши */
body > .page > .frame {
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
}
body > .page > .frame::-webkit-scrollbar { width: 8px; height: 8px; }
body > .page > .frame::-webkit-scrollbar-track { background: transparent; }
body > .page > .frame::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 4px;
}
body > .page > .frame::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

/* ===== УНИФИЦИРОВАННАЯ АНИМАЦИЯ fade-up ===== */

@keyframes slide-fade-up {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes slide-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* ===== PRINT (для PDF-экспорта) ===== */

@media print {
    *, *::before, *::after {
        animation: none !important;
        transition: none !important;
    }
    /* Откатываем overflow-clipping при печати, чтобы iframe-контент
       рендерился полностью на странице */
    html, body {
        height: auto !important;
        overflow: visible !important;
    }
    body > .page {
        height: auto !important;
        overflow: visible !important;
        display: block !important;
    }
    body > .page > .frame {
        overflow: visible !important;
    }
}
