:root {
    /* Colores oficiales de marca Lactalis (Graphic Charter 2024):
       azul oscuro del logotipo P.654C / R0 G75 B133, y celeste de la elipse P.2915C / R91 G197 B242. */
    --brand-primary: #004b85;
    --brand-primary-dark: #00365f;
    --brand-primary-light: #e3f4fd;
    --brand-accent: #5bc5f2;
    --sidebar-width: 260px;
}

body {
    min-height: 100vh;
    background-color: #f4f6f9;
}

a {
    color: var(--brand-primary);
}

.btn-primary {
    background-color: var(--brand-primary);
    border-color: var(--brand-primary);
}
.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--brand-primary-dark);
    border-color: var(--brand-primary-dark);
}
.btn-outline-primary {
    color: var(--brand-primary);
    border-color: var(--brand-primary);
}
.btn-outline-primary:hover {
    background-color: var(--brand-primary);
    border-color: var(--brand-primary);
}
.text-primary { color: var(--brand-primary) !important; }
.bg-primary { background-color: var(--brand-primary) !important; }
.badge.text-bg-primary { background-color: var(--brand-primary) !important; }
.form-check-input:checked { background-color: var(--brand-primary); border-color: var(--brand-primary); }
.page-link { color: var(--brand-primary); }
.page-item.active .page-link { background-color: var(--brand-primary); border-color: var(--brand-primary); }

.text-bg-purple { background-color: #6f42c1 !important; color: #fff !important; }

.badge-estado-pendiente { background-color: #6c757d; }
.badge-estado-en_revision { background-color: var(--brand-primary); }
.badge-estado-aprobada { background-color: #198754; }
.badge-estado-rechazada { background-color: #dc3545; }

/* ---------- Layout interno con sidebar ---------- */
.app-shell {
    display: flex;
    min-height: 100vh;
}

.app-sidebar {
    width: var(--sidebar-width);
    background: #ffffff;
    border-right: 1px solid #e9ecef;
    flex-shrink: 0;
}

.app-sidebar .sidebar-brand {
    padding: 1.25rem 1.25rem 0.75rem;
    font-weight: 700;
    color: var(--brand-primary-dark);
    display: flex;
    align-items: center;
    gap: .5rem;
}

.app-sidebar .sidebar-scope {
    margin: 0 1rem 1rem;
    padding: .6rem .75rem;
    background: var(--brand-primary-light);
    border-radius: .5rem;
    font-size: .75rem;
    color: var(--brand-primary-dark);
    display: flex;
    align-items: center;
    gap: .5rem;
}

.app-sidebar .nav-link {
    color: #495057;
    border-radius: .5rem;
    padding: .55rem .9rem;
    display: flex;
    align-items: center;
    gap: .65rem;
    font-size: .925rem;
}

.app-sidebar .nav-link i { font-size: 1.05rem; width: 1.25rem; text-align: center; }

.app-sidebar .nav-link.active,
.app-sidebar .nav-link:hover {
    background: var(--brand-primary-light);
    color: var(--brand-primary-dark);
}

.app-sidebar .nav-link.active {
    border-left: 3px solid var(--brand-primary);
    font-weight: 600;
}

.app-sidebar .nav-section-title {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #adb5bd;
    padding: 1rem 1rem .25rem;
}

.app-topbar {
    background: #ffffff;
    border-bottom: 1px solid #e9ecef;
    padding: .75rem 1.25rem;
}

.app-content {
    flex: 1;
    min-width: 0;
}

@media (max-width: 991.98px) {
    .app-sidebar { display: none; }
}

/* ---------- Wizard formulario público ---------- */
.wizard-steps {
    display: flex;
    justify-content: space-between;
    margin-bottom: 2rem;
}

.wizard-step {
    flex: 1;
    text-align: center;
    position: relative;
}

.wizard-step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 1.25rem;
    left: 55%;
    width: 90%;
    height: 2px;
    background: #e9ecef;
    z-index: 0;
}

.wizard-step.done:not(:last-child)::after { background: #198754; }

.wizard-step .circle {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: #e9ecef;
    color: #6c757d;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto .5rem;
    font-weight: 600;
    position: relative;
    z-index: 1;
}

.wizard-step.active .circle { background: var(--brand-primary); color: #fff; }
.wizard-step.done .circle { background: #198754; color: #fff; }

.wizard-step .label { font-size: .8rem; color: #6c757d; }
.wizard-step.active .label { color: var(--brand-primary); font-weight: 600; }
.wizard-step.done .label { color: #198754; }

.wizard-pane { display: none; }
.wizard-pane.active { display: block; }

.doc-upload-card {
    border: 1px solid #e9ecef;
    border-radius: .75rem;
    padding: 1rem;
    text-align: center;
    height: 100%;
}

.doc-upload-card .icon-circle {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto .75rem;
    color: #fff;
    font-size: 1.25rem;
}

.doc-upload-card.uploaded {
    border-color: var(--brand-primary);
    background: var(--brand-primary-light);
}

.doc-upload-card .file-name {
    font-size: .75rem;
    color: var(--brand-primary-dark);
    word-break: break-all;
}

/* ---------- Mantenedores maestro-detalle ---------- */
.master-list .list-group-item {
    cursor: pointer;
}

.master-list .list-group-item.active-row {
    background: var(--brand-primary-light);
    border-left: 3px solid var(--brand-primary);
}

.detail-panel {
    position: sticky;
    top: 1rem;
}

/* ========================================================================== 
   Sistema visual corporativo 2026
   ========================================================================== */
:root {
    --brand-primary: #004b85;
    --brand-primary-dark: #002f5d;
    --brand-navy: #002b52;
    --brand-accent: #5bc5f2;
    --brand-accent-soft: #dff5ff;
    --brand-sky: #edf8fd;
    --brand-ink: #12273b;
    --brand-muted: #65778a;
    --surface: #ffffff;
    --surface-subtle: #f6f9fc;
    --line: #dfe8f0;
    --shadow-sm: 0 8px 24px rgba(1, 45, 83, .07);
    --shadow-md: 0 20px 50px rgba(1, 45, 83, .12);
    --shadow-lg: 0 28px 80px rgba(0, 33, 67, .22);
    --radius-sm: .65rem;
    --radius-md: 1rem;
    --radius-lg: 1.5rem;
    --sidebar-width: 282px;
}

html { scroll-behavior: smooth; }

body {
    color: var(--brand-ink);
    font-family: Inter, Aptos, "Segoe UI", system-ui, -apple-system, sans-serif;
    font-size: .95rem;
    -webkit-font-smoothing: antialiased;
}

a, button, .card, .form-control, .form-select, .nav-link {
    transition: color .2s ease, background-color .2s ease, border-color .2s ease,
                box-shadow .2s ease, transform .2s ease;
}

::selection { background: var(--brand-accent); color: var(--brand-navy); }

.section-eyebrow {
    display: block;
    color: var(--brand-primary);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .13em;
    line-height: 1.2;
    text-transform: uppercase;
}

.btn {
    border-radius: .72rem;
    font-weight: 700;
    letter-spacing: -.01em;
    padding: .65rem 1rem;
}
.btn-sm { border-radius: .55rem; padding: .42rem .72rem; }
.btn-lg { border-radius: .85rem; font-size: .95rem; padding: .85rem 1.3rem; }
.btn-primary {
    background: linear-gradient(135deg, #0066a9 0%, var(--brand-primary) 70%);
    border-color: var(--brand-primary);
    box-shadow: 0 8px 18px rgba(0, 75, 133, .18);
}
.btn-primary:hover, .btn-primary:focus-visible {
    background: linear-gradient(135deg, #0073bb, #003e72);
    border-color: #003e72;
    box-shadow: 0 12px 24px rgba(0, 75, 133, .27);
    transform: translateY(-1px);
}
.btn-outline-primary:hover, .btn-outline-secondary:hover { transform: translateY(-1px); }

.form-label { color: #30485e; font-size: .84rem; font-weight: 700; }
.form-control, .form-select {
    background-color: #fbfdff;
    border-color: #d9e4ed;
    border-radius: .72rem;
    min-height: 44px;
    padding: .65rem .8rem;
}
.form-control::placeholder { color: #99a8b6; }
.form-control:hover, .form-select:hover { border-color: #b9ccda; }
.form-control:focus, .form-select:focus {
    background-color: #fff;
    border-color: var(--brand-accent);
    box-shadow: 0 0 0 .24rem rgba(91, 197, 242, .18);
}

.card {
    border-color: rgba(218, 229, 238, .85);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}
.card-header {
    border-color: var(--line);
    color: var(--brand-navy);
    font-weight: 750;
    padding: 1rem 1.25rem;
}
.alert { border: 0; border-radius: .85rem; }
.alert-primary { background: var(--brand-accent-soft); color: var(--brand-primary-dark); }
.badge { border-radius: 99px; font-size: .7rem; padding: .42em .72em; }

/* ---------- Superficie pública ---------- */
.public-body {
    background: #f5f9fc;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}
.public-navbar {
    background: rgba(255, 255, 255, .94);
    border-bottom: 1px solid rgba(218, 229, 238, .8);
    box-shadow: 0 4px 20px rgba(0, 43, 82, .04);
    min-height: 78px;
    position: relative;
    z-index: 10;
}
.public-navbar::after {
    background: linear-gradient(90deg, var(--brand-primary) 0 70%, var(--brand-accent) 70% 100%);
    bottom: -1px;
    content: '';
    height: 3px;
    left: 0;
    position: absolute;
    width: 100%;
}
.public-navbar__inner { align-items: center; }
.public-navbar .navbar-brand img { height: 45px; width: auto; }
.public-navbar__context {
    align-items: flex-end;
    border-left: 1px solid var(--line);
    color: var(--brand-ink);
    flex-direction: column;
    font-size: .82rem;
    font-weight: 650;
    line-height: 1.2;
    padding-left: 1.25rem;
}
.public-navbar__eyebrow { color: #8493a0; font-size: .62rem; letter-spacing: .13em; text-transform: uppercase; }
.public-main { flex: 1; padding: 2rem 0 3rem; }
.public-footer {
    background: #fff;
    border-top: 1px solid var(--line);
    color: #718294;
    font-size: .76rem;
    padding: 1.4rem 0;
}
.public-footer i { color: var(--brand-primary); }
.public-footer__credits { align-items: center; display: inline-flex; gap: .55rem; }
.public-footer__credits a { color: var(--brand-primary); font-weight: 750; text-decoration: none; }
.public-footer__credits a:hover { color: var(--brand-accent); text-decoration: underline; }
.public-footer__separator { background: #cbd7e0; border-radius: 50%; display: inline-block; height: 3px; width: 3px; }

/* ---------- Portada ---------- */
.home-page .public-main { padding-top: 1.5rem; }
.home-hero {
    background-color: var(--brand-primary);
    background-image: linear-gradient(115deg, rgba(0, 39, 77, .93), rgba(0, 75, 133, .71)), url('../img/bg-general.png');
    background-position: center;
    background-size: cover;
    border-radius: 1.8rem;
    box-shadow: var(--shadow-lg);
    color: #fff;
    min-height: 560px;
    overflow: hidden;
    padding: 5rem 5.25rem;
    position: relative;
}
.home-hero::before {
    background: linear-gradient(90deg, var(--brand-accent), transparent);
    content: '';
    height: 4px;
    left: 0;
    position: absolute;
    top: 0;
    width: 48%;
}
.home-hero::after {
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 50%;
    content: '';
    height: 500px;
    position: absolute;
    right: -270px;
    top: -250px;
    width: 650px;
}
.home-hero__glow {
    background: radial-gradient(circle, rgba(91,197,242,.24), transparent 65%);
    height: 500px;
    position: absolute;
    right: -40px;
    top: 30px;
    width: 500px;
}
.hero-kicker { align-items: center; color: #d6f3ff; display: flex; font-size: .72rem; font-weight: 750; gap: .6rem; letter-spacing: .11em; text-transform: uppercase; }
.hero-kicker span { background: var(--brand-accent); border-radius: 50%; box-shadow: 0 0 0 5px rgba(91,197,242,.13); height: 7px; width: 7px; }
.home-hero h1 { font-size: clamp(2.75rem, 4.8vw, 4.5rem); font-weight: 760; letter-spacing: -.052em; line-height: .98; margin: 1.35rem 0 1.5rem; }
.home-hero h1 span { color: var(--brand-accent); }
.hero-lead { color: rgba(255,255,255,.78); font-size: 1.08rem; line-height: 1.75; max-width: 590px; }
.hero-primary-action {
    animation: heroCtaAttention 3.4s ease-in-out infinite;
    border: 2px solid #fff;
    color: var(--brand-primary-dark);
    isolation: isolate;
    min-width: 215px;
    position: relative;
}
.hero-primary-action::before {
    animation: heroCtaRing 3.4s ease-out infinite;
    border: 2px solid var(--brand-accent);
    border-radius: inherit;
    content: '';
    inset: -2px;
    pointer-events: none;
    position: absolute;
    z-index: -1;
}
.hero-primary-action:hover {
    animation-play-state: paused;
    border-color: var(--brand-accent);
    color: var(--brand-primary);
    transform: translateY(-3px) scale(1.02);
}
.hero-primary-action:hover::before { animation-play-state: paused; opacity: 0; }
.hero-primary-action i { animation: heroCtaArrow 1.15s ease-in-out infinite; margin-left: .45rem; }
.hero-secondary-action { border-color: rgba(255,255,255,.46); color: #fff; }
.hero-secondary-action:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; transform: translateY(-2px); }
.hero-orbit { height: 390px; position: relative; width: 100%; }
.hero-orbit__ring { border: 1px solid rgba(255,255,255,.22); border-radius: 50%; position: absolute; }
.hero-orbit__ring--one { height: 345px; left: 0; top: 20px; transform: rotate(-14deg); width: 405px; }
.hero-orbit__ring--two { border-color: rgba(91,197,242,.3); height: 260px; left: 75px; top: 65px; transform: rotate(16deg); width: 300px; }
.hero-orbit__card {
    backdrop-filter: blur(16px);
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.24);
    border-radius: 1.35rem;
    box-shadow: 0 25px 65px rgba(0,25,52,.25);
    left: 60px;
    padding: 2rem;
    position: absolute;
    top: 72px;
    transform: rotate(-2deg);
    width: 285px;
}
.hero-orbit__icon { align-items: center; background: var(--brand-accent); border-radius: .85rem; color: var(--brand-navy); display: flex; font-size: 1.45rem; height: 50px; justify-content: center; margin-bottom: 1.5rem; width: 50px; }
.hero-orbit__label { color: var(--brand-accent); display: block; font-size: .62rem; font-weight: 800; letter-spacing: .13em; margin-bottom: .6rem; }
.hero-orbit__card strong { display: block; font-size: 1.35rem; line-height: 1.2; }
.hero-orbit__card small { color: rgba(255,255,255,.63); font-size: .65rem; }
.hero-orbit__progress { background: rgba(255,255,255,.12); border-radius: 99px; height: 5px; margin: 1.5rem 0 .7rem; overflow: hidden; }
.hero-orbit__progress span { background: linear-gradient(90deg, var(--brand-accent), #fff); border-radius: inherit; display: block; height: 100%; width: 72%; }
.hero-orbit__dot { background: var(--brand-accent); border: 5px solid rgba(255,255,255,.15); border-radius: 50%; height: 18px; position: absolute; width: 18px; }
.hero-orbit__dot--one { right: 3px; top: 95px; }
.hero-orbit__dot--two { bottom: 45px; left: 20px; }

.process-strip {
    align-items: stretch;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 1.25rem;
    box-shadow: var(--shadow-md);
    display: grid;
    grid-template-columns: 1.1fr repeat(3, 1fr);
    margin: -34px 2.25rem 0;
    overflow: hidden;
    position: relative;
    z-index: 2;
}
.process-strip__intro, .process-step { padding: 1.55rem 1.6rem; }
.process-strip__intro { background: var(--brand-sky); display: flex; flex-direction: column; justify-content: center; }
.process-strip__intro strong { color: var(--brand-navy); font-size: .94rem; margin-top: .3rem; }
.process-step { align-items: center; border-left: 1px solid var(--line); display: flex; gap: .8rem; }
.process-step__number { color: var(--brand-accent); font-size: 1.35rem; font-weight: 800; letter-spacing: -.04em; }
.process-step strong, .process-step small { display: block; }
.process-step strong { color: var(--brand-navy); font-size: .8rem; }
.process-step small { color: #8291a0; font-size: .65rem; margin-top: .2rem; }

/* ---------- Login ---------- */
.login-page .public-main { align-items: center; display: flex; padding-bottom: 4rem; padding-top: 4rem; }
.login-shell { background: #fff; border: 1px solid var(--line); border-radius: 1.5rem; box-shadow: var(--shadow-md); display: grid; grid-template-columns: 1.15fr .85fr; margin: auto; max-width: 1020px; min-height: 560px; overflow: hidden; }
.login-aside {
    background-color: var(--brand-primary);
    background-image: linear-gradient(145deg, rgba(0,38,75,.9), rgba(0,75,133,.64)), url('../img/bg-general.png');
    background-position: center;
    background-size: cover;
    color: #fff;
    flex-direction: column;
    justify-content: space-between;
    padding: 4rem;
    position: relative;
}
.login-aside::before { border: 1px solid rgba(91,197,242,.28); border-radius: 50%; content: ''; height: 360px; position: absolute; right: -180px; top: -130px; width: 470px; }
.login-aside__kicker { color: var(--brand-accent); font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.login-aside h1 { font-size: 2.45rem; font-weight: 720; letter-spacing: -.045em; line-height: 1.08; margin: 1.3rem 0; }
.login-aside p { color: rgba(255,255,255,.7); line-height: 1.7; max-width: 390px; }
.login-aside__trust { align-items: center; backdrop-filter: blur(8px); background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.15); border-radius: .9rem; display: flex; gap: .85rem; padding: .85rem 1rem; }
.login-aside__trust > i { color: var(--brand-accent); font-size: 1.3rem; }
.login-aside__trust strong, .login-aside__trust small { display: block; }
.login-aside__trust strong { font-size: .8rem; }.login-aside__trust small { color: rgba(255,255,255,.62); font-size: .66rem; }
.login-panel { align-self: center; padding: 3.5rem; }
.login-panel__heading { margin-bottom: 2rem; }
.login-icon { align-items: center; background: var(--brand-accent-soft); border-radius: .9rem; color: var(--brand-primary); display: flex; font-size: 1.35rem; height: 50px; justify-content: center; margin-bottom: 1.5rem; width: 50px; }
.login-panel h2 { color: var(--brand-navy); font-size: 2rem; font-weight: 750; letter-spacing: -.04em; margin: .4rem 0; }
.login-panel__heading p { color: var(--brand-muted); font-size: .86rem; }
.input-icon-wrap { position: relative; }
.input-icon-wrap > i { color: #8ca0b1; left: .9rem; position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; }
.input-icon-wrap .form-control { padding-left: 2.5rem; }
.login-form .btn i { float: right; }

/* ---------- Formulario público ---------- */
.form-page .public-main { background: radial-gradient(circle at 15% 10%, rgba(91,197,242,.12), transparent 30%); padding-top: 2.7rem; }
.form-page-heading { margin: 0 auto 1.8rem; max-width: 900px; text-align: center; }
.form-page-heading .back-link { align-items: center; color: #718294; display: inline-flex; font-size: .75rem; gap: .4rem; margin-bottom: 1.8rem; text-decoration: none; }
.form-page-heading .back-link:hover { color: var(--brand-primary); transform: translateX(-2px); }
.form-page-heading h1 { color: var(--brand-navy); font-size: clamp(1.8rem, 3vw, 2.65rem); font-weight: 760; letter-spacing: -.045em; margin: .45rem 0; }
.form-page-heading p { color: var(--brand-muted); }
.form-wizard-card { box-shadow: var(--shadow-md); }
.secure-notice { border-left: 4px solid var(--brand-accent); }
.privacy-consent {
    align-items: flex-start;
    background: linear-gradient(135deg, #e8f7fd, #f3fbff);
    border: 1px solid #c9eaf7;
    border-left: 4px solid var(--brand-accent);
    border-radius: 1rem;
    color: var(--brand-primary-dark);
    display: flex;
    gap: 1rem;
    padding: 1.3rem;
}
.privacy-consent--invalid { background: #fff4f4; border-color: #e7a8ae; border-left-color: #dc3545; }
.privacy-consent__icon {
    align-items: center;
    background: #fff;
    border: 1px solid #cce9f5;
    border-radius: .75rem;
    color: var(--brand-primary);
    display: flex;
    flex: 0 0 auto;
    font-size: 1.3rem;
    height: 44px;
    justify-content: center;
    width: 44px;
}
.privacy-consent__content { flex: 1; min-width: 0; }
.privacy-consent__eyebrow { color: var(--brand-primary); display: block; font-size: .61rem; font-weight: 800; letter-spacing: .12em; margin-bottom: .2rem; text-transform: uppercase; }
.privacy-consent__content > strong { color: var(--brand-navy); display: block; font-size: .98rem; margin-bottom: .35rem; }
.privacy-consent__content > p { color: #45647c; font-size: .78rem; line-height: 1.6; margin-bottom: .8rem; }
.privacy-consent__check { background: rgba(255,255,255,.72); border: 1px solid rgba(177,218,235,.8); border-radius: .72rem; padding: .8rem .9rem .8rem 2.55rem; }
.privacy-consent__check .form-check-input { margin-left: -1.65rem; margin-top: .15rem; }
.privacy-consent__check .form-check-label { color: #264960; cursor: pointer; font-size: .75rem; font-weight: 650; line-height: 1.55; }
.privacy-consent__legal { color: #6b8292; display: block; font-size: .65rem; line-height: 1.5; margin-top: .65rem; }
.wizard-steps { margin: 2.3rem 0 2.8rem; }
.wizard-step:not(:last-child)::after { background: #dfe8f0; height: 3px; top: 1.38rem; }
.wizard-step .circle { border: 4px solid #fff; box-shadow: 0 0 0 1px #d9e4ed; height: 2.85rem; width: 2.85rem; }
.wizard-step.active .circle { background: linear-gradient(135deg, #0074b9, var(--brand-primary)); box-shadow: 0 7px 18px rgba(0,75,133,.25); }
.wizard-step.done .circle { box-shadow: 0 7px 18px rgba(25,135,84,.2); }
.wizard-step .label { font-weight: 650; }
.wizard-pane > h2 { color: var(--brand-primary) !important; font-size: .75rem; font-weight: 800; letter-spacing: .09em; }
.doc-upload-card { background: #fbfdff; border: 1px dashed #cbdbe7; border-radius: 1rem; padding: 1.3rem 1rem; }
.doc-upload-card:hover { background: #fff; border-color: var(--brand-accent); box-shadow: var(--shadow-sm); transform: translateY(-3px); }
.doc-upload-card.uploaded { border-style: solid; }
#resumen-revision { background: var(--surface-subtle); border: 1px solid var(--line); border-radius: 1rem; padding: 1.25rem; }

/* ---------- Panel interno ---------- */
.internal-body { background: #eef3f7; }
.app-shell { min-height: 100vh; }
.app-sidebar {
    background: #fff;
    border: 0;
    box-shadow: 8px 0 28px rgba(0,43,82,.055);
    position: relative;
    z-index: 10;
}
.app-sidebar::before { background: linear-gradient(180deg, var(--brand-primary), var(--brand-accent)); content: ''; height: 100%; left: 0; position: absolute; top: 0; width: 4px; }
.app-sidebar .sidebar-brand { border-bottom: 1px solid var(--line); flex-direction: column; gap: .65rem; padding: 1.55rem 1.3rem 1.25rem; }
.app-sidebar .sidebar-brand img { height: 40px !important; max-width: 180px; object-fit: contain; }
.app-sidebar .sidebar-brand span { color: #8392a0; font-size: .62rem; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.app-sidebar .sidebar-scope { background: linear-gradient(135deg, #edf8fd, #f6fbfe); border: 1px solid #d8eef8; border-radius: .7rem; color: var(--brand-primary); font-weight: 650; margin: 1.2rem 1rem .65rem; }
.app-sidebar .nav-link { color: #4f6374; font-size: .86rem; font-weight: 600; margin: .13rem 0; padding: .68rem .9rem; }
.app-sidebar .nav-link i { color: #7c92a5; }
.app-sidebar .nav-link:hover { background: #f2f8fc; color: var(--brand-primary); transform: translateX(2px); }
.app-sidebar .nav-link.active { background: linear-gradient(90deg, #e8f5fb, #f4fafd); border-left: 0; color: var(--brand-primary); font-weight: 750; }
.app-sidebar .nav-link.active i { color: var(--brand-primary); }
.app-sidebar .nav-section-title { color: #9aa8b4; font-size: .62rem; font-weight: 800; letter-spacing: .13em; padding: 1.25rem 1rem .35rem; }
.app-topbar { background: rgba(255,255,255,.93); border-color: var(--line); box-shadow: 0 5px 22px rgba(0,43,82,.04); min-height: 75px; padding: .75rem 1.7rem; position: sticky; top: 0; z-index: 8; }
.topbar-context span, .topbar-context strong { display: block; }.topbar-context span { color: #91a0ad; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; }.topbar-context strong { color: var(--brand-navy); font-size: .85rem; }
.user-menu { color: var(--brand-ink); }.user-menu:hover { color: var(--brand-primary); }.user-menu strong, .user-menu small { line-height: 1.15; }.user-menu strong { font-size: .78rem; }.user-menu small { color: #8493a0; font-size: .65rem; }
.user-avatar { align-items: center; background: linear-gradient(135deg, var(--brand-primary), #0074b9); border: 3px solid #dff3fc; border-radius: 50%; color: #fff; display: flex; font-size: .78rem; font-weight: 800; height: 38px; justify-content: center; width: 38px; }
.app-content main { padding-bottom: 3rem !important; padding-top: 2rem !important; }
.page-heading h1 { color: var(--brand-navy); font-size: 1.7rem; font-weight: 760; letter-spacing: -.035em; }.page-heading p { color: var(--brand-muted); font-size: .83rem; }
.page-heading__icon { align-items: center; background: linear-gradient(135deg, var(--brand-primary), #0074b9); border-radius: .9rem; box-shadow: 0 10px 24px rgba(0,75,133,.2); color: #fff; font-size: 1.35rem; height: 52px; justify-content: center; width: 52px; }
.internal-body .table { color: #354b5e; font-size: .82rem; }
.internal-body .table thead th { background: #f3f7fa; border-bottom: 1px solid var(--line); color: #66798a; font-size: .66rem; font-weight: 800; letter-spacing: .055em; padding: .9rem 1rem; text-transform: uppercase; white-space: nowrap; }
.internal-body .table tbody td { border-color: #edf1f5; padding: .9rem 1rem; }.internal-body .table-hover > tbody > tr:hover > * { background: #f4fafd; }
.internal-body .dropdown-menu { border: 1px solid var(--line); border-radius: .75rem; box-shadow: var(--shadow-md); }

@keyframes cardEnter { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes heroCtaAttention {
    0%, 58%, 100% {
        border-color: #fff;
        box-shadow: 0 8px 18px rgba(0, 25, 52, .14);
        transform: translateY(0) scale(1);
    }
    66% {
        border-color: var(--brand-accent);
        box-shadow: 0 0 0 5px rgba(91, 197, 242, .18), 0 15px 30px rgba(0, 25, 52, .24);
        transform: translateY(-5px) scale(1.025);
    }
    72% { transform: translateY(1px) scale(.995); }
    79% {
        border-color: #a9e7ff;
        box-shadow: 0 0 0 3px rgba(91, 197, 242, .12), 0 10px 22px rgba(0, 25, 52, .18);
        transform: translateY(-2px) scale(1.01);
    }
    87% { transform: translateY(0) scale(1); }
}
@keyframes heroCtaRing {
    0%, 58%, 100% { opacity: 0; transform: scale(1); }
    65% { opacity: .8; transform: scale(1); }
    84% { opacity: 0; transform: scale(1.1, 1.3); }
}
@keyframes heroCtaArrow {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(4px); }
}
.home-hero, .login-shell, .form-wizard-card, .internal-body main .card { animation: cardEnter .48s ease both; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

@media (max-width: 1199.98px) {
    .home-hero { padding: 4rem; }
    .process-strip { grid-template-columns: repeat(3, 1fr); }.process-strip__intro { display: none; }
}

@media (max-width: 991.98px) {
    .home-hero { min-height: auto; padding: 4rem 3rem; }
    .login-shell { display: block; max-width: 520px; min-height: 0; }
    .offcanvas .app-sidebar { box-shadow: none; display: block !important; height: 100%; width: 100%; }
}

@media (max-width: 767.98px) {
    .public-navbar { min-height: 68px; }.public-navbar .navbar-brand img { height: 38px; }
    .public-main { padding: 1.25rem 0 2rem; }
    .home-hero { border-radius: 1.25rem; padding: 3.2rem 1.4rem; }
    .home-hero h1 { font-size: 2.6rem; }.hero-lead { font-size: .95rem; }
    .process-strip { display: block; margin: 1rem 0 0; }.process-step { border-left: 0; border-top: 1px solid var(--line); padding: 1rem 1.2rem; }
    .login-page .public-main { padding: 1.5rem 0 2.5rem; }.login-panel { padding: 2rem 1.5rem; }
    .form-page-heading { margin-bottom: 1.3rem; }.form-page-heading .back-link { margin-bottom: 1.1rem; }
    .form-wizard-card .card-body { padding: 1.25rem !important; }
    .privacy-consent { gap: .7rem; padding: 1rem; }.privacy-consent__icon { height: 38px; width: 38px; }.privacy-consent__content > p { font-size: .73rem; }
    .wizard-steps { margin: 1.6rem 0 2rem; }.wizard-step .label { font-size: .66rem; }.wizard-step .circle { height: 2.45rem; width: 2.45rem; }.wizard-step:not(:last-child)::after { top: 1.18rem; }
    .app-topbar { min-height: 64px; padding: .6rem 1rem; }.app-content main { padding-top: 1.25rem !important; }
}
