/* ============================================================
   DANGOFE OS · TALLER · NOVEDAD URGENTE DESPUÉS DE LA PRUEBA (prefijo tnv-) · 2026-10-16 · chat de Diseño
   Karla: «notificarle al cliente que está sucediendo algo con su equipo después de la prueba, que es posible que el
   presupuesto cambie y que se comunique con nosotros porque tenemos una novedad urgente».
   Lo pinta taller-novedad.js (DangofeOS.tallerNovedad). Sin sombras; claro y Noche por [data-theme='dark'] / .is-noche.
   Tres versiones (data-v):
     A · Hoja        · una hoja de cristal que sube desde abajo (centrada en pantallas anchas)
     B · En la ficha · se despliega dentro de la ficha, debajo del botón, sin tapar nada
     C · Diálogo     · un diálogo centrado con cabecera roja y casilla «Entiendo…»
   ============================================================ */
.tnv-cta, .tnv-franja, .tnv-hoja, .tnv-dialogo, .tnv-inline {
  --tnv-rojo: 220, 38, 38; --tnv-az: 37, 99, 235; --tnv-tinta: var(--text-primary, #0b1540); --tnv-tenue: var(--text-secondary, #4a5680);
  --tnv-borde: var(--glass-border, rgba(3, 38, 155, .12)); --tnv-vidrio: var(--glass-bg-strong, rgba(255, 255, 255, .86)); --tnv-campo: var(--glass-bg-input, rgba(255, 255, 255, .9)); --tnv-linea: rgba(10, 22, 51, .09);
  font-family: var(--font-family-ui, 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif); color: var(--tnv-tinta);
}
[data-theme='dark'] .tnv-cta, [data-theme='dark'] .tnv-franja, [data-theme='dark'] .tnv-inline, .tnv-velo.is-noche .tnv-hoja, .tnv-velo.is-noche .tnv-dialogo, .tnv-inline.is-noche { --tnv-linea: rgba(255, 255, 255, .1); --tnv-vidrio: rgba(12, 22, 60, .96); --tnv-campo: rgba(255, 255, 255, .07); --tnv-borde: rgba(140, 170, 255, .28); }
.tnv-cta *, .tnv-franja *, .tnv-hoja *, .tnv-dialogo *, .tnv-inline * { box-sizing: border-box; }
.tnv-cta button, .tnv-franja button, .tnv-hoja button, .tnv-dialogo button, .tnv-inline button { font: inherit; color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.tnv-hoja [hidden], .tnv-dialogo [hidden], .tnv-inline [hidden], .tnv-franja [hidden] { display: none !important; }

/* ---------- el botón en la ficha ---------- */
.tnv-cta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 10px 0; }
.tnv-btn { display: inline-flex; align-items: center; gap: 7px; min-height: 36px; padding: 7px 13px; border-radius: 999px; border: 1px solid rgba(var(--tnv-rojo), .45); background: rgba(var(--tnv-rojo), .08); color: #b91c1c; font-weight: 800; font-size: .84rem; white-space: nowrap; }
.tnv-btn svg { width: 15px; height: 15px; }
.tnv-btn:hover { background: rgba(var(--tnv-rojo), .14); }
[data-theme='dark'] .tnv-btn { color: #fca5a5; }
.tnv-cta__h { font-size: .8rem; color: var(--tnv-tenue); }
.tnv-cta.is-abierta .tnv-btn { background: rgb(var(--tnv-rojo)); color: #fff; border-color: transparent; }

/* ---------- la franja cuando hay novedad abierta ---------- */
.tnv-franja { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 6px 12px; align-items: start; margin: 10px 0; padding: 12px 14px; border-radius: 14px; background: rgba(var(--tnv-rojo), .08); border: 1px solid rgba(var(--tnv-rojo), .3); }
.tnv-franja[data-v='A'] { border-left: 5px solid rgb(var(--tnv-rojo)); }
.tnv-franja[data-v='B'] { background: rgba(var(--tnv-rojo), .12); }
.tnv-franja[data-v='C'] { border-top: 4px solid rgb(var(--tnv-rojo)); border-radius: 10px 10px 14px 14px; }
.tnv-franja > svg { width: 22px; height: 22px; color: #b91c1c; margin-top: 1px; }
[data-theme='dark'] .tnv-franja > svg { color: #fca5a5; }
.tnv-franja__t { min-width: 0; }
.tnv-franja__t b { display: block; font-size: .95rem; color: #b91c1c; }
[data-theme='dark'] .tnv-franja__t b { color: #fca5a5; }
.tnv-franja__t p { margin: 4px 0 0; font-size: .92rem; line-height: 1.4; white-space: pre-wrap; }
.tnv-franja__t small { display: block; margin-top: 6px; font-size: .78rem; color: var(--tnv-tenue); line-height: 1.35; }
.tnv-franja__acc { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 4px; }
.tnv-franja__q { flex: 1 1 100%; font-size: .84rem; font-weight: 700; }
.tnv-franja__err { grid-column: 2; font-size: .8rem; color: #b91c1c; font-weight: 700; }

/* ---------- botones ---------- */
.tnv-b { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 38px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--tnv-linea); background: var(--tnv-campo); color: var(--tnv-tinta); font-weight: 800; font-size: .86rem; white-space: nowrap; text-decoration: none; }
.tnv-b svg { width: 15px; height: 15px; }
.tnv-b--rojo { background: rgb(var(--tnv-rojo)); color: #fff; border-color: transparent; }
.tnv-b--pri { background: rgb(var(--tnv-az)); color: #fff; border-color: transparent; }
.tnv-b--wa { background: #25d366; color: #fff; border-color: transparent; }
.tnv-b[disabled] { opacity: .6; cursor: default; }
.tnv-gira { width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .45); border-top-color: #fff; animation: tnv-gira .8s linear infinite; display: inline-block; }
.tnv-b:not(.tnv-b--rojo):not(.tnv-b--pri) .tnv-gira { border-color: rgba(10, 22, 51, .25); border-top-color: var(--tnv-tinta); }
@keyframes tnv-gira { to { transform: rotate(360deg); } }
@keyframes tnv-aparece { from { opacity: 0; } }
@keyframes tnv-sube { from { transform: translateY(24px); opacity: 0; } }
@keyframes tnv-crece { from { transform: scale(.96); opacity: 0; } }

/* ---------- velo + hoja (A) y diálogo (C) ---------- */
.tnv-velo { position: fixed; inset: 0; z-index: 10040; display: flex; align-items: flex-end; justify-content: center; padding: 0; background: rgba(10, 22, 51, .42); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); animation: tnv-aparece .2s ease both; }
.tnv-velo.is-noche { background: rgba(2, 6, 24, .6); }
.tnv-velo[data-v='C'] { align-items: center; padding: 16px; }
.tnv-velo.is-saliendo { opacity: 0; transition: opacity .2s ease; }
.tnv-hoja, .tnv-dialogo, .tnv-inline { display: flex; flex-direction: column; gap: 10px; padding: 16px 18px; background: var(--tnv-vidrio); border: 1px solid var(--tnv-borde); -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5); }
.tnv-hoja { width: 100%; max-width: 560px; max-height: calc(100dvh - 24px); overflow: auto; border-radius: 22px 22px 0 0; padding-bottom: max(16px, env(safe-area-inset-bottom, 0px)); animation: tnv-sube .28s cubic-bezier(.2, .8, .2, 1) both; }
.tnv-hoja::before { content: ''; display: block; width: 40px; height: 4px; border-radius: 999px; background: var(--tnv-linea); margin: -4px auto 2px; }
@media (min-width: 700px) { .tnv-velo { align-items: center; padding: 16px; } .tnv-hoja { border-radius: 22px; max-height: calc(100dvh - 32px); padding-bottom: 16px; } .tnv-hoja::before { display: none; } }
.tnv-dialogo { width: 100%; max-width: 520px; max-height: calc(100dvh - 32px); overflow: auto; border-radius: 20px; border-top: 5px solid rgb(var(--tnv-rojo)); animation: tnv-crece .22s cubic-bezier(.2, .8, .2, 1) both; }
.tnv-inline { margin: 6px 0 10px; border-radius: 16px; border-left: 4px solid rgb(var(--tnv-rojo)); animation: tnv-aparece .2s ease both; }
.tnv-inline.is-hecha { border-left-color: #16a34a; }
html.tnv-bloqueo { overflow: hidden; }

.tnv-cab { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tnv-ojal { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #b91c1c; }
.is-noche .tnv-ojal, [data-theme='dark'] .tnv-ojal { color: #fca5a5; }
.tnv-ojal svg { width: 13px; height: 13px; }
.tnv-x { width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--tnv-linea); background: var(--tnv-campo); color: var(--tnv-tenue); display: grid; place-items: center; padding: 0; }
.tnv-x svg { width: 15px; height: 15px; }
.tnv-tit { margin: 0; font-size: 1.15rem; font-weight: 800; letter-spacing: -.01em; line-height: 1.2; }
.tnv-sub { margin: -4px 0 0; font-size: .86rem; color: var(--tnv-tenue); line-height: 1.4; }
.tnv-sub b { color: var(--tnv-tinta); }
.tnv-txt { width: 100%; min-height: 96px; resize: vertical; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--tnv-borde); background: var(--tnv-campo); color: inherit; font: inherit; font-size: .95rem; line-height: 1.4; }
.tnv-txt:focus { outline: 0; border-color: rgba(var(--tnv-rojo), .6); }
.tnv-txt.is-mal { border-color: rgb(var(--tnv-rojo)); }
.tnv-fila { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; margin-top: -4px; flex-wrap: wrap; }
.tnv-cuenta { font-size: .76rem; color: var(--tnv-tenue); font-variant-numeric: tabular-nums; }
.tnv-err { font-size: .8rem; font-weight: 700; color: #b91c1c; }
.is-noche .tnv-err, [data-theme='dark'] .tnv-err { color: #fca5a5; }
.tnv-que { padding: 10px 12px; border-radius: 12px; background: var(--tnv-campo); border: 1px solid var(--tnv-linea); font-size: .84rem; }
.tnv-que > b { display: block; margin-bottom: 4px; }
.tnv-que ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 5px; }
.tnv-que li { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 8px; align-items: start; color: var(--tnv-tenue); line-height: 1.35; }
.tnv-que li svg { width: 16px; height: 16px; color: #b91c1c; margin-top: 1px; }
.is-noche .tnv-que li svg, [data-theme='dark'] .tnv-que li svg { color: #fca5a5; }
.tnv-que li b { color: var(--tnv-tinta); }
.tnv-chk { display: flex; gap: 10px; align-items: flex-start; font-size: .86rem; line-height: 1.35; padding: 2px 2px 0; cursor: pointer; }
.tnv-chk input { width: 18px; height: 18px; margin: 1px 0 0; accent-color: rgb(var(--tnv-rojo)); flex: none; }
.tnv-aviso { padding: 10px 12px; border-radius: 12px; background: rgba(217, 119, 6, .12); border: 1px solid rgba(217, 119, 6, .35); font-size: .86rem; line-height: 1.4; }
.tnv-pie { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.tnv-pie--col { flex-direction: column; align-items: stretch; }
.tnv-pie--col .tnv-b { width: 100%; min-height: 44px; }
.tnv-ok { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; padding: 8px 0 4px; }
.tnv-ok__i { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; background: rgba(22, 163, 74, .14); color: #15803d; }
.tnv-ok__i svg { width: 26px; height: 26px; }
.is-noche .tnv-ok__i, [data-theme='dark'] .tnv-ok__i { color: #86efac; }
.is-ocupada .tnv-txt, .is-ocupada .tnv-que { opacity: .7; }
@media (max-width: 700px) { .tnv-pie:not(.tnv-pie--col) .tnv-b { flex: 1 1 auto; } .tnv-franja__acc .tnv-b { flex: 1 1 auto; } }
@media (prefers-reduced-motion: reduce) { .tnv-velo, .tnv-hoja, .tnv-dialogo, .tnv-inline, .tnv-gira { animation: none !important; } }
