:root{--fondo:#07061a;--panel:#0e0b2b;--magenta:#ff2bd6;--cian:#29f3ff;--amarillo:#ffe14d;--texto:#e9e6ff;--tenue:#9a95c9;--mono:ui-monospace, "Cascadia Code", "SF Mono", Consolas, "Liberation Mono", monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-padding-top:76px}body{background:var(--fondo);color:var(--texto);font:16px/1.6 var(--sans);margin:0;overflow-x:hidden}a{color:var(--cian)}a:hover{color:var(--amarillo)}:focus-visible{outline:2px solid var(--amarillo);outline-offset:2px}h1,h2,h3,.logo,.boton,kbd{font-family:var(--mono)}img{max-width:100%;height:auto}.logo{letter-spacing:.14em;color:var(--magenta);text-shadow:0 0 10px #ff2bd699;white-space:nowrap;font-weight:700}.logo b{color:var(--cian);text-shadow:0 0 10px #29f3ff99}.boton{color:var(--cian);border:1px solid var(--cian);cursor:pointer;background:#0b0a2399;border-radius:4px;padding:.55em 1em;font-size:.9rem;line-height:1.2;text-decoration:none;transition:box-shadow .15s,color .15s,background .15s;display:inline-block}.boton:hover:not([aria-disabled]){color:var(--fondo);background:var(--cian);box-shadow:0 0 14px #29f3ff88}.boton.primario{color:var(--fondo);background:var(--magenta);border-color:var(--magenta);font-weight:700}.boton.primario:hover{background:var(--amarillo);border-color:var(--amarillo);box-shadow:0 0 14px #ffe14d88}.boton[disabled]{opacity:.5;cursor:wait}.boton.proximamente{color:var(--amarillo);border-color:var(--amarillo);cursor:default;border-style:dashed}#cargando{z-index:50;background:var(--fondo);font:700 clamp(1.4rem, 6vw, 2.4rem) var(--mono);letter-spacing:.16em;color:var(--magenta);flex-direction:column;justify-content:center;align-items:center;gap:22px;display:flex;position:fixed;inset:0}#cargando b{color:var(--cian)}#cargando i{background:#ffffff18;border-radius:2px;width:min(260px,60vw);height:4px;display:block;position:relative;overflow:hidden}#cargando i:after{content:"";background:linear-gradient(90deg, var(--magenta), var(--cian));width:40%;box-shadow:0 0 12px var(--cian);animation:1.1s ease-in-out infinite alternate barra;position:absolute;inset:0 auto 0 0}@keyframes barra{0%{transform:translate(-30%)}to{transform:translate(160%)}}#lienzo{display:none}body.con3d{overflow:hidden}body.con3d #lienzo{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}body.con3d #sin3d,#hud{display:none}body.con3d #hud{z-index:10;pointer-events:none;display:block;position:fixed;inset:0}#hud button,#hud a,#hud .panel-fondo{pointer-events:auto}.hud-logo{top:max(14px, env(safe-area-inset-top));font-size:.95rem;position:absolute;left:16px}.hud-sin3d{top:max(10px, env(safe-area-inset-top));position:absolute;right:16px}.hud-indice{top:calc(max(10px, env(safe-area-inset-top)) + 46px);flex-direction:column;align-items:flex-end;gap:6px;max-width:60vw;display:flex;position:absolute;right:16px}.hud-indice .boton{background:#07061acc;padding:.4em .8em;font-size:.8rem}.hud-ayuda{left:50%;bottom:calc(18px + env(safe-area-inset-bottom));text-align:center;max-width:calc(100vw - 32px);font:.85rem var(--mono);color:var(--texto);background:#07061acc;border:1px solid #29f3ff55;border-radius:4px;margin:0;padding:.45em 1em;transition:opacity 1.5s;position:absolute;transform:translate(-50%)}.hud-ayuda.oculta{opacity:0}.hud-aviso{left:50%;bottom:calc(86px + env(safe-area-inset-bottom));max-width:calc(100vw - 32px);font:1rem var(--mono);color:var(--amarillo);border:1px solid var(--amarillo);cursor:pointer;pointer-events:auto;background:#07061aee;border-radius:4px;margin:0;padding:.6em 1.1em;position:absolute;transform:translate(-50%);box-shadow:0 0 18px #ffe14d55}.hud-aviso[hidden]{display:none}kbd{color:var(--fondo);background:var(--amarillo);border-radius:3px;padding:.05em .5em;font-weight:700;display:inline-block}.panel-fondo{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#03020d99;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.panel-fondo[hidden]{display:none}.panel{--neon:var(--cian);border:1px solid var(--neon,var(--cian));width:min(760px,100%);max-height:100%;box-shadow:0 0 28px color-mix(in srgb, var(--neon,var(--cian)) 45%, transparent), inset 0 0 40px #29f3ff10;background:linear-gradient(#120d38ee,#0a0824f2);border-radius:6px;outline:none;flex-direction:column;animation:.18s ease-out aparece;display:flex}@keyframes aparece{0%{opacity:0;transform:translateY(10px)scale(.98)}}.panel>header{border-bottom:1px solid #29f3ff44;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.panel h2{color:var(--neon,var(--cian));letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:1.1rem}.panel-cuerpo{overscroll-behavior:contain;padding:16px;overflow-y:auto}h1,h2,h3{line-height:1.2}h3{color:var(--amarillo);margin:1.2em 0 .4em;font-size:1.15rem}.ficha{--neon:var(--magenta)}.ficha h3{color:var(--neon);text-shadow:0 0 12px color-mix(in srgb, var(--neon) 60%, transparent);margin-top:0;font-size:1.5rem}.lema{color:var(--tenue);font-family:var(--mono);margin:0 0 1em}.capturas{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:1em;display:grid}.captura{aspect-ratio:16/9;background:linear-gradient(135deg,#2a0f4a,#0c3a52 60%,#3a0f3a);border:1px solid #fff2;border-radius:4px;margin:0;overflow:hidden}.captura img{object-fit:cover;width:100%;height:100%;color:var(--tenue);font-size:.8rem;display:block}.datos{flex-wrap:wrap;gap:8px 28px;margin:1em 0;display:flex}.datos div{flex-direction:column;display:flex}.datos dt{font:.72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--tenue)}.datos dd{color:var(--cian);margin:0}.acciones{flex-wrap:wrap;gap:10px;margin:1em 0 0;display:flex}.demo{background:#ffffff06;border:1px solid #29f3ff44;border-radius:6px;margin-bottom:12px;padding:14px 16px}.demo h3{margin-top:0}.meta{color:var(--tenue);margin:0;font-size:.9rem}.servicios{padding-left:1.2em}.servicios li::marker{color:var(--magenta)}.contacto p{margin:0 0 12px}.contacto label{font:.8rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tenue);margin-bottom:4px;display:block}.contacto input,.contacto textarea{width:100%;font:1rem var(--sans);color:var(--texto);background:#05041599;border:1px solid #29f3ff66;border-radius:4px;padding:.65em .8em}.contacto input:focus,.contacto textarea:focus{border-color:var(--amarillo);outline:none;box-shadow:0 0 10px #ffe14d55}.contacto textarea{resize:vertical;min-height:110px}.trampa{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.estado{min-height:1.5em;font-size:.95rem}.estado[data-tipo=ok]{color:#5dff9d}.estado[data-tipo=error]{color:#ff7a9c}#sin3d{max-width:960px;margin:0 auto;padding:0 16px 40px}.cabecera{z-index:5;background:#07061af2;border-bottom:1px solid #ff2bd655;flex-wrap:wrap;align-items:center;gap:8px 20px;margin:0 -16px;padding:12px 16px;display:flex;position:sticky;top:0}.cabecera .marca{font-size:1.05rem;text-decoration:none}.cabecera nav{flex-wrap:wrap;flex:1;gap:4px 16px;display:flex}.cabecera nav a{font:.85rem var(--mono);color:var(--texto);text-decoration:none}.cabecera nav a:hover{color:var(--amarillo)}.cabecera [data-ver3d][hidden]{display:none}.portada{padding:56px 0 36px}.portada h1{letter-spacing:.06em;color:var(--magenta);text-shadow:0 0 22px #ff2bd699,3px 3px #29f3ff55;overflow-wrap:anywhere;margin:0 0 8px;font-size:clamp(2rem,9vw,3.6rem)}.portada .lema{color:var(--cian);font-size:1.15rem}#sin3d section{border-top:1px solid #29f3ff22;padding:28px 0}#sin3d h2{text-transform:uppercase;letter-spacing:.1em;color:var(--cian);margin:0 0 18px;font-size:1.4rem}#sin3d h2:before{content:"// ";color:var(--magenta)}.pie{color:var(--tenue);border-top:1px solid #ff2bd655;margin-top:24px;padding-top:18px;font-size:.9rem}@media (max-width:640px){.hud-ayuda{font-size:.75rem}.panel-fondo{padding:8px}.panel-cuerpo{padding:12px}.cabecera nav{flex-basis:100%;order:3}.portada{padding-top:32px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.panel,#cargando i:after{animation:none}}
