/* ── Taller Vertex: expediente de diagnóstico y reparación (handoff sep-2026, sistema «Vertex claro») ── */
.tv-lbl { font-size: 10.5px; font-weight: 700; color: var(--text-3); text-transform: uppercase; letter-spacing: .04em; padding-left: 4px; }
.tv-sec { font-size: 10.5px; font-weight: 700; color: var(--text-3); text-transform: uppercase; letter-spacing: .04em; padding: 4px 4px 0; display: flex; justify-content: space-between; align-items: center; }
.tv-in { width: 100%; height: 44px; background: var(--card); border: 1.5px solid var(--border); border-radius: 14px; padding: 0 14px; font: inherit; font-size: 14px; color: var(--text); outline: none; }
.tv-in:focus { border-color: var(--accent); }
textarea.tv-in { height: auto; padding: 12px 14px; resize: none; display: block; line-height: 1.4; }
.tv-f { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.tv-card { background: var(--card); border-radius: 18px; box-shadow: var(--sh-md); }
.tv-tag { font-size: 10px; font-weight: 700; border-radius: 99px; padding: 5px 11px; white-space: nowrap; display: inline-flex; align-items: center; gap: 4px; }
.tv-btn { width: 100%; height: 50px; border-radius: 99px; background: var(--accent); color: #fff; font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; }
.tv-btn:active { background: var(--accent-hover); }
.tv-btn2 { width: 100%; height: 50px; border-radius: 99px; background: var(--card); color: var(--text); border: 1.5px solid var(--border); font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; }
.tv-foot { padding: 10px 22px calc(16px + var(--safe-bottom)); background: linear-gradient(rgba(250,250,250,0), #fafafa 30%); display: flex; flex-direction: column; gap: 8px; }
.tv-back { display: inline-flex; align-items: center; gap: 4px; height: 36px; padding: 0 12px 0 6px; border-radius: 99px; background: var(--card); box-shadow: var(--sh-md); font-size: 13px; font-weight: 700; }
.tv-row { display: flex; align-items: center; gap: 12px; padding: 12px 14px; cursor: pointer; }
.tv-num { width: 34px; height: 34px; border-radius: 99px; background: var(--accent-tint); color: var(--accent); font-weight: 800; font-size: 13px; display: grid; place-items: center; flex: none; }
.tv-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 50px; padding: 9px 0; border-bottom: 1px solid #f1efec; cursor: pointer; }
.tv-line:last-child { border-bottom: 0; }
.tv-slot { aspect-ratio: 4/3; border-radius: 14px; overflow: hidden; background: #f1efec; display: grid; place-items: center; cursor: pointer; position: relative; }
.tv-slot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tv-bar { flex: 1; height: 5px; border-radius: 99px; background: #f1efec; overflow: hidden; }
.tv-bar > i { display: block; height: 100%; border-radius: 99px; background: var(--accent); }
.tv-sheet-dim { position: absolute; inset: 0; background: rgba(0,0,0,.35); z-index: 70; display: flex; align-items: flex-end; }
.tv-sheet { width: 100%; background: var(--card); border-radius: 24px 24px 0 0; padding: 14px 22px calc(28px + var(--safe-bottom)); display: flex; flex-direction: column; gap: 6px; box-shadow: 0 -8px 30px rgba(0,0,0,.12); max-height: 80%; overflow: auto; animation: riseUp .2s ease both; }
.tv-opt { min-height: 48px; border-radius: 14px; padding: 10px 16px; display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; text-align: left; background: #f7f6f4; width: 100%; }
.tv-editor { position: absolute; inset: 0; z-index: 75; background: #111; display: flex; flex-direction: column; color: #fff; }
.tv-edbtn { height: 40px; padding: 0 14px; border-radius: 99px; background: rgba(255,255,255,.12); color: #fff; font-size: 12.5px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.tv-sig { width: 100%; height: 150px; display: block; touch-action: none; cursor: crosshair; }
.tv-doc { background: var(--card); border-radius: 18px; box-shadow: var(--sh-md); padding: 14px; font-size: 10px; line-height: 1.35; color: var(--text); display: flex; flex-direction: column; gap: 8px; }
.tv-doc h4 { margin: 0; font-size: 10px; font-weight: 800; color: var(--accent); border-bottom: 1px solid #f1efec; padding-bottom: 2px; }
.tv-doc .hd { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; border-bottom: 1.5px solid #f1efec; padding-bottom: 8px; }
.tv-doc .logo { height: 26px; width: auto; }
.tv-doc .hdt { display: grid; grid-template-columns: 1fr auto; gap: 1px 8px; }
.tv-doc .t1 { font-weight: 800; font-size: 12px; letter-spacing: -.01em; }
.tv-doc .t2 { text-align: right; color: var(--text-2); }
.tv-doc .t3 { color: var(--text-2); }
.tv-doc .g2 { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; }
.tv-doc .kv { display: flex; justify-content: space-between; gap: 4px; }
.tv-doc .kv span:first-child { color: var(--text-2); }
.tv-doc .kv span:last-child { text-align: right; font-weight: 600; }
.tv-doc .fotos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.tv-doc .fotos img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 6px; }
.tv-doc .fotos small { font-size: 8px; color: var(--text-2); display: block; }
.tv-doc table { width: 100%; border-collapse: collapse; }
.tv-doc th, .tv-doc td { text-align: left; padding: 2px 3px; border-bottom: 1px solid #f1efec; font-size: 9.5px; vertical-align: top; }
.tv-doc th { color: var(--text-2); font-weight: 600; }
.tv-doc .muted { color: var(--text-2); }
.tv-doc .firmas { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 6px; }
.tv-doc .sig { height: 60px; width: 100%; object-fit: contain; display: block; }
.tv-doc .fl { border-top: 1px solid #1a1a1a; padding-top: 3px; }
.tv-doc .fl span { color: var(--text-2); }
/* login y área */
.login-user { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 6px 12px; border-radius: 14px; background: var(--card); box-shadow: var(--sh-sm); width: 100%; text-align: left; font-size: 13px; font-weight: 600; }
.login-user.on { background: var(--accent-tint); color: var(--accent); }

/* ── handoff v4: Monitor.117 y configuración ── */
.m117-fab { position: absolute; right: 18px; bottom: calc(96px + var(--safe-bottom)); z-index: 60; width: 56px; height: 56px; border-radius: 99px; background: #fff; box-shadow: 0 8px 24px rgba(176,32,32,.28), 0 2px 6px rgba(0,0,0,.08); display: grid; place-items: center; }
.m117-dot { position: absolute; top: 2px; right: 2px; width: 14px; height: 14px; border-radius: 99px; background: #ffef00; border: 2px solid #fff; box-shadow: 0 0 0 2px rgba(255,239,0,.35); }
.m117-typing { width: 7px; height: 7px; border-radius: 99px; background: #b3aca4; animation: m117blink 1s ease-in-out infinite; }
@keyframes m117blink { 0%, 80%, 100% { opacity: .25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Monitor.117 animado ── */
.m117 { overflow: visible; }
.m117 .m117-ball { animation: m117float 3.2s ease-in-out infinite; }
.m117 .m117-shadow { transform-box: fill-box; transform-origin: center; animation: m117shadow 3.2s ease-in-out infinite; }
.m117 .m117-thrust { transform-box: fill-box; transform-origin: 50% 0; animation: m117thrust .9s ease-in-out infinite alternate; }
.m117 .m117-halo { transform-box: fill-box; transform-origin: center; animation: m117halo 2.6s ease-in-out infinite; }
.m117 .m117-sheenR { transform-box: fill-box; transform-origin: center; animation: m117sheen 5.5s ease-in-out infinite; }
.m117 .m117-leds rect { animation: m117led 2.2s ease-in-out infinite; }
.m117 .m117-leds rect:nth-child(2n) { animation-delay: .7s; }
.m117 .m117-leds rect:nth-child(3n) { animation-delay: 1.3s; }
.m117 .m117-ring { transform-box: fill-box; transform-origin: center; animation: m117ring 2.6s ease-in-out infinite; }
.m117 .m117-iris { fill: #87ceeb; transition: fill .4s; filter: drop-shadow(0 0 6px rgba(135,206,235,.9)); }
.m117 .m117-lid { transform-box: fill-box; transform-origin: center; transform: scaleY(0); animation: m117blink 5s ease-in-out infinite; }
.m117 .m117-pupil { transform-box: fill-box; transform-origin: center; animation: m117look 7s ease-in-out infinite; }
.m117-think .m117-iris { fill: #ffffff; filter: drop-shadow(0 0 8px rgba(255,255,255,1)); }
.m117-think .m117-pupil { animation: m117scan 1.1s ease-in-out infinite alternate; }
.m117-think .m117-halo { animation-duration: 1.2s; }
.m117-tip .m117-iris { fill: #ffef00; filter: drop-shadow(0 0 8px rgba(255,239,0,.95)); animation: m117tip 1s ease-in-out infinite alternate; }
.m117-tip .m117-ring { stroke: #ffef00; animation-duration: 1.2s; }
.m117 .m117-stripe { animation: m117stripe 1.6s linear infinite; }
@keyframes m117float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes m117shadow { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(.82); opacity: .6; } }
@keyframes m117thrust { from { transform: scaleY(.7); opacity: .6; } to { transform: scaleY(1.25); opacity: 1; } }
@keyframes m117halo { 0%, 100% { transform: scale(.94); opacity: .7; } 50% { transform: scale(1.06); opacity: 1; } }
@keyframes m117sheen { 0% { transform: rotate(-32deg) translateX(-360px); } 35%, 100% { transform: rotate(-32deg) translateX(360px); } }
@keyframes m117led { 0%, 100% { opacity: .28; } 50% { opacity: .85; } }
@keyframes m117ring { 0%, 100% { opacity: .35; transform: scale(1); } 50% { opacity: .9; transform: scale(1.03); } }
@keyframes m117blink { 0%, 92%, 100% { transform: scaleY(0); } 95%, 97% { transform: scaleY(1); } }
@keyframes m117look { 0%, 30%, 100% { transform: translate(0, 0); } 40%, 55% { transform: translate(9px, 3px); } 65%, 80% { transform: translate(-8px, -2px); } }
@keyframes m117scan { from { transform: translateX(-14px); } to { transform: translateX(14px); } }
@keyframes m117tip { from { opacity: .75; } to { opacity: 1; } }
@keyframes m117stripe { from { stroke-dashoffset: 0; } to { stroke-dashoffset: -30; } }
