/* ===================================================
   VARSOVIAS EVENTOS — Estilos Públicos v1.2.0
   Diseño profesional premium para salón de eventos
=================================================== */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700;900&family=Inter:wght@300;400;600;700&display=swap');

html { scroll-behavior: smooth; }


:root {
    --vv-primary:  #1a1a2e;
    --vv-accent:   #c9a96e;
    --vv-gold:     #f0c040;
    --vv-light:    #f9f7f4;
    --vv-white:    #ffffff;
    --vv-text:     #333;
    --vv-radius:   14px;
    --vv-shadow:   0 8px 32px rgba(0,0,0,0.12);
    --vv-font-h:   'Playfair Display', Georgia, serif;
    --vv-font-b:   'Inter', sans-serif;
}
* { box-sizing:border-box; }
.vv-hero, .vv-section, .vv-section-alt,
.vv-wizard-wrap, .vv-portal-wrap { font-family:var(--vv-font-b); }

/* ======================================
   HERO SLIDER
====================================== */
.vv-hero {
    position:relative; height:100vh; min-height:620px;
    display:flex; align-items:center; justify-content:center;
}
/* Slides */
.vv-hero-slides { position:absolute; inset:0; z-index:0; }
.vv-hero-slide  {
    position:absolute; inset:0;
    background-size:cover; background-position:center;
    opacity:0; transition:opacity 1.4s ease-in-out, transform 8s ease;
    transform:scale(1.05);
}
.vv-hero-slide.active { opacity:1; transform:scale(1); }

/* Video de fondo */
.vv-hero-video-wrap { position:absolute; inset:0; z-index:0; }
.vv-hero-video-wrap iframe { width:100%; height:100%; object-fit:cover; pointer-events:none; }
.vv-hero-video-wrap video  { width:100%; height:100%; object-fit:cover; }

/* Overlay degradado elegante */
.vv-hero-overlay {
    position:relative; z-index:2; text-align:center; color:#fff;
    width:100%; height:100%; display:flex; flex-direction:column;
    align-items:center; justify-content:center; padding:20px;
    background:linear-gradient(
        160deg,
        rgba(10,10,30,0.55) 0%,
        rgba(10,10,30,0.3) 50%,
        rgba(10,10,30,0.7) 100%
    );
}
.vv-hero-eyebrow {
    font-family:var(--vv-font-b); font-size:13px; font-weight:600;
    letter-spacing:5px; text-transform:uppercase; color:var(--vv-accent);
    margin-bottom:16px; opacity:0; animation:vvFadeUp .8s .3s forwards;
}
.vv-hero-title {
    font-family:var(--vv-font-h);
    font-size:clamp(3rem,8vw,6rem); font-weight:900;
    margin:0 0 18px; line-height:1.05;
    text-shadow:0 4px 24px rgba(0,0,0,0.5);
    opacity:0; animation:vvFadeUp .9s .5s forwards;
}
.vv-hero-title span { color:var(--vv-accent); }
.vv-hero-sub {
    font-size:clamp(1rem,2.5vw,1.3rem); margin:0 0 40px;
    font-weight:300; letter-spacing:1px; max-width:600px;
    opacity:0; animation:vvFadeUp .9s .7s forwards;
}
.vv-hero-btns {
    display:flex; gap:16px; flex-wrap:wrap; justify-content:center;
    opacity:0; animation:vvFadeUp .9s .9s forwards;
}
.vv-btn-hero {
    background:var(--vv-accent); color:#1a1a2e;
    border:none; padding:16px 38px; border-radius:50px;
    font-size:1rem; font-weight:700; cursor:pointer;
    text-decoration:none; transition:.3s;
    box-shadow:0 4px 24px rgba(201,169,110,0.4);
    letter-spacing:.5px;
}
.vv-btn-hero:hover { background:#e0b97e; transform:translateY(-3px); color:#1a1a2e; }
.vv-btn-hero-outline {
    background:transparent; color:#fff;
    border:2px solid rgba(255,255,255,0.7);
    padding:16px 38px; border-radius:50px;
    font-size:1rem; font-weight:600; cursor:pointer;
    text-decoration:none; transition:.3s; letter-spacing:.5px;
}
.vv-btn-hero-outline:hover { background:rgba(255,255,255,0.15); color:#fff; border-color:#fff; }

/* Indicadores del slider */
.vv-slider-dots {
    position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
    z-index:3; display:flex; gap:10px;
}
.vv-slider-dot {
    width:8px; height:8px; border-radius:50%;
    background:rgba(255,255,255,0.4); cursor:pointer; transition:.3s;
    border:none; padding:0;
}
.vv-slider-dot.active { background:var(--vv-accent); transform:scale(1.3); }

/* Flecha scroll */
.vv-scroll-hint {
    position:absolute; bottom:50px; left:50%; transform:translateX(-50%);
    z-index:3; color:rgba(255,255,255,0.6); font-size:12px;
    letter-spacing:3px; text-transform:uppercase;
    animation:vvBounce 2s infinite;
    display:flex; flex-direction:column; align-items:center; gap:6px;
}
.vv-scroll-hint::after {
    content:''; width:1px; height:40px;
    background:linear-gradient(to bottom,rgba(255,255,255,0.6),transparent);
}

/* Redes sociales en hero */
.vv-hero-social-DISABLED {
    position:absolute; left:24px; top:50%; transform:translateY(-50%);
    z-index:3; display:flex; flex-direction:column; gap:14px;
}
.vv-hero-social-DISABLED a {
    width:36px; height:36px; border-radius:50%;
    background:rgba(255,255,255,0.15); backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center;
    color:#fff; text-decoration:none; font-size:15px;
    transition:.3s; border:1px solid rgba(255,255,255,0.2);
}
.vv-hero-social-DISABLED a:hover { background:var(--vv-accent); color:#1a1a2e; border-color:var(--vv-accent); }

@keyframes vvFadeUp {
    from { opacity:0; transform:translateY(28px); }
    to   { opacity:1; transform:translateY(0); }
}
@keyframes vvBounce {
    0%,100% { transform:translateX(-50%) translateY(0); }
    50%     { transform:translateX(-50%) translateY(8px); }
}

/* ======================================
   STATS BAR (debajo del hero)
====================================== */
.vv-stats-bar {
    background:var(--vv-primary); color:#fff;
    display:flex; justify-content:center; flex-wrap:wrap; gap:0;
}
.vv-stat-item {
    padding:28px 48px; text-align:center;
    border-right:1px solid rgba(255,255,255,0.1); flex:1; min-width:160px;
}
.vv-stat-item:last-child { border-right:none; }
.vv-stat-num {
    font-family:var(--vv-font-h); font-size:2.2rem; font-weight:700;
    color:var(--vv-accent); display:block; line-height:1;
}
.vv-stat-label { font-size:12px; opacity:.7; letter-spacing:1px; text-transform:uppercase; margin-top:4px; }

/* ======================================
   SECCIONES
====================================== */
.vv-section     { padding:80px 24px; max-width:1200px; margin:0 auto; }
/* Hack para que el wizard y la galería no muestren bordes blancos laterales */
#vv-presupuesto { max-width:100%; background:var(--vv-light); }
#vv-presupuesto > * { max-width:1200px; margin-left:auto; margin-right:auto; }
#vv-galeria { max-width:100%; background:#fff; }
#vv-galeria > * { max-width:1200px; margin-left:auto; margin-right:auto; }
.vv-section-alt { background:var(--vv-light); max-width:100%; padding:80px 24px; }
.vv-section-alt > * { max-width:1200px; margin-left:auto; margin-right:auto; }
.vv-section-dark { background:var(--vv-primary); max-width:100%; padding:80px 24px; color:#fff; }
.vv-section-dark > * { max-width:1200px; margin-left:auto; margin-right:auto; }

.vv-section-label {
    display:block; text-align:center; color:var(--vv-accent);
    font-size:12px; letter-spacing:4px; text-transform:uppercase;
    font-weight:600; margin-bottom:12px;
}
.vv-section-title {
    font-family:var(--vv-font-h);
    font-size:clamp(1.8rem,4vw,2.8rem); font-weight:700;
    color:#8B0000; text-align:center; margin:0 0 12px;
}
.vv-section-dark .vv-section-title { color:#fff; }
.vv-section-sub { text-align:center; color:#888; margin-bottom:50px; font-size:1.05rem; line-height:1.7; }
.vv-section-dark .vv-section-sub { color:rgba(255,255,255,0.6); }
.vv-section-divider {
    width:60px; height:3px; background:var(--vv-accent);
    margin:16px auto 40px; border-radius:2px;
}

/* ======================================
   GALERÍA
====================================== */
/* == GALERÍA SHOWCASE == */
.vv-showcase-block {
    margin-bottom: 64px;
}
.vv-showcase-header {
    display:flex; align-items:center; gap:12px;
    margin-bottom:20px; padding-bottom:14px;
    border-bottom:2px solid #f0e6d6;
}
.vv-showcase-emoji {
    font-size:28px; line-height:1;
}
.vv-showcase-title {
    font-size:22px; font-weight:700;
    color:var(--vv-dark); margin:0; flex:1;
    font-family:var(--vv-font-title);
    letter-spacing:.3px;
}
.vv-showcase-count {
    background:var(--vv-accent); color:#fff;
    font-size:11px; font-weight:700;
    padding:4px 12px; border-radius:20px;
    letter-spacing:.5px; text-transform:uppercase;
}
.vv-showcase-grid {
    display:grid;
    grid-template-columns:3fr 2fr;
    grid-template-rows:440px;
    gap:10px;
}
/* Imagen principal */
.vv-showcase-main {
    position:relative; border-radius:14px;
    overflow:hidden; cursor:pointer;
    background:#111; box-shadow:var(--vv-shadow);
    height:100%;
}
.vv-showcase-main img,
.vv-showcase-main iframe {
    width:100%; height:100%; object-fit:cover;
    display:block; transition:.5s;
}
.vv-showcase-main:hover img { transform:scale(1.04); }
.vv-showcase-overlay {
    position:absolute; inset:0;
    background:linear-gradient(transparent 55%, rgba(0,0,0,0.72));
    opacity:0; transition:.3s;
    display:flex; align-items:flex-end;
    justify-content:space-between; padding:20px;
}
.vv-showcase-main:hover .vv-showcase-overlay { opacity:1; }
.vv-showcase-caption {
    color:#fff; font-size:14px; font-weight:600;
    text-shadow:0 1px 6px rgba(0,0,0,.6);
}
.vv-showcase-zoom {
    font-size:22px; background:rgba(255,255,255,.15);
    width:42px; height:42px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    backdrop-filter:blur(4px);
}
/* Thumbnails 2x2 */
.vv-showcase-thumbs {
    display:grid;
    grid-template-columns:1fr 1fr;
    grid-template-rows:1fr 1fr;
    gap:10px;
}
.vv-showcase-thumb {
    position:relative; border-radius:10px;
    overflow:hidden; cursor:pointer;
    background:#111; box-shadow:var(--vv-shadow);
    min-height:0;
}
.vv-showcase-thumb img {
    width:100%; height:100%; object-fit:cover;
    display:block; transition:.4s;
}
.vv-showcase-thumb:hover img { transform:scale(1.08); opacity:.85; }
.vv-thumb-overlay {
    position:absolute; inset:0;
    background:rgba(0,0,0,0);
    display:flex; align-items:flex-end; padding:8px;
    transition:.3s;
}
.vv-showcase-thumb:hover .vv-thumb-overlay {
    background:rgba(0,0,0,0.35);
}
.vv-thumb-overlay span {
    color:#fff; font-size:11px; font-weight:600;
    text-shadow:0 1px 3px rgba(0,0,0,.8);
    opacity:0; transition:.3s;
}
.vv-showcase-thumb:hover .vv-thumb-overlay span { opacity:1; }
.vv-thumb-empty {
    background:linear-gradient(135deg,#f5f0eb,#ede0d4);
    display:flex; align-items:center; justify-content:center;
    cursor:default;
}
.vv-thumb-empty span {
    font-size:28px; color:#c8b49a; font-weight:300;
}
/* Videos en miniaturas — autoplay muted loop */
.vv-thumb-video {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center top;
    background: #000;
    display: block;
    transition: opacity .4s;
}
.vv-showcase-thumb:hover .vv-thumb-video { opacity:.85; }
.vv-thumb-play-icon {
    position:absolute; top:50%; left:50%;
    transform:translate(-50%,-50%);
    width:38px; height:38px; border-radius:50%;
    background:rgba(0,0,0,0.55);
    color:#fff; font-size:16px;
    display:flex; align-items:center; justify-content:center;
    backdrop-filter:blur(4px);
    opacity:0; transition:.3s;
    pointer-events:none;
    z-index:2;
}
.vv-showcase-thumb:hover .vv-thumb-play-icon { opacity:1; }

/* Video principal grande */
.vv-main-video {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center top;
    background: #000;
    display: block;
    transition: opacity .5s;
}
.vv-showcase-main:hover .vv-main-video { opacity:.9; }
.vv-main-play-icon {
    position:absolute; top:50%; left:50%;
    transform:translate(-50%,-50%);
    width:56px; height:56px; border-radius:50%;
    background:rgba(0,0,0,0.5);
    color:#fff; font-size:22px;
    display:flex; align-items:center; justify-content:center;
    backdrop-filter:blur(6px);
    opacity:0; transition:.3s;
    pointer-events:none;
    z-index:2;
}
.vv-showcase-main:hover .vv-main-play-icon { opacity:1; }
/* Lightbox */
.vv-galeria-item.hidden { display:none; }

/* Lightbox */
.vv-lightbox {
    position:fixed; inset:0; background:rgba(0,0,0,0.93);
    z-index:99999; display:none; align-items:center;
    justify-content:center; padding:20px;
    opacity:0; transition:opacity .25s;
}
.vv-lightbox.active { display:flex; opacity:1; }
.vv-lightbox-inner {
    display:flex; align-items:center; justify-content:center;
    max-width:960px; width:100%;
}
.vv-lightbox-inner img {
    max-width:90vw; max-height:85vh;
    border-radius:12px; box-shadow:0 0 60px rgba(0,0,0,0.6);
    object-fit:contain;
}
.vv-lightbox-close {
    position:fixed; top:20px; right:24px;
    color:#fff; font-size:2rem; cursor:pointer;
    background:rgba(255,255,255,0.15); border:none;
    width:46px; height:46px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    backdrop-filter:blur(6px); transition:.2s; z-index:100000;
    line-height:1;
}
.vv-lightbox-close:hover { background:rgba(255,255,255,0.3); transform:scale(1.1); }

/* ======================================
   CALENDARIO
====================================== */
#vv-calendario-wrap { max-width:520px; margin:0 auto; text-align:center; }
#vv-calendario {
    background:#fff; border-radius:var(--vv-radius);
    box-shadow:var(--vv-shadow); padding:24px;
}
.vv-cal-nav { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.vv-cal-nav button {
    background:none; border:1px solid #e0e0e0; font-size:1.1rem;
    cursor:pointer; padding:6px 14px; border-radius:8px; transition:.2s; color:#666;
}
.vv-cal-nav button:hover { background:var(--vv-accent); color:#fff; border-color:var(--vv-accent); }
.vv-cal-mes { font-family:var(--vv-font-h); font-weight:700; font-size:1.15rem; color:var(--vv-primary); }
.vv-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.vv-cal-dia-head { font-weight:700; font-size:11px; color:#bbb; text-align:center; padding:6px 0; letter-spacing:1px; }
.vv-cal-dia {
    padding:9px 4px; text-align:center; border-radius:8px;
    font-size:13px; cursor:pointer; transition:.2s; min-width:0; font-weight:500;
}
.vv-cal-dia:hover:not(.ocupado):not(.bloqueado):not(.pasado) { background:var(--vv-accent); color:#fff; }
.vv-cal-dia.libre    { color:var(--vv-text); }
.vv-cal-dia.ocupado  { background:#fdecea; color:#c0392b; cursor:not-allowed; text-decoration:line-through; }
.vv-cal-dia.bloqueado{ background:#f0f0f0; color:#bbb; cursor:not-allowed; }
.vv-cal-dia.hoy      { background:var(--vv-primary); color:#fff; font-weight:700; }
.vv-cal-dia.pasado   { opacity:.3; cursor:not-allowed; }
.vv-cal-dia.seleccionado { background:var(--vv-accent); color:#fff; font-weight:700; box-shadow:0 2px 10px rgba(201,169,110,0.5); }
.vv-cal-dia.empty    { visibility:hidden; }
.vv-cal-leyenda { display:flex; flex-wrap:wrap; gap:16px; justify-content:center; margin-top:16px; font-size:12px; }

/* -- Calendario responsive móvil -- */
@media (max-width: 600px) {
    #vv-calendario-wrap { max-width: 100%; padding: 0 4px; }
    #vv-calendario { padding: 10px 4px; }
    .vv-cal-grid { gap: 3px; }
    .vv-cal-dia {
        aspect-ratio: 1;
        min-height: 36px;
        font-size: 13px;
        padding: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 8px;
    }
    .vv-cal-dia-head {
        font-size: 10px;
        padding: 4px 0;
        letter-spacing: 0;
    }
    .vv-cal-nav button {
        padding: 6px 12px;
        font-size: 18px;
    }
    .vv-cal-mes {
        font-size: 1rem;
    }
    .vv-cal-leyenda {
        gap: 10px;
        font-size: 11px;
    }
}

@media (max-width: 380px) {
    .vv-cal-dia { font-size: 11px; min-height: 30px; border-radius: 6px; }
    .vv-cal-dia-head { font-size: 9px; }
}
.vv-leyenda { color:#888; }
.vv-leyenda.libre    { color:#27ae60; }
.vv-leyenda.ocupado  { color:#c0392b; }
.vv-leyenda.bloqueado{ color:#bbb; }
.vv-leyenda.hoy      { color:var(--vv-primary); font-weight:700; }

/* ======================================
   WIZARD PRESUPUESTO
====================================== */
.vv-wizard-wrap {
    max-width:900px; margin:0 auto;
    background:#fff; border-radius:20px;
    box-shadow:0 16px 60px rgba(0,0,0,0.12);
    overflow:visible;
}
/* Panel 3: scroll nativo sin límite artificial de items */
#vv-panel-3 {
    overflow:visible;
}
.vv-wizard-steps { display:flex; background:var(--vv-primary); padding:0; border-radius:20px 20px 0 0; }
.vv-step {
    flex:1; text-align:center; padding:16px 6px;
    color:rgba(255,255,255,0.4); font-size:11px; font-weight:600;
    cursor:default; transition:.3s; letter-spacing:.5px;
}
.vv-step span {
    display:inline-flex; width:26px; height:26px; border-radius:50%;
    background:rgba(255,255,255,0.15); align-items:center;
    justify-content:center; font-weight:700; margin-bottom:6px; font-size:13px;
}
.vv-step.active    { color:#fff; }
.vv-step.active span { background:var(--vv-accent); color:#1a1a2e; }
.vv-step.done      { color:rgba(255,255,255,0.7); }
.vv-step.done span { background:#27ae60; }

.vv-wizard-panel   { display:none; padding:36px; }
.vv-wizard-panel.active { display:block; }
.vv-wizard-panel h3 {
    font-family:var(--vv-font-h); color:var(--vv-primary);
    margin:0 0 28px; font-size:1.4rem;
}
.vv-wizard-nav { display:flex; justify-content:space-between; margin-top:32px; }

.vv-btn-prev {
    background:none; border:2px solid #e0e0e0; color:#999;
    padding:12px 28px; border-radius:50px; cursor:pointer;
    font-weight:600; transition:.2s; font-size:.95rem;
}
.vv-btn-prev:hover { border-color:var(--vv-primary); color:var(--vv-primary); }
.vv-btn-next {
    background:var(--vv-accent); color:#1a1a2e; border:none;
    padding:12px 32px; border-radius:50px; cursor:pointer;
    font-weight:700; transition:.3s; font-size:.95rem;
    box-shadow:0 4px 16px rgba(201,169,110,0.35);
}
.vv-btn-next:hover { background:#e0b97e; transform:translateY(-2px); }
.vv-btn-send {
    background:var(--vv-primary); color:#fff; border:none;
    padding:14px 36px; border-radius:50px; cursor:pointer;
    font-weight:700; font-size:1rem; transition:.3s;
    box-shadow:0 4px 16px rgba(26,26,46,0.3);
}
.vv-btn-send:hover { background:#0f0f1e; transform:translateY(-2px); }

/* CAMPOS */
.vv-field-group { margin-bottom:18px; }
.vv-field-group label {
    display:block; font-weight:600; margin-bottom:7px;
    color:var(--vv-primary); font-size:13px; letter-spacing:.3px;
}
.vv-field-group input,
.vv-field-group select,
.vv-field-group textarea {
    width:100%; padding:12px 16px;
    border:2px solid #ebebeb; border-radius:10px;
    font-size:14px; transition:.2s; font-family:var(--vv-font-b);
    background:#fafafa; color:var(--vv-text);
}
.vv-field-group input:focus,
.vv-field-group select:focus,
.vv-field-group textarea:focus { border-color:var(--vv-accent); outline:none; background:#fff; }
.vv-req { color:#e74c3c; }
.vv-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.vv-form-grid .vv-full { grid-column:1/-1; }
#vv-fecha-status { font-size:13px; margin-top:6px; font-weight:600; }

/* TIPOS */
.vv-tipo-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.vv-tipo-btn {
    padding:16px 8px; border:2px solid #ebebeb;
    border-radius:12px; background:#fafafa; cursor:pointer;
    font-size:13px; font-weight:600; text-align:center;
    line-height:1.7; transition:.25s; color:#555;
}
.vv-tipo-btn:hover  { border-color:var(--vv-accent); background:#fff; }
.vv-tipo-btn.active { border-color:var(--vv-accent); background:#fffaf3; color:var(--vv-accent); }

/* PAQUETES */
.vv-paquetes-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:18px; }
.vv-paquete-card {
    border:2px solid #ebebeb; border-radius:16px;
    overflow:hidden; cursor:pointer; transition:.3s;
    background:#fff; box-shadow:0 2px 12px rgba(0,0,0,0.06);
}
.vv-paquete-card:hover  { border-color:var(--vv-accent); box-shadow:0 8px 28px rgba(201,169,110,0.25); transform:translateY(-4px); }
.vv-paquete-card.active { border-color:var(--vv-accent); box-shadow:0 8px 28px rgba(201,169,110,0.3); }
.vv-paquete-img { width:100%; height:140px; object-fit:cover; display:block; }
.vv-paquete-img-placeholder { width:100%; height:140px; background:linear-gradient(135deg,#1a1a2e,#c9a96e); display:flex; align-items:center; justify-content:center; font-size:3rem; }
.vv-paquete-body { padding:18px; text-align:center; }
.vv-paquete-nombre { font-family:var(--vv-font-h); font-weight:700; font-size:1.05rem; color:var(--vv-primary); margin-bottom:8px; }
.vv-paquete-desc   { font-size:12px; color:#888; margin-bottom:12px; line-height:1.6; }
.vv-paquete-detalle { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin-bottom:14px; }
.vv-paquete-detalle span { background:#f4f1ec; padding:3px 10px; border-radius:20px; font-size:11px; color:#666; font-weight:600; }
.vv-paquete-precio { font-family:var(--vv-font-h); font-size:1.6rem; font-weight:900; color:var(--vv-accent); }
.vv-paquete-horario { font-size:11px; color:#bbb; margin-top:4px; }
.vv-paquete-check  { display:none; color:var(--vv-accent); font-size:1.2rem; margin-top:8px; }
.vv-paquete-card.active .vv-paquete-check { display:block; }

/* EXTRAS */
.vv-extras-lista { display:flex; flex-direction:column; gap:10px; }
.vv-extra-item {
    display:flex; align-items:center;
    padding:14px 16px; border:1px solid #ebebeb;
    border-radius:12px; background:#fafafa;
    transition:.25s; gap:14px;
}
.vv-extra-item:hover { border-color:#e0d4c0; background:#fff; box-shadow:0 2px 12px rgba(0,0,0,0.06); }
.vv-extra-img { width:52px; height:52px; border-radius:8px; object-fit:cover; flex-shrink:0; }
.vv-extra-img-placeholder { width:52px; height:52px; border-radius:8px; background:linear-gradient(135deg,#f4f1ec,#e8ddd0); display:flex; align-items:center; justify-content:center; font-size:1.4rem; flex-shrink:0; }
.vv-extra-info  { flex:1; }
.vv-extra-nombre { font-weight:700; font-size:14px; color:var(--vv-primary); }
.vv-extra-desc   { font-size:12px; color:#444; margin-top:2px; line-height:1.4; }
.vv-extra-precio { font-size:12px; color:var(--vv-accent); font-weight:700; margin-top:4px; }
.vv-extra-control { flex-shrink:0; }

/* Toggle */
.vv-toggle        { position:relative; display:inline-block; width:52px; height:28px; }
.vv-toggle input  { opacity:0; width:0; height:0; }
.vv-toggle-slider {
    position:absolute; inset:0; background:#ddd;
    border-radius:28px; cursor:pointer; transition:.3s;
}
.vv-toggle-slider:before {
    content:''; position:absolute; width:22px; height:22px;
    left:3px; bottom:3px; background:#fff; border-radius:50%; transition:.3s;
    box-shadow:0 2px 6px rgba(0,0,0,0.2);
}
.vv-toggle input:checked + .vv-toggle-slider { background:var(--vv-accent); }
.vv-toggle input:checked + .vv-toggle-slider:before { transform:translateX(24px); }

/* Qty */
.vv-qty-ctrl  { display:flex; align-items:center; gap:6px; }
.vv-qty-btn   { width:32px; height:32px; border:2px solid #e0e0e0; background:#fff; border-radius:8px; cursor:pointer; font-size:16px; font-weight:700; transition:.2s; color:#666; }
.vv-qty-btn:hover { background:var(--vv-accent); color:#fff; border-color:var(--vv-accent); }
.vv-qty-input { width:64px; text-align:center; border:2px solid #e0e0e0; border-radius:8px; padding:5px 8px; font-size:15px; font-weight:700; }

/* Subtotal bar */
.vv-subtotal-bar {
    background:var(--vv-primary); color:#fff;
    padding:16px 22px; border-radius:12px;
    display:flex; justify-content:space-between;
    align-items:center; margin-top:22px; font-size:.95rem;
}
.vv-subtotal-bar strong { font-family:var(--vv-font-h); font-size:1.6rem; color:var(--vv-accent); }

/* COLORES */
.vv-colores-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(72px,1fr)); gap:14px; }
.vv-color-item   { text-align:center; cursor:pointer; }
.vv-color-swatch {
    width:50px; height:50px; border-radius:50%; margin:0 auto 6px;
    border:3px solid transparent; transition:.25s;
    box-shadow:0 2px 8px rgba(0,0,0,0.15);
}
.vv-color-item:hover .vv-color-swatch  { transform:scale(1.15); }
.vv-color-item.active .vv-color-swatch {
    border-color:var(--vv-primary);
    box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--vv-primary);
    transform:scale(1.1);
}
.vv-color-nombre { font-size:11px; color:#888; font-weight:500; }

/* RESUMEN */
.vv-resumen-evento { background:var(--vv-light); border-radius:12px; padding:20px 22px; margin-bottom:22px; }
.vv-resumen-evento h4 { font-family:var(--vv-font-h); margin:0 0 12px; color:var(--vv-primary); }
.vv-resumen-seccion {
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.06em;
    color:#8B0000;
    margin:14px 0 4px;
    padding-bottom:4px;
    border-bottom:2px solid #8B0000;
}
.vv-resumen-incluidos {
    font-size:12px;
    color:#555;
    background:#f9f5f0;
    border-radius:6px;
    padding:6px 10px;
    margin:4px 0 8px;
    line-height:1.5;
}
.vv-resumen-incluidos-lbl {
    color:#27ae60;
    font-weight:600;
}
.vv-resumen-row { display:flex; justify-content:space-between; align-items:flex-start; padding:8px 0; border-bottom:1px solid #eee; font-size:14px; gap:10px; }
.vv-rrow-label { flex:1; line-height:1.5; color:#2c3e50 !important; font-weight:500; }
.vv-rrow-price { flex-shrink:0; color:#1a1a2e !important; font-weight:700; }
.vv-resumen-row span { flex:1; line-height:1.5; color:#2c3e50; }
.vv-resumen-row strong { flex-shrink:0; color:#1a1a2e; font-weight:700; }
.vv-resumen-punit { display:block; font-size:11px; color:#999; font-weight:400; margin-top:2px; }
.vv-resumen-total { font-weight:700; font-size:1.1rem; color:var(--vv-accent); border-bottom:none; margin-top:4px; }
.vv-resumen-deposito { color:#27ae60; font-size:13px; margin-top:10px; font-weight:600; }

/* CONFIRMACIÓN */
.vv-confirmacion { text-align:center; padding:50px 24px; }
.vv-confetti     { font-size:5rem; margin-bottom:20px; animation:vvBounce 1.5s infinite; }
.vv-confirmacion h3 { font-family:var(--vv-font-h); font-size:2rem; color:var(--vv-primary); margin-bottom:14px; }
.vv-btn-whatsapp { display:inline-flex; align-items:center; gap:8px; background:#25D366; color:#fff; text-decoration:none; padding:14px 30px; border-radius:50px; font-weight:700; margin-top:20px; transition:.3s; font-size:.95rem; }
.vv-btn-whatsapp:hover { background:#1ebe5d; color:#fff; transform:translateY(-2px); }

/* ======================================
   POR QUÉ NOSOTROS
====================================== */
.vv-porque-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:28px; margin-top:10px; }
.vv-porque-item {
    background:#fff; border-radius:16px; padding:32px 26px;
    text-align:center; box-shadow:var(--vv-shadow);
    transition:.3s; border-bottom:3px solid transparent;
}
.vv-porque-item:hover { border-bottom-color:var(--vv-accent); transform:translateY(-4px); }
.vv-porque-icon { font-size:2.8rem; margin-bottom:14px; }
.vv-porque-item h4 { font-family:var(--vv-font-h); color:var(--vv-primary); margin:0 0 10px; font-size:1.1rem; }
.vv-porque-item p  { color:#888; font-size:14px; margin:0; line-height:1.7; }

/* ======================================
   SECCIÓN CONTACTO
====================================== */
.vv-contacto-grid {
    display:grid; grid-template-columns:1fr 1fr;
    gap:50px; align-items:start; margin-top:10px;
}
.vv-contacto-info h3 { font-family:var(--vv-font-h); font-size:1.5rem; color:#fff; margin:0 0 20px; }
.vv-contacto-dato {
    display:flex; align-items:flex-start; gap:14px;
    margin-bottom:20px; font-size:14px; color:rgba(255,255,255,0.8);
    line-height:1.6;
}
.vv-contacto-dato-icon {
    width:42px; height:42px; border-radius:10px;
    background:rgba(255,255,255,0.1); display:flex;
    align-items:center; justify-content:center;
    font-size:1.2rem; flex-shrink:0; color:var(--vv-accent);
}
.vv-contacto-dato strong { display:block; color:#fff; margin-bottom:2px; }

/* Mapa embed */
.vv-mapa-wrap { border-radius:14px; overflow:hidden; box-shadow:var(--vv-shadow); height:280px; background:#222; }
.vv-mapa-wrap iframe { width:100%; height:100%; border:none; display:block; }
.vv-mapa-placeholder {
    width:100%; height:100%; background:rgba(255,255,255,0.05);
    display:flex; align-items:center; justify-content:center;
    color:rgba(255,255,255,0.3); font-size:1rem; flex-direction:column; gap:8px;
}

/* Redes sociales */
.vv-redes-titulo { font-family:var(--vv-font-h); color:#fff; font-size:1.1rem; margin:28px 0 14px; }
.vv-redes-grid { display:flex; flex-wrap:wrap; gap:12px; }
.vv-red-btn {
    display:flex; align-items:center; gap:8px;
    padding:10px 20px; border-radius:50px;
    text-decoration:none; font-size:13px; font-weight:700;
    transition:.3s; letter-spacing:.3px;
}
.vv-red-btn:hover { transform:translateY(-3px); opacity:.9; }
.vv-red-instagram { background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888); color:#fff; }
.vv-red-facebook  { background:#1877f2; color:#fff; }
.vv-red-tiktok    { background:#010101; color:#fff; border:1px solid #333; }
.vv-red-whatsapp  { background:#25D366; color:#fff; }
.vv-red-youtube   { background:#FF0000; color:#fff; }

/* ======================================
   FOOTER
====================================== */
.vv-footer {
    background:#0d0d1a; color:rgba(255,255,255,0.5);
    text-align:center; padding:24px 20px;
    font-size:13px; border-top:1px solid rgba(255,255,255,0.05);
}
.vv-footer span { color:var(--vv-accent); }

/* WHATSAPP FLOTANTE */
.vv-whatsapp-float {
    position:fixed; bottom:28px; right:28px;
    width:60px; height:60px; background:#25D366; color:#fff;
    text-decoration:none; font-size:1.8rem; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 6px 24px rgba(37,211,102,0.5);
    z-index:9999; transition:.3s; animation:vvPulse 2.5s infinite;
}
.vv-whatsapp-float:hover { transform:scale(1.1); color:#fff; }
@keyframes vvPulse {
    0%,100% { box-shadow:0 6px 24px rgba(37,211,102,0.5); }
    50%     { box-shadow:0 6px 36px rgba(37,211,102,0.8); }
}

/* PORTAL DEL CLIENTE */
.vv-portal-wrap   { max-width:820px; margin:40px auto; padding:0 20px; }
.vv-portal-buscar { background:#fff; border-radius:var(--vv-radius); box-shadow:var(--vv-shadow); padding:44px; text-align:center; max-width:500px; margin:0 auto; }
.vv-portal-buscar h2 { font-family:var(--vv-font-h); color:var(--vv-primary); margin:0 0 10px; }
.vv-portal-buscar p  { color:#888; margin-bottom:26px; }
.vv-btn-primary { background:var(--vv-accent); color:#1a1a2e; border:none; padding:13px 30px; border-radius:50px; cursor:pointer; font-weight:700; font-size:1rem; transition:.3s; }
.vv-btn-primary:hover { background:#e0b97e; transform:translateY(-2px); }
.vv-portal-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:26px; flex-wrap:wrap; gap:12px; }
.vv-portal-header h2 { font-family:var(--vv-font-h); margin:0; color:var(--vv-primary); }
.vv-status-badge { padding:6px 18px; border-radius:50px; color:#fff; font-weight:700; font-size:12px; letter-spacing:.5px; }
.vv-portal-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:12px; margin-bottom:24px; }
.vv-portal-card  { background:#fff; border-radius:12px; padding:18px; box-shadow:0 2px 12px rgba(0,0,0,0.07); }
.vv-pcard-label  { font-size:11px; color:#bbb; text-transform:uppercase; font-weight:700; letter-spacing:1px; margin-bottom:5px; }
.vv-pcard-value  { font-family:var(--vv-font-h); font-weight:700; color:var(--vv-primary); font-size:1rem; }
.vv-portal-section { background:#fff; border-radius:var(--vv-radius); padding:26px; box-shadow:var(--vv-shadow); margin-bottom:20px; }
.vv-portal-section h3 { font-family:var(--vv-font-h); margin:0 0 18px; color:var(--vv-primary); }
.vv-portal-paquete { background:var(--vv-light); border-radius:10px; padding:16px 18px; }
.vv-portal-paquete p { margin:6px 0 0; font-size:13px; color:#888; }
.vv-portal-extras { list-style:none; margin:0; padding:0; }
.vv-portal-extras li { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid #f4f4f4; font-size:14px; gap:8px; }
.vv-portal-extras li:last-child { border-bottom:none; }
.vv-portal-extras li span:first-child { flex:1; color:#2c3e50; font-weight:500; }
.vv-portal-extras li span:last-child { flex-shrink:0; font-weight:700; color:#8B0000; }
.vv-portal-colores { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.vv-color-chip     { width:34px; height:34px; border-radius:50%; display:inline-block; border:2px solid rgba(0,0,0,0.1); box-shadow:0 2px 6px rgba(0,0,0,0.1); }
.vv-color-label    { font-size:13px; color:#888; }
.vv-portal-desc    { background:var(--vv-light); border-radius:10px; padding:16px; font-size:14px; color:#666; line-height:1.8; }
.vv-portal-finanzas { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.vv-fin-card       { border-radius:12px; padding:18px; text-align:center; }
.vv-fin-card div   { font-size:11px; opacity:.7; text-transform:uppercase; letter-spacing:.5px; margin-bottom:8px; font-weight:700; }
.vv-fin-card strong { font-family:var(--vv-font-h); font-size:1.4rem; display:block; }
.vv-fin-total   { background:#e8f4fd; color:#2980b9; }
.vv-fin-abonado { background:#d5f5e3; color:#1e8449; }
.vv-fin-saldo   { background:#fdecea; color:#c0392b; }
.vv-fin-ok      { background:#d5f5e3; color:#1e8449; }
.vv-portal-table { width:100%; border-collapse:collapse; font-size:13px; margin-top:10px; }
.vv-portal-table th { background:var(--vv-primary); color:#fff; padding:10px 14px; text-align:left; font-size:12px; letter-spacing:.5px; }
.vv-portal-table td { padding:10px 14px; border-bottom:1px solid #f4f4f4; }
.vv-portal-deposito-notice { background:#fffbf0; border:1px solid var(--vv-gold); border-radius:10px; padding:14px 18px; font-size:14px; margin-top:18px; color:#7d6608; }
.vv-portal-error { background:#fdecea; color:#c0392b; padding:18px; border-radius:10px; text-align:center; margin:20px 0; }

/* RESPONSIVE */
@media (max-width:900px) {
    .vv-showcase-grid { grid-template-columns:1fr; grid-template-rows:auto; }
    .vv-showcase-thumbs { grid-template-rows:160px 160px; }
    .vv-showcase-grid { height:auto; }
    .vv-contacto-grid { grid-template-columns:1fr; gap:30px; }
    .vv-stats-bar .vv-stat-item { padding:22px 28px; }
}
@media (max-width:600px) {
    .vv-hero-social-DISABLED { display:none; }
    .vv-wizard-steps { font-size:9px; }
    .vv-step span { width:20px; height:20px; font-size:11px; }
    .vv-wizard-panel { padding:22px 16px; }
    .vv-tipo-grid { grid-template-columns:repeat(2,1fr); }
    .vv-form-grid { grid-template-columns:1fr; }
    .vv-form-grid .vv-full { grid-column:1; }
    .vv-portal-finanzas { grid-template-columns:1fr; }
    .vv-showcase-grid { grid-template-columns:1fr; }
    .vv-showcase-thumbs { grid-template-columns:1fr 1fr; grid-template-rows:130px 130px; }
    .vv-porque-grid { grid-template-columns:1fr; }
    .vv-redes-grid  { flex-direction:column; }
    .vv-hero-btns   { flex-direction:column; align-items:center; }
    .vv-stats-bar   { flex-direction:column; }
    .vv-stat-item   { border-right:none; border-bottom:1px solid rgba(255,255,255,0.08); }
}

/* ======================================
   OCULTAR TÍTULOS DE PÁGINA EN PÁGINAS DEL PLUGIN
====================================== */
.vv-hero ~ * ,

/* Ocultar título H1 generado por el tema FSE en páginas del plugin */

/* ======================================

/* ======================================
   FOOTER COMPLETO CON CONTACTO
====================================== */
.vv-footer-full {
    background: #0d0d1f;
    color: rgba(255,255,255,0.75);
    font-family: var(--vv-font-b);
}
.vv-footer-top {
    display: grid;
    grid-template-columns: 1.2fr 1fr 1.3fr;
    gap: 48px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 64px 24px 48px;
}
.vv-footer-nombre {
    font-family: var(--vv-font-h);
    font-size: 1.8rem; font-weight: 700;
    color: #fff; margin-bottom: 12px;
}
.vv-footer-slogan {
    font-size: 14px; line-height: 1.6;
    color: rgba(255,255,255,0.5);
    margin: 0 0 24px;
}
.vv-footer-redes {
    display: flex; gap: 12px; flex-wrap: wrap;
}
.vv-footer-redes a {
    width: 40px; height: 40px; border-radius: 50%;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    display: flex; align-items: center; justify-content: center;
    font-size: 16px; text-decoration: none;
    transition: .25s;
}
.vv-footer-redes a:hover {
    background: var(--vv-accent);
    border-color: var(--vv-accent);
}
.vv-footer-col h4 {
    color: var(--vv-accent); font-size: 13px;
    letter-spacing: 3px; text-transform: uppercase;
    font-weight: 700; margin: 0 0 20px;
}
.vv-footer-dato {
    display: flex; align-items: flex-start; gap: 10px;
    margin-bottom: 14px; font-size: 14px; line-height: 1.5;
}
.vv-footer-dato span { font-size: 16px; flex-shrink: 0; margin-top: 1px; }
.vv-footer-dato a { color: var(--vv-accent); text-decoration: none; }
.vv-footer-dato a:hover { text-decoration: underline; }
.vv-footer-iframe {
    width: 100%; height: 220px;
    border-radius: 10px; border: none;
    display: block;
}
.vv-footer-bottom {
    border-top: 1px solid rgba(255,255,255,0.08);
    padding: 20px 24px;
    max-width: 1200px; margin: 0 auto;
    display: flex; align-items: center;
    justify-content: space-between;
    font-size: 13px; color: rgba(255,255,255,0.35);
}
.vv-footer-top-btn {
    color: var(--vv-accent); text-decoration: none;
    font-size: 13px; font-weight: 600;
    transition: .2s;
}
.vv-footer-top-btn:hover { color: #fff; }

/* Footer responsive */
@media (max-width: 900px) {
    .vv-footer-top { grid-template-columns: 1fr 1fr; gap: 32px; }
    .vv-footer-col.vv-footer-mapa { grid-column: span 2; }
}
@media (max-width: 600px) {
    .vv-footer-top { grid-template-columns: 1fr; gap: 28px; }
    .vv-footer-col.vv-footer-mapa { grid-column: span 1; }
    .vv-footer-bottom { flex-direction: column; gap: 8px; text-align: center; }
}


/* === Redes sociales footer - colores de marca === */
.vv-footer-redes a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255,255,255,0.08);
    color: #fff;
    transition: background 0.2s, transform 0.2s;
    text-decoration: none;
}
.vv-footer-redes a:hover { transform: scale(1.15); }
.vv-footer-redes a.vv-red-instagram:hover { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%); }
.vv-footer-redes a.vv-red-facebook:hover  { background: #1877f2; }
.vv-footer-redes a.vv-red-tiktok:hover    { background: #010101; }
.vv-footer-redes a.vv-red-youtube:hover   { background: #ff0000; }
.vv-footer-redes a.vv-red-whatsapp:hover  { background: #25d366; }
.vv-footer-redes a svg { width:20px; height:20px; }

/* WhatsApp flotante */
.vv-whatsapp-float svg { width:28px; height:28px; }

/* Botón WhatsApp en sección */
.vv-btn-whatsapp svg { width:18px; height:18px; vertical-align:middle; margin-right:6px; }

/* Items incluidos en paquete */
.vv-paquete-incluidos { margin: 8px 0 4px; }
.vv-paquete-incluidos-titulo { font-size: 0.75rem; font-weight: 700; color: #8B0000; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }
.vv-paquete-item { display: inline-block; background: rgba(139,0,0,0.08); color: #555; border-radius: 20px; font-size: 0.72rem; padding: 2px 8px; margin: 2px 2px; border: 1px solid rgba(139,0,0,0.15); }

/* Hint total para extras linked a stock del paquete */
.vv-extra-total-hint { 
    font-size: 0.78rem; 
    color: #555;
    background: #f0f4ff;
    border-left: 3px solid #8B0000;
    padding: 4px 8px;
    border-radius: 0 6px 6px 0;
    margin-top: 5px; 
    font-weight: 500;
    line-height: 1.4;
}
.vv-extra-total-hint strong { font-weight: 700; color: #8B0000; }

/* Sección títulos en paso 3 */
.vv-seccion-titulo {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #8B0000;
    margin: 18px 0 10px;
    padding-bottom: 6px;
    border-bottom: 2px solid rgba(139,0,0,0.12);
}
.vv-stock-lista { margin-bottom: 6px; }

/* Badge "incluido en paquete" */
.vv-badge-paquete {
    display: inline-block;
    font-size: 11px;
    color: #27ae60;
    font-weight: 700;
    background: #eafaf1;
    border: 1px solid #a9dfbf;
    border-radius: 20px;
    padding: 2px 10px;
    margin-bottom: 5px;
}


/* ===========================================
   TABLA DESGLOSE DE COSTOS (portal + armador)
   =========================================== */
.vv-desglose-tabla {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    margin-top: 4px;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(0,0,0,0.07);
}
.vv-desglose-tabla thead tr {
    background: #2c3e50;
    color: #fff;
}
.vv-desglose-tabla thead th {
    padding: 9px 12px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .6px;
    text-transform: uppercase;
}
.vv-desglose-tabla th.vv-dg-cant,
.vv-desglose-tabla td.vv-dg-cant { text-align: center; width: 52px; }
.vv-desglose-tabla th.vv-dg-unit,
.vv-desglose-tabla td.vv-dg-unit { text-align: right; width: 80px; color: #666; }
.vv-desglose-tabla th.vv-dg-sub,
.vv-desglose-tabla td.vv-dg-sub  { text-align: right; width: 90px; font-weight: 700; }
.vv-desglose-tabla th.vv-dg-desc,
.vv-desglose-tabla td.vv-dg-desc { text-align: left; }

.vv-desglose-tabla tbody tr { border-bottom: 1px solid #f0f0f0; }
.vv-desglose-tabla tbody tr:last-child { border-bottom: none; }
.vv-desglose-tabla tbody td { padding: 8px 12px; vertical-align: middle; }

/* Paquete base — fondo crema suave */
.vv-desglose-tabla tr.vv-dg-paquete { background: #fdf8f2; }
.vv-desglose-tabla tr.vv-dg-paquete td { color: #2c3e50; }
.vv-desglose-tabla tr.vv-dg-paquete td.vv-dg-sub { color: #8B0000; }

/* Stock adicional — normal */
.vv-desglose-tabla tr.vv-dg-stock td { color: #34495e; }
.vv-desglose-tabla tr.vv-dg-stock td.vv-dg-sub { color: #8B0000; }

/* Extras/servicios — texto ligeramente diferente */
.vv-desglose-tabla tr.vv-dg-extra td { color: #34495e; }
.vv-desglose-tabla tr.vv-dg-extra td.vv-dg-sub { color: #8B0000; }

/* Fila total */
.vv-desglose-tabla tfoot tr.vv-dg-total { background: #f5f0eb; border-top: 2px solid #2c3e50; }
.vv-desglose-tabla tfoot td { padding: 10px 12px; font-weight: 700; }
.vv-desglose-tabla tfoot td.vv-dg-sub { font-size: 15px; color: #8B0000; }

/* Etiqueta de unidad discreta */
.vv-dg-unidad { font-size: 11px; color: #999; font-weight: 400; }

/* Tabla en el armador (resumen box) */
#vv-resumen-box .vv-desglose-tabla { font-size: 12px; }
#vv-resumen-box .vv-desglose-tabla thead tr { background: #1a1a2e; }

/* Quitar flechitas de inputs numéricos */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
input[type=number] { -moz-appearance: textfield; appearance: textfield; }

/* ── Controles escalonados compactos ── */
.vv-esc-adicional { padding:6px 0 2px; }

/* Grid 2 columnas para personas + horas */
.vv-esc-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:6px;
    margin-bottom:4px;
}
.vv-esc-col { display:flex; flex-direction:column; align-items:center; }

/* Label mini */
.vv-esc-label-sm {
    display:block;
    font-size:9px;
    font-weight:700;
    color:#999;
    margin-bottom:4px;
    text-transform:uppercase;
    letter-spacing:.5px;
}

/* Qty row pequeño */
.vv-qty-sm { gap:6px; align-items:center; }
.vv-qty-btn-sm {
    width:30px; height:30px;
    border:none;
    background:linear-gradient(135deg,#f5f5f5,#e8e8e8) !important;
    color:#444 !important;
    border-radius:50%;
    cursor:pointer;
    font-size:16px;
    font-weight:700;
    line-height:1;
    transition:.2s;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 2px 6px rgba(0,0,0,.12);
}
.vv-qty-btn-sm:hover {
    background:linear-gradient(135deg,var(--vv-accent),#a00) !important;
    color:#fff !important;
    box-shadow:0 3px 10px rgba(139,0,0,.35);
    transform:scale(1.08);
}
.vv-qty-btn-sm:active { transform:scale(.95); }

/* Valores numéricos */
.vv-esc-qty-val,
.vv-mult-qty-val,
.vv-aplica-qty-val {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:36px;
    height:30px;
    text-align:center;
    font-weight:800;
    font-size:16px;
    color:#333 !important;
    background:#fff;
    border-radius:8px;
    box-shadow:0 1px 4px rgba(0,0,0,.1);
}
.vv-mult-qty-val  { color:#27ae60 !important; }
.vv-aplica-qty-val{ color:#e67e22 !important; }

/* Fila aplica (paso 3) */
#[id^="vv-aplica-block-"] .vv-qty-ctrl { justify-content:flex-start; }

/* Resumen de costo */
.vv-esc-resumen {
    display:block;
    color:#8B0000;
    font-weight:700;
    font-size:11px;
    margin-top:3px;
    line-height:1.3;
}
