/* Hallmark · genre: modern-minimal · theme: custom plum · design-system: design.md · designed-as-app
 * Hallmark · pre-emit critique: P5 H4 E5 S4 R5 V4
 */
:root {
    --login-ink: #1a1224;
    --login-ink-soft: #6a5d75;
    --login-surface: #fbf9fc;
    --login-accent: #6a3d92;
    --login-accent-deep: #532e73;
    --login-glow: rgba(106, 61, 146, 0.42);
    --login-font-display: "Syne", "Trebuchet MS", sans-serif;
    --login-font-body: "Plus Jakarta Sans", "Segoe UI", sans-serif;
    --login-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html,
body.crm-login {
    margin: 0;
    min-height: 100%;
    overflow-x: clip;
    font-family: var(--login-font-body);
    color: var(--login-ink);
    background: #0d0914;
}

a {
    color: inherit;
    text-decoration: none;
}

.crm-login__stage {
    position: relative;
    isolation: isolate;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    overflow: hidden;
    background:
        radial-gradient(1100px 700px at -10% -20%, rgba(106, 61, 146, 0.36), transparent 55%),
        radial-gradient(900px 600px at 110% 110%, rgba(155, 109, 196, 0.18), transparent 50%),
        linear-gradient(160deg, #0d0914 0%, #1a1224 48%, #140e1c 100%);
}

.crm-login__grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse at center, #000 15%, transparent 72%);
    animation: crmLoginGrid 18s linear infinite;
    pointer-events: none;
    z-index: 0;
}

.crm-login__orbit {
    position: absolute;
    border-radius: 50%;
    filter: blur(2px);
    pointer-events: none;
    z-index: 0;
}

.crm-login__orbit--a {
    width: 340px;
    height: 340px;
    right: 8%;
    top: 10%;
    background: radial-gradient(circle, var(--login-glow), transparent 68%);
    animation: crmLoginFloat 9s var(--login-ease) infinite alternate;
}

.crm-login__orbit--b {
    width: 260px;
    height: 260px;
    left: 6%;
    bottom: 8%;
    background: radial-gradient(circle, rgba(155, 109, 196, 0.28), transparent 70%);
    animation: crmLoginFloat 11s var(--login-ease) infinite alternate-reverse;
}

.crm-login__panel {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 420px;
}

.crm-login__panel-card {
    width: 100%;
    padding: clamp(24px, 4vw, 36px);
    border-radius: 24px;
    background: var(--login-surface);
    border: 1px solid rgba(26, 18, 36, 0.06);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.8) inset,
        0 30px 80px rgba(0, 0, 0, 0.35);
    animation: crmLoginRise 0.7s var(--login-ease) both;
}

.crm-login__logo {
    display: flex;
    justify-content: center;
    margin-bottom: 22px;
}

.crm-login__logo img {
    display: block;
    height: 40px;
    width: auto;
    max-width: 220px;
}

.crm-login__panel-title {
    margin: 0;
    text-align: center;
    font-family: var(--login-font-display);
    font-size: 28px;
    font-weight: 800;
    font-style: normal;
    letter-spacing: -0.03em;
    line-height: 1.1;
}

.crm-login__alert {
    display: flex;
    gap: 10px;
    margin-top: 16px;
    padding: 12px 14px;
    border-radius: 14px;
    background: #fff1f1;
    border: 1px solid #f3c1c1;
    color: #9f2d2d;
}

.crm-login__alert .fa {
    margin-top: 2px;
}

.crm-login__alert p {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
}

.crm-login__form {
    margin-top: 22px;
    display: grid;
    gap: 14px;
}

.crm-login__field {
    display: grid;
    gap: 8px;
    margin: 0;
}

.crm-login__field > span {
    color: var(--login-ink);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.crm-login__control {
    position: relative;
    display: flex;
    align-items: center;
}

.crm-login__control > .fa {
    position: absolute;
    left: 14px;
    color: #8a7a9a;
    pointer-events: none;
}

.crm-login__control input {
    width: 100%;
    height: 52px;
    padding: 0 44px 0 42px;
    border: 1px solid #e2d8ea;
    border-radius: 14px;
    background: #f0eaf5;
    color: var(--login-ink);
    font-family: var(--login-font-body);
    font-size: 15px;
    font-weight: 600;
    outline: none;
    transition: border-color 0.18s var(--login-ease), box-shadow 0.18s var(--login-ease), background 0.18s var(--login-ease);
}

.crm-login__control input::placeholder {
    color: #8a7c98;
    font-weight: 500;
}

.crm-login__control input:hover {
    border-color: #c4b3d4;
}

.crm-login__control input:focus {
    background: #fff;
    border-color: rgba(106, 61, 146, 0.7);
    box-shadow: 0 0 0 4px rgba(106, 61, 146, 0.16);
}

.crm-login__peek {
    position: absolute;
    right: 8px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: #7a6b8a;
    cursor: pointer;
}

.crm-login__peek:hover,
.crm-login__peek:focus-visible {
    background: rgba(106, 61, 146, 0.1);
    color: var(--login-accent-deep);
    outline: none;
}

.crm-login__remember {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 2px 0 0;
    cursor: pointer;
    color: var(--login-ink-soft);
    font-size: 13px;
    font-weight: 600;
    user-select: none;
}

.crm-login__remember input {
    width: 16px;
    height: 16px;
    accent-color: var(--login-accent);
}

.crm-login__submit {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    height: 54px;
    margin-top: 4px;
    border: 0;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--login-accent) 0%, var(--login-accent-deep) 100%);
    color: #fff;
    font-family: var(--login-font-body);
    font-size: 15px;
    font-weight: 800;
    letter-spacing: 0.02em;
    cursor: pointer;
    box-shadow: 0 14px 30px rgba(106, 61, 146, 0.35);
    transition: transform 0.18s var(--login-ease), box-shadow 0.18s var(--login-ease), filter 0.18s var(--login-ease);
}

.crm-login__submit:hover {
    transform: translateY(-1px);
    box-shadow: 0 18px 36px rgba(106, 61, 146, 0.42);
}

.crm-login__submit:active {
    transform: translateY(1px) scale(0.99);
}

.crm-login__submit:focus-visible {
    outline: 3px solid rgba(106, 61, 146, 0.35);
    outline-offset: 3px;
}

.crm-login__submit-arrow {
    transition: transform 0.18s var(--login-ease);
}

.crm-login__submit:hover .crm-login__submit-arrow {
    transform: translateX(3px);
}

.crm-login__submit-wait {
    display: none;
}

.crm-login__submit.is-loading {
    cursor: wait;
    filter: saturate(0.9);
    pointer-events: none;
}

.crm-login__submit.is-loading .crm-login__submit-label,
.crm-login__submit.is-loading .crm-login__submit-arrow {
    display: none;
}

.crm-login__submit.is-loading .crm-login__submit-wait {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

@keyframes crmLoginRise {
    from {
        opacity: 0;
        transform: translateY(16px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes crmLoginFloat {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to { transform: translate3d(12px, -18px, 0) scale(1.06); }
}

@keyframes crmLoginGrid {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(48px, 48px, 0); }
}

@media (max-width: 575px) {
    .crm-login__panel-card {
        padding: 22px 18px;
        border-radius: 18px;
    }

    .crm-login__logo img {
        height: 34px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .crm-login__panel-card,
    .crm-login__grid,
    .crm-login__orbit {
        animation: none !important;
    }
}
