/**
 * DimosTV CMS 1.7.0 RC1 — Frontend 2.1 PASS 5
 * UX Resilience & State Management
 */

:root{
    --dtv-state-bg:linear-gradient(135deg,rgba(12,18,32,.96),rgba(6,10,18,.98));
    --dtv-state-border:rgba(255,255,255,.10);
    --dtv-state-muted:rgba(255,255,255,.68);
    --dtv-state-accent:#E30613;
}

.dtv-state-card,
.dtv-empty-state,
.dtv-error-state,
.dtv-success-state,
.dtv-loading-state,
.dtv-news-empty,
.dtv-news-no-results,
.dtv-live-empty,
.dtv-search-page__empty,
.dtv-search-overlay__empty,
.dtv-video-modal__related-empty{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:12px;
    width:100%;
    min-height:180px;
    padding:32px 24px;
    border:1px solid var(--dtv-state-border);
    border-radius:24px;
    background:var(--dtv-state-bg);
    color:#fff;
    text-align:center;
    box-shadow:0 18px 55px rgba(0,0,0,.24);
}

.dtv-state-card__icon,
.dtv-empty-state::before,
.dtv-error-state::before,
.dtv-success-state::before,
.dtv-loading-state::before,
.dtv-news-empty::before,
.dtv-news-no-results::before,
.dtv-live-empty::before,
.dtv-search-page__empty::before,
.dtv-search-overlay__empty::before,
.dtv-video-modal__related-empty::before{
    content:"";
    width:52px;
    height:52px;
    border-radius:18px;
    display:block;
    background:
        radial-gradient(circle at 35% 35%,rgba(255,255,255,.20),transparent 42%),
        linear-gradient(135deg,rgba(227,6,19,.95),rgba(139,0,12,.95));
    box-shadow:0 14px 34px rgba(227,6,19,.24);
}

.dtv-state-card h3,
.dtv-empty-state h3,
.dtv-error-state h3,
.dtv-success-state h3,
.dtv-loading-state h3,
.dtv-state-card strong{
    margin:0;
    font-size:clamp(18px,2vw,23px);
    line-height:1.2;
    font-weight:800;
    letter-spacing:-.02em;
}

.dtv-state-card p,
.dtv-empty-state p,
.dtv-error-state p,
.dtv-success-state p,
.dtv-loading-state p,
.dtv-news-empty,
.dtv-news-no-results,
.dtv-live-empty,
.dtv-search-page__empty,
.dtv-search-overlay__empty,
.dtv-video-modal__related-empty{
    font-size:15px;
    line-height:1.6;
}

.dtv-state-card p,
.dtv-empty-state p,
.dtv-error-state p,
.dtv-success-state p,
.dtv-loading-state p,
.dtv-state-card small{
    margin:0;
    color:var(--dtv-state-muted);
    max-width:560px;
}

.dtv-error-state::before,
.dtv-search-error::before{
    background:linear-gradient(135deg,#E30613,#ff6b6b);
}

.dtv-success-state::before,
.dtv-contact-success::before,
.dtv-complaints-success::before{
    background:linear-gradient(135deg,#15c77f,#087a4f);
}

.dtv-state-actions{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:center;
    gap:10px;
    margin-top:6px;
}

.dtv-state-actions a,
.dtv-state-actions button,
.dtv-state-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:42px;
    padding:0 20px;
    border:0;
    border-radius:999px;
    background:linear-gradient(135deg,#E30613,#b90511);
    color:#fff!important;
    text-decoration:none!important;
    font-size:12px;
    font-weight:800;
    letter-spacing:.08em;
    cursor:pointer;
    box-shadow:0 14px 34px rgba(227,6,19,.30);
    transition:transform .22s ease,box-shadow .22s ease,filter .22s ease;
}

.dtv-state-actions a:hover,
.dtv-state-actions button:hover,
.dtv-state-button:hover{
    transform:translateY(-1px);
    filter:brightness(1.05);
    box-shadow:0 18px 44px rgba(227,6,19,.38);
}

/* Skeletons */
.dtv-skeleton,
.dtv-skeleton-line,
.dtv-skeleton-card{
    position:relative;
    overflow:hidden;
    background:rgba(255,255,255,.075);
    border-radius:14px;
}

.dtv-skeleton::after,
.dtv-skeleton-line::after,
.dtv-skeleton-card::after{
    content:"";
    position:absolute;
    inset:0;
    transform:translateX(-100%);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.13),transparent);
    animation:dtv-skeleton-shimmer 1.35s ease-in-out infinite;
}

.dtv-skeleton-line{height:14px;max-width:100%;}
.dtv-skeleton-line.is-short{width:42%;}
.dtv-skeleton-line.is-medium{width:68%;}
.dtv-skeleton-line.is-long{width:88%;}

.dtv-skeleton-card{
    min-height:132px;
    border:1px solid rgba(255,255,255,.08);
    border-radius:22px;
}

.dtv-skeleton-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:18px;
    width:100%;
}

.dtv-search-loading,
.dtv-search-error{
    width:100%;
    padding:18px;
    border-radius:18px;
    border:1px solid rgba(255,255,255,.10);
    background:rgba(255,255,255,.045);
    color:#fff;
}

.dtv-search-loading .dtv-skeleton-line + .dtv-skeleton-line{margin-top:10px;}

@keyframes dtv-skeleton-shimmer{100%{transform:translateX(100%);}}

/* Form resilience */
.dtv-is-loading,
button.dtv-is-loading,
input[type="submit"].dtv-is-loading{
    pointer-events:none;
    opacity:.82;
    position:relative;
}

button.dtv-is-loading::after,
input[type="submit"].dtv-is-loading::after,
.dtv-submit-loading::after{
    content:"";
    width:14px;
    height:14px;
    margin-left:10px;
    border-radius:50%;
    border:2px solid rgba(255,255,255,.42);
    border-top-color:#fff;
    display:inline-block;
    vertical-align:-2px;
    animation:dtv-spin .78s linear infinite;
}

@keyframes dtv-spin{to{transform:rotate(360deg);}}

.dtv-form-status{
    display:none;
    margin:14px 0 0;
    padding:14px 16px;
    border-radius:16px;
    font-size:14px;
    line-height:1.5;
}

.dtv-form-status.is-visible{display:block;}
.dtv-form-status.is-error{background:rgba(227,6,19,.12);border:1px solid rgba(227,6,19,.35);color:#fff;}
.dtv-form-status.is-success{background:rgba(21,199,127,.12);border:1px solid rgba(21,199,127,.35);color:#fff;}

.dtv-upload-progress{
    display:none;
    height:6px;
    overflow:hidden;
    margin-top:12px;
    border-radius:999px;
    background:rgba(255,255,255,.10);
}

.dtv-upload-progress.is-active{display:block;}
.dtv-upload-progress span{
    display:block;
    height:100%;
    width:35%;
    border-radius:inherit;
    background:linear-gradient(90deg,#E30613,#ff5a66);
    animation:dtv-upload-indeterminate 1.1s ease-in-out infinite alternate;
}

@keyframes dtv-upload-indeterminate{from{transform:translateX(-25%);}to{transform:translateX(210%);}}

/* Toasts */
.dtv-toast-stack{
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:999999;
    display:flex;
    flex-direction:column;
    gap:10px;
    width:min(360px,calc(100vw - 36px));
    pointer-events:none;
}

.dtv-toast{
    pointer-events:auto;
    display:flex;
    gap:12px;
    align-items:flex-start;
    padding:14px 16px;
    border:1px solid rgba(255,255,255,.12);
    border-radius:18px;
    background:rgba(8,12,22,.94);
    color:#fff;
    box-shadow:0 18px 44px rgba(0,0,0,.36);
    backdrop-filter:blur(12px);
    animation:dtv-toast-in .22s ease both;
}

.dtv-toast.is-error{border-color:rgba(227,6,19,.35);}
.dtv-toast.is-success{border-color:rgba(21,199,127,.35);}
.dtv-toast__dot{width:10px;height:10px;margin-top:5px;border-radius:50%;background:#E30613;flex:0 0 auto;}
.dtv-toast.is-success .dtv-toast__dot{background:#15c77f;}
.dtv-toast strong{display:block;margin:0 0 2px;font-size:13px;letter-spacing:.04em;}
.dtv-toast span{display:block;color:rgba(255,255,255,.72);font-size:13px;line-height:1.45;}

@keyframes dtv-toast-in{from{opacity:0;transform:translateY(8px) scale(.98);}to{opacity:1;transform:none;}}

@media (max-width:767px){
    .dtv-state-card,
    .dtv-empty-state,
    .dtv-error-state,
    .dtv-success-state,
    .dtv-loading-state,
    .dtv-news-empty,
    .dtv-news-no-results,
    .dtv-live-empty,
    .dtv-search-page__empty,
    .dtv-search-overlay__empty,
    .dtv-video-modal__related-empty{
        min-height:150px;
        padding:26px 18px;
        border-radius:20px;
    }
    .dtv-skeleton-grid{grid-template-columns:1fr;gap:14px;}
    .dtv-toast-stack{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:calc(100vw - 24px);}
}

@media (prefers-reduced-motion:reduce){
    .dtv-skeleton::after,
    .dtv-skeleton-line::after,
    .dtv-skeleton-card::after,
    button.dtv-is-loading::after,
    input[type="submit"].dtv-is-loading::after,
    .dtv-submit-loading::after,
    .dtv-upload-progress span,
    .dtv-toast{
        animation:none!important;
    }
}
