/* Source: templates/login.html style block 1 */
/* ── Reset ───────────────────────────────────────── */
html, body.auth-login-body{height:auto;min-height:100vh;overflow:auto!important}
    body.auth-login-body{
      font-family:var(--font-sans);
      color:#e8ecf0;
      background:
        radial-gradient(ellipse at 10% 40%, rgba(59,130,246,.14), transparent 40%),
        radial-gradient(ellipse at 90% 15%, rgba(124,58,237,.13), transparent 38%),
        radial-gradient(ellipse at 55% 95%, rgba(6,182,212,.09), transparent 40%),
        #06080f;
      display:flex;
      align-items:flex-start;
      justify-content:center;
      padding:28px 24px 36px;
      min-height:100vh;
    }
    body.auth-login-body a{color:inherit;text-decoration:none}
    body.auth-login-body img{display:block;max-width:100%}

    /* ── Page wrapper ────────────────────────────────── */
    .login-page{
      position:relative;z-index:1;
      width:100%;max-width:1200px;
      display:flex;
      flex-direction:column;
      gap:28px;
    }

    /* ── HEADER: mascota + nombre + slogan centrados ─── */
    .login-header{
      display:flex;
      justify-content:center;
    }
    .login-header-inner{
      display:flex;
      align-items:center;
      gap:20px;
    }

    /* Mascota */
    .login-mascot-wrap{
      position:relative;
      flex-shrink:0;
    }
    .login-mascot-glow{
      position:absolute;
      bottom:-20px;left:50%;
      transform:translateX(-50%);
      width:200px;height:132px;
      background:radial-gradient(ellipse, rgba(99,102,241,.38) 0%, rgba(6,182,212,.2) 42%, transparent 70%);
      border-radius:50%;
      filter:blur(32px);
      pointer-events:none;
      animation:mascotGlow 4s ease-in-out infinite;
    }
    @keyframes mascotGlow{
      0%,100%{opacity:.8;transform:translateX(-50%) scale(1)}
      50%{opacity:1;transform:translateX(-50%) scale(1.12)}
    }
    .login-mascot{
      position:relative;z-index:1;
      width:clamp(112px, 12vw, 176px);
      height:auto;
      filter:drop-shadow(0 0 32px rgba(37,211,255,.3)) drop-shadow(0 12px 44px rgba(99,102,241,.22));
      animation:mascotFloat 4s ease-in-out infinite;
    }
    @keyframes mascotFloat{
      0%,100%{transform:translateY(0)}
      50%{transform:translateY(-12px)}
    }

    /* Texto de marca */
    .login-brand-block{
      display:flex;flex-direction:column;gap:6px;
    }
    .login-brand-name{
      font-size:clamp(34px, 4.3vw, 54px);
      font-weight:900;letter-spacing:-.04em;line-height:1;
      background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
      -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
    }
    .login-slogan{
      font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
      color:rgba(232,236,240,.38);
    }

    /* ── MAIN: grid 2 columnas ───────────────────────── */
    .login-main{
      display:grid;
      grid-template-columns:1fr 420px;
      gap:24px;
      align-items:start;
    }

    /* ── Card base compartida ────────────────────────── */
    .login-info-card,
    .login-form-card{
      background:rgba(255,255,255,.04);
      backdrop-filter:blur(24px) saturate(1.4);
      -webkit-backdrop-filter:blur(24px) saturate(1.4);
      border:1px solid rgba(255,255,255,.09);
      border-radius:28px;
      box-shadow:0 24px 64px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.07);
    }

    /* ── Columna izquierda: info ─────────────────────── */
    .login-info-card{
      padding:32px;
      display:flex;flex-direction:column;gap:22px;
    }
    .login-badge{
      display:inline-flex;align-items:center;gap:8px;
      background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.25);
      color:#93c5fd;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
      padding:7px 14px;border-radius:999px;width:fit-content;
    }
    .login-badge-dot{
      width:6px;height:6px;border-radius:50%;background:#06b6d4;
      animation:blink 1.5s ease-in-out infinite;flex-shrink:0;
    }
    @keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
    .login-headline{display:flex;flex-direction:column;gap:12px}
    .login-headline h1{
      font-size:clamp(26px, 3vw, 40px);font-weight:900;line-height:1.05;letter-spacing:-.03em;
    }
    .login-headline h1 .hl{
      background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
      -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
    }
    .login-headline p{font-size:15px;color:#8b95a8;line-height:1.55}
    .login-features{display:flex;flex-direction:column;gap:10px}
    .login-feature{
      display:flex;align-items:center;gap:14px;
      padding:12px 16px;border-radius:16px;
      background:rgba(255,255,255,.03);
      border:1px solid rgba(255,255,255,.06);
      transition:.2s;
    }
    .login-feature:hover{
      background:rgba(255,255,255,.06);
      border-color:rgba(255,255,255,.11);
      transform:translateX(4px);
    }
    .login-feat-icon{
      width:42px;height:42px;border-radius:12px;
      display:flex;align-items:center;justify-content:center;flex-shrink:0;
    }
    .login-feat-icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
    .login-feat-icon.cyan{background:rgba(6,182,212,.15);border:1px solid rgba(6,182,212,.2);color:#22d3ee}
    .login-feat-icon.blue{background:rgba(59,130,246,.15);border:1px solid rgba(59,130,246,.2);color:#60a5fa}
    .login-feat-icon.purple{background:rgba(124,58,237,.15);border:1px solid rgba(124,58,237,.2);color:#a78bfa}
    .login-feat-body strong{display:block;font-size:14px;font-weight:700;color:#e8ecf0;margin-bottom:2px}
    .login-feat-body span{font-size:12px;color:#8b95a8;line-height:1.5}

    /* ── Columna derecha: form ───────────────────────── */
    .login-form-card{
      padding:32px 32px;
      display:flex;flex-direction:column;gap:20px;
    }
    .login-card-head{
      text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;
    }
    .login-card-head h2{font-size:28px;font-weight:800;letter-spacing:-.02em;color:#f0f6fc}
    .login-card-head p{font-size:14px;color:#8b95a8;line-height:1.55}

    /* ── Alert ───────────────────────────────────────── */
    .login-alert-error{
      background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);
      color:#fca5a5;padding:12px 16px;border-radius:12px;font-size:13px;font-weight:600;
    }

    /* ── Form fields ─────────────────────────────────── */
    .login-form{display:flex;flex-direction:column;gap:16px}
    .lf-field{display:flex;flex-direction:column;gap:7px}
    .lf-label{font-size:13px;font-weight:600;color:#94a3b8}
    .lf-input-wrap{position:relative}
    .lf-input-icon{
      position:absolute;left:14px;top:50%;transform:translateY(-50%);
      color:#4b5563;pointer-events:none;
    }
    .lf-input-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
    .lf-input{
      width:100%;
      background:rgba(255,255,255,.05);
      border:1px solid rgba(255,255,255,.12);
      border-radius:14px;
      padding:13px 44px;
      color:#e8ecf0;font:inherit;font-size:15px;
      transition:.18s;outline:none;
    }
    .lf-input::placeholder{color:rgba(148,163,184,.45)}
    .lf-input:hover{border-color:rgba(255,255,255,.2)}
    .lf-input:focus{
      border-color:rgba(6,182,212,.55);
      background:rgba(6,182,212,.06);
      box-shadow:0 0 0 3px rgba(6,182,212,.12);
    }
    .lf-pw-toggle{
      position:absolute;right:14px;top:50%;transform:translateY(-50%);
      background:none;border:none;cursor:pointer;color:#4b5563;padding:4px;
      transition:.15s;border-radius:6px;display:flex;align-items:center;
    }
    .lf-pw-toggle:hover{color:#94a3b8}
    .lf-pw-toggle svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}

    /* ── Submit ──────────────────────────────────────── */
    .lf-submit{
      width:100%;padding:15px 24px;
      font:inherit;font-size:16px;font-weight:700;
      background:linear-gradient(135deg,#06b6d4 0%,#3b82f6 50%,#7c3aed 100%);
      background-size:200% 200%;
      color:#fff;border:none;border-radius:14px;cursor:pointer;
      display:flex;align-items:center;justify-content:center;gap:10px;
      box-shadow:0 6px 24px rgba(99,102,241,.35);
      transition:all .25s;
    }
    .lf-submit:hover{
      transform:translateY(-2px);
      box-shadow:0 12px 36px rgba(99,102,241,.55);
      background-position:right center;
    }
    .lf-submit:active{transform:translateY(0)}
    .lf-submit svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2.2;flex-shrink:0}

    /* ── Links secundarios ───────────────────────────── */
    .lf-secondary{
      display:flex;flex-direction:column;align-items:center;gap:16px;
    }
    .lf-forgot-link{
      appearance:none;-webkit-appearance:none;
      background:none;border:none;padding:0;
      font:inherit;
      font-size:13px;color:#6366f1;font-weight:600;
      transition:.15s;cursor:pointer;text-decoration:none;
      box-shadow:none;outline:none;
    }
    .lf-forgot-link:hover{color:#818cf8}
    .lf-forgot-link:focus-visible{
      color:#818cf8;
      text-decoration:underline;
      text-underline-offset:3px;
    }
    .lf-divider{
      width:100%;height:1px;
      background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);
    }
    .lf-register{
      display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;
    }
    .lf-register-prompt{font-size:13px;color:#8b95a8}
    .lf-register-btn{
      display:flex;align-items:center;justify-content:center;gap:8px;
      width:100%;padding:13px 24px;
      font:inherit;font-size:15px;font-weight:700;
      background:transparent;
      border:1px solid rgba(99,102,241,.35);
      border-radius:14px;color:#a5b4fc;
      cursor:pointer;text-decoration:none;transition:all .2s;
    }
    .lf-register-btn:hover{
      background:rgba(99,102,241,.1);
      border-color:rgba(99,102,241,.65);
      box-shadow:0 0 20px rgba(99,102,241,.18);
      color:#c4b5fd;
    }

    /* ── Footer note ─────────────────────────────────── */
    .lf-footer{
      display:flex;align-items:center;justify-content:center;gap:7px;
      font-size:12px;color:#4b5563;
    }
    .lf-footer svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0}

    /* ─────────────────────── RESPONSIVE ──────────────── */

    /* Tablet 768–1024px */
    @media(max-width:1024px){
      .login-main{
        grid-template-columns:1fr 380px;
        gap:20px;
      }
      .login-info-card{padding:32px}
      .login-form-card{padding:32px 28px}
      .login-mascot{width:clamp(102px, 13vw, 156px)}
      .login-brand-name{font-size:clamp(30px, 4.6vw, 46px)}
    }

    @media(min-width:769px) and (max-height:900px){
      body.auth-login-body{padding:20px 24px 24px}
      .login-page{gap:22px}
      .login-header-inner{gap:18px}
      .login-mascot{width:clamp(98px, 10.5vw, 150px)}
      .login-mascot-glow{width:180px;height:118px;filter:blur(28px)}
      .login-brand-name{font-size:clamp(30px, 4vw, 48px)}
      .login-slogan{font-size:11px}
      .login-info-card,
      .login-form-card{padding:28px}
      .login-info-card{gap:18px}
      .login-form-card{gap:18px}
      .login-headline h1{font-size:clamp(24px, 2.7vw, 36px)}
      .login-headline p{font-size:14px;line-height:1.5}
      .login-features{gap:8px}
      .login-feature{padding:11px 14px}
    }

    /* Mobile < 768px */
    @media(max-width:768px){
      body.auth-login-body{padding:24px 16px 40px;align-items:flex-start}
      .login-page{gap:24px}
      .login-header-inner{gap:16px}
      .login-mascot{width:clamp(80px, 20vw, 120px)}
      .login-mascot-glow{width:160px;height:110px;filter:blur(24px)}
      .login-brand-name{font-size:clamp(28px, 8vw, 38px)}
      .login-slogan{font-size:10px;letter-spacing:.12em}
      .login-main{
        grid-template-columns:1fr;
        gap:16px;
      }
      /* Mobile: form primero, info después */
      .login-form-card{order:1}
      .login-info-card{order:2;padding:24px}
      .login-form-card{padding:28px 22px}
      .login-headline h1{font-size:clamp(24px, 6vw, 30px)}
    }

    @media(max-width:480px){
      .login-header-inner{gap:12px}
      .login-mascot{width:80px}
      .login-mascot-glow{width:130px;height:90px}
      .login-brand-name{font-size:26px}
      .login-slogan{display:none}
      .lf-submit{font-size:15px}
    }

    /* ── Forgot password modal ───────────────────────── */
    .forgot-overlay{
      position:fixed;inset:0;z-index:300;
      display:flex;align-items:center;justify-content:center;
      padding:16px;
      background:rgba(0,0,0,.72);
      backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
    }
    .forgot-overlay[hidden]{display:none!important}
    .forgot-modal{
      width:min(100%, 470px);
      background:linear-gradient(180deg,#111b21 0%,#10191f 100%);
      border:1px solid #2a373e;
      border-radius:24px;
      overflow:hidden;
      box-shadow:0 32px 80px rgba(0,0,0,.62);
    }
    .forgot-head{
      display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
      padding:22px 24px 20px;
      border-bottom:1px solid #2a373e;
    }
    .forgot-head-title{font-size:16px;font-weight:700;color:#e9edef}
    .forgot-head-sub{font-size:12px;color:#8696a0;margin-top:4px}
    .forgot-close{
      flex-shrink:0;
      width:40px;height:40px;border-radius:50%;
      border:1px solid rgba(255,255,255,.06);
      background:rgba(255,255,255,.08);
      color:#e9edef;cursor:pointer;
      font-size:17px;display:flex;align-items:center;justify-content:center;
      transition:.15s;
    }
    .forgot-close:hover{background:rgba(255,255,255,.12);transform:translateY(-1px)}
    .forgot-body,.forgot-success{padding:24px}
    .forgot-copy{font-size:13px;color:#8696a0;margin:0 0 18px;line-height:1.6}
    .forgot-error{
      display:none;background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);
      color:#f87171;padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:14px
    }
    .forgot-form{display:flex;flex-direction:column;gap:14px}
    .forgot-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#8696a0}
    .forgot-field input,
    .forgot-code-input{
      background:#1a272e;border:1px solid #2a373e;border-radius:12px;
      color:#e9edef;font-family:inherit;outline:none;transition:.15s;
      box-sizing:border-box;width:100%;
    }
    .forgot-field input{
      padding:12px 14px;font-size:14px;
    }
    .forgot-field input:focus,
    .forgot-code-input:focus{
      border-color:#06b6d4;
      box-shadow:0 0 0 3px rgba(6,182,212,.12);
    }
    .forgot-submit,
    .forgot-code-submit{
      width:100%;
      background:linear-gradient(135deg,#06b6d4,#3b82f6);
      color:#fff;border:none;cursor:pointer;
      transition:.15s;
      font:inherit;font-weight:700;
      box-shadow:0 10px 24px rgba(59,130,246,.22);
    }
    .forgot-submit{
      border-radius:12px;padding:13px;
      font-size:14px;
      display:flex;align-items:center;justify-content:center;gap:8px;
    }
    .forgot-submit:hover,
    .forgot-code-submit:hover{filter:brightness(1.04);transform:translateY(-1px)}
    .forgot-state-ok{text-align:center;margin-bottom:22px}
    .forgot-ok-badge{
      width:60px;height:60px;border-radius:50%;
      background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.25);
      display:flex;align-items:center;justify-content:center;margin:0 auto 14px;
    }
    .forgot-ok-title{font-size:15px;font-weight:700;color:#e9edef;margin-bottom:6px}
    .forgot-ok-sub{font-size:12px;color:#8696a0;margin:0}
    .forgot-code-label{
      display:block;font-size:12px;font-weight:600;color:#8696a0;margin-bottom:8px
    }
    .forgot-code-row{
      display:grid;grid-template-columns:minmax(0,1fr) auto;
      gap:12px;align-items:stretch;margin-bottom:14px;
    }
    .forgot-code-input{
      min-width:0;
      min-height:58px;
      padding:13px 16px;
      font-size:22px;font-weight:800;
      letter-spacing:6px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
    }
    .forgot-code-submit{
      min-height:58px;
      border-radius:14px;
      padding:0 22px;
      white-space:nowrap;
      font-size:15px;
      align-self:stretch;
    }
    .forgot-resend{
      font-size:11px;color:#6b7a8d;text-align:center;margin:0;
    }
    .forgot-resend button{
      background:none;border:none;color:#06b6d4;cursor:pointer;font:inherit;
      font-size:11px;text-decoration:underline;padding:0;
    }
    @media(max-width:560px){
      .forgot-head{padding:20px 18px 18px}
      .forgot-body,.forgot-success{padding:20px 18px}
      .forgot-code-row{grid-template-columns:1fr}
      .forgot-code-submit{width:100%;padding:14px 18px}
      .forgot-code-input{font-size:20px;letter-spacing:5px}
    }
    @media (prefers-reduced-motion: reduce){
      *,
      *::before,
      *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
      .login-mascot,
      .login-mascot-glow,
      .login-badge-dot,
      .rg-orb,
      .rg-mascot,
      .rg-mascot-glow{animation:none!important}
    }


/* Source: templates/login.html style block 2 */
@keyframes spin{to{transform:rotate(360deg)}}


/* Source: templates/register.html style block 1 */
/* ── Reset ─────────────────────────────────────────── */
html, body.auth-register-body{height:auto;min-height:100vh;overflow:auto!important}
    body.auth-register-body{
      font-family:var(--font-sans);
      color:#e8ecf0;
      background:
        radial-gradient(ellipse at 10% 40%, rgba(59,130,246,.14), transparent 40%),
        radial-gradient(ellipse at 90% 15%, rgba(124,58,237,.13), transparent 38%),
        radial-gradient(ellipse at 55% 95%, rgba(6,182,212,.09), transparent 40%),
        #06080f;
      min-height:100vh;
    }
    body.auth-register-body a{color:inherit;text-decoration:none}
    body.auth-register-body img{display:block;max-width:100%}

    /* ── Soft page background ───────────────────────── */
    .rg-orbs{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
    .rg-orb{position:absolute;border-radius:50%;filter:blur(100px);opacity:.18;animation:orb-drift 16s ease-in-out infinite}
    .rg-orb-1{width:600px;height:600px;background:radial-gradient(circle,#3b82f6,transparent);top:-20%;left:-10%}
    .rg-orb-2{width:500px;height:500px;background:radial-gradient(circle,#7c3aed,transparent);bottom:10%;right:-10%;animation-delay:-8s;animation-duration:20s}
    .rg-orb-3{width:350px;height:350px;background:radial-gradient(circle,#06b6d4,transparent);bottom:-5%;left:30%;animation-delay:-4s;animation-duration:24s}
    @keyframes orb-drift{0%,100%{transform:translate(0,0)}50%{transform:translate(24px,-32px) scale(1.05)}}

    /* ── Navbar ──────────────────────────────────────── */
    .rg-nav{
      position:fixed;top:0;left:0;right:0;z-index:100;
      backdrop-filter:blur(20px) saturate(1.6);
      background:rgba(6,8,15,.85);
      border-bottom:1px solid rgba(255,255,255,.06);
    }
    .rg-nav-inner{
      max-width:1200px;margin:0 auto;padding:0 24px;height:60px;
      display:flex;align-items:center;justify-content:space-between;
      gap:20px;
    }
    .rg-nav-brand{
      display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0;
    }
    .rg-nav-brand img{
      width:40px;height:40px;object-fit:contain;
      filter:drop-shadow(0 0 8px rgba(6,182,212,.4));
    }
    .rg-nav-brand-name{
      font-size:17px;font-weight:800;letter-spacing:-.02em;
      background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
      -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
    }
    .rg-nav-link{font-size:13px;color:#8b95a8;white-space:nowrap}
    .rg-nav-link a{color:#06b6d4;font-weight:600;transition:.15s}
    .rg-nav-link a:hover{color:#22d3ee}

    /* ── Page wrapper ────────────────────────────────── */
    .rg-page{
      position:relative;z-index:1;
      display:flex;flex-direction:column;align-items:center;
      padding:80px 24px 32px;
      gap:22px;
    }

    /* ── Header: mascota + nombre + slogan ─────────── */
    .rg-header{display:flex;justify-content:center;width:min(760px,100%)}
    .rg-header-inner{
      display:flex;align-items:center;justify-content:center;gap:22px;width:100%;
    }
    .rg-mascot-wrap{position:relative;flex-shrink:0}
    .rg-mascot-glow{
      position:absolute;bottom:-20px;left:50%;
      transform:translateX(-50%);
      width:170px;height:118px;
      background:radial-gradient(ellipse, rgba(99,102,241,.38) 0%, rgba(6,182,212,.2) 42%, transparent 70%);
      border-radius:50%;filter:blur(30px);pointer-events:none;
      animation:mascotGlow 4s ease-in-out infinite;
    }
    @keyframes mascotGlow{
      0%,100%{opacity:.8;transform:translateX(-50%) scale(1)}
      50%{opacity:1;transform:translateX(-50%) scale(1.12)}
    }
    .rg-mascot{
      position:relative;z-index:1;
      width:clamp(92px, 9vw, 132px);height:auto;
      filter:drop-shadow(0 0 30px rgba(37,211,255,.28)) drop-shadow(0 10px 40px rgba(99,102,241,.2));
      animation:mascotFloat 4s ease-in-out infinite;
    }
    @keyframes mascotFloat{
      0%,100%{transform:translateY(0)}
      50%{transform:translateY(-12px)}
    }
    .rg-brand-block{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
    .rg-brand-name{
      font-size:clamp(30px, 4.4vw, 50px);font-weight:900;letter-spacing:-.04em;line-height:.95;
      background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
      -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
    }
    .rg-slogan{
      font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
      color:rgba(232,236,240,.38);
    }

    /* ── Card principal ──────────────────────────────── */
    .rg-card{
      width:min(560px, 100%);
      background:rgba(255,255,255,.04);
      backdrop-filter:blur(24px) saturate(1.4);
      -webkit-backdrop-filter:blur(24px) saturate(1.4);
      border:1px solid rgba(255,255,255,.09);
      border-radius:28px;
      padding:30px 32px;
      box-shadow:0 24px 64px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.07);
      display:flex;flex-direction:column;gap:28px;
    }
    .rg-card-head{display:flex;flex-direction:column;gap:6px}
    .rg-card-head h1{font-size:24px;font-weight:800;letter-spacing:-.02em;color:#f0f6fc}
    .rg-card-head p{font-size:13px;color:#8b95a8;line-height:1.5}

    /* ── Alert ───────────────────────────────────────── */
    .rg-alert{
      background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);
      color:#fca5a5;padding:12px 16px;border-radius:12px;font-size:13px;font-weight:600;
    }

    /* ── Form ────────────────────────────────────────── */
    .rg-form{display:flex;flex-direction:column;gap:14px}
    .rg-field{display:flex;flex-direction:column;gap:6px}
    .rg-label{font-size:13px;font-weight:600;color:#94a3b8}
    .rg-input-wrap{position:relative}
    .rg-input-icon{
      position:absolute;left:14px;top:50%;transform:translateY(-50%);
      color:#4b5563;pointer-events:none;
    }
    .rg-input-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
    .rg-input{
      width:100%;
      background:rgba(255,255,255,.05);
      border:1px solid rgba(255,255,255,.12);
      border-radius:14px;
      padding:12px 14px 12px 44px;
      color:#e8ecf0;font:inherit;font-size:14px;
      transition:.18s;outline:none;
    }
    .rg-input::placeholder{color:rgba(148,163,184,.45)}
    .rg-input:hover{border-color:rgba(255,255,255,.22)}
    .rg-input:focus{
      border-color:rgba(6,182,212,.55);
      background:rgba(6,182,212,.06);
      box-shadow:0 0 0 3px rgba(6,182,212,.12);
    }
    .rg-input.rg-has-toggle{padding-right:44px}
    .rg-pw-toggle{
      position:absolute;right:14px;top:50%;transform:translateY(-50%);
      background:none;border:none;cursor:pointer;color:#4b5563;padding:4px;
      transition:.15s;border-radius:6px;display:flex;align-items:center;
    }
    .rg-pw-toggle:hover{color:#94a3b8}
    .rg-pw-toggle svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
    .rg-strength{
      height:5px;border-radius:999px;background:rgba(255,255,255,.08);
      overflow:hidden;margin-top:8px;
    }
    .rg-strength-bar{height:100%;width:0;border-radius:999px;background:#ef4444;transition:width .22s ease,background .22s ease}
    .rg-field-hint{min-height:16px;font-size:11px;line-height:1.4;color:#64748b;margin-top:4px}
    .rg-field-hint.is-ok{color:#4ade80}
    .rg-field-hint.is-warn{color:#fbbf24}
    .rg-field-hint.is-error{color:#f87171}

    /* Fila doble */
    .rg-field-row{
      display:grid;grid-template-columns:1fr 1fr;gap:14px;
    }

    /* ── Botón submit ─────────────────────────────────── */
    .rg-submit{
      width:100%;padding:14px 24px;
      font:inherit;font-size:15px;font-weight:700;
      background:linear-gradient(135deg,#06b6d4 0%,#3b82f6 50%,#7c3aed 100%);
      background-size:200% 200%;
      color:#fff;border:none;border-radius:14px;cursor:pointer;
      display:flex;align-items:center;justify-content:center;gap:8px;
      box-shadow:0 6px 24px rgba(99,102,241,.35);
      transition:all .25s;
      margin-top:4px;
    }
    .rg-submit:hover{
      transform:translateY(-2px);
      box-shadow:0 12px 36px rgba(99,102,241,.55);
      background-position:right center;
    }
    .rg-submit:active{transform:translateY(0)}
    .rg-submit:disabled{opacity:.68;cursor:not-allowed;transform:none;box-shadow:0 6px 18px rgba(99,102,241,.22)}

    /* ── Texto legal ─────────────────────────────────── */
    .rg-legal{
      text-align:center;font-size:12px;color:#4b5563;line-height:1.6;
      display:flex;align-items:center;justify-content:center;gap:5px;flex-wrap:wrap;
    }
    .rg-legal svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0}
    .rg-legal a{color:#06b6d4;font-weight:600;transition:.15s}
    .rg-legal a:hover{color:#22d3ee}

    /* ─────────────────── RESPONSIVE ──────────────────── */

    /* Tablet 768–1024px */
    @media(max-width:1024px){
      .rg-page{padding-top:78px}
      .rg-mascot{width:clamp(88px, 12vw, 120px)}
      .rg-brand-name{font-size:clamp(28px, 4.7vw, 44px)}
      .rg-card{padding:28px 28px}
    }

    @media (min-width:769px) and (max-height:980px){
      .rg-page{padding-top:74px;padding-bottom:22px;gap:16px}
      .rg-header-inner{gap:18px}
      .rg-mascot{width:96px}
      .rg-mascot-glow{width:148px;height:100px;filter:blur(24px)}
      .rg-brand-name{font-size:42px}
      .rg-slogan{font-size:11px}
      .rg-card{padding:24px 26px;gap:20px;border-radius:24px}
      .rg-card-head h1{font-size:22px}
      .rg-card-head p{font-size:12px}
      .rg-form{gap:12px}
      .rg-label{font-size:12px}
      .rg-input{padding-top:11px;padding-bottom:11px}
      .rg-submit{padding:13px 22px}
      .rg-legal{font-size:11px}
    }

    /* Mobile < 768px */
    @media(max-width:768px){
      .rg-page{padding:96px 16px 40px;gap:24px}
      .rg-header-inner{gap:16px}
      .rg-mascot{width:clamp(80px, 18vw, 110px)}
      .rg-mascot-glow{width:160px;height:110px;filter:blur(22px)}
      .rg-brand-name{font-size:clamp(26px, 7vw, 36px)}
      .rg-slogan{font-size:10px;letter-spacing:.12em}
      .rg-card{padding:28px 22px;border-radius:24px}
      /* Filas dobles → columna única en mobile */
      .rg-field-row{grid-template-columns:1fr}
    }

    /* Mobile XS < 480px */
    @media(max-width:480px){
      .rg-header-inner{gap:12px}
      .rg-mascot{width:76px}
      .rg-mascot-glow{width:130px;height:90px}
      .rg-brand-name{font-size:24px}
      .rg-slogan{display:none}
      .rg-card{padding:24px 18px;border-radius:20px}
      .rg-card-head h1{font-size:22px}
      .rg-submit{font-size:15px}
    }


/* Source: templates/reset_password.html style block 1 */
body.auth-reset-body{background:#0b141a;color:#e9edef;font-family:var(--font-sans);
         min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}
    .rp-wrap{width:100%;max-width:420px}
    .rp-brand{text-align:center;margin-bottom:32px}
    .rp-brand-name{font-size:22px;font-weight:800;background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
                   -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
    .rp-card{background:#111b21;border:1px solid #2a373e;border-radius:20px;overflow:hidden;
             box-shadow:0 24px 60px rgba(0,0,0,.5)}
    .rp-card-head{padding:24px 28px;border-bottom:1px solid #2a373e;display:flex;align-items:center;gap:14px}
    .rp-icon{width:42px;height:42px;border-radius:12px;background:rgba(6,182,212,.12);border:1px solid rgba(6,182,212,.2);
             display:flex;align-items:center;justify-content:center;flex-shrink:0}
    .rp-card-head h1{margin:0 0 3px;font-size:17px;font-weight:700}
    .rp-card-head p{margin:0;font-size:12px;color:#8696a0}
    .rp-card-body{padding:28px}
    .rp-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#8696a0;margin-bottom:16px}
    .rp-field input{background:#1a272e;border:1px solid #2a373e;border-radius:10px;padding:11px 14px;
                    color:#e9edef;font-size:14px;font-family:inherit;outline:none;transition:.15s;width:100%;box-sizing:border-box}
    .rp-field input:focus{border-color:#06b6d4;background:#1f2f38}
    .rp-pw-wrap{position:relative}
    .rp-pw-wrap input{padding-right:44px}
    .rp-pw-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;
                  color:#8696a0;cursor:pointer;padding:4px;display:flex;align-items:center}
    .rp-btn{width:100%;background:linear-gradient(135deg,#06b6d4,#3b82f6);color:#fff;border:none;
            border-radius:10px;padding:13px;font-size:14px;font-weight:700;cursor:pointer;
            display:flex;align-items:center;justify-content:center;gap:8px;transition:.15s;margin-top:6px}
    .rp-btn:hover{opacity:.9;transform:translateY(-1px)}
    .rp-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
    .rp-strength{height:4px;border-radius:2px;background:#2a373e;margin-top:6px;overflow:hidden;transition:.3s}
    .rp-strength-bar{height:100%;border-radius:2px;transition:width .3s,background .3s;width:0}
    .rp-strength-label{font-size:11px;margin-top:4px}
    .rp-error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:#f87171;
              padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:16px}
    .rp-hint{font-size:12px;color:#6b7a8d;margin-top:4px}

    /* Invalid token state */
    .rp-invalid{text-align:center;padding:32px 28px}
    .rp-invalid-icon{width:56px;height:56px;border-radius:50%;background:rgba(239,68,68,.1);
                     border:1px solid rgba(239,68,68,.2);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
    .rp-invalid h2{font-size:18px;font-weight:700;margin:0 0 10px}
    .rp-invalid p{font-size:14px;color:#8696a0;line-height:1.6;margin:0 0 20px}

    /* Success state */
    .rp-success{text-align:center;padding:32px 28px}
    .rp-success-icon{width:56px;height:56px;border-radius:50%;background:rgba(34,197,94,.1);
                     border:1px solid rgba(34,197,94,.2);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
    .rp-success h2{font-size:18px;font-weight:700;margin:0 0 10px}
    .rp-success p{font-size:14px;color:#8696a0;line-height:1.6;margin:0 0 20px}

    .rp-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;
             background:linear-gradient(135deg,#06b6d4,#3b82f6);color:#fff;text-decoration:none;
             font-weight:700;font-size:14px;padding:13px 24px;border-radius:10px}
    .rp-code-input{font-size:24px;letter-spacing:8px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:12px 16px;font-weight:700;color:#06b6d4}
    .rp-return{margin-top:16px;text-align:center}
    .rp-return-link{font-size:13px;color:#8696a0;text-decoration:none}
    .rp-return-link:hover,.rp-return-link:focus-visible{color:#cbd5e1;outline:none}
    @keyframes spin{to{transform:rotate(360deg)}}
    @media(max-width:480px){.rp-card-head{padding:18px 20px} .rp-card-body{padding:20px}}


/* Source: templates/change_password.html style block 1 */
body.auth-change-body{background:#080c14;color:#e8ecf0;font-family:var(--font-sans);
         min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}
    .cp-wrap{width:100%;max-width:420px}
    .cp-brand{text-align:center;margin-bottom:28px}
    .cp-brand-name{font-size:20px;font-weight:800;background:linear-gradient(135deg,#06b6d4,#3b82f6,#7c3aed);
                   -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
    .cp-card{background:#0d1220;border:1px solid rgba(255,255,255,.08);border-radius:20px;overflow:hidden;
             box-shadow:0 24px 60px rgba(0,0,0,.5)}
    .cp-badge{display:flex;align-items:center;gap:12px;padding:20px 24px;
              background:rgba(251,191,36,.06);border-bottom:1px solid rgba(251,191,36,.15)}
    .cp-badge svg{width:22px;height:22px;color:#fbbf24;flex-shrink:0}
    .cp-badge-text{font-size:13px;font-weight:600;color:#fbbf24;line-height:1.5}
    .cp-body{padding:28px 24px}
    .cp-title{font-size:18px;font-weight:700;color:#e8ecf0;margin-bottom:6px}
    .cp-sub{font-size:13px;color:#6b7890;margin-bottom:22px;line-height:1.6}
    .cp-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:13px;color:#8b95a8}
    .cp-input-wrap{position:relative}
    .cp-input{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:10px;
              padding:11px 44px 11px 14px;color:#e8ecf0;font-size:14px;font-family:inherit;outline:none;transition:.15s;width:100%}
    .cp-input:focus{border-color:rgba(6,182,212,.5);background:rgba(6,182,212,.05)}
    .cp-pw-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:0;border-radius:8px;background:transparent;color:#6b7890;cursor:pointer;transition:.15s}
    .cp-pw-toggle:hover,.cp-pw-toggle:focus-visible{color:#cbd5e1;background:rgba(255,255,255,.06);outline:none}
    .cp-pw-toggle svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
    .cp-btn{width:100%;padding:13px;background:linear-gradient(135deg,#06b6d4,#3b82f6);color:#fff;
            border:none;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;transition:.15s;margin-top:6px}
    .cp-btn:hover{opacity:.9}
    .cp-btn:disabled{opacity:.65;cursor:not-allowed}
    .cp-error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);color:#f87171;
              padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:14px}
    .cp-strength{height:4px;border-radius:2px;background:rgba(255,255,255,.1);margin-top:6px;overflow:hidden}
    .cp-bar{height:100%;border-radius:2px;transition:width .3s,background .3s;width:0}
    .cp-hint{font-size:11px;margin-top:3px;color:#6b7890}
    .cp-return{margin-top:14px;text-align:center}
    .cp-return-link{font-size:13px;color:#6b7890;text-decoration:none}
    .cp-return-link:hover,.cp-return-link:focus-visible{color:#cbd5e1;outline:none}
    @media(max-width:480px){.cp-body{padding:20px 18px}}


/* Source: templates/verify_email_pending.html style block 1 */
html, body.auth-verify-body{height:100%;font-family:var(--font-sans)}
    body.auth-verify-body{
      min-height:100vh;display:flex;flex-direction:column;
      align-items:center;justify-content:center;padding:24px;
      background:
        radial-gradient(ellipse at 10% 40%,rgba(59,130,246,.14),transparent 40%),
        radial-gradient(ellipse at 90% 15%,rgba(124,58,237,.13),transparent 38%),
        radial-gradient(ellipse at 55% 95%,rgba(6,182,212,.09),transparent 40%),
        #06080f;
    }
    body.auth-verify-body a{text-decoration:none;color:inherit}

    /* ── Card ── */
    .card{
      width:min(460px,100%);
      background:rgba(255,255,255,.04);
      backdrop-filter:blur(24px);
      border:1px solid rgba(255,255,255,.09);
      border-radius:28px;
      padding:40px 32px 32px;
      text-align:center;
      box-shadow:0 24px 64px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.07);
    }

    /* ── Icon ── */
    .icon-wrap{
      position:relative;width:80px;height:80px;
      margin:0 auto 24px;
    }
    .icon-ring{
      width:80px;height:80px;border-radius:50%;
      border:2px solid rgba(59,130,246,.5);
      display:flex;align-items:center;justify-content:center;
      background:rgba(59,130,246,.10);
      box-shadow:0 0 0 6px rgba(59,130,246,.06),0 0 24px rgba(59,130,246,.2);
    }
    .icon-ring svg{width:36px;height:36px;stroke:#60a5fa;fill:none;stroke-width:1.8}
    .icon-badge{
      position:absolute;bottom:0;right:0;
      width:24px;height:24px;border-radius:50%;
      background:linear-gradient(135deg,#3b82f6,#06b6d4);
      display:flex;align-items:center;justify-content:center;
      border:2px solid #06080f;
    }
    .icon-badge svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.5}

    /* ── Title ── */
    body.auth-verify-body h1{font-size:24px;font-weight:800;letter-spacing:-.03em;color:#f0f6fc;margin-bottom:10px}
    .sub{font-size:14px;color:#8b95a8;line-height:1.5;margin-bottom:4px}
    .email{font-size:15px;font-weight:700;color:#60a5fa;margin-bottom:0;word-break:break-all}
    .divider{border:none;border-top:1px solid rgba(255,255,255,.08);margin:20px 0}

    /* ── Alerts ── */
    .alert{padding:12px 14px;border-radius:12px;font-size:13px;font-weight:600;margin-bottom:16px;text-align:left}
    .alert-spaced{margin-top:16px}
    .alert-error{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.22);color:#f87171}
    .alert-success{background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.22);color:#4ade80}

    /* ── Code input label ── */
    .code-label{font-size:13px;color:#94a3b8;margin-bottom:14px;display:block}

    /* ── 6 digit inputs ── */
    .code-inputs{
      display:flex;gap:8px;justify-content:center;margin-bottom:20px;
    }
    .code-digit{
      width:52px;height:60px;
      border:1px solid rgba(255,255,255,.12);border-radius:14px;
      background:rgba(255,255,255,.05);
      color:#f0f6fc;
      font-size:26px;font-weight:800;text-align:center;
      font-family:monospace,Courier New;
      outline:none;transition:.15s;
      -moz-appearance:textfield;
    }
    .code-digit::-webkit-outer-spin-button,
    .code-digit::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
    .code-digit:focus{
      border-color:#3b82f6;
      background:rgba(59,130,246,.08);
      box-shadow:0 0 0 3px rgba(59,130,246,.15);
    }

    /* ── Spam notice ── */
    .spam-notice{
      display:flex;align-items:center;gap:12px;
      background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);
      border-radius:14px;padding:14px 16px;margin-bottom:18px;text-align:left;
    }
    .spam-icon{
      width:36px;height:36px;border-radius:50%;flex-shrink:0;
      background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.2);
      display:flex;align-items:center;justify-content:center;
    }
    .spam-icon svg{width:16px;height:16px;stroke:#60a5fa;fill:none;stroke-width:1.8}
    .spam-text{font-size:13px;color:#94a3b8;line-height:1.5}
    .spam-text strong{color:#f0f6fc;font-weight:600}
    .verify-help{
      margin:-4px 0 18px;
      font-size:12px;line-height:1.5;color:#64748b;text-align:left;
      background:rgba(96,165,250,.06);border:1px solid rgba(96,165,250,.14);
      border-radius:12px;padding:10px 12px;
    }

    /* ── Resend ── */
    .resend-row{
      display:flex;align-items:center;justify-content:center;
      gap:8px;font-size:13px;color:#64748b;margin-bottom:20px;
    }
    .resend-row svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;flex-shrink:0}
    #resendTimer{color:#60a5fa;font-weight:700;font-variant-numeric:tabular-nums}
    #resendBtn{
      background:none;border:none;cursor:pointer;font:inherit;font-size:13px;
      color:#60a5fa;text-decoration:underline;padding:0;display:none;
    }
    #resendBtn:hover{color:#93c5fd}
    .resend-feedback{min-height:17px;margin:-10px 0 16px;font-size:12px;color:#64748b;text-align:center}
    .resend-feedback.is-ok{color:#4ade80}
    .resend-feedback.is-error{color:#f87171}

    /* ── Verify button ── */
    .btn-verify{
      display:flex;align-items:center;justify-content:center;gap:8px;
      width:100%;padding:15px 24px;border:none;border-radius:16px;cursor:pointer;
      font:inherit;font-size:15px;font-weight:700;color:#fff;
      background:linear-gradient(135deg,#3b82f6,#06b6d4);
      box-shadow:0 12px 28px rgba(59,130,246,.28);
      transition:.18s;margin-bottom:20px;
    }
    .btn-verify:hover{opacity:.92;transform:translateY(-1px)}
    .btn-verify:disabled{opacity:.45;cursor:not-allowed;transform:none}
    .btn-verify svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2.5}

    .lf-submit.is-loading,
    .rg-submit.is-loading,
    .rp-btn.is-loading,
    .cp-btn[aria-busy="true"],
    .btn-verify[aria-busy="true"]{opacity:.7;cursor:not-allowed;transform:none;box-shadow:none}

    /* ── Divider or ── */
    .or-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}
    .or-row::before,.or-row::after{content:"";flex:1;border-top:1px solid rgba(255,255,255,.08)}
    .or-row span{font-size:12px;color:#475569}

    /* ── Secondary link ── */
    .link-cancel{
      display:flex;align-items:center;justify-content:center;gap:6px;
      font-size:13px;color:#64748b;cursor:pointer;margin-bottom:20px;
      background:none;border:none;font:inherit;width:100%;
    }
    .link-cancel:hover{color:#94a3b8}

    /* ── Footer ── */
    .footer-secure{
      display:flex;align-items:center;justify-content:center;gap:6px;
      font-size:12px;color:#374151;
    }
    .footer-secure svg{width:13px;height:13px;stroke:#374151;fill:none;stroke-width:1.8}

    @media(max-width:400px){
      .card{padding:28px 20px 24px}
      .code-digit{width:44px;height:54px;font-size:22px;border-radius:12px}
      .code-inputs{gap:6px}
    }
