/* ==========================================================================
   lmb-app.css — Geteilte CSS-Komponenten für alle Lern-mit-Ben Apps
   Version 1.1 — März 2026
   Einbinden in jede App: <link rel="stylesheet" href="[PATH]/css/lmb-app.css">
   ========================================================================== */

/* ==========================================================================
   OpenDyslexic — Barrierefreie Schriftvariante für Legastheniker
   Fonts liegen unter: assets/OpenDyslexic/ (relativ zum Projektstamm)
   ========================================================================== */
@font-face {
    font-family: 'OpenDyslexic';
    src: url('../assets/OpenDyslexic/OpenDyslexic-Regular.otf') format('opentype');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'OpenDyslexic';
    src: url('../assets/OpenDyslexic/OpenDyslexic-Bold.otf') format('opentype');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'OpenDyslexic';
    src: url('../assets/OpenDyslexic/OpenDyslexic-Italic.otf') format('opentype');
    font-weight: normal;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'OpenDyslexic';
    src: url('../assets/OpenDyslexic/OpenDyslexic-BoldItalic.otf') format('opentype');
    font-weight: bold;
    font-style: italic;
    font-display: swap;
}

/* Dyslexic-Mode: wird via JS auf <body> gesetzt
   localStorage-Key: 'dyslexic-font'  Wert: 'true' | 'false' */
.font-dyslexic,
.font-dyslexic * {
    font-family: 'OpenDyslexic', sans-serif !important;
}

/* ==========================================================================
   Dyslexia-Toggle-Bubble
   Floating-Button, unten-rechts, fix positioniert.
   Wird per JS dynamisch ins DOM eingefügt (siehe JS-Snippet unten).
   ========================================================================== */
.dyslexia-toggle {
    position: fixed;
    bottom: 1.5rem;
    right: 2rem;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--lmb-bg-surface);
    color: var(--lmb-text-main);
    border: 2px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.2rem;
    font-weight: bold;
    cursor: pointer;
    z-index: 9999;
    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
                background 0.4s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1);
    font-family: 'OpenDyslexic', sans-serif !important;
}

/* Falls die App einen Scroll-to-Top-Button (46px, 20px vom Rand) hat:
   bottom: calc(20px + 46px + 20px) */

.dyslexia-toggle:hover {
    transform: translateY(-3px) scale(1.05);
    background: var(--lmb-primary);
    border-color: var(--lmb-primary);
    box-shadow: 0 8px 25px rgba(99, 102, 241, 0.4);
}

.dyslexia-toggle.active {
    background: var(--lmb-primary);
    border-color: var(--lmb-primary);
    box-shadow: 0 0 20px rgba(99, 102, 241, 0.4);
    color: #fff;
}

@media (max-width: 768px) {
    .dyslexia-toggle {
        bottom: 1.25rem;
        right: 1.25rem;
        width: 42px;
        height: 42px;
        font-size: 1.1rem;
    }
}

/* ==========================================================================
   Design Tokens — müssen mit style.css der Hauptseite übereinstimmen
   ========================================================================== */
:root {
    --lmb-bg-dark:          #0A0F1A;
    --lmb-bg-surface:       #141B2D;
    --lmb-bg-surface-hover: #1A2338;
    --lmb-primary:          #6366F1;
    --lmb-primary-hover:    #4F46E5;
    --lmb-secondary:        #10B981;
    --lmb-accent:           #8B5CF6;
    --lmb-text-main:        #F8FAFC;
    --lmb-text-muted:       #94A3B8;
    --lmb-grad-primary:     linear-gradient(135deg, #6366F1, #8B5CF6);
    --lmb-radius-md:        12px;
    --lmb-radius-lg:        24px;
    --lmb-radius-full:      100px;
    --lmb-shadow-glow:      0 0 20px rgba(99, 102, 241, 0.2);
    --lmb-trans-fast:       0.2s ease;
    --lmb-trans-smooth:     0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

/* ==========================================================================
   Footer — Pflichtkomponente in jeder App
   HTML-Vorlage: siehe styleguide.html#footer
   ========================================================================== */
.lmb-footer {
    padding: 1.5rem 0;
    background: var(--lmb-bg-surface);
    border-top: 1px solid rgba(255, 255, 255, 0.05);
    font-family: 'Outfit', sans-serif;
    color: var(--lmb-text-muted);
}

.lmb-footer-inner {
    width: 90%;
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.875rem;
}

.lmb-footer-brand {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 800;
    font-size: 0.95rem;
    color: var(--lmb-text-main);
    text-decoration: none;
    transition: opacity var(--lmb-trans-fast);
}

.lmb-footer-brand:hover {
    opacity: 0.8;
}

.lmb-footer-brand img {
    border-radius: 50%;
    background: var(--lmb-bg-dark);
    padding: 2px;
    width: 28px;
    height: 28px;
    object-fit: contain;
}

.lmb-footer-copy {
    color: var(--lmb-text-muted);
    font-size: 0.8rem;
}

.lmb-footer-links {
    display: flex;
    gap: 1.25rem;
    align-items: center;
}

.lmb-footer-links a {
    color: var(--lmb-text-muted);
    text-decoration: none;
    font-size: 0.85rem;
    transition: color var(--lmb-trans-fast);
}

.lmb-footer-links a:hover {
    color: var(--lmb-text-main);
}

@media (max-width: 600px) {
    .lmb-footer-inner {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 0.5rem;
    }
}

/* ==========================================================================
   Buttons — einheitliche Schaltflächen für Apps
   ========================================================================== */
.lmb-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.75rem 1.5rem;
    border-radius: var(--lmb-radius-full);
    font-family: 'Outfit', sans-serif;
    font-weight: 600;
    font-size: 0.95rem;
    cursor: pointer;
    transition: var(--lmb-trans-smooth);
    border: none;
    text-decoration: none;
    line-height: 1;
}

.lmb-btn-primary {
    background: var(--lmb-grad-primary);
    color: white;
    box-shadow: var(--lmb-shadow-glow);
}

.lmb-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px rgba(99, 102, 241, 0.4);
}

.lmb-btn-secondary {
    background: var(--lmb-bg-surface);
    color: var(--lmb-text-main);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.lmb-btn-secondary:hover {
    background: var(--lmb-bg-surface-hover);
    border-color: rgba(255, 255, 255, 0.2);
    transform: translateY(-2px);
}

.lmb-btn-outline {
    background: transparent;
    border: 2px solid var(--lmb-primary);
    color: var(--lmb-text-main);
}

.lmb-btn-outline:hover {
    background: rgba(99, 102, 241, 0.1);
    box-shadow: var(--lmb-shadow-glow);
}

.lmb-btn:disabled,
.lmb-btn[disabled] {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}

/* ==========================================================================
   Badge — Hervorhebung (Neu, Beta, Status-Labels)
   ========================================================================== */
.lmb-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.9rem;
    border-radius: var(--lmb-radius-full);
    font-family: 'Outfit', sans-serif;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* Primär-Badge (Indigo) — für Sektionsheader */
.lmb-badge-primary {
    background: rgba(99, 102, 241, 0.12);
    color: var(--lmb-primary);
    border: 1px solid rgba(99, 102, 241, 0.25);
}

/* Neu-Badge (Grün) */
.lmb-badge-new {
    background: var(--lmb-secondary);
    color: white;
    box-shadow: 0 2px 12px rgba(16, 185, 129, 0.4);
}

/* Beta-Badge (Amber) */
.lmb-badge-beta {
    background: #D97706;
    color: white;
    box-shadow: 0 2px 12px rgba(217, 119, 6, 0.4);
}

/* ==========================================================================
   Info-Box / Hinweis-Panel mit Ben-Bild
   ========================================================================== */
.lmb-info-box {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    background: rgba(99, 102, 241, 0.07);
    border: 1px solid rgba(99, 102, 241, 0.2);
    border-radius: var(--lmb-radius-md);
    padding: 1.25rem 1.5rem;
    font-family: 'Outfit', sans-serif;
    color: var(--lmb-text-muted);
    font-size: 0.95rem;
    line-height: 1.6;
}

.lmb-info-box img {
    width: 64px;
    flex-shrink: 0;
    filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.4));
}

.lmb-info-box strong {
    color: var(--lmb-text-main);
}

/* Varianten */
.lmb-info-box--success {
    background: rgba(16, 185, 129, 0.07);
    border-color: rgba(16, 185, 129, 0.2);
}

.lmb-info-box--warning {
    background: rgba(217, 119, 6, 0.07);
    border-color: rgba(217, 119, 6, 0.2);
}

.lmb-info-box--error {
    background: rgba(239, 68, 68, 0.07);
    border-color: rgba(239, 68, 68, 0.2);
}

@media (max-width: 500px) {
    .lmb-info-box {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
}

/* ==========================================================================
   Gradient Text Utility
   ========================================================================== */
.lmb-text-gradient {
    background: var(--lmb-grad-primary);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
