    :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(520px, 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;
      max-width: 46ch;
    }

    form{
      position:relative;
      display:grid;
      gap:12px;
      margin-top: 10px;
    }

    /* ✅ Notices (mismo sistema que en login) */
    .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) }
    }

    .grid2{
      display:grid;
      grid-template-columns: 1fr 1fr;
      gap:12px;
    }

    .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(255,255,255,.35);
      border-top-color: rgba(255,255,255,.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) } }

    button:focus-visible, a:focus-visible, input:focus-visible{
      outline:none;
      box-shadow: var(--focus);
      border-radius: 14px;
    }

    @media (max-width: 520px){
      body{ overflow:auto; }
      .grid2{ grid-template-columns: 1fr; }
    }
