
:root{--space:#07061a;--nebula:#7c3aed;--cyan:#22d3ee;--pink:#f472b6;--star:#eef0ff;--mute:#a5a8d6;--glass:rgba(20,16,56,.62);--line:rgba(167,139,250,.28)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:'Exo 2',system-ui,sans-serif;color:var(--star);min-height:100vh;
background:radial-gradient(ellipse at 15% 10%,#2b1370 0,transparent 45%),radial-gradient(ellipse at 90% 30%,#0b3a5c 0,transparent 40%),radial-gradient(ellipse at 50% 100%,#4a145f 0,transparent 50%),var(--space);background-attachment:fixed}
#particles-js{position:fixed;inset:0;z-index:0}
main,header,footer{position:relative;z-index:1}
.wrap{max-width:1040px;margin:0 auto;padding:0 20px}
header{padding:28px 0 8px;text-align:center}
.logo{width:92px;height:92px;filter:drop-shadow(0 0 22px rgba(124,58,237,.8));animation:float 6s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-8px) rotate(-3deg)}}
h1{font-family:Orbitron,sans-serif;font-weight:800;font-size:clamp(1.8rem,6vw,3.4rem);margin:10px 0 0;letter-spacing:.02em;background:linear-gradient(90deg,var(--cyan),#c4b5fd 50%,var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
.by{font-family:Orbitron,sans-serif;font-size:clamp(.8rem,2.4vw,1.05rem);color:var(--mute);margin:2px 0 14px}
.lead{max-width:600px;margin:0 auto 26px;color:var(--mute);font-size:1.05rem;line-height:1.55}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-bottom:22px;padding:0;list-style:none;counter-reset:s}
.steps li{counter-increment:s;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:14px 14px 14px 52px;position:relative;font-size:.95rem;line-height:1.4;backdrop-filter:blur(8px)}
.steps li::before{content:counter(s);position:absolute;left:12px;top:12px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-family:Orbitron;font-size:.8rem;background:linear-gradient(135deg,var(--nebula),var(--pink))}
.panel{background:var(--glass);border:1px solid var(--line);border-radius:20px;padding:22px;margin-bottom:18px;backdrop-filter:blur(10px);box-shadow:0 10px 50px rgba(0,0,0,.35)}
.panel h2{font-family:Orbitron;font-size:1.05rem;margin:0 0 14px;color:#ddd6fe;font-weight:600}
#drop{border:2px dashed rgba(34,211,238,.55);border-radius:16px;padding:34px 16px;text-align:center;cursor:pointer;transition:.2s;background:rgba(34,211,238,.04)}
#drop:hover,#drop.over,#drop:focus-visible{background:rgba(34,211,238,.12);border-color:var(--cyan);box-shadow:0 0 30px rgba(34,211,238,.25);outline:none}
#drop b{font-size:1.15rem}#drop span{display:block;color:var(--mute);margin-top:6px;font-size:.92rem}
#thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px;margin-top:16px}
.th{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.th img{width:100%;height:100%;object-fit:cover}
.th button{position:absolute;top:4px;right:4px;width:24px;height:24px;border:0;border-radius:50%;background:rgba(7,6,26,.85);color:#fff;cursor:pointer;font-size:14px;line-height:1}
.th button:hover{background:var(--pink)}
.count{display:flex;justify-content:space-between;align-items:center;margin-top:12px;color:var(--mute);font-size:.92rem}
.link{background:none;border:0;color:var(--pink);cursor:pointer;font:inherit;text-decoration:underline}
.opts{display:grid;gap:22px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chip label{display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px 14px;min-width:78px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03);transition:.15s;font-size:.92rem}
.chip input:checked+label{border-color:var(--cyan);background:rgba(34,211,238,.14);box-shadow:0 0 20px rgba(34,211,238,.28)}
.chip input:focus-visible+label{outline:2px solid var(--pink);outline-offset:2px}
.chip.wide label{flex-direction:row;padding:12px 18px}
.chip.wide small{color:var(--mute);margin-left:4px}
.mini{display:grid;gap:2px;width:34px;height:44px;padding:2px;border:1px solid var(--mute);border-radius:3px}
.mini i{background:linear-gradient(135deg,var(--cyan),var(--nebula));border-radius:1px}
.go{width:100%;padding:16px;border:0;border-radius:14px;cursor:pointer;font-family:Orbitron;font-weight:800;font-size:1.05rem;color:#fff;background:linear-gradient(90deg,var(--nebula),var(--pink));box-shadow:0 0 34px rgba(124,58,237,.55);transition:.2s}
.go:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 0 46px rgba(244,114,182,.6)}
.go:disabled{opacity:.45;cursor:not-allowed}
.go:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
#msg{min-height:1.4em;margin:12px 0 0;text-align:center;color:var(--mute)}
#msg.err{color:#fda4af}
.ok a{color:var(--cyan)}
footer{text-align:center;padding:26px 20px 34px;color:var(--mute);font-size:.9rem}
footer a{color:var(--cyan);text-decoration:none}footer a:hover{text-decoration:underline}
@media(max-width:560px){.panel{padding:16px}.chip label{min-width:66px;padding:8px 10px}}
@media(prefers-reduced-motion:reduce){.logo{animation:none}*{transition:none!important}}

.nav{position:fixed;top:12px;right:12px;z-index:5;display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--glass);backdrop-filter:blur(10px)}
.nav a{color:var(--star);text-decoration:none;padding:7px 14px;border-radius:999px;font-size:.9rem}
.nav a:hover,.nav a[aria-current]{background:linear-gradient(90deg,var(--nebula),var(--pink))}
.nav a:focus-visible{outline:2px solid var(--cyan)}
.hero{display:flex;align-items:center;justify-content:center;gap:clamp(4px,3vw,40px);flex-wrap:wrap;padding-top:56px}
.hero-text{max-width:540px}
.brand{display:flex;align-items:center;justify-content:center;gap:12px}
.brand .logo{width:60px;height:60px}.brand h1{margin:0}
.hero-char{position:relative;flex:none;width:clamp(170px,24vw,260px);aspect-ratio:570/752}
.hero-char::before,.glow{content:"";position:absolute;inset:6% -16% 0;border-radius:50%;background:conic-gradient(var(--cyan),var(--nebula),var(--pink),var(--cyan));filter:blur(40px);opacity:.55;animation:spin 10s linear infinite}
.hero-char::after{content:"";position:absolute;left:12%;right:12%;bottom:-10px;height:18px;border-radius:50%;background:radial-gradient(var(--nebula),transparent 70%);animation:shadow 4.5s ease-in-out infinite}
.hero-char img,.about-img{position:relative;display:block;width:100%;height:auto;filter:drop-shadow(0 0 2px rgba(255,255,255,.6)) drop-shadow(0 0 20px rgba(244,114,182,.65))}
.hero-char img{animation:bob 4.5s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes bob{50%{transform:translateY(-12px) rotate(1.5deg)}}
@keyframes shadow{50%{transform:scale(.8);opacity:.6}}
.result{margin-top:16px;padding:18px;border:1px solid rgba(37,211,102,.4);border-radius:16px;background:rgba(37,211,102,.07);text-align:center}
.result[hidden]{display:none}
.result .row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:12px}
.btn{display:inline-flex;align-items:center;padding:11px 18px;border-radius:12px;border:1px solid var(--line);color:var(--star);text-decoration:none;background:rgba(255,255,255,.05)}
.btn:hover{border-color:var(--cyan)}
.wa{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:16px;border:0;border-radius:14px;cursor:pointer;color:#fff;background:linear-gradient(135deg,#25d366,#128c7e);font-family:Orbitron;font-weight:800;font-size:1.05rem;animation:pulse 2s infinite}
.wa svg{width:30px;height:30px;fill:#fff;flex:none}
.wa:focus-visible{outline:2px solid #fff;outline-offset:3px}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.65)}70%{box-shadow:0 0 0 18px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}}
/* Acerca de */
.about{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;padding:72px 20px 8px}
.stage{perspective:900px;width:clamp(230px,58vw,400px);position:relative}
.float{animation:bob 5s ease-in-out infinite}
.tilt{position:relative;transform-style:preserve-3d;will-change:transform}
.glowwrap{position:absolute;inset:0}
.card{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:28px;max-width:640px;padding:24px 28px;border:1px solid var(--line);border-radius:22px;background:var(--glass);backdrop-filter:blur(10px)}
.card h1{font-size:clamp(1.25rem,4.5vw,1.8rem);margin:0 0 10px}
.card p{margin:4px 0;font-size:1.05rem}.card a{color:var(--cyan)}
.who{flex:1 1 240px;text-align:left}
#qr{flex:none;padding:10px;background:#fff;border-radius:14px;box-shadow:0 0 30px rgba(37,211,102,.45);line-height:0}
#qr img,#qr canvas{max-width:100%;height:auto}
#motion{padding:10px 18px;border-radius:999px;border:1px solid var(--line);background:var(--glass);color:var(--star);font:inherit;cursor:pointer}
@media(max-width:560px){.who{text-align:center}}
@media(prefers-reduced-motion:reduce){.hero-char::before,.glow,.hero-char::after,.hero-char img,.float,.wa{animation:none}}

.fine{margin:14px 0 0;text-align:center;color:var(--mute);font-size:.88rem}.fine a{color:var(--cyan)}
.legal{max-width:820px;margin:0 auto;padding:78px 20px 10px;position:relative;z-index:1}
.legal h1{font-size:clamp(1.6rem,5vw,2.4rem);margin:0 0 6px;text-align:center}
.legal .upd{text-align:center;color:var(--mute);margin:0 0 24px;font-size:.92rem}
.legal section{background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:14px;backdrop-filter:blur(8px)}
.legal h2{font-family:Orbitron;font-size:1rem;color:#ddd6fe;margin:0 0 8px;font-weight:600}
.legal p,.legal li{line-height:1.6;color:#dfe0ff;margin:6px 0}.legal ul{padding-left:20px;margin:6px 0}
.legal a{color:var(--cyan)}
.legal .key{border-color:rgba(34,211,238,.6);box-shadow:0 0 28px rgba(34,211,238,.18)}
.legal .key.warn{border-color:rgba(244,114,182,.65);box-shadow:0 0 28px rgba(244,114,182,.18)}
@media(max-width:480px){.nav a{padding:7px 10px;font-size:.84rem}}

/* Nav centrado */
.nav{left:50%;right:auto;transform:translateX(-50%);max-width:calc(100vw - 16px);white-space:nowrap}
/* Tools */
.tool-page{padding-top:84px;padding-bottom:10px}
.tool-head{text-align:center;margin-bottom:22px}
.tool-head h1{margin:14px 0 6px;font-family:Orbitron,sans-serif;font-weight:800;font-size:clamp(1.5rem,5vw,2.6rem);background:linear-gradient(90deg,var(--cyan),#c4b5fd 50%,var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
.tool-head .lead{margin:0 auto 10px}
.back{color:var(--cyan);text-decoration:none;font-size:.92rem}.back:hover{text-decoration:underline}
.ico{display:inline-grid;place-items:center;width:66px;height:66px;border-radius:20px;color:#fff;background:linear-gradient(135deg,rgba(124,58,237,.6),rgba(244,114,182,.35));border:1px solid var(--line);box-shadow:0 0 28px rgba(124,58,237,.5)}
.ico svg{width:34px;height:34px}
.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-bottom:20px}
.tool{display:flex;flex-direction:column;gap:8px;padding:22px;border-radius:20px;text-decoration:none;color:inherit;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(10px);transition:.2s}
.tool:hover,.tool:focus-visible{transform:translateY(-5px);border-color:var(--a);box-shadow:0 12px 40px rgba(0,0,0,.4),0 0 30px color-mix(in srgb,var(--a) 40%,transparent);outline:none}
.tool .ico{border-color:var(--a);box-shadow:0 0 24px color-mix(in srgb,var(--a) 50%,transparent);margin-bottom:6px}
.tool h2{font-family:Orbitron;font-size:1.05rem;margin:0}
.tool p{margin:0;color:var(--mute);line-height:1.5;flex:1}
.tool .open{color:var(--a);font-weight:700}
/* Controles de herramientas */
.num{display:inline-flex;align-items:center;gap:8px}
.num button{width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:#fff;font-size:1.4rem;cursor:pointer}
.num button:hover{border-color:var(--cyan)}
input[type=number],textarea{background:rgba(7,6,26,.6);color:var(--star);border:1px solid var(--line);border-radius:12px;font:inherit;padding:10px 12px}
.num input{width:78px;height:44px;text-align:center;font-size:1.1rem}
input:focus-visible,textarea:focus-visible{outline:2px solid var(--cyan)}
.dims{display:flex;align-items:flex-end;justify-content:center;gap:12px;flex-wrap:wrap}
.dims label{display:flex;flex-direction:column;gap:6px;color:var(--mute)}
.dims input{width:96px;height:46px;font-size:1.15rem;text-align:center}
.dims b{font-size:1.4rem;padding-bottom:10px}
.presets{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}
.presets .btn{cursor:pointer;font:inherit;gap:6px;padding:8px 12px}.presets small{color:var(--mute)}
.studio{display:grid;grid-template-columns:minmax(0,400px) 1fr;gap:18px;align-items:start;margin-bottom:18px}
.preview{position:sticky;top:70px}
.preview canvas{width:100%;height:auto;display:block;border-radius:6px;background:#fff;box-shadow:0 0 40px rgba(124,58,237,.5);touch-action:none;cursor:move}
.ctrls .panel{margin-bottom:14px}
.ctrls h3{font-size:.92rem;color:var(--mute);margin:16px 0 8px;font-weight:500}
textarea{width:100%;resize:vertical;font-size:1rem}
.fld{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:14px 0 0;color:var(--star)}
.fld input[type=range]{width:100%;accent-color:var(--pink)}
input[type=color]{width:56px;height:38px;padding:2px;border:1px solid var(--line);border-radius:10px;background:none;cursor:pointer}
.fonts{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:8px;max-height:200px;overflow:auto;padding:2px}
.fontbtn{padding:10px 8px;border-radius:10px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:#fff;font-size:1.05rem;cursor:pointer}
.fontbtn:hover{border-color:var(--cyan)}.fontbtn.on{border-color:var(--cyan);background:rgba(34,211,238,.16);box-shadow:0 0 16px rgba(34,211,238,.3)}
.ctrls .chips{gap:8px}.ctrls .chip.wide label{padding:9px 12px}
#center{margin-top:16px;cursor:pointer;font:inherit}
@media(max-width:820px){.studio{grid-template-columns:1fr}.preview{position:static;max-width:380px;margin:0 auto}}
