
    :root{
      --bg0:#071018;
      --bg1:#0A1D2B;

      --mx:#18E3A1;
      --us:#3B67FF;
      --ca:#FF3B5E;

      --white: rgba(255,255,255,.92);
      --muted: rgba(255,255,255,.68);

      --card: rgba(255,255,255,.10);
      --card2: rgba(255,255,255,.06);
      --stroke: rgba(255,255,255,.16);
      --shadow: 0 28px 85px rgba(0,0,0,.55);

      --radius: 22px;
      --focus: 0 0 0 3px rgba(24,227,161,.22);

      --bg-image: url("/img/backgrounds/fondo_delfin.png");
      --bg-fallback: radial-gradient(1100px 650px at 15% 10%, rgba(59,103,255,.18), transparent 60%),
                     radial-gradient(900px 540px at 85% 15%, rgba(255,59,94,.14), transparent 58%),
                     linear-gradient(180deg, var(--bg0), var(--bg1));
    }
    *{ box-sizing:border-box }
    html,body{ height:100% }
    body{
      margin:0;
      font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
      color:var(--white);
      overflow:hidden;
      background: var(--bg-fallback);
    }
    .bg{ position:fixed; inset:0; pointer-events:none; overflow:hidden; }
    .bg-photo{ position:absolute; inset:0; background-image: var(--bg-image); background-size: cover; background-position: center; background-repeat: no-repeat; transform: scale(1.03); filter: saturate(1.05) contrast(1.05); }
    .bg-dim{ position:absolute; inset:0; background: linear-gradient(180deg, rgba(7,16,24,.32), rgba(10,29,43,.42)); }
    .tint{ position:absolute; inset:0; background:
        radial-gradient(900px 520px at 20% 10%, rgba(59,103,255,.20), transparent 60%),
        radial-gradient(900px 520px at 80% 10%, rgba(255,59,94,.14), transparent 60%),
        radial-gradient(1000px 650px at 60% 120%, rgba(24,227,161,.10), transparent 65%);
      mix-blend-mode: screen; opacity:.8;
    }
    .grain{ position:fixed; inset:0; pointer-events:none; opacity:.10;
      background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");
      background-size:260px 260px; mix-blend-mode: overlay;
    }
    .wrap{ position:relative; min-height:100%; display:grid; place-items:center; padding: 26px 16px; }
    .card{
      width: min(420px, 100%);
      border-radius: var(--radius);
      background: linear-gradient(180deg, var(--card), var(--card2));
      border: 1px solid var(--stroke);
      box-shadow: var(--shadow);
      backdrop-filter: blur(14px);
      padding: 24px 22px 20px;
      position:relative; overflow:hidden;
    }
    .card:before{
      content:""; position:absolute; inset:-2px;
      background:
        radial-gradient(520px 260px at 0% 0%, rgba(24,227,161,.16), transparent 60%),
        radial-gradient(520px 260px at 100% 0%, rgba(59,103,255,.16), transparent 60%),
        radial-gradient(520px 260px at 50% 110%, rgba(255,59,94,.12), transparent 60%);
      pointer-events:none;
    }
    .accent-bar{ position:absolute; inset:0 0 auto 0; height: 4px; background: linear-gradient(90deg, rgba(24,227,161,.95), rgba(59,103,255,.95), rgba(255,59,94,.95)); opacity:.95; }
    .top{ position:relative; display:grid; gap:10px; justify-items:center; margin-bottom: 14px; text-align:center; }
    .logo-slot{
      width: 92px; height: 92px; border-radius: 22px;
      border: 1px dashed rgba(255,255,255,.30);
      background: rgba(255,255,255,.06);
      display:grid; place-items:center; overflow:hidden;
    }
    .logo-slot img{ width:100%; height:100%; object-fit: contain; display:block; }
    h1{ margin: 2px 0 0; font-size: 18px; font-weight: 850; letter-spacing:.2px; }
    .subtitle{ margin:0; font-size: 13.5px; color: var(--muted); line-height:1.45; }

    form{ position:relative; display:grid; gap:12px; margin-top: 10px; }
    .notice{ display:none; position:relative; padding: 10px 12px; border-radius: 14px; font-size: 13px; line-height:1.4; }
    .notice.show{ display:block; animation: pop .18s ease-out, fadeOut .35s ease-in 4.5s forwards; }
    .notice.error{ border: 1px solid rgba(255,77,109,.40); background: rgba(255,77,109,.10); color: rgba(255,255,255,.92); }
    .notice.success{ border: 1px solid rgba(24,227,161,.35); background: rgba(24,227,161,.10); color: rgba(255,255,255,.92); }
    @keyframes pop{ from{ transform: translateY(-3px); opacity:0 } to{ transform: translateY(0); opacity:1 } }
    @keyframes fadeOut{ to{ opacity:0; transform: translateY(-2px) } }

    .field{ display:grid; gap:7px; }
    label{ font-size: 12.5px; color: rgba(255,255,255,.82); }
    .control{
      display:flex; align-items:center; gap:10px;
      padding: 12px 12px; border-radius: 16px;
      background: rgba(255,255,255,.06);
      border: 1px solid rgba(255,255,255,.13);
      transition: border-color .2s ease, transform .2s ease, background .2s ease, box-shadow .2s ease;
    }
    .control:focus-within{
      border-color: rgba(24,227,161,.55);
      background: rgba(255,255,255,.075);
      transform: translateY(-1px);
      box-shadow: var(--focus);
    }
    .icon{ width:20px; height:20px; opacity:.88; flex:none; }
    input{
      width:100%; background:transparent; border:0; outline:none;
      color:var(--white); font-size: 14.5px; padding: 2px 0;
    }
    input::placeholder{ color: rgba(255,255,255,.46); }

    .btn-icon{
      border:0; background:transparent; color: rgba(255,255,255,.80);
      cursor:pointer; padding: 6px; border-radius: 12px;
      transition: background .2s ease, color .2s ease, transform .2s ease;
      display:grid; place-items:center;
    }
    .btn-icon:hover{ background: rgba(255,255,255,.08); color: rgba(255,255,255,.95); }
    .btn-icon:active{ transform: scale(.98); }

    .row{ display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top: 2px; }
    a{ color: rgba(166,255,233,.95); text-decoration:none; font-size: 13px; }
    a:hover{ text-decoration:underline; }

    .btn{
      margin-top: 6px; border:0; cursor:pointer; border-radius: 16px;
      padding: 12px 14px; font-weight: 850; letter-spacing:.2px; color: white;
      background: linear-gradient(135deg, rgba(24,227,161,.95), rgba(59,103,255,.92), rgba(255,59,94,.90));
      box-shadow: 0 18px 42px rgba(0,0,0,.35);
      transition: transform .15s ease, filter .2s ease, box-shadow .2s ease;
      display:flex; justify-content:center; align-items:center; gap:10px; position:relative;
    }
    .btn:hover{ filter: brightness(1.03); box-shadow: 0 22px 50px rgba(0,0,0,.42); }
    .btn:active{ transform: translateY(1px); }
    .btn[disabled]{ opacity:.7; cursor:not-allowed; }

    .spinner{
      width:16px; height:16px; border-radius:999px;
      border:2px solid rgba(7,16,22,.35);
      border-top-color: rgba(7,16,22,.95);
      animation: spin .8s linear infinite;
      display:none;
    }
    .btn.loading .spinner{ display:block; }
    .btn.loading .btntext{ opacity:.85; color: var(--white); }
    @keyframes spin{ to{ transform: rotate(360deg) } }

    .fineprint{
      margin: 12px 0 0;
      color: rgba(255,255,255,.60);
      font-size: 12px;
      line-height:1.5;
      text-align:center;
      position:relative;
    }
    button:focus-visible, a:focus-visible, input:focus-visible{
      outline:none; box-shadow: var(--focus); border-radius: 14px;
    }
    .shake{ animation: shake .28s ease-in-out; }
    @keyframes shake{
      0%,100%{ transform: translateX(0) }
      20%{ transform: translateX(-6px) }
      60%{ transform: translateX(6px) }
    }
    @media (max-width: 520px){ body{ overflow:auto; } }
