:root {
    --ia-primary: #015500;
    --ia-accent: #ed852e;
    --ia-danger: #c92a2a;
    --ia-navy: #012a00;
    --ia-border: #e3ebe4;
    --ia-text: #182433;
    --ia-muted: #667382;
}
*,
*:before,
*:after {
    box-sizing: border-box;
}
html,
body.auth-page {
    height: 100%;
    margin: 0;
}
body.auth-page {
    background: #fff;
    color: var(--ia-text);
    font-family: "Inter", system-ui, "Segoe UI", Roboto, "Open Sans", sans-serif;
    overflow: hidden;
}
a {
    color: var(--ia-primary);
}
.eyebrow {
    color: var(--ia-accent);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.text-primary {
    color: var(--ia-primary);
}
.text-secondary {
    color: var(--ia-muted);
}
.small {
    font-size: .8rem;
}
.fw-semibold {
    font-weight: 600;
}
.text-decoration-none {
    text-decoration: none;
}
.w-100 {
    width: 100%;
}
.mt-2 { margin-top: .5rem; }
.mt-3 { margin-top: 1rem; }
.mt-4 { margin-top: 1.5rem; }
.mb-2 { margin-bottom: .5rem; }
.mb-3 { margin-bottom: 1rem; }
.mb-5 { margin-bottom: 3rem; }
.d-flex {
    display: flex;
}
.justify-content-between {
    justify-content: space-between;
}
.d-none {
    display: none;
}
.auth-shell {
    display: grid;
    grid-template-columns: minmax(420px, 46%) 1fr;
    height: 100%;
    min-height: 100%;
}
.auth-intro {
    background: #015500;
    color: #fff;
    display: none;
    isolation: isolate;
    padding: 3rem 4rem;
}
.auth-intro-content {
    display: flex;
    flex: 1;
    flex-direction: column;
    max-width: 620px;
}
.auth-copy {
    margin: auto 0;
}
.auth-copy h1 {
    font-size: clamp(2.5rem, 4vw, 4.4rem);
    font-weight: 700;
    letter-spacing: -.045em;
    line-height: 1.2;
    margin: 1.25rem 0;
}
.auth-copy p {
    color: rgba(255, 255, 255, .72);
    font-size: 1.15rem;
    line-height: 1.6;
    max-width: 520px;
}
.auth-support {
    color: rgba(255, 255, 255, .6);
    font-size: .85rem;
    margin: 0;
}
.auth-support a {
    color: #fff;
    text-decoration: underline;
}
.auth-support a:hover {
    color: var(--ia-accent);
}
.auth-intro-logos {
    background: #fff;
    border-radius: .85rem;
    padding: .75rem 1rem;
}
.auth-intro-logos .header-logos {
    flex: none;
    gap: .55rem .85rem;
}
.auth-intro-logos .header-logo-unissula { height: 42px; }
.auth-intro-logos .header-logo-unggul,
.auth-intro-logos .header-logo-budai { height: 46px; }
.auth-intro-logos .header-logo-birrul { height: 40px; }
.auth-form-panel {
    align-items: center;
    background: #fff;
    display: flex;
    isolation: isolate;
    justify-content: center;
    overflow: auto;
    padding: 3rem;
}
.auth-form-wrap {
    max-width: 430px;
    width: 100%;
}
.auth-heading h2 {
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -.025em;
    margin: .55rem 0;
}
.auth-heading p {
    color: var(--ia-muted);
    margin-bottom: 2rem;
}
.header-logos {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .65rem 1rem;
    text-decoration: none;
}
.header-logo {
    display: block;
    height: 46px;
    object-fit: contain;
    width: auto;
}
.header-logo-unissula { height: 48px; }
.header-logo-unggul { height: 52px; }
.header-logo-birrul { height: 44px; }
.header-logo-budai { height: 50px; }
.form-label {
    display: block;
    font-size: .875rem;
    font-weight: 600;
    margin-bottom: .4rem;
}
.input {
    margin-bottom: 1.1rem;
}
.form-control {
    background: #fff;
    border: 1px solid #dce1e8;
    border-radius: .55rem;
    color: var(--ia-text);
    display: block;
    font-family: inherit;
    font-size: 1rem;
    line-height: 1.4;
    padding: .78rem .9rem;
    transition: none;
    width: 100%;
}
.form-control:focus {
    border-color: var(--ia-accent);
    box-shadow: none;
    outline: 2px solid rgba(237, 133, 46, .28);
    outline-offset: 0;
}
.form-switch {
    align-items: center;
    display: flex;
    gap: .65rem;
}
.form-switch .form-check-input {
    appearance: none;
    background: #cfd7d0;
    border: 1px solid #b7c1b8;
    border-radius: 999px;
    cursor: pointer;
    flex: 0 0 auto;
    height: 1.35rem;
    margin: 0;
    position: relative;
    transition: background-color .18s ease, border-color .18s ease;
    width: 2.55rem;
}
.form-switch .form-check-input::after {
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 1px 3px rgba(24, 36, 51, .25);
    content: "";
    height: .95rem;
    left: .15rem;
    position: absolute;
    top: .14rem;
    transition: transform .18s ease;
    width: .95rem;
}
.form-switch .form-check-input:checked {
    background: var(--ia-primary);
    border-color: var(--ia-primary);
}
.form-switch .form-check-input:checked::after {
    transform: translateX(1.18rem);
}
.form-switch .form-check-input:focus-visible {
    outline: 3px solid rgba(1, 85, 0, .22);
    outline-offset: 2px;
}
.form-switch .form-check-label {
    cursor: pointer;
    font-size: .95rem;
}
.btn {
    appearance: none;
    border: 1px solid transparent;
    border-radius: .55rem;
    cursor: pointer;
    display: inline-block;
    font-family: inherit;
    font-weight: 600;
    text-align: center;
}
.btn-primary {
    background: var(--ia-primary);
    border-color: var(--ia-primary);
    color: #fff;
}
.btn-primary:hover,
.btn-primary:focus {
    background: #013d00;
    border-color: #013d00;
}
.btn-lg {
    font-size: 1rem;
    padding: .85rem 1.1rem;
}
.auth-submit-button {
    align-items: center;
    display: inline-flex;
    gap: .55rem;
    justify-content: center;
    min-height: 3.05rem;
}
.auth-submit-button:disabled {
    cursor: wait;
    opacity: .72;
}
.auth-submit-spinner {
    animation: auth-submit-spin .7s linear infinite;
    border: 2px solid rgba(255, 255, 255, .45);
    border-radius: 50%;
    border-top-color: #fff;
    display: none;
    height: 1rem;
    width: 1rem;
}
.auth-submit-button.is-loading .auth-submit-spinner {
    display: inline-block;
}
@keyframes auth-submit-spin {
    to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .auth-submit-spinner { animation-duration: 1.4s; }
}
.auth-register {
    border-top: 1px solid var(--ia-border);
    margin: 2rem 0 1.25rem;
    padding-top: 1.5rem;
    text-align: center;
}
.security-note {
    align-items: center;
    color: var(--ia-muted);
    display: flex;
    font-size: .78rem;
    gap: .5rem;
    justify-content: center;
}
.security-note span:first-child {
    color: #2fb344;
}
.message {
    border: 1px solid transparent;
    border-radius: .55rem;
    margin-bottom: 1.25rem;
    padding: .85rem 1rem;
}
.message.error {
    background: #fff0f0;
    border-color: #ffd4d4;
    color: #b42318;
}
.message.success {
    background: #eefbf3;
    border-color: #c7efd6;
    color: #18794e;
}
.message.warning {
    background: #fff8e8;
    border-color: #ffe2b0;
    color: #9a6700;
}
.message.hidden {
    display: none;
}
.error-message,
.form-error {
    color: var(--ia-danger);
    font-size: .8rem;
    font-weight: 600;
    margin-top: .4rem;
}
.form-control.is-invalid,
.input.error input {
    border-color: var(--ia-danger);
}
.password-field {
    position: relative;
}
.password-field .form-control {
    padding-right: 2.9rem;
}
.password-field .form-control::-ms-reveal,
.password-field .form-control::-ms-clear {
    display: none;
}
.password-toggle {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: .4rem;
    color: #3d4a58;
    cursor: pointer;
    display: inline-flex;
    height: 2.25rem;
    justify-content: center;
    padding: 0;
    position: absolute;
    right: .45rem;
    top: 50%;
    transform: translateY(-50%);
    width: 2.25rem;
}
.password-toggle:hover,
.password-toggle:focus-visible {
    color: var(--ia-primary);
}
.password-strength {
    margin: .65rem 0 1.1rem;
}
.password-strength-bar {
    background: #e8ece8;
    border-radius: 99px;
    height: .4rem;
    overflow: hidden;
}
.password-strength-bar span {
    background: var(--ia-danger);
    border-radius: 99px;
    display: block;
    height: 100%;
    width: 0;
}
.password-strength-bar.is-fair span {
    background: var(--ia-accent);
}
.password-strength-bar.is-good span,
.password-strength-bar.is-strong span {
    background: var(--ia-primary);
}
.password-strength-label {
    color: var(--ia-muted);
    font-size: .78rem;
    font-weight: 700;
    margin: .45rem 0 .35rem;
}
.password-strength-hints {
    list-style: none;
    margin: 0;
    padding: 0;
}
.password-strength-hints li {
    color: var(--ia-muted);
    font-size: .75rem;
    padding: .12rem 0 .12rem 1.1rem;
    position: relative;
}
.password-strength-hints li:before {
    content: "○";
    left: 0;
    position: absolute;
}
.password-strength-hints li.is-met {
    color: var(--ia-primary);
}
.password-strength-hints li.is-met:before {
    content: "✓";
}
.password-match-message {
    font-size: .8rem;
    font-weight: 600;
    margin: .35rem 0 0;
}
.password-match-message.is-mismatch {
    color: var(--ia-danger);
}
.password-match-message.is-match {
    color: var(--ia-primary);
}
@media (min-width: 992px) {
    .auth-intro {
        display: flex;
    }
    .d-lg-none {
        display: none;
    }
}
@media (max-width: 991.98px) {
    .auth-shell {
        display: block;
        height: auto;
        min-height: 100%;
        overflow: auto;
    }
    body.auth-page {
        overflow: auto;
    }
    .auth-form-panel {
        min-height: 100%;
        padding: 1.5rem;
    }
    .header-logo,
    .header-logo-unissula {
        height: 34px;
    }
    .header-logo-unggul,
    .header-logo-budai {
        height: 36px;
    }
    .header-logo-birrul {
        height: 32px;
    }
}
@media (max-width: 575.98px) {
    .header-logo,
    .header-logo-unissula,
    .header-logo-unggul,
    .header-logo-birrul,
    .header-logo-budai {
        height: 28px;
    }
}
.auth-back-link {
    font-size: .85rem;
    margin: 0 0 2.5rem;
}
.auth-back-link a {
    color: var(--ia-muted);
}
.auth-back-link a:hover {
    color: var(--ia-primary);
}
.phone-input-group { display: grid; grid-template-columns: minmax(190px, 1fr) 1.25fr; gap: .5rem; }
.phone-country-select { display: flex; align-items: center; position: relative; }
.phone-country-select > span { position: absolute; left: .85rem; z-index: 1; font-size: 1.1rem; pointer-events: none; }
.phone-country-select select { padding-left: 2.55rem; }
.phone-country-select select, #whatsapp-local-number { height: 50px; min-height: 50px; }
@media (max-width: 575.98px) { .phone-input-group { grid-template-columns: 1fr; gap: .65rem; } }

/* Template Standard Alerts Styling */
.alert {
    background-color: #fdf6ea;
    border: 1px solid #f7e2c6;
    border-radius: 8px;
    color: #854d0e;
    display: flex;
    align-items: center;
    font-size: 0.88rem;
    line-height: 1.45;
    margin: 1rem 0;
    padding: 0.85rem 1.1rem;
    width: 100%;
}
.alert-inner {
    align-items: center;
    display: flex;
    gap: 0.75rem;
    justify-content: space-between;
    width: 100%;
}
.alert-content {
    align-items: center;
    display: flex;
    gap: 0.75rem;
}
.alert-icon {
    color: #b45309;
    flex-shrink: 0;
}
.alert-title {
    color: #92400e;
    font-weight: 700;
    margin-right: 0.35rem;
}
.alert-warning {
    background-color: #fdf6ea;
    border-color: #f7e2c6;
    color: #854d0e;
}
.alert-warning .alert-icon {
    color: #b45309;
}
.alert-success {
    background-color: #f0fdf4;
    border-color: #bbf7d0;
    color: #166534;
}
.alert-success .alert-icon {
    color: #15803d;
}
.alert-danger, .alert-error {
    background-color: #fef2f2;
    border-color: #fecaca;
    color: #991b1b;
}
.alert-danger .alert-icon, .alert-error .alert-icon {
    color: #b91c1c;
}
.alert-info {
    background-color: #f0f9ff;
    border-color: #bae6fd;
    color: #075985;
}
.alert-info .alert-icon {
    color: #0369a1;
}
.btn-alert-reset {
    background: transparent;
    border: 1px solid #d97706;
    border-radius: 6px;
    color: #854d0e;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 0.28rem 0.65rem;
    transition: background-color .15s ease;
    white-space: nowrap;
}
.btn-alert-reset:hover {
    background: #fef08a;
    color: #713f12;
}

