/* ============================================================
   11.11 Construcciones — Cotiza y reserva en línea (carrito)
   Usa las variables de marca de styles.css
   ============================================================ */
body.rv { background: var(--fondo-gris); }
.oculto { display: none !important; }

/* Cabecera */
.rv-head { background: var(--azul-osc); color: var(--blanco); }
.rv-head__in { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 68px; }
.rv-logo { display: flex; align-items: center; gap: 12px; color: var(--blanco); font-family: var(--font-titulos); font-weight: 800; letter-spacing: .32em; text-transform: uppercase; font-size: .72rem; }
.rv-logo img { width: 40px; height: auto; }
.rv-head__der { display: flex; align-items: center; gap: 18px; font-size: .9rem; }
.rv-tel { color: var(--gris-claro); }
.rv-volver { color: var(--naranja); font-weight: 700; }

/* Hero */
.rv-hero { background: linear-gradient(120deg, var(--azul) 60%, var(--azul-2)); color: var(--blanco); padding: 48px 0 40px; position: relative; overflow: hidden; }
.rv-hero::after { content: ""; position: absolute; right: -60px; bottom: 0; width: 320px; height: 14px; background: var(--naranja); transform: skewX(-40deg); }
.rv-hero h1 { font-family: var(--font-titulos); font-size: clamp(1.6rem, 3.4vw, 2.4rem); font-weight: 800; line-height: 1.15; max-width: 760px; margin: 10px 0 12px; }
.rv-hero p { color: var(--gris-claro); max-width: 680px; }
.rv-pasos { list-style: none; display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: 22px; font-family: var(--font-titulos); font-weight: 700; font-size: .85rem; }
.rv-pasos li { display: flex; align-items: center; gap: 9px; }
.rv-pasos b { width: 28px; height: 28px; display: grid; place-items: center; background: var(--naranja); color: var(--blanco); border-radius: 50%; font-size: .8rem; }

/* Rejilla */
.rv-grid { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 28px; align-items: start; padding-top: 32px; padding-bottom: 60px; }
.rv-bloque { background: var(--blanco); padding: 26px; box-shadow: var(--sombra); margin-bottom: 26px; border-top: 4px solid var(--azul); }
.rv-h2 { font-family: var(--font-titulos); font-size: 1.15rem; font-weight: 800; color: var(--azul); margin-bottom: 16px; }
.rv-nota { font-size: .85rem; color: var(--texto-suave); margin: 4px 0 10px; }
.rv-cargando, .rv-vacio { color: var(--texto-suave); padding: 18px 0; font-size: .92rem; }
.rv-error { background: #FDECEA; color: var(--error); padding: 12px 14px; font-weight: 600; font-size: .9rem; }

/* Catálogo */
.rv-cat { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
.rv-prod { border: 1px solid var(--borde); padding: 18px; display: flex; flex-direction: column; gap: 8px; transition: box-shadow var(--transicion), border-color var(--transicion); }
.rv-prod:hover { border-color: var(--naranja); box-shadow: var(--sombra); }
.rv-prod__eq { align-self: flex-start; font-family: var(--font-titulos); font-size: .66rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--naranja-osc); }
.rv-prod h3 { font-family: var(--font-titulos); font-size: 1rem; font-weight: 700; color: var(--azul); line-height: 1.3; }
.rv-prod p { font-size: .86rem; color: var(--texto-suave); line-height: 1.5; }
.rv-prod__pie { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; padding-top: 10px; border-top: 1px dashed var(--borde); }
.rv-prod__precio { font-size: .88rem; color: var(--texto); }
.rv-prod__precio b { color: var(--azul); font-family: var(--font-titulos); }
.rv-prod__precio small { display: block; color: var(--texto-suave); font-size: .76rem; }
.rv-prod .btn { padding: 10px 16px; font-size: .8rem; white-space: nowrap; }
.rv-prod .rv-en { border: 1.5px solid var(--exito); color: var(--exito); }

/* Disponibilidad pública */
.rv-disp__cab { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.rv-disp__cab .rv-h2 { margin-bottom: 0; }
.rv-disp__nav { display: flex; align-items: center; gap: 10px; font-family: var(--font-titulos); color: var(--azul); }
.rv-disp__nav strong { min-width: 150px; text-align: center; }
.rv-nav { width: 34px; height: 34px; border: 1.5px solid var(--borde); background: var(--blanco); color: var(--azul); font-size: 1.1rem; cursor: pointer; }
.rv-nav:hover:not(:disabled) { border-color: var(--naranja); color: var(--naranja); }
.rv-nav:disabled { opacity: .35; cursor: default; }
.rv-ley { display: flex; gap: 16px; flex-wrap: wrap; font-size: .8rem; color: var(--texto-suave); margin-bottom: 12px; }
.rv-ley i { display: inline-block; width: 12px; height: 12px; margin-right: 6px; vertical-align: -1px; }
.rv-ley .libre, .rv-d__c.libre { background: #D7F0E0; }
.rv-ley .ocupado, .rv-d__c.ocupado { background: #C9D0DC; background-image: repeating-linear-gradient(-45deg, transparent 0 4px, rgba(28,43,76,.12) 4px 6px); }
.rv-ley .pasado, .rv-d__c.pasado { background: #F1F3F7; }
.rv-disp { overflow-x: auto; }
.rv-d { min-width: max-content; }
.rv-d__fila { display: grid; grid-template-columns: 170px repeat(var(--n), 28px); gap: 3px; margin-bottom: 3px; align-items: center; }
.rv-d__eq { position: sticky; left: 0; background: var(--blanco); font-size: .84rem; font-weight: 600; color: var(--azul); padding-right: 8px; z-index: 1; }
.rv-d__dia { text-align: center; font-size: .74rem; font-weight: 700; color: var(--azul); }
.rv-d__dia span { display: block; font-size: .62rem; color: var(--texto-suave); font-weight: 600; }
.rv-d__c { height: 30px; border: 0; padding: 0; }
.rv-d__c.libre { cursor: pointer; }
.rv-d__c.libre:hover { background: #A8DDBC; }
.rv-d__c.mio { background: var(--naranja); }
.rv-d__c:disabled { cursor: default; }

/* Carrito */
.rv-carrito { position: sticky; top: 18px; background: var(--blanco); box-shadow: var(--sombra-fuerte); border-top: 5px solid var(--naranja); padding: 22px; max-height: calc(100vh - 36px); overflow-y: auto; }
.rv-carrito__cab { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.rv-carrito__cab h2 { font-family: var(--font-titulos); font-size: 1.15rem; font-weight: 800; color: var(--azul); }
.rv-carrito__cab span { font-size: .82rem; color: var(--texto-suave); }
.rv-linea { border: 1px solid var(--borde); padding: 12px; margin-bottom: 10px; }
.rv-linea__top { display: flex; justify-content: space-between; gap: 8px; font-size: .9rem; color: var(--azul); }
.rv-quitar { border: 0; background: none; font-size: 1.3rem; line-height: 1; color: var(--texto-suave); cursor: pointer; }
.rv-quitar:hover { color: var(--error); }
.rv-linea__cant { display: flex; align-items: flex-end; gap: 8px; margin-top: 8px; font-size: .82rem; color: var(--texto-suave); }
.rv-linea label { display: flex; flex-direction: column; gap: 3px; font-size: .72rem; font-weight: 700; color: var(--texto-suave); text-transform: uppercase; letter-spacing: .04em; }
.rv-linea input { border: 1.5px solid var(--borde); padding: 7px 8px; font: inherit; font-size: .88rem; color: var(--texto); text-transform: none; letter-spacing: 0; width: 100%; min-width: 0; }
.rv-linea__cant input { width: 92px; }
.rv-linea input:focus { outline: none; border-color: var(--naranja); }
.rv-linea__valor { margin-left: auto; font-family: var(--font-titulos); font-weight: 800; color: var(--azul); font-size: .95rem; }
.rv-acotizar { font-size: .78rem; font-weight: 700; color: var(--naranja-osc); }
.rv-linea__fechas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; margin-top: 8px; }
.rv-linea__aviso { margin-top: 6px; font-size: .76rem; color: var(--texto-suave); }
.rv-mal { color: var(--error); font-weight: 700; }
.rv-totales { margin: 6px 0 14px; }
.rv-totales > div { display: flex; justify-content: space-between; font-size: .9rem; padding: 4px 0; }
.rv-totales .rv-total { border-top: 2px solid var(--azul); margin-top: 4px; padding-top: 8px; font-size: 1.05rem; color: var(--azul); }
.rv-calc { color: var(--texto-suave); font-size: .85rem; }

.rv-form h3 { font-family: var(--font-titulos); font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; color: var(--azul); margin: 16px 0 10px; padding-top: 14px; border-top: 1px solid var(--borde); }
.rv-pagos { display: grid; gap: 8px; }
.rv-pago { display: flex; gap: 10px; align-items: flex-start; border: 1.5px solid var(--borde); padding: 10px 12px; cursor: pointer; font-size: .82rem; color: var(--texto-suave); }
.rv-pago b { display: block; color: var(--azul); font-size: .9rem; }
.rv-pago:has(input:checked) { border-color: var(--naranja); background: #FFF6EE; }
.rv-pago input { margin-top: 3px; accent-color: var(--naranja); }
.rv-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rv-campo { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; }
.rv-campos .rv-campo { margin-top: 0; }
.rv-campo--full { grid-column: 1 / -1; }
.rv-campo label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-suave); }
.rv-campo input, .rv-campo select, .rv-campo textarea { border: 1.5px solid var(--borde); padding: 9px 10px; font: inherit; font-size: .9rem; width: 100%; background: var(--blanco); }
.rv-campo input:focus, .rv-campo select:focus, .rv-campo textarea:focus { outline: none; border-color: var(--naranja); }
.req { color: var(--error); }
.rv-hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.rv-autoriza { display: flex; gap: 8px; align-items: flex-start; font-size: .8rem; color: var(--texto-suave); margin: 14px 0; }
.rv-autoriza input { margin-top: 3px; accent-color: var(--naranja); }
.rv-msg { padding: 12px 14px; font-size: .88rem; margin-bottom: 12px; }
.rv-msg.error { background: #FDECEA; color: var(--error); font-weight: 600; }
.rv-msg.exito { background: #E6F4EC; color: #17663A; border-left: 4px solid var(--exito); }
.rv-msg a { color: inherit; font-weight: 700; text-decoration: underline; }
.rv-letra { font-size: .74rem; color: var(--texto-suave); margin-top: 10px; line-height: 1.45; }

.rv-flota { display: none; }
.rv-toast { position: fixed; left: 50%; bottom: 84px; transform: translate(-50%, 20px); background: var(--azul-osc); color: var(--blanco); padding: 10px 18px; font-size: .88rem; font-weight: 600; opacity: 0; pointer-events: none; transition: all .25s; z-index: 60; box-shadow: var(--sombra-fuerte); }
.rv-toast.ver { opacity: 1; transform: translate(-50%, 0); }
.rv-pie { background: var(--azul-osc); color: var(--gris-claro); font-size: .8rem; padding: 22px 0; text-align: center; }

@media (max-width: 980px) {
  .rv-grid { grid-template-columns: minmax(0, 1fr); }
  .rv-carrito { position: static; max-height: none; }
  .rv-flota { display: flex; align-items: center; gap: 8px; position: fixed; right: 16px; bottom: 16px; z-index: 50; background: var(--naranja); color: var(--blanco); font-family: var(--font-titulos); font-weight: 800; padding: 13px 18px; box-shadow: var(--sombra-fuerte); }
  .rv-flota b { background: var(--blanco); color: var(--naranja-osc); border-radius: 50px; padding: 0 8px; }
}
@media (max-width: 560px) {
  .rv-tel { display: none; }
  .rv-bloque, .rv-carrito { padding: 18px 16px; }
  .rv-campos { grid-template-columns: 1fr; }
  .rv-d__fila { grid-template-columns: 120px repeat(var(--n), 26px); }
}

/* Vista interna (sesión del panel): estados con color y quién tiene cada máquina */
.rv-interno { color: var(--gris-claro); font-size: .82rem; border: 1px solid rgba(255,255,255,.25); padding: 5px 10px; }
.rv-interno:hover { color: var(--blanco); border-color: var(--naranja); }
.rv-modo-interno .rv-interno { color: var(--blanco); background: var(--azul-2); border-color: var(--naranja); }
.int-reservado { --int: #2b7bbd; } .int-en_obra { --int: #F3862A; } .int-en_viaje { --int: #8E6BD8; }
.int-mantenimiento { --int: #D9A400; } .int-fuera_servicio { --int: #C0392B; } .int-libre { --int: #1F8A4C; }
.rv-d__c[class*="int-"] { background: var(--int); }
.rv-d__c.pasado-int { opacity: .45; }
.rv-interna { margin-top: 18px; border-top: 3px solid var(--naranja); padding-top: 14px; }
.rv-int__cab { font-size: .86rem; color: var(--texto-suave); margin-bottom: 12px; display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }
.rv-int__cab b { color: var(--azul); }
.rv-int__cab a { color: var(--naranja-osc); font-weight: 700; margin-left: auto; }
.rv-int__hoys { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-bottom: 14px; }
.rv-int__hoy { border: 1px solid var(--borde); border-left: 4px solid var(--int); padding: 10px 12px; font-size: .84rem; }
.rv-int__hoy b { display: block; color: var(--azul); }
.rv-int__hoy span { font-weight: 700; color: var(--int); }
.rv-int__hoy small { display: block; color: var(--texto-suave); margin-top: 2px; }
.rv-int__tabla { overflow-x: auto; }
.rv-int__tabla table { width: 100%; border-collapse: collapse; font-size: .84rem; min-width: 640px; }
.rv-int__tabla th { text-align: left; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--texto-suave); padding: 7px 8px; border-bottom: 2px solid var(--borde); }
.rv-int__tabla td { padding: 8px; border-bottom: 1px solid var(--borde); }
.rv-int__chip { display: inline-block; padding: 2px 9px; font-size: .74rem; font-weight: 700; color: #fff; background: var(--int); }
.rv-int__vacio { text-align: center; color: var(--texto-suave); padding: 16px; }
@media (max-width: 560px) { .rv-interno { font-size: .74rem; padding: 4px 7px; } .rv-volver { display: none; } }

/* NIT + dígito de verificación (autollenado de clientes registrados) */
.rv-nit { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) 62px; gap: 10px; }
.rv-nit.sin-dv { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
.rv-nit.sin-dv .rv-nit__dv { display: none; }
@media (max-width: 560px) { .rv-nit { grid-template-columns: minmax(0, 1fr) 62px; } .rv-nit > div:first-child { grid-column: 1 / -1; } .rv-nit.sin-dv { grid-template-columns: minmax(0, 1fr); } }
.rv-nit > div { display: flex; flex-direction: column; gap: 4px; }
.rv-nit #dv { text-align: center; font-weight: 700; }
.rv-nit__msg { font-size: .82rem; padding: 8px 10px; margin-top: -2px; }
.rv-nit__msg.ok { background: #E6F4EC; color: #17663A; border-left: 3px solid var(--exito); }
.rv-nit__msg.mal { background: #FDECEA; color: var(--error); border-left: 3px solid var(--error); }
.rv-nit__msg.info { background: var(--fondo-gris); color: var(--texto-suave); border-left: 3px solid var(--gris-claro); }
