/* =====================================================================
   KONSENTO — Pagine di autenticazione (login, register, errori)
   Design "Apple" coerente con la landing: aurora verde, glass card,
   input arrotondati, focus e accenti brand #00ad4a.
   Ambito: tutto è scoped sotto .ap-login
   ===================================================================== */

/* Preloader: una sola girella pulita, in tinta brand */
#preloader{ background:#fbfbfd !important; }
#preloader .loader{
    background-image:none !important;
    width:46px !important; height:46px !important;
    border:3px solid rgba(0,0,0,.1) !important; border-top-color:#00ad4a !important;
    border-radius:50% !important; animation:spin .8s linear infinite !important;
}

.ap-login{
    min-height:100vh; display:flex; align-items:center; justify-content:center;
    padding:48px 18px; position:relative; overflow:hidden;
    font-family:-apple-system,BlinkMacSystemFont,'Inter','Segoe UI',sans-serif;
    background:
        radial-gradient(40vw 40vw at 12% 6%, rgba(0,173,74,.30), transparent 62%),
        radial-gradient(42vw 42vw at 88% 4%, rgba(46,201,107,.26), transparent 64%),
        radial-gradient(52vw 42vw at 72% 104%, rgba(0,173,74,.14), transparent 66%),
        #fbfbfd;
}
.ap-login::after{ /* griglia tech tenue */
    content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
    background-image:radial-gradient(rgba(0,0,0,.04) 1px, transparent 1px); background-size:26px 26px;
    -webkit-mask-image:radial-gradient(90vmax 70vmax at 50% 0%, #000 25%, transparent 75%);
            mask-image:radial-gradient(90vmax 70vmax at 50% 0%, #000 25%, transparent 75%);
}

.ap-login .ap-card{
    position:relative; z-index:1; width:100%; max-width:430px; margin:0 auto;
    background:rgba(255,255,255,.82); backdrop-filter:blur(22px) saturate(1.4); -webkit-backdrop-filter:blur(22px) saturate(1.4);
    border:1px solid rgba(0,0,0,.06); border-radius:28px;
    box-shadow:0 34px 80px -34px rgba(20,20,40,.4), 0 12px 34px -22px rgba(20,20,40,.22);
}
.ap-login .ap-card.ap-wide{ max-width:560px; }
.ap-login .card-body{ padding:44px 38px 40px; }
.ap-login .ap-logo{ display:flex; justify-content:center; margin-bottom:26px; }
.ap-login .ap-logo img{ height:42px; width:auto; }
.ap-login h2{ font-size:27px; font-weight:700; letter-spacing:-.03em; color:#1d1d1f; text-align:center; margin:0 0 8px; }
.ap-login .ap-sub{ text-align:center; color:#6e6e73; font-size:15px; line-height:1.5; margin:0 auto 8px; max-width:38ch; }
.ap-login #login-message{ border-radius:12px; }

.ap-login .ap-form{ margin-top:26px; }
.ap-login .ap-field{ margin-bottom:18px; }
.ap-login .ap-field label,
.ap-login .form-group > label{ display:block; font-size:13px; font-weight:600; color:#1d1d1f; margin-bottom:7px; letter-spacing:-.01em; }
.ap-login .ap-row{ display:grid; grid-template-columns:1fr 1fr; gap:0 16px; }
@media (max-width:560px){ .ap-login .ap-row{ grid-template-columns:1fr; } }

.ap-login .form-control{
    width:100%; height:auto; padding:13px 15px; font-size:15px; color:#1d1d1f;
    background:rgba(255,255,255,.9); border:1px solid rgba(0,0,0,.12); border-radius:13px;
    box-shadow:none; transition:border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.ap-login .form-control::placeholder{ color:#a0a0a8; }
.ap-login .form-control:focus{
    border-color:#00ad4a; background:#fff;
    box-shadow:0 0 0 3px rgba(0,173,74,.15); outline:none;
}
.ap-login .form-control.is-invalid{ border-color:#e24b4a; box-shadow:0 0 0 3px rgba(226,75,74,.14); }
.ap-login .form-control.is-valid{ border-color:#00ad4a; }

.ap-login .ap-pass{ position:relative; }
.ap-login .ap-pass .form-control{ padding-right:48px; border-radius:13px !important; }
.ap-login .ap-eye{
    position:absolute; right:6px; top:50%; transform:translateY(-50%); z-index:5;
    width:36px; height:36px; display:grid; place-items:center; padding:0;
    background:transparent; border:none; color:#8a8a90; border-radius:9px; cursor:pointer;
}
.ap-login .ap-eye:hover{ color:#1d1d1f; background:rgba(0,0,0,.05); }
.ap-login .ap-eye .material-symbols-outlined{ font-size:20px; }

.ap-login .ap-forgot{ text-align:right; margin:-4px 0 22px; }
.ap-login .ap-forgot a{ color:#00ad4a; font-weight:600; font-size:14px; text-decoration:none; }
.ap-login .ap-forgot a:hover{ text-decoration:underline; }

/* Checkbox (privacy / termini) */
.ap-login .ap-check{ display:flex; align-items:flex-start; gap:10px; margin-bottom:14px; font-size:14px; color:#3a3a40; line-height:1.45; }
.ap-login .ap-check input[type="checkbox"]{ width:18px; height:18px; margin-top:2px; accent-color:#00ad4a; flex:0 0 auto; }
.ap-login .ap-check a{ color:#00ad4a; font-weight:600; text-decoration:none; }
.ap-login .ap-check a:hover{ text-decoration:underline; }

/* Box requisiti password */
.ap-login .ap-req{ background:rgba(0,173,74,.06); border:1px solid rgba(0,173,74,.16); border-radius:12px; padding:12px 14px; font-size:13px; color:#3a3a40; margin-top:8px; }
.ap-login .ap-req ul{ margin:6px 0 0; padding-left:18px; }
.ap-login .ap-req .text-success{ color:#00893c !important; }
.ap-login .ap-req .text-danger{ color:#c0392b !important; }

/* Pulsante principale (pill) */
.ap-login .ap-submit{
    width:100%; display:inline-flex; align-items:center; justify-content:center; gap:9px;
    padding:14px 22px; font-size:16px; font-weight:600; color:#fff;
    background:#00ad4a; border:none; border-radius:999px;
    box-shadow:0 12px 26px -12px rgba(0,173,74,.6); cursor:pointer;
    transition:transform .25s cubic-bezier(.22,1,.36,1), box-shadow .25s, background .2s;
}
.ap-login .ap-submit:hover{ background:#00923e; transform:translateY(-2px) scale(1.01); box-shadow:0 18px 34px -14px rgba(0,173,74,.7); }
.ap-login .ap-submit:disabled{ opacity:.7; cursor:default; transform:none; }
.ap-login .ap-submit .material-symbols-outlined,
.ap-login .ap-submit i{ font-size:20px; }

/* Pulsante secondario (outline) */
.ap-login .ap-secondary{
    width:100%; display:inline-flex; align-items:center; justify-content:center; gap:8px;
    padding:12px 20px; font-size:15px; font-weight:600; color:#1d1d1f;
    background:transparent; border:1px solid rgba(0,0,0,.14); border-radius:999px; text-decoration:none;
    transition:border-color .2s, background .2s;
}
.ap-login .ap-secondary:hover{ border-color:#00ad4a; color:#00893c; background:rgba(0,173,74,.05); }

/* Divider "oppure" */
.ap-login .ap-divider{ display:flex; align-items:center; gap:14px; margin:26px 0 20px; color:#a0a0a8; font-size:13px; }
.ap-login .ap-divider::before, .ap-login .ap-divider::after{ content:""; height:1px; flex:1; background:rgba(0,0,0,.1); }

.ap-login .ap-foot{ text-align:center; margin-top:26px; font-size:13px; color:#8a8a90; }
.ap-login .ap-foot a{ color:#6e6e73; font-weight:600; text-decoration:none; }
.ap-login .ap-foot a:hover{ color:#00ad4a; }

/* Icona stato (pagine errore) */
.ap-login .ap-badge-icon{
    width:76px; height:76px; margin:0 auto 20px; border-radius:22px; display:grid; place-items:center;
    background:rgba(0,173,74,.10); color:#00ad4a;
}
.ap-login .ap-badge-icon .material-symbols-outlined{ font-size:40px; }
.ap-login .ap-badge-icon.warn{ background:rgba(240,158,11,.12); color:#c07f0a; }

@media (max-width:480px){ .ap-login .card-body{ padding:34px 24px 30px; } }
@media (prefers-reduced-motion:reduce){ .ap-login .ap-submit{ transition:none; } }
