:root {
    /* Brand Navy — matches app icon / logo (#23439E → #0B1E5C · 135°) */
    --brand-navy-start: #23439E;
    --brand-navy-end: #0B1E5C;
    --brand-gradient: linear-gradient(135deg, #23439E, #0B1E5C);
    --brand-gradient-hover: linear-gradient(135deg, #1c3880, #091848);
    --brand-navy-start-rgb: 35, 67, 158;
    --brand-navy-end-rgb: 11, 30, 92;

    /* Semantic aliases */
    --primary-color: var(--brand-navy-start);
    --primary: var(--brand-navy-start);
    --accent: var(--brand-navy-end);
    --gradient-primary: var(--brand-gradient);

    --brand-bg-subtle: rgba(35, 67, 158, 0.08);
    --brand-bg-hover: rgba(35, 67, 158, 0.12);
    --brand-focus-ring: rgba(35, 67, 158, 0.25);
    --brand-shadow: rgba(35, 67, 158, 0.2);

    /* Opacity variants for backgrounds, borders, shadows */
    --brand-navy-a05: rgba(35, 67, 158, 0.05);
    --brand-navy-a08: rgba(35, 67, 158, 0.08);
    --brand-navy-a10: rgba(35, 67, 158, 0.1);
    --brand-navy-a15: rgba(35, 67, 158, 0.15);
    --brand-navy-a18: rgba(35, 67, 158, 0.18);
    --brand-navy-a20: rgba(35, 67, 158, 0.2);
    --brand-navy-a25: rgba(35, 67, 158, 0.25);
    --brand-navy-a30: rgba(35, 67, 158, 0.3);
    --brand-navy-a35: rgba(35, 67, 158, 0.35);
    --brand-navy-a45: rgba(35, 67, 158, 0.45);
    --brand-navy-a50: rgba(35, 67, 158, 0.5);
    --brand-navy-end-a05: rgba(11, 30, 92, 0.05);
    --brand-navy-end-a10: rgba(11, 30, 92, 0.1);
    --brand-navy-end-a15: rgba(11, 30, 92, 0.15);

    /* Bootstrap overrides */
    --bs-primary: #23439E;
    --bs-primary-rgb: 35, 67, 158;
    --bs-btn-bg: #23439E;
    --bs-btn-border-color: #23439E;
}

.btn-primary,
.btn-gradient-primary {
    background: var(--brand-gradient) !important;
    border-color: var(--brand-navy-start) !important;
    color: #fff !important;
}

.btn-primary:hover:not(:disabled),
.btn-gradient-primary:hover:not(:disabled) {
    background: var(--brand-gradient-hover) !important;
    border-color: var(--brand-navy-end) !important;
    opacity: 0.95;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px -2px var(--brand-shadow);
    transition: all 0.2s ease;
}

.btn-primary:active:not(:disabled),
.btn-gradient-primary:active:not(:disabled) {
    transform: translateY(0);
}

.btn-primary:disabled,
.btn-gradient-primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-outline-primary {
    color: var(--brand-navy-start) !important;
    border-color: var(--brand-navy-start) !important;
}

.btn-outline-primary:hover {
    background: var(--brand-bg-subtle) !important;
    color: var(--brand-navy-end) !important;
}

.bg-primary {
    background: var(--brand-gradient) !important;
}

.text-primary {
    color: var(--brand-navy-start) !important;
}

.link-primary,
a.link-primary {
    color: var(--brand-navy-start) !important;
}

.gradient-text-primary {
    background: var(--brand-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.form-check-input:checked,
input[type="checkbox"]:checked {
    background-color: var(--brand-navy-start) !important;
    border-color: var(--brand-navy-start) !important;
}

textarea:focus,
input[type="text"]:focus,
input[type="password"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="time"]:focus,
input[type="week"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
input[type="checkbox"]:focus,
.uneditable-input:focus,
.form-control:focus {
    border-color: var(--brand-navy-start);
    box-shadow: 0 0 0 0.25rem var(--brand-focus-ring);
}
