/* ==============================================================
   CecchinatoHR — Schermate di accesso  ·  v4.9.16
   Erano 141 righe copiate dentro <style> in due template diversi,
   con i colori gia scivolati fuori sincrono fra le due copie.
   Caricato DOPO billing.css per conservare la stessa precedenza.
   ============================================================== */

.chr-login-wrap {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--chr-primary-light) 0%, var(--chr-primary-light) 100%);
    padding: 20px;
}
.chr-login-box {
    background: #fff;
    border-radius: 16px;
    padding: 40px 36px 32px;
    width: 100%;
    max-width: 380px;
    box-shadow: 0 8px 40px rgba(40,70,125,.12), 0 2px 8px rgba(0,0,0,.06);
}
.chr-login-logo {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin-bottom: 28px;
}
.chr-login-icon { display: block; }
.chr-logo-text {
    font-size: 22px;
    font-weight: 800;
    color: var(--chr-primary);
    letter-spacing: -.3px;
}
.chr-logo-sub {
    font-size: 12px;
    color: var(--chr-muted);
    font-weight: 400;
    letter-spacing: .3px;
}
.chr-field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--chr-gray-600);
    margin-bottom: 6px;
    letter-spacing: .3px;
    text-transform: uppercase;
}
.chr-input-wrap {
    position: relative;
    display: flex;
    align-items: center;
}
.chr-input-icon {
    position: absolute;
    left: 11px;
    color: var(--chr-gray-400);
    pointer-events: none;
}
.chr-input-icon-left {
    padding-left: 36px !important;
}
.chr-input {
    width: 100%;
    padding: 10px 14px;
    border: 1.5px solid var(--chr-border);
    border-radius: 8px;
    font-size: 14px;
    color: var(--chr-text);
    background: var(--chr-gray-50);
    transition: border-color .15s, box-shadow .15s;
    outline: none;
}
.chr-input:focus {
    border-color: var(--chr-primary);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(40,70,125,.1);
}
.chr-pwd-toggle {
    position: absolute;
    right: 10px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--chr-gray-400);
    padding: 4px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    transition: color .15s;
}
.chr-pwd-toggle:hover { color: var(--chr-primary); }
.chr-btn-full {
    width: 100%;
    padding: 12px;
    font-size: 15px;
    font-weight: 700;
    border-radius: 10px;
    border: none;
    cursor: pointer;
    transition: all .15s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.chr-btn-primary {
    background: linear-gradient(135deg, var(--chr-primary) 0%, var(--chr-primary-soft) 100%);
    color: #fff;
    box-shadow: 0 4px 14px rgba(40,70,125,.3);
}
.chr-btn-primary:hover {
    background: linear-gradient(135deg, var(--chr-primary-dark) 0%, var(--chr-primary) 100%);
    box-shadow: 0 6px 18px rgba(40,70,125,.38);
    transform: translateY(-1px);
}
.chr-btn-primary:active {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(40,70,125,.25);
}
.chr-notice.chr-error {
    background: #fff0f0;
    border: 1px solid #f5c6c6;
    border-left: 3px solid var(--chr-error);
    color: #8b1a1a;
    border-radius: 7px;
    padding: 10px 14px;
    font-size: 13px;
    margin-bottom: 14px;
}
.chr-forgot-link {
    color: var(--chr-accent);
    text-decoration: none;
    font-weight: 500;
    transition: color .15s;
}
.chr-forgot-link:hover { color: var(--chr-accent-dark); text-decoration: underline; }
.chr-spinner { display: inline-block; animation: chr-spin .8s linear infinite; }
@keyframes chr-spin { to { transform: rotate(360deg); } }
@media (max-width:480px) {
    .chr-login-box { padding: 28px 20px 24px; }
}
