/*
 * ════════════════════════════════════════════════════════════
 *  MOBILE BUGFIX PATCH — LPS Mircea Eliade
 *  Versiune: 2.0 (28 feb 2026)
 *  Target: liceumirceaeliade.ro
 *  
 *  INSTALARE: Adaugă acest fișier ULTIMUL în <head>,
 *  DUPĂ print.css și ÎNAINTE de </head>:
 *  <link rel="stylesheet" href="assets/css/mobile-bugfix-v2.css">
 *
 *  Rezolvă 9 bug-uri confirmate + 3 îmbunătățiri UX
 * ════════════════════════════════════════════════════════════
 */


/* ──────────────────────────────────────────────────────────
 * BUG #1 — SCROLL ORIZONTAL PE TOATĂ PAGINA
 * ──────────────────────────────────────────────────────────
 * CAUZA: Multiple elemente cu inline grid-template-columns
 *   depășesc viewport-ul pe 320-375px (minmax(300px),
 *   minmax(320px), repeat(5, 1fr)).
 * SIMPTOM: Pagina se mișcă lateral pe touch swipe.
 *   Bara de scroll orizontală apare intermitent.
 * FIX: overflow-x hidden pe html+body, max-width 100vw.
 * ────────────────────────────────────────────────────────── */
html,
body {
    overflow-x: hidden;
    max-width: 100vw;
}


/* ──────────────────────────────────────────────────────────
 * BUG #2 — QUICK ACCESS: 5 carduri pe un rând
 * ──────────────────────────────────────────────────────────
 * CAUZA: Inline style="grid-template-columns: repeat(5, 1fr)"
 *   pe .quick-access-grid (linia 310 din index.html).
 *   Inline styles au specificitate mai mare decât orice
 *   regulă din fișierele CSS externe.
 * NOTA: Există deja un <style> block inline în <head> cu
 *   !important care FUNCȚIONEAZĂ pentru grid-ul container.
 *   Dar CARDURILE individuale au tot inline:
 *   min-height: 180px, width: 70px pe icon, padding: 30px.
 * SIMPTOM: Pe 375px, 5 carduri x ~75px = text trunchiat,
 *   iconuri suprapuse, tap targets sub 44px.
 * FIX: Cardurile devin compacte pe mobil; pe 480px
 *   layout orizontal (icon + text side by side).
 * ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .quick-access {
        padding: 30px 0 36px !important;
    }

    .quick-card,
    .quick-access-grid > a {
        min-height: 110px !important;
        padding: 18px 14px !important;
    }

    .quick-card .quick-card-icon,
    .quick-access-grid > a > div:first-child {
        width: 48px !important;
        height: 48px !important;
        margin-bottom: 10px !important;
    }

    .quick-card .quick-card-icon i,
    .quick-access-grid > a > div:first-child > i {
        font-size: 22px !important;
    }

    .quick-card h4,
    .quick-access-grid > a h4 {
        font-size: 0.9rem !important;
        margin-bottom: 2px !important;
    }

    .quick-card p,
    .quick-access-grid > a p {
        font-size: 0.78rem !important;
    }
}

@media (max-width: 480px) {
    /* Pe telefon mic: card orizontal (icon stânga, text dreapta) */
    .quick-card,
    .quick-access-grid > a {
        min-height: auto !important;
        padding: 14px 16px !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-start !important;
        gap: 12px !important;
        text-align: left !important;
    }

    .quick-card .quick-card-icon,
    .quick-access-grid > a > div:first-child {
        width: 42px !important;
        height: 42px !important;
        margin-bottom: 0 !important;
        flex-shrink: 0 !important;
    }

    .quick-card .quick-card-icon i,
    .quick-access-grid > a > div:first-child > i {
        font-size: 20px !important;
    }

    .quick-card h4,
    .quick-access-grid > a h4 {
        font-size: 0.88rem !important;
    }
}


/* ──────────────────────────────────────────────────────────
 * BUG #3 — CATEDRE / VIZIUNE: minmax(300px) overflow
 * ──────────────────────────────────────────────────────────
 * CAUZA: Inline style="grid-template-columns:
 *   repeat(auto-fit, minmax(300px, 1fr))" pe div-ul
 *   din tab "Misiune" (linia 497) și inline
 *   minmax(320px, 1fr) pe div-ul "Organizare" (linia 681).
 *   Pe ecran 320-375px, auto-fit cu minmax(300px) =
 *   un singur item de 300px care depășește viewport-ul.
 * SIMPTOM: Conținutul iese din ecran spre dreapta,
 *   scroll orizontal vizibil.
 * FIX: Forțează 1fr pe mobil cu !important.
 * ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    div[style*="minmax(300px"],
    div[style*="minmax(320px"] {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    div[style*="minmax(300px"] > div,
    div[style*="minmax(320px"] > div {
        padding: 14px !important;
    }
}


/* ──────────────────────────────────────────────────────────
 * BUG #4 — TABELE ADMITERE: overflow fără scroll
 * ──────────────────────────────────────────────────────────
 * CAUZA: 3 <table style="width: 100%; font-size: 14px">
 *   din tab-ul "Specializări" (liniile 542, 581, 620).
 *   responsive.css la 768px pune table { display: block;
 *   overflow-x: auto } dar aceste tabele sunt în div-uri
 *   cu padding inline care nu au overflow setat.
 * SIMPTOM: Conținutul tabelului ("Media ultimului admis",
 *   "Codificare") se comprimă excesiv sau iese din card.
 * FIX: word-break + font-size redus + wrapper overflow.
 * ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .tab-content table,
    div[style*="border-radius: 12px"] > table {
        font-size: 13px !important;
        word-break: break-word !important;
        white-space: normal !important;
    }

    .tab-content table td,
    .tab-content table th {
        padding: 8px 6px !important;
        font-size: 13px !important;
        vertical-align: top !important;
    }

    /* Prima coloană (eticheta bold) limitată la jumătate */
    .tab-content table td:first-child {
        width: 48% !important;
        font-size: 12px !important;
    }
}

@media (max-width: 380px) {
    .tab-content table td,
    .tab-content table th {
        padding: 6px 4px !important;
        font-size: 12px !important;
    }
}


/* ──────────────────────────────────────────────────────────
 * BUG #5 — NAV OVERLAY LIPSĂ
 * ──────────────────────────────────────────────────────────
 * CAUZA: <div class="nav-overlay"> nu există în HTML-ul
 *   paginii. mobile-menu.js îl creează dinamic prin JS
 *   (linia 28-32), DAR dacă JS-ul se încarcă târziu sau
 *   are o eroare, overlay-ul nu apare niciodată.
 *   Fără overlay, utilizatorul nu poate închide meniul
 *   prin tap pe zona din afara drawer-ului.
 * SIMPTOM: Meniu hamburger se deschide dar nu se poate
 *   închide atingând fundalul întunecat (care nu există).
 * FIX: CSS de siguranță + JS backup care creează overlay-ul
 *   și la DOMContentLoaded (nu doar la click hamburger).
 * NOTĂ: Fix-ul CSS e doar styling-ul. Elementul HTML
 *   trebuie adăugat fie static, fie prin JS (vezi mai jos).
 * ────────────────────────────────────────────────────────── */
/* Overlay-ul (creat de JS) trebuie să acopere tot ecranul */
.nav-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    background: rgba(0, 0, 0, 0.55) !important;
    opacity: 0;
    visibility: hidden;
    z-index: 99999 !important;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    -webkit-tap-highlight-color: transparent;
    cursor: pointer;
    pointer-events: none;
}

.nav-overlay.active {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}


/* ──────────────────────────────────────────────────────────
 * BUG #6 — VIDEO HERO: <video> fără <source>
 * ──────────────────────────────────────────────────────────
 * CAUZA: Tag-ul <video> din hero (linia ~248) conține
 *   doar comentarii HTML, fără niciun <source src="...">.
 *   Fișierul assets/video/hero-lps.mp4 nu există pe server.
 *   Elementul video + butonul toggle consumă spațiu și
 *   afișează un buton de pauză inutil.
 * SIMPTOM: Slideshow-ul fallback funcționează, dar butonul
 *   ▶/⏸ apare în colțul din dreapta-jos fără scop.
 *   Pe unele browsere poate apărea un cadru gol înainte
 *   de fallback.
 * FIX: Ascunde butonul toggle când video-ul nu are surse.
 *   Slideshow-ul devine principal. Butonul reapare automat
 *   când se adaugă video pe server.
 * ────────────────────────────────────────────────────────── */
/* Ascunde toggle-ul dacă video-ul nu e funcțional */
.hero-video-wrapper.no-video .hero-video-toggle,
.hero-video:not([src]):not(:has(source[src])) ~ .hero-video-toggle {
    display: none !important;
}

/* Slideshow fallback — afișat vizibil când nu e video */
.hero-video-wrapper.no-video .hero-fallback,
.hero-fallback {
    opacity: 1;
}


/* ──────────────────────────────────────────────────────────
 * BUG #7 — SECȚIUNEA ȘTIRI: complet goală
 * ──────────────────────────────────────────────────────────
 * CAUZA: <div class="news-grid-6 stagger"> este imediat
 *   închis fără niciun conținut. News-ul depinde de
 *   noutati-export.json sau de un feed social, dar
 *   niciunul nu funcționează pe site-ul live.
 * SIMPTOM: Secțiunea "Ultimele Știri" afișează doar
 *   titlul, subtitlul și linkurile social, apoi un
 *   spațiu gol mare.
 * FIX: Ascunde gridul gol + afișează un mesaj placeholder
 *   care direcționează spre Facebook/Instagram.
 * ────────────────────────────────────────────────────────── */
.news-grid-6:empty {
    display: none !important;
}

/* Afișează un mesaj informativ când nu sunt știri */
.news-grid-6:empty + .news-placeholder,
#news .section-header::after {
    display: block;
}

/* Placeholder styling (adăugat prin JS sau HTML) */
.news-empty-placeholder {
    text-align: center;
    padding: 40px 20px;
    color: var(--gray-500, #6b7280);
    font-size: 1rem;
    background: var(--gray-light, #f8f9fa);
    border-radius: 12px;
    margin-top: 20px;
}


/* ──────────────────────────────────────────────────────────
 * BUG #8 — NEWS MODAL: nu e responsive
 * ──────────────────────────────────────────────────────────
 * CAUZA: .news-modal-content nu are max-width sau
 *   width limitată pentru mobil.
 * SIMPTOM: Modalul de știri (când va funcționa) nu
 *   va fi fullscreen pe telefon, cu margini și
 *   padding prea mari.
 * FIX: Fullscreen pe sub-768px.
 * ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .news-modal {
        padding: 0 !important;
        align-items: stretch !important;
    }

    .news-modal-content {
        width: 100% !important;
        max-width: 100% !important;
        min-height: 100vh !important;
        min-height: 100dvh !important;
        border-radius: 0 !important;
        margin: 0 !important;
    }

    .news-modal-close {
        top: 10px !important;
        right: auto !important;
        left: 10px !important;
        font-size: 0.9rem !important;
    }

    .news-modal-header,
    .news-modal-body {
        padding: 16px !important;
    }

    .news-modal-header h1 {
        font-size: 1.4rem !important;
    }
}


/* ──────────────────────────────────────────────────────────
 * BUG #9 — STYLE.CSS DUBLU ÎNCĂRCAT
 * ──────────────────────────────────────────────────────────
 * CAUZA: index.html are DOUĂ referințe la style.css:
 *   linia 43: <link rel="preload" href="assets/css/style.css">
 *   linia 58: <link rel="stylesheet" href="assets/css/style.css">
 *   → Browserul descarcă de 2 ori (preload + load).
 * SIMPTOM: ~240 KB trafic pierdut pe fiecare page load.
 *   Potențial FOUC (Flash of Unstyled Content).
 * FIX: CSS-only nu poate rezolva asta.
 *   → Trebuie ștearsă linia cu preload SAU corectată în:
 *   <link rel="preload" href="assets/css/style.css"
 *         as="style" onload="this.rel='stylesheet'">
 * ────────────────────────────────────────────────────────── */


/* ──────────────────────────────────────────────────────────
 * ÎMBUNĂTĂȚIRE A — HERO pe ecrane mici
 * ────────────────────────────────────────────────────────── */
@media (max-width: 480px) {
    .hero {
        min-height: auto !important;
        padding: 100px 0 50px !important;
    }

    .hero h1 {
        font-size: 1.5rem !important;
        line-height: 1.3 !important;
    }

    .hero-subtitle,
    .hero p {
        font-size: 0.9rem !important;
    }

    .hero-buttons {
        flex-direction: column !important;
        gap: 10px !important;
    }

    .hero-buttons .btn {
        width: 100% !important;
        justify-content: center !important;
    }
}


/* ──────────────────────────────────────────────────────────
 * ÎMBUNĂTĂȚIRE B — TAP TARGETS minim 44px (WCAG 2.5.8)
 * ────────────────────────────────────────────────────────── */
@media (hover: none) and (pointer: coarse) {
    .btn,
    .nav-link,
    .dropdown-menu a,
    .tab-btn,
    a.quick-card,
    .social-btn,
    .share-btn,
    .footer-grid a,
    .back-to-top,
    .news-modal-close {
        min-height: 44px;
        min-width: 44px;
    }
}


/* ──────────────────────────────────────────────────────────
 * ÎMBUNĂTĂȚIRE C — SAFE AREA (iPhone notch / Dynamic Island)
 * ────────────────────────────────────────────────────────── */
@supports (padding: max(0px)) {
    .container {
        padding-left: max(15px, env(safe-area-inset-left));
        padding-right: max(15px, env(safe-area-inset-right));
    }

    .footer {
        padding-bottom: max(20px, env(safe-area-inset-bottom));
    }
}
