/* ==========================================================
   DimosTV CMS 1.7.0 RC1 — Frontend 2.1 PASS 2
   Mobile QA & Responsive Polish
   ----------------------------------------------------------
   Purpose: mobile-first stability improvements for public
   frontend pages. No new features; only responsive, touch,
   safe-area, modal and form polish.
   ========================================================== */

:root{
    --dtv-mobile-edge: max(16px, env(safe-area-inset-left));
    --dtv-mobile-edge-r: max(16px, env(safe-area-inset-right));
    --dtv-mobile-bottom: max(16px, env(safe-area-inset-bottom));
    --dtv-vh: 1vh;
}

/* Use modern dynamic viewport height where supported. */
@supports (height: 100dvh){
    .dtv-search-overlay,
    .dtv-menu-modal,
    .dtv-live-modal,
    .dtv-video-modal{
        min-height:100dvh;
    }
}

/* Fallback target for iOS Safari via PASS2 JS. */
.dtv-search-overlay,
.dtv-menu-modal,
.dtv-live-modal,
.dtv-video-modal{
    min-height:calc(var(--dtv-vh, 1vh) * 100);
}

/* ---------- Touch target normalization ---------- */
@media (hover:none), (max-width: 1024px){
    .dtv-search-trigger,
    .dtv-menu-trigger,
    .dtv-live-btn,
    .dtv-modal__close,
    .dtv-live-modal__close,
    .dtv-menu-modal__close,
    .dtv-search-overlay__close,
    .dtv-video-modal__close,
    .dtv-mini-player__action,
    .dtv-archive-reset,
    .dtv-filterbar button,
    .dtv-filterbar select,
    .dtv-filterbar input,
    .dtv-archive-filters button,
    .dtv-archive-filters select,
    .dtv-archive-filters input,
    .dtv-complaints button,
    .dtv-contact button{
        min-width:44px;
        min-height:44px;
    }

    .dtv-card,
    .dtv-video-card,
    .dtv-archive-card,
    .dtv-municipality-card,
    .dtv-region-card,
    .dtv-show-card,
    .dtv-search-result,
    .dtv-menu-modal__quick-card{
        -webkit-tap-highlight-color:rgba(227,6,19,.18);
    }
}

/* ---------- Small phones: global rhythm ---------- */
@media (max-width: 767px){
    body{
        overflow-x:hidden;
    }

    .dtv-frontend,
    .dtv-homepage,
    .dtv-news-archive,
    .dtv-municipality,
    .dtv-region,
    .dtv-show-portal,
    .dtv-live-experience,
    .dtv-search-experience,
    .dtv-complaints-page,
    .dtv-contact-page,
    .dtv-legal-page{
        width:100%;
        max-width:100%;
        overflow-x:clip;
    }

    .dtv-container,
    .dtv-homepage-container,
    .dtv-archive-container,
    .dtv-muni-container,
    .dtv-region-container,
    .dtv-show-container,
    .dtv-live-container,
    .dtv-complaints-container,
    .dtv-contact-container,
    .dtv-legal-container{
        width:100% !important;
        max-width:100% !important;
        padding-left:var(--dtv-mobile-edge) !important;
        padding-right:var(--dtv-mobile-edge-r) !important;
    }

    /* Avoid oversized hero sections on small screens. */
    .dtv-hero,
    .dtv-homepage-hero,
    .dtv-archive-hero,
    .dtv-muni-hero,
    .dtv-region-hero,
    .dtv-show-hero,
    .dtv-live-hero,
    .dtv-complaints-hero,
    .dtv-contact-hero,
    .dtv-legal-hero{
        min-height:auto !important;
        padding-top:clamp(42px, 10vw, 72px) !important;
        padding-bottom:clamp(44px, 12vw, 82px) !important;
    }

    .dtv-hero h1,
    .dtv-homepage-hero h1,
    .dtv-archive-hero h1,
    .dtv-muni-hero h1,
    .dtv-region-hero h1,
    .dtv-show-hero h1,
    .dtv-live-hero h1,
    .dtv-complaints-hero h1,
    .dtv-contact-hero h1,
    .dtv-legal-hero h1,
    .dtv-archive-title{
        font-size:clamp(30px, 9vw, 46px) !important;
        line-height:1.04 !important;
        letter-spacing:-.035em !important;
        overflow-wrap:break-word;
    }

    .dtv-hero p,
    .dtv-homepage-hero p,
    .dtv-archive-hero p,
    .dtv-muni-hero p,
    .dtv-region-hero p,
    .dtv-show-hero p,
    .dtv-live-hero p,
    .dtv-complaints-hero p,
    .dtv-contact-hero p,
    .dtv-legal-hero p{
        font-size:15px !important;
        line-height:1.58 !important;
        max-width:100% !important;
    }

    /* Grids collapse predictably. */
    .dtv-grid,
    .dtv-video-grid,
    .dtv-archive-grid,
    .dtv-municipalities-grid,
    .dtv-regions-grid,
    .dtv-shows-grid,
    .dtv-show-episodes-grid,
    .dtv-related-grid,
    .dtv-live-related-grid,
    .dtv-search-results-grid,
    .dtv-complaints-type-grid,
    .dtv-menu-modal__quick-grid{
        grid-template-columns:1fr !important;
        gap:16px !important;
    }

    .dtv-video-card,
    .dtv-archive-card,
    .dtv-municipality-card,
    .dtv-region-card,
    .dtv-show-card,
    .dtv-search-result{
        width:100% !important;
    }

    /* Cards: prevent cramped text and inconsistent overflow. */
    .dtv-video-card__title,
    .dtv-archive-card__title,
    .dtv-municipality-card__title,
    .dtv-region-card__title,
    .dtv-show-card__title,
    .dtv-search-result__title{
        display:-webkit-box;
        -webkit-line-clamp:2;
        -webkit-box-orient:vertical;
        overflow:hidden;
        line-height:1.22;
    }

    .dtv-video-card__excerpt,
    .dtv-archive-card__excerpt,
    .dtv-show-card__excerpt,
    .dtv-search-result__excerpt{
        display:-webkit-box;
        -webkit-line-clamp:3;
        -webkit-box-orient:vertical;
        overflow:hidden;
    }
}

/* ---------- Archive filters on mobile ---------- */
@media (max-width: 767px){
    .dtv-filterbar,
    .dtv-archive-filters,
    .dtv-news-archive__filters,
    .dtv-search-filters{
        display:grid !important;
        grid-template-columns:1fr !important;
        gap:12px !important;
        padding:14px !important;
        border-radius:22px !important;
    }

    .dtv-filterbar > *,
    .dtv-archive-filters > *,
    .dtv-news-archive__filters > *,
    .dtv-search-filters > *{
        width:100% !important;
        min-width:0 !important;
    }

    .dtv-archive-reset,
    .dtv-search-filters__reset{
        justify-self:stretch !important;
        width:100% !important;
    }
}

/* ---------- Search overlay mobile keyboard stability ---------- */
@media (max-width: 767px){
    .dtv-search-overlay__dialog{
        width:calc(100vw - 24px) !important;
        max-width:calc(100vw - 24px) !important;
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 24px) !important;
        margin:12px auto !important;
        border-radius:24px !important;
        overflow:hidden !important;
    }

    .dtv-search-overlay__header{
        padding:18px 16px 14px !important;
    }

    .dtv-search-overlay__input-wrap{
        min-height:50px !important;
    }

    .dtv-search-overlay__body{
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 210px) !important;
        overflow:auto !important;
        -webkit-overflow-scrolling:touch;
    }

    .dtv-search-overlay__footer{
        padding-bottom:max(14px, env(safe-area-inset-bottom)) !important;
    }

    body.dtv-keyboard-open .dtv-search-overlay__dialog{
        margin-top:8px !important;
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 16px) !important;
    }
}

/* ---------- Navigation modal mobile stability ---------- */
@media (max-width: 767px){
    .dtv-menu-modal__panel{
        inset:12px !important;
        width:auto !important;
        max-width:none !important;
        height:auto !important;
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 24px) !important;
        border-radius:26px !important;
        overflow:hidden !important;
    }

    .dtv-menu-modal__header{
        padding:18px 18px 12px !important;
    }

    .dtv-menu-modal__content{
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 210px) !important;
        overflow:auto !important;
        -webkit-overflow-scrolling:touch;
        padding-left:18px !important;
        padding-right:18px !important;
    }

    .dtv-menu-modal__footer{
        padding:14px 18px max(18px, env(safe-area-inset-bottom)) !important;
        gap:10px !important;
    }

    .dtv-menu-modal__item > a,
    .dtv-menu-modal__quick-card{
        min-height:48px;
    }
}

/* ---------- Live mobile: player, modal, mini player ---------- */
@media (max-width: 767px){
    .dtv-live-layout,
    .dtv-live-experience__layout,
    .dtv-live-grid{
        display:grid !important;
        grid-template-columns:1fr !important;
        gap:18px !important;
    }

    .dtv-live-player,
    .dtv-live-player-wrap,
    .dtv-live-experience iframe,
    .dtv-live-experience video{
        max-width:100% !important;
    }

    .dtv-live-modal__dialog{
        width:calc(100vw - 24px) !important;
        max-width:calc(100vw - 24px) !important;
        max-height:calc((var(--dtv-vh, 1vh) * 100) - 24px) !important;
        border-radius:24px !important;
    }

    .dtv-live-modal__body{
        overflow:auto;
        -webkit-overflow-scrolling:touch;
    }

    .dtv-mini-player{
        right:max(12px, env(safe-area-inset-right)) !important;
        bottom:max(72px, calc(env(safe-area-inset-bottom) + 14px)) !important;
        max-width:min(220px, calc(100vw - 24px)) !important;
    }

    .dtv-mini-player__footer{
        min-height:42px !important;
    }
}

/* ---------- Complaints / Contact forms mobile ---------- */
@media (max-width: 767px){
    .dtv-complaints-layout,
    .dtv-contact-layout{
        display:grid !important;
        grid-template-columns:1fr !important;
        gap:18px !important;
    }

    .dtv-complaints-info,
    .dtv-contact-info{
        order:1;
    }

    .dtv-complaints-form-wrap,
    .dtv-contact-form-wrap,
    .dtv-complaints-form,
    .dtv-contact-form{
        order:2;
        width:100% !important;
        max-width:100% !important;
    }

    .dtv-complaints-grid,
    .dtv-complaints-grid--2,
    .dtv-complaints-grid--3,
    .dtv-contact-grid,
    .dtv-contact-grid--2,
    .dtv-contact-grid--3{
        grid-template-columns:1fr !important;
        gap:14px !important;
    }

    .dtv-complaints-section,
    .dtv-contact-section{
        padding:18px !important;
        border-radius:22px !important;
    }

    .dtv-complaints-type,
    .dtv-contact-type,
    .dtv-complaints-check,
    .dtv-contact-check{
        min-height:48px;
    }

    .dtv-complaints-progress,
    .dtv-contact-progress{
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
        padding-bottom:4px;
        scrollbar-width:none;
    }

    .dtv-complaints-progress::-webkit-scrollbar,
    .dtv-contact-progress::-webkit-scrollbar{
        display:none;
    }

    .dtv-complaints-submit,
    .dtv-contact-submit,
    .dtv-complaints button[type="submit"],
    .dtv-contact button[type="submit"]{
        width:100% !important;
        min-height:50px !important;
    }

    .dtv-complaints-upload,
    .dtv-contact-upload{
        min-height:150px !important;
        padding:22px 16px !important;
    }
}

/* ---------- Legal pages ---------- */
@media (max-width: 767px){
    .dtv-legal-layout,
    .dtv-legal-center{
        display:grid !important;
        grid-template-columns:1fr !important;
        gap:16px !important;
    }

    .dtv-legal-nav,
    .dtv-legal-tabs{
        overflow-x:auto;
        -webkit-overflow-scrolling:touch;
        scrollbar-width:none;
        display:flex !important;
        gap:10px !important;
        padding-bottom:4px !important;
    }

    .dtv-legal-nav::-webkit-scrollbar,
    .dtv-legal-tabs::-webkit-scrollbar{
        display:none;
    }

    .dtv-legal-nav a,
    .dtv-legal-tabs a{
        white-space:nowrap;
        flex:0 0 auto;
    }

    .dtv-legal__panel,
    .dtv-legal-panel{
        padding:20px !important;
    }
}

/* ---------- Tablet polish ---------- */
@media (min-width: 768px) and (max-width: 1024px){
    .dtv-container,
    .dtv-homepage-container,
    .dtv-archive-container,
    .dtv-muni-container,
    .dtv-region-container,
    .dtv-show-container,
    .dtv-live-container,
    .dtv-complaints-container,
    .dtv-contact-container,
    .dtv-legal-container{
        padding-left:28px !important;
        padding-right:28px !important;
    }

    .dtv-archive-grid,
    .dtv-municipalities-grid,
    .dtv-regions-grid,
    .dtv-shows-grid,
    .dtv-show-episodes-grid,
    .dtv-related-grid,
    .dtv-live-related-grid{
        grid-template-columns:repeat(2, minmax(0, 1fr)) !important;
    }

    .dtv-complaints-layout,
    .dtv-contact-layout{
        grid-template-columns: minmax(0, .85fr) minmax(0, 1.45fr) !important;
        gap:22px !important;
    }

    .dtv-live-layout,
    .dtv-live-experience__layout,
    .dtv-live-grid{
        grid-template-columns:1fr !important;
        gap:22px !important;
    }
}

/* ---------- Mobile reduced-motion safety ---------- */
@media (prefers-reduced-motion: reduce){
    .dtv-search-overlay,
    .dtv-menu-modal,
    .dtv-live-modal,
    .dtv-video-modal,
    .dtv-mini-player,
    .dtv-card,
    .dtv-video-card,
    .dtv-archive-card,
    .dtv-municipality-card,
    .dtv-region-card,
    .dtv-show-card{
        transition:none !important;
        animation:none !important;
    }
}
