/* ══════════ DEVELOPMENT SOFT — estilos globales ══════════ */
html { scroll-behavior: smooth; }
/* Responsive a prueba de balas:
   - los hijos de grid/flex pueden encogerse (evita que un texto largo empuje el layout fuera de pantalla)
   - nada provoca scroll horizontal (clip no rompe position:sticky, a diferencia de hidden) */
html, body { max-width: 100%; overflow-x: hidden; }
@supports (overflow-x: clip) { html, body { overflow-x: clip; } }
.grid > * { min-width: 0; }
img, svg, video, canvas { max-width: 100%; }
input, select, textarea { min-width: 0; }
body { background: linear-gradient(180deg, #f3f5ff 0%, #f6f7fc 40%, #eef1fb 100%); color:#181b29; font-family:'Inter',sans-serif; overflow-x:hidden; }
::selection { background:#0606e7; color:#fff; }
::-webkit-scrollbar { width:9px; }
::-webkit-scrollbar-track { background:#eef0f7; }
::-webkit-scrollbar-thumb { background:#c7cbe0; border-radius:99px; }
::-webkit-scrollbar-thumb:hover { background:#0606e7; }

.glass { background: rgba(255,255,255,0.75); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border: 1px solid rgba(1,23,80,0.08); box-shadow: 0 8px 32px -12px rgba(1,23,80,0.12); }
.glass-dark { background: linear-gradient(160deg, #011750, #0606e7); color:#fff; box-shadow: 0 20px 50px -18px rgba(6,6,231,0.5); }
.text-gradient { background: linear-gradient(90deg,#0606e7,#22d3ee,#a855f7,#0606e7); -webkit-background-clip:text; background-clip:text; color:transparent; background-size:300% auto; animation: gradShift 5s linear infinite; }
@keyframes gradShift { to { background-position: 300% center; } }
.eyebrow-hot { background: linear-gradient(90deg, rgba(6,6,231,.1), rgba(34,211,238,.15), rgba(168,85,247,.12)); border: 1px solid rgba(6,6,231,.2); }
.glow-brand { box-shadow: 0 0 0 1px rgba(6,6,231,.25), 0 8px 40px -8px rgba(6,6,231,.35); }

.grid-bg { background-image: linear-gradient(rgba(1,23,80,0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(1,23,80,0.05) 1px, transparent 1px); background-size: 52px 52px; mask-image: radial-gradient(ellipse 90% 70% at 50% 0%, black 25%, transparent 100%); -webkit-mask-image: radial-gradient(ellipse 90% 70% at 50% 0%, black 25%, transparent 100%); }
.orb { position:absolute; border-radius:50%; filter:blur(90px); opacity:.16; pointer-events:none; }

.reveal { opacity:0; transform: translateY(34px); transition: opacity .8s cubic-bezier(.22,1,.36,1), transform .8s cubic-bezier(.22,1,.36,1); }
.reveal.visible { opacity:1; transform: translateY(0); }
.reveal-delay-1 { transition-delay:.12s; } .reveal-delay-2 { transition-delay:.24s; } .reveal-delay-3 { transition-delay:.36s; }

.nav-blur { background: rgba(255,255,255,0.82); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-bottom: 1px solid rgba(1,23,80,0.07); }
.nav-link.active { color:#0606e7; font-weight:600; }
.btn-shine { position:relative; overflow:hidden; }
.btn-shine::after { content:''; position:absolute; top:0; left:-80%; width:50%; height:100%; background:linear-gradient(100deg, transparent, rgba(255,255,255,0.35), transparent); transform:skewX(-20deg); transition:left .6s ease; }
.btn-shine:hover::after { left:130%; }

.module-chip, .bank-chip { cursor:pointer; user-select:none; transition: all .3s ease; }
.module-chip.active, .bank-chip.active { border-color:#0606e7; background:rgba(6,6,231,0.06); box-shadow:0 0 0 3px rgba(6,6,231,0.12); }
.bank-chip.special { border:2px solid transparent; background: linear-gradient(#fff,#fff) padding-box, linear-gradient(135deg,#0606e7,#011750) border-box; position:relative; }
.bank-chip.special.active { box-shadow:0 10px 30px -10px rgba(6,6,231,.45); background: linear-gradient(rgba(6,6,231,.07),rgba(6,6,231,.07)) padding-box, linear-gradient(135deg,#0606e7,#011750) border-box; }

/* visibility: un modal cerrado no recibe foco con Tab ni toques (antes solo era transparente) */
.modal-overlay { opacity:0; visibility:hidden; pointer-events:none; transition: opacity .35s ease, visibility 0s linear .35s; }
.modal-overlay.open { opacity:1; visibility:visible; pointer-events:auto; transition: opacity .35s ease, visibility 0s; }
.modal-overlay { overscroll-behavior: contain; }
/* 92vh en iOS incluye la barra del navegador y corta el final del modal: se usa la altura visible real */
@supports (height: 100dvh) { .modal-box.max-h-\[92vh\] { max-height: 92dvh; } }
.modal-box { transform: translateY(28px) scale(.97); opacity:0; transition: all .4s cubic-bezier(.22,1,.36,1); }
.modal-overlay.open .modal-box { transform: translateY(0) scale(1); opacity:1; }

#mobileMenu { transition: max-height .45s cubic-bezier(.22,1,.36,1), opacity .35s ease, visibility 0s linear .45s; max-height:0; opacity:0; overflow:hidden; visibility:hidden; }
/* en horizontal (teléfono girado) el menú no cabe: se limita a la pantalla y se desplaza */
#mobileMenu.open { max-height: calc(100vh - 4rem); opacity:1; overflow-y:auto; overscroll-behavior:contain; visibility:visible; transition: max-height .45s cubic-bezier(.22,1,.36,1), opacity .35s ease, visibility 0s; }
@supports (height: 100dvh) { #mobileMenu.open { max-height: calc(100dvh - 4rem); } }
#mobileMenu .mob-link { min-height:44px; display:flex; align-items:center; }
#mobileMenu .mob-link.text-center { justify-content:center; }

/* ─── Header: app de ventas ─── */
.fly-item { position:absolute; transition: transform .65s cubic-bezier(.5,-0.2,.6,1.2), opacity .65s ease; }
.cart-pop { animation: cartPop .5s ease; }
@keyframes cartPop { 30% { transform: scale(1.35); } }
.check-pop { animation: checkPop .6s cubic-bezier(.34,1.56,.64,1) forwards; }
@keyframes checkPop { from { transform: scale(0); } to { transform: scale(1); } }

/* ─── Header: dimensión tecnológica ─── */
#techCanvas { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.hero-scan { position:absolute; left:0; right:0; height:120px; top:-120px; pointer-events:none;
  background: linear-gradient(180deg, transparent, rgba(34,211,238,.10) 45%, rgba(6,6,231,.14) 50%, transparent);
  animation: heroScan 6.5s cubic-bezier(.45,0,.55,1) infinite; }
@keyframes heroScan { 0% { top:-120px; opacity:0; } 10% { opacity:1; } 90% { opacity:1; } 100% { top:100%; opacity:0; } }
.hero-beam { position:absolute; width:2px; height:140px; border-radius:2px; pointer-events:none;
  background: linear-gradient(180deg, transparent, #22d3ee, transparent); opacity:.0; animation: beamFall 5s linear infinite; }
@keyframes beamFall { 0% { transform: translateY(-160px); opacity:0; } 15% { opacity:.7; } 100% { transform: translateY(900px); opacity:0; } }
.glitch { position:relative; display:inline-block; }
.glitch::before, .glitch::after { content: attr(data-text); position:absolute; inset:0; pointer-events:none; opacity:0; background:none; }
.glitch.is-glitching::before { opacity:.85; color:#22d3ee; -webkit-text-fill-color:#22d3ee; transform: translate(-2px, 1px); clip-path: inset(10% 0 55% 0); animation: glitchA .35s steps(2) 1; }
.glitch.is-glitching::after  { opacity:.85; color:#a855f7; -webkit-text-fill-color:#a855f7; transform: translate(2px, -1px); clip-path: inset(60% 0 8% 0);  animation: glitchB .35s steps(2) 1; }
@keyframes glitchA { 0% { clip-path: inset(10% 0 55% 0); } 50% { clip-path: inset(40% 0 20% 0); } 100% { clip-path: inset(70% 0 5% 0); } }
@keyframes glitchB { 0% { clip-path: inset(60% 0 8% 0); } 50% { clip-path: inset(5% 0 70% 0); } 100% { clip-path: inset(30% 0 40% 0); } }
.hud-chip { font-family:'JetBrains Mono',monospace; }
.cursor-blink { animation: cursorBlink 1s step-end infinite; }
@keyframes cursorBlink { 50% { opacity: 0; } }
.holo-border { position:relative; }
.holo-border::before { content:''; position:absolute; inset:-1px; border-radius:inherit; padding:1px; pointer-events:none;
  background: conic-gradient(from var(--ang,0deg), transparent 0 70%, #22d3ee 80%, #a855f7 88%, transparent 96%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  animation: holoSpin 4s linear infinite; }
@property --ang { syntax:'<angle>'; inherits:false; initial-value:0deg; }
@keyframes holoSpin { to { --ang: 360deg; } }

/* ─── Marquee tech ─── */
@keyframes marqueeX { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
.marquee-track { animation: marqueeX 28s linear infinite; }
.marquee-track:hover { animation-play-state: paused; }
.tech-pill { transition: all .3s ease; }
.tech-pill:hover { transform: translateY(-3px) scale(1.05); border-color: rgba(6,6,231,.4); color: #0606e7; }

/* ─── Micro-SaaS expandible ─── */
.micro-card { transition: all .45s cubic-bezier(.22,1,.36,1); }
.micro-card.open { border-color: rgba(6,6,231,.35); box-shadow: 0 18px 45px -14px rgba(6,6,231,.28); }
.micro-body { transition: max-height .55s cubic-bezier(.22,1,.36,1); max-height:0; overflow:hidden; }
.micro-toggle .chev svg { transition: transform .45s cubic-bezier(.22,1,.36,1); }
.micro-card.open .chev { background: #0606e7; color: #fff; }
.micro-card.open .chev svg { transform: rotate(180deg); }
.pulse-dot-price { position: relative; }
.pulse-dot-price::after { content:''; position:absolute; inset:-4px; border-radius:9999px; border:1px solid rgba(6,6,231,.35); animation: ringPulse 2.2s ease-out infinite; }
@keyframes ringPulse { 0% { transform: scale(.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.shine-title { position: relative; display: inline-block; }
.shine-title::after { content:''; position:absolute; left:0; bottom:-6px; height:3px; width:64px; border-radius:99px; background: linear-gradient(90deg,#0606e7,#22d3ee,#a855f7); background-size:200% auto; animation: gradShift 4s linear infinite; }

/* ─── Mini hero de páginas internas ─── */
.mini-hero { position:relative; overflow:hidden; isolation:isolate; }
.mini-hero .mh-grid { position:absolute; inset:0; z-index:-1; opacity:.5;
  background-image: linear-gradient(rgba(255,255,255,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.08) 1px, transparent 1px);
  background-size: 34px 34px; mask-image: linear-gradient(180deg, #000 20%, transparent 100%); -webkit-mask-image: linear-gradient(180deg, #000 20%, transparent 100%);
  animation: mhGrid 18s linear infinite; }
@keyframes mhGrid { to { background-position: 34px 34px, 34px 34px; } }
.mini-hero .mh-orb { position:absolute; border-radius:50%; filter: blur(60px); opacity:.55; z-index:-1; animation: floatY 8s ease-in-out infinite; }
.mini-hero .mh-icon { box-shadow: 0 0 0 8px rgba(255,255,255,.07), 0 0 0 16px rgba(255,255,255,.04), 0 20px 40px -10px rgba(0,0,0,.4); }

/* ─── Cotizador ─── */
.cx-dots i { display:inline-block; width:6px; height:6px; border-radius:99px; background:rgba(1,23,80,.15); margin-left:2px; }
.cx-dots i.on { background:#0606e7; }
.meter { height:10px; border-radius:99px; background:rgba(1,23,80,.08); overflow:hidden; }
.meter > span { display:block; height:100%; border-radius:99px; background: linear-gradient(90deg,#22d3ee,#0606e7,#a855f7); transition: width .7s cubic-bezier(.22,1,.36,1); }
.locked-price { filter: blur(7px); user-select:none; transition: filter .4s; }
.scramble { font-family:'JetBrains Mono',monospace; letter-spacing:.02em; }
.cta-pulse { animation: ctaPulse 2.4s ease-in-out infinite; }
@keyframes ctaPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(16,185,129,.45); } 50% { box-shadow: 0 0 0 12px rgba(16,185,129,0); } }

/* ─── Clientes ─── */
.client-card { transition: all .45s cubic-bezier(.22,1,.36,1); cursor:pointer; }
.client-card .client-name { filter: grayscale(1); opacity:.55; transition: all .45s ease; }
.client-card:hover .client-name, .client-card:focus-visible .client-name { filter:none; opacity:1; color:#0606e7; }
.client-card:hover, .client-card:focus-visible { transform: translateY(-4px); border-color: rgba(6,6,231,.35); outline:none; }
.client-card .client-hint { opacity:0; transform: translateY(4px); transition: all .3s ease; }
.client-card:hover .client-hint, .client-card:focus-visible .client-hint { opacity:1; transform:none; }
.client-flag { position:absolute; top:8px; right:8px; width:20px; height:14px; object-fit:cover; border-radius:3px;
  box-shadow: 0 0 0 1px rgba(1,23,80,.12), 0 2px 6px -1px rgba(1,23,80,.25); opacity:.9; transition: transform .3s cubic-bezier(.34,1.56,.64,1), opacity .3s; }
.client-card:hover .client-flag, .client-card:focus-visible .client-flag { opacity:1; transform: scale(1.15); }
.client-flag-inline { width:18px; height:12px; object-fit:cover; border-radius:2px; box-shadow: 0 0 0 1px rgba(255,255,255,.35); }
@media (hover:none) { .client-card .client-name { filter:none; opacity:.9; } .client-card .client-hint { opacity:.8; transform:none; } }

/* ─── Chat bot ─── */
#chatPanel { transform: translateY(20px) scale(.96); opacity:0; visibility:hidden; pointer-events:none; transition: all .4s cubic-bezier(.22,1,.36,1), visibility 0s linear .4s; transform-origin: bottom right; max-height: calc(100vh - 8rem); }
#chatPanel.open { transform: translateY(0) scale(1); opacity:1; visibility:visible; pointer-events:auto; transition: all .4s cubic-bezier(.22,1,.36,1), visibility 0s; }
@supports (height: 100dvh) { #chatPanel { max-height: calc(100dvh - 8rem); } }
#chatPanel #botChat { flex: 1 1 auto; min-height: 7rem; }   /* en pantallas bajas el chat se encoge en vez de salirse */
#botActions { max-height: 40%; overflow-y: auto; }
/* iPhone con barra de inicio: el botón flotante no queda debajo de ella */
#botFab { bottom: max(1.25rem, env(safe-area-inset-bottom)); }
.msg-in { animation: msgIn .4s cubic-bezier(.22,1,.36,1); }
@keyframes msgIn { from { transform: translateY(12px); opacity:0; } to { transform: translateY(0); opacity:1; } }
.typing-dot { animation: typing 1.2s infinite; }
.typing-dot:nth-child(2) { animation-delay:.2s; } .typing-dot:nth-child(3) { animation-delay:.4s; }
@keyframes typing { 0%,60%,100% { transform: translateY(0); opacity:.4; } 30% { transform: translateY(-4px); opacity:1; } }
#botFab { transition: transform .35s cubic-bezier(.34,1.56,.64,1); }
#botFab:hover { transform: scale(1.1); }

/* ─── Footer interactivo ─── */
.ds-footer { background: radial-gradient(1200px 500px at 50% -10%, rgba(6,6,231,.35), transparent 60%), #030a24; color:#cbd5f5; position:relative; overflow:hidden; }
.ds-footer a { transition: color .2s; }
.ds-footer a:hover { color:#fff; }
.foot-spot { position:absolute; inset:0; pointer-events:none; opacity:0; transition: opacity .4s;
  background: radial-gradient(420px circle at var(--mx,50%) var(--my,50%), rgba(34,211,238,.14), transparent 60%); }
.ds-footer:hover .foot-spot { opacity:1; }
.mega-word { font-weight:900; letter-spacing:-.04em; line-height:.85; user-select:none; white-space:nowrap;
  color: transparent; -webkit-text-stroke: 1px rgba(148,163,255,.22);
  background: radial-gradient(260px circle at var(--wx,50%) var(--wy,50%), #22d3ee, #6366f1 40%, transparent 70%);
  -webkit-background-clip: text; background-clip: text; }
.mega-word span { display:inline-block; transition: transform .35s cubic-bezier(.34,1.56,.64,1); }
.mega-word span:hover { transform: translateY(-10%) scale(1.06); }
.term { background:#010616; border:1px solid rgba(99,102,241,.35); box-shadow: 0 0 0 1px rgba(34,211,238,.05), 0 30px 60px -20px rgba(6,6,231,.6); }
.term-body { font-family:'JetBrains Mono',monospace; font-size:12.5px; line-height:1.65; }
.term-body .ok { color:#34d399; } .term-body .hl { color:#22d3ee; } .term-body .mut { color:#64748b; } .term-body .warn { color:#fbbf24; } .term-body .err { color:#f87171; }
.term-body a { color:#22d3ee; text-decoration: underline; text-underline-offset:3px; }
.term-input { background:transparent; border:0; outline:none; color:#e2e8f0; font-family:'JetBrains Mono',monospace; font-size:12.5px; width:100%; caret-color:#22d3ee; }
.term-chip { font-family:'JetBrains Mono',monospace; }
.game-grid { display:grid; grid-template-columns: repeat(4, 1fr); gap:8px; }
.game-cell { aspect-ratio:1/1; border-radius:12px; background: rgba(99,102,241,.08); border:1px solid rgba(99,102,241,.2); display:flex; align-items:center; justify-content:center; font-size:26px; cursor:pointer; transition: transform .12s, background .2s; user-select:none; -webkit-tap-highlight-color: transparent; }
.game-cell:active { transform: scale(.92); }
.game-cell.bug { background: rgba(248,113,113,.15); border-color: rgba(248,113,113,.5); animation: bugIn .18s ease-out; }
.game-cell.hit { background: rgba(52,211,153,.2); border-color: rgba(52,211,153,.6); }
@keyframes bugIn { from { transform: scale(.6); } to { transform: scale(1); } }

/* Botón "Pixel" de la navegación */
.pixel-pill { position:relative; display:inline-flex; align-items:center; gap:.4rem; padding: .3rem .8rem .3rem .3rem; border-radius:99px; font-weight:800; font-size:.8rem; color:#fff;
  background: linear-gradient(135deg,#0606e7,#7c3aed 55%,#22d3ee); background-size:200% 200%; animation: pillShift 5s ease infinite; box-shadow: 0 8px 22px -8px rgba(124,58,237,.7); isolation:isolate; }
.pixel-pill::after { content:''; position:absolute; inset:-3px; border-radius:inherit; z-index:-1; background: inherit; filter: blur(8px); opacity:.55; animation: pillGlow 2.4s ease-in-out infinite; }
.pixel-pill img { width:24px; height:24px; border-radius:99px; background:#fff; }
.pixel-pill:hover { transform: translateY(-1px) scale(1.03); }
@keyframes pillShift { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes pillGlow { 0%,100% { opacity:.35; } 50% { opacity:.75; } }

/* ─── Pasarela: selector alquiler / propia ─── */
.gw-tab { border-color: transparent; cursor:pointer; }
.gw-tab:hover { transform: translateY(-3px); }
.gw-tab[data-gw-tab="rent"][aria-selected="true"] { border-color:#10b981; box-shadow: 0 20px 50px -18px rgba(16,185,129,.45); }
.gw-tab[data-gw-tab="own"][aria-selected="true"]  { border-color:#0606e7; box-shadow: 0 20px 50px -18px rgba(6,6,231,.4); }
.gw-tab[aria-selected="false"] { opacity:.8; }
.gw-tab[aria-selected="true"] .gw-cta::before { content:'● '; }
.gw-panel { animation: msgIn .45s cubic-bezier(.22,1,.36,1); }

/* ─── Pasarela Pago Móvil ─── */
.pm-step { display:none; } .pm-step.active { display:block; animation: msgIn .45s cubic-bezier(.22,1,.36,1); }
.ref-box { letter-spacing: .5em; font-family:'JetBrains Mono',monospace; }
.copy-row { cursor:pointer; transition: background .2s; }
.copy-row:hover { background: rgba(6,6,231,.05); }
.copy-row.copied { background: rgba(16,185,129,.1); }

/* ─── App Micro-SaaS ─── */
.field { width:100%; background:#fff; border:1px solid rgba(1,23,80,.12); border-radius:.75rem; padding:.7rem .9rem; font-size:.875rem; color:#011750; transition: border-color .2s, box-shadow .2s; }
.field:focus { outline:none; border-color:#0606e7; box-shadow: 0 0 0 3px rgba(6,6,231,.12); }
.label { display:block; font-size:.72rem; font-weight:600; color:#011750; margin-bottom:.35rem; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; padding:.7rem 1.1rem; border-radius:.75rem; font-weight:600; font-size:.875rem; transition: all .2s; cursor:pointer; }
.btn-primary { background:#0606e7; color:#fff; } .btn-primary:hover { background:#011750; }
.btn-ghost { background:#fff; color:#011750; border:1px solid rgba(1,23,80,.12); } .btn-ghost:hover { border-color:#0606e7; color:#0606e7; }
.btn-danger { background:#fff; color:#dc2626; border:1px solid rgba(220,38,38,.25); } .btn-danger:hover { background:#fef2f2; }
.badge { display:inline-block; padding:.15rem .55rem; border-radius:99px; font-size:.68rem; font-weight:700; }

/* ─── Documento imprimible ─── */
.doc-sheet { background:#fff; width:100%; max-width:820px; margin:0 auto; padding:40px; box-shadow: 0 20px 60px -20px rgba(1,23,80,.25); border-radius:14px; }
@media (max-width: 640px) { .doc-sheet:not(.pdf-mode) { padding:20px; border-radius:0; } }
/* Tabla de ítems: en móvil cada ítem es una ficha (descripción / cant × precio ··· total) */
@media (max-width: 639px) {
  .doc-sheet:not(.pdf-mode) .doc-table thead { display:none; }
  .doc-sheet:not(.pdf-mode) .doc-table tr { display:grid; grid-template-columns: auto auto 1fr; align-items:baseline; column-gap:.35rem; padding:.7rem 0; }
  .doc-sheet:not(.pdf-mode) .doc-table td { padding:0 !important; text-align:left; }
  .doc-sheet:not(.pdf-mode) .doc-table .dt-desc { grid-column: 1 / -1; font-weight:600; color:#011750; margin-bottom:.2rem; }
  .doc-sheet:not(.pdf-mode) .doc-table .dt-qty { color:#71717a; }
  .doc-sheet:not(.pdf-mode) .doc-table .dt-qty::after { content:' ×'; }
  .doc-sheet:not(.pdf-mode) .doc-table .dt-price { color:#71717a; }
  .doc-sheet:not(.pdf-mode) .doc-table .dt-total { text-align:right; }
}
/* Al generar el PDF desde un teléfono se fuerza el formato A4 de escritorio */
.doc-sheet.pdf-mode { width:794px; max-width:none; padding:40px; box-shadow:none; border-radius:0; }
@media print {
  @page { size: letter; margin: 0.5in; }
  body { background:#fff !important; }
  .no-print { display:none !important; }
  .doc-sheet { box-shadow:none; padding:0; max-width:none; border-radius:0; }
  .print-qr { break-inside: avoid; }
}

/* ─── Móvil y pantallas táctiles ─── */
@media (max-width: 640px) {
  /* iOS hace zoom automático al enfocar campos con letra < 16px y la página queda desplazada */
  /* !important: las clases text-sm / text-xs de Tailwind se inyectan después y ganarían */
  .field, .term-input, input:not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea { font-size: 16px !important; }
}
@media (pointer: coarse) {
  /* objetivos táctiles cómodos (≈ 44 px recomendados por Apple / WCAG 2.5.5) */
  .btn { min-height: 40px; }
  #hamburger { width: 44px; height: 44px; }
  .game-cell { touch-action: manipulation; }
  button, a, .btn, [role="button"] { touch-action: manipulation; }   /* sin retraso de doble toque */
}
/* Efectos hover que en táctil se quedan "pegados" tras tocar */
@media (hover: none) {
  .gw-tab:hover, .tech-pill:hover, .client-card:hover, .pixel-pill:hover, #botFab:hover { transform: none; }
  .mega-word span:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .hero-scan, .hero-beam { display:none; }
}
