@import url(fuentes.css);
/* creaweb: ventanas de macOS en escritorio, estilo iOS en móvil. Vidrio (vibrancy), violeta como color de marca. */
:root{color-scheme:dark;
--bg:#070b14;--sup:rgba(20,28,48,.66);--sup2:rgba(255,255,255,.06);--sup3:rgba(255,255,255,.1);--bor:rgba(255,255,255,.09);--bor2:rgba(255,255,255,.17);
--tx:#f5f2fc;--mu:#9aa9c6;--ac:#5b9dff;--ac2:#2563eb;--cy:#38bdf8;--ok:#34d399;--av:#fbbf24;--er:#ff6b81;
--campo:rgba(8,5,16,.45);--tit:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));--hueco:rgba(0,0,0,.18);--chip-on:rgba(255,255,255,.06);--r:14px;--sombra:0 0 0 .5px rgba(0,0,0,.7),0 22px 60px -12px rgba(0,0,0,.65),0 8px 20px -8px rgba(0,0,0,.5);
--sans:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace}
:root[data-tema=claro]{color-scheme:light;
--bg:#e9f0fb;--sup:rgba(255,255,255,.76);--sup2:rgba(30,64,140,.05);--sup3:rgba(30,64,140,.09);--bor:rgba(30,64,140,.12);--bor2:rgba(30,64,140,.22);
--tx:#0f1b33;--mu:#5a6785;--ac:#2563eb;--ac2:#1d4ed8;--cy:#0284c7;--ok:#0f9d63;--av:#b97a05;--er:#d6334a;
--campo:rgba(255,255,255,.85);--tit:linear-gradient(180deg,rgba(255,255,255,.9),rgba(232,240,253,.6));--hueco:rgba(30,64,140,.1);--sombra:0 0 0 .5px rgba(30,64,140,.2),0 22px 50px -14px rgba(30,64,175,.3),0 6px 16px -8px rgba(30,64,175,.2)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--tx);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;font-synthesis:none;text-rendering:optimizeLegibility}
/* fondo tipo escritorio de macOS */
body::before{content:'';position:fixed;inset:0;z-index:-1;background:radial-gradient(52rem 38rem at 8% -8%,rgba(37,99,235,.42),transparent 62%),radial-gradient(46rem 34rem at 96% 10%,rgba(56,189,248,.2),transparent 60%),radial-gradient(50rem 40rem at 70% 112%,rgba(59,130,246,.22),transparent 62%),radial-gradient(40rem 30rem at -6% 96%,rgba(96,165,250,.16),transparent 60%),var(--bg)}
:root[data-tema=claro] body::before{background:radial-gradient(52rem 38rem at 8% -8%,rgba(125,175,255,.55),transparent 62%),radial-gradient(46rem 34rem at 96% 10%,rgba(56,189,248,.28),transparent 60%),radial-gradient(50rem 40rem at 70% 112%,rgba(147,197,253,.4),transparent 62%),var(--bg)}
a{color:var(--ac);text-decoration:none}a:hover{text-decoration:underline}
::selection{background:rgba(91,157,255,.4)}
.ico{flex:none}
/* ===== splash de carga ===== */
#splash{position:fixed;inset:0;z-index:100;display:grid;place-items:center;align-content:center;gap:26px;background:var(--bg);transition:opacity .5s,visibility .5s}
#splash::before{content:'';position:absolute;inset:0;background:radial-gradient(40rem 30rem at 50% 42%,rgba(59,130,246,.4),transparent 65%);animation:respira 3s ease-in-out infinite}
#splash.fuera{opacity:0;visibility:hidden}
.splash-icono{position:relative;width:112px;height:112px;animation:flota 3s ease-in-out infinite}
.splash-icono img{width:100%;height:100%;display:block;filter:drop-shadow(0 18px 34px rgba(37,99,235,.6))}
.splash-icono::after{content:'';position:absolute;inset:-16px;border-radius:50%;border:2px solid transparent;border-top-color:var(--ac);border-right-color:var(--cy);animation:giro 1.3s linear infinite;opacity:.9}
.splash-icono::before{content:'';position:absolute;inset:-30px;border-radius:50%;border:1.5px solid transparent;border-bottom-color:rgba(56,189,248,.55);animation:giro 2.4s linear infinite reverse}
.splash-marca{position:relative;font:600 1.9rem var(--mono);letter-spacing:-.04em;margin:0}
.splash-carga{position:relative;width:170px;height:4px;border-radius:99px;background:var(--bor2);overflow:hidden}
.splash-carga i{position:absolute;inset:0;width:40%;border-radius:99px;background:linear-gradient(90deg,var(--ac2),var(--cy));animation:barrido 1.15s ease-in-out infinite}
.splash-txt{position:relative;margin:-10px 0 0;font:500 .74rem var(--mono);color:var(--mu);letter-spacing:.12em;text-transform:uppercase}
@keyframes flota{50%{transform:translateY(-8px)}}@keyframes respira{50%{opacity:.55}}@keyframes giro{to{transform:rotate(360deg)}}@keyframes barrido{0%{left:-40%}100%{left:100%}}
/* barra de progreso superior (mientras hay peticiones) */
#carga{position:fixed;top:0;left:0;right:0;height:2.5px;z-index:60;pointer-events:none;opacity:0;transition:opacity .25s;background:linear-gradient(90deg,transparent,var(--ac2),var(--cy),transparent);background-size:50% 100%;background-repeat:no-repeat;animation:barrido-top 1s linear infinite}
#carga.on{opacity:1}
@keyframes barrido-top{0%{background-position:-60% 0}100%{background-position:160% 0}}
/* ===== marca ===== */
.marca{display:flex;align-items:center;gap:10px;color:var(--tx);font:600 1.08rem var(--mono);letter-spacing:-.04em}.marca:hover{text-decoration:none}
.marca img{width:30px;height:30px;display:block;filter:drop-shadow(0 4px 10px rgba(37,99,235,.5))}
.marca b,.splash-marca b,.dosc{font-weight:700;background:linear-gradient(100deg,var(--ac),var(--cy));-webkit-background-clip:text;background-clip:text;color:transparent}
.marca small{font:500 .64rem var(--mono);color:var(--mu);border:1px solid var(--bor2);padding:1px 7px;border-radius:99px;letter-spacing:.04em}
/* ===== barra de herramientas (menú de macOS) ===== */
.barra{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);border-bottom:1px solid var(--bor)}
.barra-in{max-width:1180px;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:20px;min-height:54px}
.nav{display:inline-flex;gap:2px;padding:3px;border-radius:11px;background:var(--sup2);border:1px solid var(--bor)}
.nav a{display:flex;align-items:center;gap:7px;padding:6px 13px;border-radius:8px;color:var(--mu);font:500 .86rem var(--sans);white-space:nowrap;transition:all .15s}
.nav a:hover{color:var(--tx);text-decoration:none}.nav a[aria-current]{color:var(--tx);background:var(--sup3);box-shadow:0 1px 3px rgba(0,0,0,.3),inset 0 .5px 0 rgba(255,255,255,.12)}
.der{display:flex;align-items:center;gap:6px;margin-left:auto}
.yo{font:500 .76rem var(--mono);color:var(--mu);max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actividad{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 9px;border-radius:99px;background:color-mix(in srgb,var(--ac) 16%,transparent);border:1px solid color-mix(in srgb,var(--ac) 40%,transparent);color:var(--tx);font:500 .76rem var(--mono);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actividad:hover{text-decoration:none;border-color:var(--ac)}
/* barra de pestañas inferior (iOS) */
.tabbar{display:none}
main{max-width:1180px;margin:0 auto;padding:30px 20px 100px}
@media(max-width:700px){
  .barra-in{padding:0 16px;gap:10px;min-height:50px}.barra .nav,.yo{display:none}
  .tabbar{display:flex;position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:50;padding:6px;border-radius:26px;background:color-mix(in srgb,var(--bg) 62%,transparent);backdrop-filter:blur(30px) saturate(190%);-webkit-backdrop-filter:blur(30px) saturate(190%);border:1px solid var(--bor2);box-shadow:var(--sombra)}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px 7px;border-radius:20px;color:var(--mu);font:500 .66rem var(--sans)}
  .tabbar a svg{width:22px;height:22px}.tabbar a:hover{text-decoration:none}.tabbar a[aria-current]{color:var(--tx);background:var(--sup3)}
  main{padding:18px 14px 120px}
}
/* ===== tipografía ===== */
h1{font-size:1.75rem;letter-spacing:-.04em;margin:0;font-weight:680;line-height:1.15}h2{font-size:1.02rem;margin:0 0 12px;font-weight:620;letter-spacing:-.015em}h3{font-size:.9rem;margin:0 0 8px}
@media(max-width:700px){h1{font-size:2rem}}
.cabeza{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:22px}
.sub{color:var(--mu);font-size:.9rem;margin:5px 0 0}
.k{font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--mu)}
.mono{font-family:var(--mono)}.mu{color:var(--mu)}.peq{font-size:.82rem}
/* ===== ventanas ===== */
.tarjeta{position:relative;background:var(--sup);backdrop-filter:blur(26px) saturate(170%);-webkit-backdrop-filter:blur(26px) saturate(170%);border:1px solid var(--bor);border-radius:var(--r);padding:20px;margin:0 0 18px;box-shadow:var(--sombra)}
@media(min-width:701px){
  .tarjeta{padding:56px 22px 22px;border-radius:12px}
  .tarjeta::before{content:'';position:absolute;top:15px;left:16px;width:12px;height:12px;border-radius:50%;background:#ff5f57;box-shadow:0 0 0 .5px rgba(0,0,0,.25) inset,20px 0 #febc2e,40px 0 #28c840;z-index:1}
  .tarjeta::after{content:attr(data-t);position:absolute;top:0;left:0;right:0;height:42px;border-bottom:1px solid var(--bor);border-radius:12px 12px 0 0;background:var(--tit);display:flex;align-items:center;justify-content:center;padding:0 90px;font:500 .74rem var(--mono);color:var(--mu);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
  .tarjeta:hover::before{box-shadow:0 0 0 .5px rgba(0,0,0,.25) inset,20px 0 #febc2e,40px 0 #28c840}
  .tarjeta.sin-barra{padding:20px}.tarjeta.sin-barra::before,.tarjeta.sin-barra::after{display:none}
  details.tarjeta>summary{margin-top:-6px}
}
@media(max-width:700px){.tarjeta{border-radius:22px;padding:18px}}
.tarjeta>h2:first-child,.tarjeta>.cab-t:first-child{margin-top:0}
.cab-t{display:flex;align-items:center;gap:10px;margin-bottom:16px}.cab-t h2{margin:0}
.num{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--ac),var(--ac2));display:grid;place-items:center;font:600 .72rem var(--mono);color:#fff;box-shadow:0 2px 8px rgba(37,99,235,.42)}
.rejilla{display:grid;gap:16px}.rejilla+.tarjeta{margin-top:18px}.tabs{margin-top:4px}.g2{grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.item{display:block;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}.item:hover{border-color:color-mix(in srgb,var(--ac) 60%,transparent);text-decoration:none;transform:translateY(-3px)}
.fila{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.sep{justify-content:space-between}
/* ===== estados y spinners ===== */
.estado{display:inline-flex;align-items:center;gap:7px;padding:3px 11px 3px 8px;border-radius:99px;border:1px solid var(--bor2);font:500 .72rem var(--mono);color:var(--mu);background:var(--sup2)}
.estado i{width:7px;height:7px;border-radius:50%;background:var(--mu);flex:none}
.estado.listo{color:var(--ok)}.estado.listo i{background:var(--ok);box-shadow:0 0 8px var(--ok)}.estado.error{color:var(--er)}.estado.error i{background:var(--er)}
.estado.generando{color:var(--ac);border-color:color-mix(in srgb,var(--ac) 45%,transparent);background:color-mix(in srgb,var(--ac) 12%,transparent)}
.estado.generando i{width:11px;height:11px;background:none;border:2px solid color-mix(in srgb,var(--ac) 28%,transparent);border-top-color:var(--ac);animation:giro .75s linear infinite}
.estado.activo{color:var(--ok)}.estado.activo i{background:var(--ok)}.estado.invitado{color:var(--av)}.estado.invitado i{background:var(--av)}.estado.desactivado i{background:var(--er)}
.spin{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid color-mix(in srgb,var(--ac) 28%,transparent);border-top-color:var(--ac);animation:giro .75s linear infinite;flex:none}
.spin.g{width:26px;height:26px;border-width:3px}
/* panel de «trabajando» */
.trabajo{overflow:hidden;background-image:linear-gradient(110deg,transparent 30%,color-mix(in srgb,var(--ac) 16%,transparent) 50%,transparent 70%);background-size:220% 100%;animation:brillo 2.4s linear infinite}
@keyframes brillo{from{background-position:150% 0}to{background-position:-50% 0}}
.trabajo-cab{display:flex;align-items:center;gap:14px;position:relative}
.orbe{position:relative;width:46px;height:46px;flex:none;display:grid;place-items:center}
.orbe img{width:30px;height:30px;animation:flota 2.4s ease-in-out infinite;filter:drop-shadow(0 4px 10px rgba(37,99,235,.55))}
.orbe::before,.orbe::after{content:'';position:absolute;inset:0;border-radius:50%;border:2px solid transparent}
.orbe::before{border-top-color:var(--ac);border-right-color:var(--cy);animation:giro 1.1s linear infinite}
.orbe::after{inset:6px;border-bottom-color:color-mix(in srgb,var(--cy) 60%,transparent);animation:giro 1.8s linear infinite reverse}
.trabajo-txt{flex:1;min-width:0}.trabajo-txt strong{display:block;font-weight:600}@media(min-width:701px){.trabajo-txt strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.puntos::after{content:'';display:inline-block;width:1.2em;text-align:left;animation:puntos 1.4s steps(4,end) infinite}
@keyframes puntos{0%{content:''}25%{content:'.'}50%{content:'..'}75%{content:'...'}}
.crono{font:600 1.05rem var(--mono);color:var(--tx);letter-spacing:-.02em}
progress{width:100%;height:7px;border-radius:99px;overflow:hidden;appearance:none;border:0;background:var(--sup3);position:relative}
progress::-webkit-progress-bar{background:var(--sup3);border-radius:99px}
progress::-webkit-progress-value{background:linear-gradient(90deg,var(--ac2),var(--ac),var(--cy));border-radius:99px;transition:width .6s}progress::-moz-progress-bar{background:var(--ac);border-radius:99px}
.pasos{display:flex;gap:6px;margin:16px 0 2px;flex-wrap:wrap}.paso{flex:1;min-width:84px;padding:8px 10px;font:500 .72rem var(--mono);color:var(--mu);border-radius:9px;background:var(--sup2);border:1px solid var(--bor);display:flex;align-items:center;gap:7px}
.paso.hecho{color:var(--ok)}.paso.hecho::before{content:'✓'}.paso.activo{color:var(--tx);border-color:color-mix(in srgb,var(--ac) 55%,transparent);background:color-mix(in srgb,var(--ac) 14%,transparent)}.paso.activo::before{content:'';width:9px;height:9px;border-radius:50%;border:2px solid color-mix(in srgb,var(--ac) 30%,transparent);border-top-color:var(--ac);animation:giro .7s linear infinite}
/* ===== formularios ===== */
label.c{display:block;font:500 .72rem var(--mono);color:var(--mu);margin:22px 0 8px;text-transform:uppercase;letter-spacing:.07em}
.cab-t+div>label.c:first-child,.cab-t+form>div:first-child>label.c:first-child,form>.cols>div>label.c:first-child{margin-top:0}
.cols>div>label.c{margin-top:16px}.cols{margin-bottom:2px}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input:not([type]),textarea,select{width:100%;padding:10px 13px;border:1px solid var(--bor2);border-radius:10px;background:var(--campo);color:var(--tx);font:400 .93rem/1.4 var(--sans);transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 1px 2px var(--hueco)}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--mu) 50%),linear-gradient(135deg,var(--mu) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px;cursor:pointer}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 4px color-mix(in srgb,var(--ac) 26%,transparent)}
textarea{min-height:100px;resize:vertical}
input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--mu) 65%,transparent)}
.ayuda{font-size:.8rem;color:var(--mu);margin:7px 0 0}
.cols{display:grid;gap:0 18px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
/* selector de archivo propio (el del navegador usa su tipografía y textos en inglés) */
.archivo{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.archivo input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.archivo .nombre{font:400 .85rem var(--mono);color:var(--mu);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
/* chips y tarjetas de opción */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative;cursor:pointer}.chip input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--bor2);border-radius:99px;background:var(--sup2);font:450 .86rem var(--sans);color:var(--mu);transition:all .15s;user-select:none}
.chip:hover span{border-color:var(--ac);color:var(--tx)}
.chip:has(input:checked) span{background:linear-gradient(180deg,color-mix(in srgb,var(--ac) 40%,transparent),color-mix(in srgb,var(--ac2) 40%,transparent));border-color:color-mix(in srgb,var(--ac) 70%,transparent);color:var(--tx);box-shadow:0 2px 12px -2px color-mix(in srgb,var(--ac2) 60%,transparent)}
.chip:has(input:focus-visible) span{box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 38%,transparent)}
.chip:has(input:disabled) span{opacity:.55;cursor:not-allowed}
.opcs{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.opc{position:relative;cursor:pointer;display:block}.opc input{position:absolute;opacity:0;inset:0;cursor:pointer}
.opc>div{height:100%;padding:13px 15px;border:1px solid var(--bor2);border-radius:13px;background:var(--sup2);transition:all .15s}
.opc:hover>div{border-color:var(--ac);transform:translateY(-1px)}
.opc:has(input:checked)>div{border-color:var(--ac);background:color-mix(in srgb,var(--ac) 16%,transparent);box-shadow:0 0 0 1.5px var(--ac) inset,0 8px 24px -10px color-mix(in srgb,var(--ac2) 70%,transparent)}
.opc:has(input:focus-visible)>div{box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 38%,transparent)}
.opc b{display:block;font-weight:600;font-size:.9rem}.opc small{color:var(--mu);font-size:.78rem;line-height:1.35;display:block;margin-top:3px}
.paleta{display:flex;height:22px;border-radius:7px;overflow:hidden;margin-top:10px;border:1px solid var(--bor)}.paleta i{flex:1}
/* control segmentado (iOS) */
.seg{display:inline-flex;padding:3px;gap:2px;border-radius:11px;background:var(--sup2);border:1px solid var(--bor)}
.seg label{position:relative;cursor:pointer}.seg input{position:absolute;opacity:0;inset:0;cursor:pointer}
.seg span{display:block;padding:7px 15px;font:500 .86rem var(--sans);color:var(--mu);border-radius:8px;transition:all .15s}
.seg label:has(input:checked) span{background:var(--sup3);color:var(--tx);box-shadow:0 1px 4px rgba(0,0,0,.35),inset 0 .5px 0 rgba(255,255,255,.15)}
/* interruptor (iOS) */
.interruptor{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:.92rem;margin-top:16px}
.interruptor input{appearance:none;-webkit-appearance:none;width:46px;height:28px;border-radius:99px;background:var(--bor2);position:relative;cursor:pointer;transition:background .2s;flex:none;border:0;padding:0;box-shadow:none}
.interruptor input::after{content:'';position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.35);transition:transform .22s cubic-bezier(.3,1.4,.5,1)}
.interruptor input:checked{background:linear-gradient(90deg,var(--ac2),var(--ac))}.interruptor input:checked::after{transform:translateX(18px)}
.resumen{position:sticky;bottom:92px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(26px) saturate(180%);border:1px solid var(--bor2);border-radius:16px;box-shadow:var(--sombra)}
@media(min-width:701px){.resumen{bottom:14px}}
.resumen .dato{font:500 .8rem var(--mono);color:var(--mu)}.resumen b{color:var(--tx)}
/* ===== botones (una sola tipografía: Geist 500, siempre la misma en <button> y <a>) ===== */
button,.btn,input[type=submit]{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;min-height:38px;border:1px solid var(--bor2);border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.04));color:var(--tx);font-family:var(--sans);font-size:.9rem;font-weight:520;font-style:normal;letter-spacing:-.011em;line-height:1.2;text-transform:none;cursor:pointer;white-space:nowrap;-webkit-appearance:none;appearance:none;box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 .5px 0 rgba(255,255,255,.18);transition:transform .12s,border-color .15s,filter .15s,background .15s;-webkit-tap-highlight-color:transparent}
:root[data-tema=claro] button:not(.pri):not(.fan),:root[data-tema=claro] .btn:not(.pri){background:linear-gradient(180deg,#fff,#eef3fc);border-color:rgba(30,64,140,.28);color:var(--tx);box-shadow:0 1px 2px rgba(30,64,140,.18),inset 0 1px 0 #fff}
:root[data-tema=claro] button:not(.pri):not(.fan):hover,:root[data-tema=claro] .btn:not(.pri):hover{border-color:var(--ac);background:linear-gradient(180deg,#fff,#e6eefc)}
:root[data-tema=claro] button.pri,:root[data-tema=claro] .btn.pri{box-shadow:0 6px 18px -4px rgba(37,99,235,.55),inset 0 1px 0 rgba(255,255,255,.45)}
:root[data-tema=claro] button.fan:hover{background:rgba(30,64,140,.08)}
button:hover,.btn:hover{border-color:var(--ac);text-decoration:none}button:active,.btn:active{transform:scale(.97)}
button.pri,.btn.pri{background:linear-gradient(180deg,#7fb4ff,var(--ac2) 85%);border-color:rgba(255,255,255,.22);color:#fff;font-weight:600;box-shadow:0 6px 20px -4px color-mix(in srgb,var(--ac2) 75%,transparent),inset 0 1px 0 rgba(255,255,255,.4);text-shadow:0 1px 1px rgba(8,25,90,.4)}
button.pri:hover,.btn.pri:hover{filter:brightness(1.1);border-color:rgba(255,255,255,.4)}
button.pel{color:var(--er)}button.pel:hover{border-color:var(--er)}
button.fan{background:transparent;border-color:transparent;color:var(--mu);padding:7px 10px;min-height:34px;box-shadow:none}button.fan:hover{color:var(--tx);background:var(--sup2);border-color:transparent}
button:disabled{opacity:.45;cursor:not-allowed;transform:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.acciones{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
@media(max-width:700px){button,.btn{min-height:44px;border-radius:12px}}
/* ===== cajas ===== */
.caja{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:12px;border:1px solid var(--bor2);margin:14px 0;font-size:.9rem}
.caja.error{border-color:color-mix(in srgb,var(--er) 50%,transparent);background:color-mix(in srgb,var(--er) 11%,transparent);color:var(--er)}
.caja.ok{border-color:color-mix(in srgb,var(--ok) 50%,transparent);background:color-mix(in srgb,var(--ok) 11%,transparent);color:var(--ok)}
.caja.aviso{border-color:color-mix(in srgb,var(--av) 50%,transparent);background:color-mix(in srgb,var(--av) 11%,transparent);color:var(--av)}
.caja span{color:var(--tx)}
.stat{padding:15px 17px;border:1px solid var(--bor);border-radius:13px;background:var(--sup2)}.stat .v{font:600 1.55rem var(--mono);letter-spacing:-.035em;margin-top:4px}.stat .v small{font-size:.8rem;color:var(--mu);font-weight:400}
/* ===== pestañas ===== */
.tabs{display:inline-flex;gap:2px;padding:3px;border-radius:12px;background:var(--sup2);border:1px solid var(--bor);margin-bottom:20px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs a{padding:7px 15px;color:var(--mu);font:500 .87rem var(--sans);border-radius:9px;white-space:nowrap;transition:all .15s}.tabs a:hover{color:var(--tx);text-decoration:none}.tabs a[aria-current]{color:var(--tx);background:var(--sup3);box-shadow:0 1px 4px rgba(0,0,0,.35),inset 0 .5px 0 rgba(255,255,255,.14)}
/* terminal */
.log{font:12.5px/1.7 var(--mono);max-height:430px;overflow:auto;background:rgba(3,6,14,.8);border:1px solid var(--bor);border-radius:10px;padding:13px 15px;color:#bccbe6}
:root[data-tema=claro] .log{background:#0e1a33;color:#cdd9f0}
.log div::before{content:'❯ ';color:var(--ac)}.log .error{color:var(--er)}.log .aviso{color:var(--av)}.log .t{color:#6a7a9c;margin-right:9px}
.tabla{width:100%;border-collapse:collapse;font-size:.88rem}.tabla th{font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--mu);text-align:left;padding:8px 10px;border-bottom:1px solid var(--bor)}.tabla td{padding:11px 10px;border-bottom:1px solid var(--bor);vertical-align:middle}.tabla tr:last-child td{border:0}
.scroll-x{overflow-x:auto}
.det{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;font-size:.9rem}.det dt{color:var(--mu);font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;padding-top:2px}.det dd{margin:0;word-break:break-word}
/* vista previa (ventana de Safari) */
.marco{border:1px solid var(--bor2);border-radius:12px;overflow:hidden;background:#fff;margin-top:14px;box-shadow:0 10px 30px -12px rgba(0,0,0,.5)}.marco iframe{display:block;border:0;width:100%;height:72vh;background:#fff}.marco.movil{max-width:390px;margin-inline:auto;border-radius:34px;border:8px solid #111;box-shadow:0 20px 50px -14px rgba(0,0,0,.7)}
.vacio{text-align:center;padding:52px 16px;color:var(--mu)}
/* ===== diálogo: hoja de macOS / hoja inferior de iOS ===== */
dialog{border:1px solid var(--bor2);border-radius:16px;background:color-mix(in srgb,var(--bg) 72%,var(--sup));backdrop-filter:blur(40px) saturate(180%);-webkit-backdrop-filter:blur(40px) saturate(180%);color:var(--tx);max-width:540px;width:calc(100% - 28px);padding:26px 24px 22px;box-shadow:0 40px 100px -10px rgba(0,0,0,.75),0 0 0 .5px rgba(0,0,0,.8)}
dialog[open]{animation:hoja .28s cubic-bezier(.2,.9,.3,1.1)}
dialog::backdrop{background:rgba(3,6,14,.62);backdrop-filter:blur(5px)}
@keyframes hoja{from{opacity:0;transform:translateY(16px) scale(.97)}}
@media(max-width:700px){dialog{margin:auto 0 0;max-width:100%;width:100%;border-radius:26px 26px 0 0;padding-top:30px;padding-bottom:max(22px,env(safe-area-inset-bottom))}dialog::before{content:'';position:absolute;top:9px;left:50%;width:40px;height:5px;margin-left:-20px;border-radius:99px;background:var(--bor2)}dialog[open]{animation:subir .34s cubic-bezier(.2,.9,.3,1)}@keyframes subir{from{transform:translateY(100%)}}}
.precio{font:650 2.2rem var(--mono);letter-spacing:-.05em;margin:8px 0;background:linear-gradient(90deg,var(--tx),var(--ac) 60%,var(--cy));-webkit-background-clip:text;background-clip:text;color:transparent}
details>summary{cursor:pointer;color:var(--mu);font-size:.88rem;padding:4px 0;list-style:none}details>summary::before{content:'▸ ';color:var(--ac)}details[open]>summary::before{content:'▾ '}
details.tarjeta>summary{color:var(--tx);font-weight:600;font-size:.95rem}
/* ===== login ===== */
.entrada{min-height:calc(100vh - 150px);display:grid;place-items:center}
.login{width:100%;max-width:420px}
.login-icono{width:68px;height:68px;display:block;margin-bottom:18px;filter:drop-shadow(0 10px 24px rgba(37,99,235,.55))}
.codigo{font:600 1.7rem var(--mono)!important;letter-spacing:.45em;text-align:center}
.qr{display:block;margin:14px auto;width:200px;height:200px;border-radius:14px;background:#fff;padding:8px}
.secreto{font:500 .85rem var(--mono);word-break:break-all;background:var(--campo);border:1px solid var(--bor2);border-radius:10px;padding:10px 12px;user-select:all}
.codigos{display:grid;grid-template-columns:1fr 1fr;gap:8px;font:600 .92rem var(--mono);margin:12px 0}.codigos span{background:var(--campo);border:1px solid var(--bor2);border-radius:10px;padding:9px;text-align:center;user-select:all}
.reglas{list-style:none;margin:8px 0 0;padding:0;font-size:.82rem;color:var(--mu)}.reglas li::before{content:'○ ';color:var(--mu)}.reglas li.ok{color:var(--ok)}.reglas li.ok::before{content:'● ';color:var(--ok)}
.rol{font:500 .7rem var(--mono);padding:2px 9px;border-radius:99px;background:var(--sup2);border:1px solid var(--bor2)}.rol.admin{color:var(--cy);border-color:color-mix(in srgb,var(--cy) 45%,transparent)}
.num-peq{width:84px}.num-peq input{padding:7px 9px}
@media(prefers-reduced-motion:reduce){
  #splash::before,.splash-icono,.splash-icono::before,.orbe img,.trabajo,#vista>*,.vista-carga,dialog[open],.cursor,.esqueleto,.demo *{animation:none!important}
  *{transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* ===== carga entre ventanas ===== */
#vista>*{animation:entra .38s cubic-bezier(.2,.8,.3,1) both}
@keyframes entra{from{opacity:0;transform:translateY(10px)}}
.vista-carga{animation:entra .2s both}
.vista-carga .centro{display:flex;flex-direction:column;align-items:center;gap:16px;padding:34px 0 26px}
.vista-carga .orbe{width:64px;height:64px}.vista-carga .orbe img{width:40px;height:40px}.vista-carga .orbe::after{inset:9px}
.vista-carga .cargando-txt{font:500 .8rem var(--mono);color:var(--mu);letter-spacing:.14em;text-transform:uppercase}
.vista-carga .barra-fina{width:150px;height:3px;border-radius:99px;background:var(--bor2);overflow:hidden;position:relative}.vista-carga .barra-fina i{position:absolute;inset:0;width:40%;border-radius:99px;background:linear-gradient(90deg,var(--ac2),var(--cy));animation:barrido 1.1s ease-in-out infinite}
.esqueleto{border-radius:10px;background:linear-gradient(90deg,var(--sup2) 25%,var(--sup3) 50%,var(--sup2) 75%);background-size:220% 100%;animation:shimmer 1.4s linear infinite}
@keyframes shimmer{from{background-position:120% 0}to{background-position:-120% 0}}
.esq-tarjetas{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));opacity:.9}
.esq-t{height:132px;border-radius:14px;border:1px solid var(--bor);background:var(--sup);position:relative;overflow:hidden}
.esq-t .esqueleto{position:absolute;left:18px;height:12px}.esq-t .a{top:22px;width:46%;height:16px}.esq-t .b{top:58px;width:68%}.esq-t .c{top:84px;width:40%}
.esq-titulo{height:30px;width:220px;margin-bottom:10px}.esq-sub{height:14px;width:300px;max-width:80%;margin-bottom:6px}
/* hoja de «calculando» */
.calculando{display:flex;align-items:center;gap:14px;padding:6px 0 10px}

/* ===== acceso: presentación + ventana de entrada ===== */
.acceso{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:56px;align-items:center;min-height:calc(100vh - 150px)}
.acceso-hero{max-width:560px}
.hero-marca{display:flex;align-items:center;gap:12px;font:600 1.5rem var(--mono);letter-spacing:-.04em;margin-bottom:26px}.hero-marca img{filter:drop-shadow(0 8px 20px rgba(37,99,235,.55))}
.hero-marca b{font-weight:700;background:linear-gradient(100deg,var(--ac),var(--cy));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-t{font-size:clamp(1.9rem,4.2vw,3rem);line-height:1.08;letter-spacing:-.045em;font-weight:700;margin:0 0 16px}
.dosc{background:linear-gradient(100deg,var(--ac),var(--cy));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-p{color:var(--mu);font-size:1.05rem;line-height:1.6;margin:0 0 24px;max-width:46ch}
.hero-lista{list-style:none;margin:0 0 30px;padding:0;display:grid;gap:14px}
.hero-lista li{display:flex;gap:14px;align-items:flex-start}.hero-lista b{display:block;font-weight:600;font-size:.95rem}.hero-lista div span{color:var(--mu);font-size:.86rem}
.hl-ico{width:36px;height:36px;border-radius:11px;flex:none;display:grid;place-items:center;color:var(--ac);background:color-mix(in srgb,var(--ac) 14%,transparent);border:1px solid color-mix(in srgb,var(--ac) 32%,transparent)}
.acceso-form{display:flex;flex-direction:column;align-items:center;gap:16px;width:100%}
.acceso-form .login{width:100%;max-width:430px;margin:0}
.acceso-form .login h1{font-size:1.6rem}
.acceso-pie{display:flex;align-items:center;gap:8px;font:500 .72rem var(--mono);color:var(--mu);margin:0;letter-spacing:.04em}
/* demo animada: código que se escribe y una web que se arma */
.demo{display:grid;grid-template-columns:1.05fr .95fr;gap:14px;max-width:520px}
.demo-ventana{border:1px solid var(--bor2);border-radius:12px;background:var(--sup);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--sombra);overflow:hidden}
.demo-cab{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--bor);background:var(--tit)}
.demo-cab i{width:9px;height:9px;border-radius:50%;background:#ff5f57}.demo-cab i:nth-child(2){background:#febc2e}.demo-cab i:nth-child(3){background:#28c840}
.demo-cab span{margin-left:auto;font:500 .66rem var(--mono);color:var(--mu)}
.demo-cod{margin:0;padding:14px 14px 12px;min-height:196px;font:500 .74rem/1.75 var(--mono);white-space:pre;overflow:hidden}
.ln{display:block;white-space:pre}
@keyframes escribe{0%{clip-path:inset(0 100% 0 0);opacity:1}8%,88%{clip-path:inset(0 0 0 0);opacity:1}88%{animation-timing-function:ease}96%,100%{clip-path:inset(0 0 0 0);opacity:0}}
.tk-s{color:var(--ac)}.tk-p{color:var(--cy)}.tk-v{color:#f59e0b}.tk-m{color:var(--mu)}
:root[data-tema=claro] .tk-v{color:#b45309}
.cursor{display:inline-block;width:8px;height:15px;border-radius:2px;background:var(--ac);animation:parpadeo 1s steps(2,start) infinite;vertical-align:middle;margin-top:2px}
@keyframes parpadeo{50%{opacity:0}}
/* maqueta de la web */
.mini{padding:11px;display:grid;gap:9px;min-height:196px;align-content:start}
@keyframes aparece{0%{opacity:0;transform:translateY(10px) scale(.96)}6%,88%{opacity:1;transform:none}88%{animation-timing-function:ease}96%,100%{opacity:0;transform:none}}
@media(prefers-reduced-motion:no-preference){
  .ln{animation:escribe 12s infinite backwards;animation-delay:var(--d);animation-timing-function:steps(18,end)}
  .pz{animation:aparece 12s infinite backwards;animation-delay:var(--d)}
}
.mini b{display:block;border-radius:6px;background:color-mix(in srgb,var(--mu) 40%,transparent)}
.m-nav{display:flex;align-items:center;gap:7px}.m-nav .logo{width:16px;height:16px;border-radius:5px;background:linear-gradient(135deg,var(--ac),var(--cy))}.m-nav .pill{width:30px;height:7px}.m-nav .der{margin-left:auto;width:38px;background:color-mix(in srgb,var(--ac) 60%,transparent)}
.m-hero{padding:14px 12px;border-radius:9px;background:linear-gradient(125deg,var(--ac2),var(--cy));display:grid;gap:7px}.m-hero .tit{height:9px;width:70%;background:rgba(255,255,255,.92)}.m-hero .corto{width:46%;background:rgba(255,255,255,.6)}.m-hero .boton{width:44px;height:14px;border-radius:99px;background:#fff;margin-top:4px}
.m-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.m-cards .card{padding:8px;border-radius:8px;background:color-mix(in srgb,var(--mu) 16%,transparent);border:1px solid var(--bor);display:grid;gap:6px}.m-cards .ic{width:14px;height:14px;border-radius:50%;background:var(--ac)}.m-cards .ic.c2{background:var(--cy)}.m-cards .ic.c3{background:#34d399}.m-cards .tx{height:6px}
.m-pie .tx{height:6px;width:55%;margin:0 auto}
@media(max-width:980px){.acceso{grid-template-columns:1fr;gap:26px;min-height:0}.acceso-hero{max-width:none}.hero-lista,.demo{display:none}.hero-marca{margin-bottom:16px}.hero-t{font-size:2rem}.hero-p{font-size:.95rem;margin-bottom:0}}
@media(max-width:700px){.acceso-form .login{max-width:none}}

.fila.nowrap{flex-wrap:nowrap}

/* ===== avisos (toast) ===== */
#toasts{position:fixed;inset:auto;top:66px;right:18px;margin:0;padding:0;border:0;background:none;overflow:visible;color:var(--tx);width:min(390px,calc(100vw - 28px));display:flex;flex-direction:column;gap:10px;pointer-events:none}
#toasts:not(:popover-open){display:none}
@media(max-width:700px){#toasts{top:max(58px,calc(env(safe-area-inset-top) + 50px));right:14px;left:14px;width:auto}}
.toast{position:relative;overflow:hidden;pointer-events:auto;display:flex;align-items:flex-start;gap:12px;padding:12px 8px 14px 12px;border-radius:15px;background:color-mix(in srgb,var(--bg) 80%,var(--sup));backdrop-filter:blur(30px) saturate(190%);-webkit-backdrop-filter:blur(30px) saturate(190%);border:1px solid var(--bor2);box-shadow:var(--sombra);animation:toast-in .4s cubic-bezier(.2,.9,.3,1.15) both}
.toast .ti{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;flex:none;color:var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);border:1px solid color-mix(in srgb,var(--c) 38%,transparent)}
.toast .tt{flex:1;min-width:0;padding-top:3px;font-size:.9rem;line-height:1.4;word-break:break-word}
.toast .tx{min-height:28px;padding:5px 7px;margin-top:-1px}
.toast .tb{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c);transform-origin:left;animation:toast-barra var(--dur) linear both;opacity:.8}
.toast.pausa .tb{animation-play-state:paused}
.toast-ok{--c:var(--ok)}.toast-error{--c:var(--er)}.toast-info{--c:var(--ac)}.toast-aviso{--c:var(--av)}
.toast.sale{animation:toast-out .26s ease-in forwards}
@keyframes toast-in{from{opacity:0;transform:translateX(24px) scale(.96)}}
@keyframes toast-out{to{opacity:0;transform:translateX(24px) scale(.96)}}
@keyframes toast-barra{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(max-width:700px){@keyframes toast-in{from{opacity:0;transform:translateY(-16px) scale(.96)}}@keyframes toast-out{to{opacity:0;transform:translateY(-16px) scale(.96)}}}
@media(prefers-reduced-motion:reduce){.toast,.toast .tb{animation:none!important}}
dialog .cols{margin-top:6px}
button.pel-fondo{background:linear-gradient(180deg,#ff8794,#e11d48 85%)!important;box-shadow:0 6px 20px -4px rgba(225,29,72,.55),inset 0 1px 0 rgba(255,255,255,.4)!important}
button.fan:has(.ico):hover[title^=Eliminar]{color:var(--er)}
