*, *::before, *::after { box-sizing: border-box; }

:root {
    --jb-primary: #1565c0;
    --jb-primary-rgb: 21, 101, 192;
    --jb-primary-dark: #0d47a1;
    --jb-primary-darker: #0d3b66;
    --jb-primary-darker-rgb: 13, 59, 102;
    --jb-primary-mid: #1e88e5;
    --jb-primary-accent: #42a5f5;
    --jb-primary-soft: #64b5f6;
    --jb-primary-light: #e3f2fd;
    --jb-primary-subtle: #eef4fb;
    --jb-bg-start: #eef2f7;
    --jb-bg-end: #d9e4f0;
}

html, body {
    margin: 0;
    padding: 0;
    min-height: 100%;
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-size: 15px;
    color: #1a2b3c;
    background: linear-gradient(135deg, var(--jb-bg-start) 0%, var(--jb-bg-end) 100%);
    background-attachment: fixed;
}

body { display: flex; flex-direction: column; min-height: 100vh; }

a { color: var(--jb-primary); text-decoration: none; }
a:hover { text-decoration: underline; }

.navbar {
    background: var(--jb-primary-darker);
    color: #fff;
    box-shadow: 0 2px 12px rgba(0,0,0,.15);
}

.navbar-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    min-height: 56px;
    flex-wrap: wrap;
}

.navbar-brand {
    display: flex;
    align-items: center;
    gap: .5rem;
    color: #fff;
    font-weight: 700;
    font-size: 1.1rem;
    text-decoration: none;
}

.navbar-links { display: flex; gap: .25rem; flex: 1; flex-wrap: wrap; }

.nav-link {
    color: rgba(255,255,255,.85);
    padding: .5rem .75rem;
    border-radius: 6px;
    text-decoration: none;
}

.nav-link:hover, .nav-link.active { background: rgba(255,255,255,.12); color: #fff; text-decoration: none; }

.navbar-user { display: flex; align-items: center; gap: .75rem; color: rgba(255,255,255,.9); }
.nav-logout { color: #fff; }

.navbar-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    flex-direction: column;
    gap: 4px;
    padding: .5rem;
}

.navbar-toggle span { display: block; width: 22px; height: 2px; background: #fff; }

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1.5rem 1rem 2rem;
    flex: 1;
    width: 100%;
}

h1 { margin: 0 0 1rem; font-size: 1.6rem; color: var(--jb-primary-darker); }
h2 { margin: 0 0 .75rem; font-size: 1.2rem; color: var(--jb-primary-darker); }

.card {
    background: #fff;
    border-radius: 10px;
    padding: 1.25rem;
    margin-bottom: 1rem;
    box-shadow: 0 2px 10px rgba(0,0,0,.06);
}

.card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    gap: .5rem;
}

.card-header--collapsible {
    justify-content: flex-start;
}

.card-collapse-trigger {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    padding: 0;
    border: none;
    background: transparent;
    cursor: pointer;
    color: inherit;
    text-align: left;
}

.card-collapse-trigger h2 {
    margin: 0;
    transition: color .15s ease;
}

.card-collapse-icon {
    color: #8a97a5;
    font-size: .8rem;
    line-height: 1;
    flex-shrink: 0;
    transition: color .15s ease;
}

.card-collapse-trigger:hover h2 {
    color: var(--jb-primary);
}

.card-collapse-trigger:hover .card-collapse-icon {
    color: #5a6b7c;
}

.card-collapsible.is-collapsed .card-header {
    margin-bottom: 0;
}

.card-collapsible.is-collapsed .card-collapsible-body {
    display: none;
}

.card-header-title h2 {
    margin: 0 0 .15rem;
}

.summary-view-toggle {
    display: flex;
    gap: .35rem;
    flex-wrap: wrap;
}

.summary-view-btn.is-active {
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .06);
}

.monthly-charts-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
}

.monthly-chart-block {
    min-width: 0;
}

.monthly-chart-title {
    margin: 0 0 .75rem;
    font-size: .95rem;
    font-weight: 600;
    color: var(--jb-primary-darker);
}

.monthly-chart-wrap {
    position: relative;
    height: min(440px, 62vh);
    min-height: 280px;
    padding-bottom: .25rem;
}

.data-table-monthly .col-month { width: 9rem; white-space: nowrap; position: relative; }

.data-table-category .col-category-name {
    min-width: 9rem;
    white-space: nowrap;
    position: relative;
}

#category-summary-card {
    margin-top: 1.25rem;
}

.monthly-chart-wrap-category {
    height: min(480px, 68vh);
}

.data-table-monthly thead th.col-type {
    text-align: center !important;
}

.data-table-monthly tbody td.col-type {
    text-align: center !important;
}

.data-table-monthly tbody tr.data-table-row-link .monthly-row-hint {
    position: absolute;
    left: 0;
    bottom: calc(100% + 6px);
    padding: .35rem .65rem;
    font-size: .75rem;
    font-weight: 500;
    color: #fff;
    background: var(--jb-primary-darker);
    border-radius: 6px;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    z-index: 3;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
    transition: opacity .15s ease;
}

.data-table-monthly tbody tr.data-table-row-link:hover .monthly-row-hint,
.data-table-monthly tbody tr.data-table-row-link:focus-visible .monthly-row-hint {
    opacity: 1;
}

.data-table-monthly tbody tr.data-table-row-link {
    cursor: pointer;
}

.data-table-monthly tbody tr.data-table-row-link:hover td,
.data-table-monthly tbody tr.data-table-row-link:focus-visible td {
    background: var(--jb-primary-subtle);
}

.data-table-monthly tbody tr.data-table-row-link:focus {
    outline: none;
}

.data-table-monthly tbody tr.data-table-row-link:focus-visible {
    outline: 2px solid var(--jb-primary);
    outline-offset: -2px;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.stat-card {
    background: #fff;
    border-radius: 10px;
    padding: 1.25rem;
    box-shadow: 0 2px 10px rgba(0,0,0,.06);
}

a.stat-card-link {
    display: block;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: box-shadow .15s ease, transform .15s ease;
}

a.stat-card-link:hover,
a.stat-card-link:focus-visible {
    box-shadow: 0 4px 16px rgba(0,0,0,.1);
    transform: translateY(-1px);
}

a.stat-card-link:focus {
    outline: none;
}

a.stat-card-link:focus-visible {
    outline: 2px solid var(--jb-primary);
    outline-offset: 2px;
}

.stat-card h3 { margin: 0 0 .5rem; font-size: .95rem; color: #5a6b7c; }
.stat-value {
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0;
    color: var(--jb-primary-darker);
    white-space: nowrap;
}
.stat-meta { margin: .25rem 0 0; color: #7a8b9c; font-size: .85rem; }
.stat-meta-hint { margin: .75rem 0 0; padding: .65rem .85rem; background: #f4f7fa; border-radius: 6px; color: #5a6b7c; }
.stat-card-total { border-left: 4px solid var(--jb-primary); }

.dashboard-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.dashboard-header h1 { margin: 0; }

.dashboard-filters {
    margin-bottom: 1.25rem;
    padding: .85rem 1rem;
}

.dashboard-period-picker {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.dashboard-period-step {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    flex-wrap: wrap;
}

.dashboard-period-step-label {
    font-size: .75rem;
    font-weight: 600;
    color: #5a6b7c;
    text-transform: uppercase;
    letter-spacing: .04em;
    flex: 0 0 6.5rem;
    width: 6.5rem;
    padding-top: .45rem;
}

.dashboard-chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    flex: 1;
}

.dashboard-category-filter {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    flex: 1;
    min-width: 0;
}

.dashboard-category-filter .dashboard-chip-list {
    flex: none;
    width: 100%;
}

.dashboard-chip {
    display: inline-flex;
    align-items: center;
    padding: .35rem .7rem;
    border-radius: 6px;
    font-size: .85rem;
    text-decoration: none;
    background: #e8edf2;
    color: #1a2b3c;
    border: 1px solid transparent;
    transition: background .15s, color .15s;
}

.dashboard-chip:hover {
    background: #d5dde6;
    text-decoration: none;
    color: #1a2b3c;
}

.dashboard-chip.is-active {
    background: var(--jb-primary);
    color: #fff;
    border-color: var(--jb-primary);
}

.dashboard-chip.is-active:hover {
    background: var(--jb-primary-dark);
    color: #fff;
}

.dashboard-chip i {
    margin-right: .35rem;
}

.dashboard-chip-muted {
    background: #f4f7fa;
    border-color: #d5dde6;
}

.dashboard-chip-muted:hover {
    background: #e8edf2;
}

.operations-search-row {
    width: 100%;
    padding-top: .85rem;
    margin-top: .15rem;
    border-top: 1px solid #e8edf2;
}

.category-search-row.operations-search-row {
    border-top: none;
    padding-top: 0;
    margin: 0.75rem 0 1rem;
}

.category-search-empty {
    margin: 0 0 1rem;
}

tr.admin-auto-rule-view[hidden],
tr.admin-auto-rule-edit[hidden],
.category-list-item[hidden] {
    display: none !important;
}

.operations-search-field {
    display: flex;
    align-items: center;
    gap: .65rem;
    width: 100%;
    padding: .55rem .85rem .55rem .75rem;
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    border: 1px solid #dbe3ec;
    border-radius: 12px;
    box-shadow: inset 0 1px 2px rgba(var(--jb-primary-darker-rgb), .04);
}

.operations-search-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    background: rgba(var(--jb-primary-rgb), .08);
    color: var(--jb-primary);
    flex-shrink: 0;
    font-size: .9rem;
}

.operations-search-input {
    flex: 1;
    min-width: 0;
    padding: .35rem 0;
    border: none;
    background: transparent;
    font-size: .95rem;
    color: #1a2b3c;
    line-height: 1.4;
}

.operations-search-input::placeholder {
    color: #8a9bab;
}

.operations-search-input:focus {
    outline: none;
}

.operations-search-input::-webkit-search-cancel-button {
    display: none;
}

.operations-search-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    padding: 0;
    border: none;
    border-radius: 999px;
    background: #e8edf2;
    color: #5a6b7c;
    cursor: pointer;
    flex-shrink: 0;
    transition: background .15s, color .15s, transform .15s;
}

.operations-search-clear:hover {
    background: #d5dde6;
    color: #1a2b3c;
}

.operations-search-clear:active {
    transform: scale(.94);
}

#operations-results.is-loading {
    opacity: .65;
    pointer-events: none;
}

#operations-flow-wrap.is-loading {
    opacity: .65;
}

.stats-grid-flow { margin-bottom: 1rem; }

.stat-card-in { border-left: 4px solid #2e7d32; }
.stat-card-out { border-left: 4px solid #c62828; }
.stat-card-net { border-left: 4px solid var(--jb-primary); }

.data-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    background: #fff;
    border-radius: 8px;
}

.data-table th, .data-table td {
    padding: .65rem .75rem;
    text-align: left;
    border-bottom: 1px solid #e8edf2;
    vertical-align: middle;
    overflow: hidden;
}

.data-table th { background: #f4f7fa; font-weight: 600; font-size: .85rem; color: #5a6b7c; }
.data-table tr:hover td { background: #fafbfc; }

.data-table .col-date {
    width: 6.25rem;
    white-space: nowrap;
}

.data-table .col-type {
    width: 8.75rem;
    white-space: nowrap;
}

.data-table .col-amount {
    width: 8rem;
    white-space: nowrap;
    text-align: right !important;
}

.data-table .col-libelle {
    width: auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.data-table-operations {
    width: 100%;
    table-layout: auto;
}

.data-table-operations th,
.data-table-operations td {
    overflow: visible;
}

.data-table-operations .col-date,
.data-table-operations .col-type,
.data-table-operations .col-amount,
.data-table-operations .col-action {
    width: 1%;
    white-space: nowrap;
}

.data-table-operations .col-libelle {
    width: 100%;
    min-width: 12rem;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
    word-break: break-word;
    overflow-wrap: anywhere;
    vertical-align: top;
}

.data-table-operations th.col-sortable {
    padding: 0;
}

.operations-sort-link {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    width: 100%;
    padding: .65rem .75rem;
    color: inherit;
    text-decoration: none;
    font-weight: 600;
}

.operations-sort-link:hover {
    color: var(--jb-primary);
    text-decoration: none;
    background: var(--jb-primary-subtle);
}

.data-table-operations th.col-sortable[aria-sort="ascending"] .operations-sort-link,
.data-table-operations th.col-sortable[aria-sort="descending"] .operations-sort-link {
    color: var(--jb-primary-darker);
}

.operations-sort-link i {
    font-size: .75rem;
    opacity: .75;
}

.data-table-operations th.col-sortable[aria-sort="ascending"] .operations-sort-link i,
.data-table-operations th.col-sortable[aria-sort="descending"] .operations-sort-link i {
    opacity: 1;
}

.data-table-operations th.col-amount .operations-sort-link {
    justify-content: flex-end;
}

.operations-category-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
    padding: .85rem 1rem;
}

.operations-category-banner-text {
    margin: 0;
    color: #3d5166;
}

.operation-libelle-cell {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .35rem;
}

.operation-libelle-text {
    line-height: 1.4;
}

.operation-category-badge {
    flex-shrink: 0;
}

.operations-category-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    margin: 0 0 .85rem;
}

.operations-category-edit-hint {
    margin: 0;
    font-size: .85rem;
    color: #7a8b9c;
    line-height: 1.35;
}

.operations-category-toolbar.is-editing .operations-category-edit-hint {
    display: none;
}

.operations-category-toolbar.is-editing > #operations-category-edit-start {
    display: none;
}

.operations-category-edit-panel {
    display: none;
    align-items: center;
}

.operations-category-toolbar.is-editing .operations-category-edit-panel {
    display: flex;
}

.operations-category-edit-form {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    margin: 0;
}

.operations-category-field {
    display: inline-flex;
    align-items: center;
}

.operations-category-select {
    position: relative;
    display: inline-flex;
    min-width: 13rem;
    max-width: 20rem;
}

.operations-category-picker {
    width: 100%;
    height: 2.25rem;
    margin: 0;
    box-sizing: border-box;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding: 0 2.5rem 0 .85rem;
    border: 1px solid #c5d0dc;
    border-radius: 8px;
    background-color: #fff;
    background-image: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
    font-size: .85rem;
    font-weight: 500;
    line-height: 1;
    color: #1a2b3c;
    cursor: pointer;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

.operations-category-picker:hover {
    border-color: var(--jb-primary-soft);
    background-image: linear-gradient(180deg, #fff 0%, #f4f8fc 100%);
}

.operations-category-picker:focus {
    outline: none;
    border-color: var(--jb-primary);
    box-shadow: 0 0 0 3px rgba(var(--jb-primary-rgb), .14), 0 1px 2px rgba(15, 23, 42, .05);
    background-image: none;
    background-color: #fff;
}

.operations-category-picker:disabled {
    cursor: not-allowed;
    opacity: .65;
    background: #f4f7fa;
}

.operations-category-select-chevron {
    position: absolute;
    top: 1px;
    right: 1px;
    bottom: 1px;
    width: 2.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    color: var(--jb-primary-mid);
    font-size: .7rem;
    border-left: 1px solid #e2e8f0;
    background: rgba(248, 250, 252, .95);
    border-radius: 0 7px 7px 0;
    transition: color .15s ease, border-color .15s ease, background .15s ease;
}

.operations-category-picker:focus + .operations-category-select-chevron {
    border-left-color: var(--jb-primary-soft);
    color: var(--jb-primary);
    background: #fff;
}

.operations-category-edit-form .btn-sm {
    min-height: 2.25rem;
    height: 2.25rem;
    padding: 0 .75rem;
    box-sizing: border-box;
    border-radius: 8px;
    font-size: .85rem;
    line-height: 1;
}

.operations-category-selection-meta {
    display: inline-flex;
    align-items: center;
    min-height: 2.25rem;
    margin: 0;
}

.operations-category-edit-mode #operations-table tbody tr[data-operation-id] {
    cursor: pointer;
}

.operations-category-edit-mode #operations-table tbody tr[data-operation-id]:hover td {
    background: var(--jb-primary-subtle);
}

.operations-category-edit-mode #operations-table tbody tr.is-selected td {
    background: var(--jb-primary-light);
}

.operations-category-edit-mode #operations-table tbody tr.is-selected td:first-child {
    box-shadow: inset 3px 0 0 var(--jb-primary-soft);
}

.operations-category-edit-mode #operations-table tbody tr.is-selected:hover td {
    background: #d9ebfa;
}

.operations-category-edit-mode #operations-table tbody tr.is-selected:hover td:first-child {
    box-shadow: inset 3px 0 0 var(--jb-primary-accent);
}

.badge-category {
    background: var(--jb-primary-light);
    color: var(--jb-primary-darker);
}

.admin-category-intro {
    margin: 0 0 1.25rem;
}

.category-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.category-list-item {
    border: 1px solid #e8edf2;
    border-radius: 8px;
    background: #fafbfc;
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

.category-list-item:hover {
    border-color: #d5dde6;
    background: #fff;
}

.category-list-item.is-editing {
    background: #fff;
    border-color: var(--jb-primary-soft);
    box-shadow: 0 0 0 3px rgba(var(--jb-primary-rgb), .08);
}

.category-list-view {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .65rem .85rem;
}

.category-list-label {
    font-size: .8rem;
    font-weight: 600;
}

.category-list-actions {
    display: flex;
    align-items: center;
    gap: .4rem;
    flex-shrink: 0;
}

.category-list-edit {
    display: none;
    align-items: center;
    gap: .5rem;
    padding: .55rem .85rem;
}

.category-list-item.is-editing .category-list-view {
    display: none;
}

.category-list-item.is-editing .category-list-edit {
    display: flex;
}

.admin-category-edit-form {
    margin: 0;
}

.admin-category-edit-form input[type="text"] {
    flex: 1;
    min-width: 0;
    padding: .45rem .6rem;
    border: 1px solid #d8e0e8;
    border-radius: 6px;
    font-size: .9rem;
}

.admin-category-edit-form input[type="text"]:focus {
    outline: none;
    border-color: var(--jb-primary);
    box-shadow: 0 0 0 3px rgba(var(--jb-primary-rgb), .12);
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.table-wrap {
    overflow-x: auto;
    max-width: 100%;
    width: 100%;
    -webkit-overflow-scrolling: touch;
    border-radius: 8px;
}

.table-wrap-fit {
    overflow-x: visible;
}

.text-right { text-align: right !important; }
.amount-positive { color: #2e7d32; font-weight: 600; }
.amount-negative { color: #c62828; font-weight: 600; }

.badge {
    display: inline-block;
    padding: .2rem .5rem;
    border-radius: 4px;
    font-size: .75rem;
    font-weight: 600;
}

.badge-courant { background: var(--jb-primary-light); color: var(--jb-primary); }
.badge-carte { background: #fce4ec; color: #ad1457; }
.badge-ldd { background: #fff3e0; color: #e65100; }
.badge-livret_a { background: #f3e5f5; color: #6a1b9a; }
.badge-muted { background: #f4f7fa; color: #5a6b7c; }
.badge-ignored { background: #eceff1; color: #607d8b; margin-left: .25rem; }

.data-table .col-action {
    width: 7.5rem;
    text-align: right;
    white-space: nowrap;
}

.data-table tr.op-ignored td {
    opacity: .55;
}

.data-table tr.op-ignored .col-libelle,
.data-table tr.op-ignored .col-amount {
    text-decoration: line-through;
}

.data-table tr.op-ignored .col-type .badge:not(.badge-ignored) {
    opacity: .7;
}

.btn-outline {
    background: transparent;
    color: #5a6b7c;
    border: 1px solid #c5d0db;
}

.btn-outline:hover {
    background: #f4f7fa;
    color: #1a2b3c;
    text-decoration: none;
}

.stats-grid-accounts {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.stat-card-courant { border-left: 4px solid var(--jb-primary); }
.stat-card-carte { border-left: 4px solid #ad1457; }
.stat-card-ldd { border-left: 4px solid #e65100; }
.stat-card-livret_a { border-left: 4px solid #6a1b9a; }

.btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .55rem 1rem;
    border: none;
    border-radius: 6px;
    font-size: .9rem;
    cursor: pointer;
    text-decoration: none;
    font-family: inherit;
}

.btn-primary { background: var(--jb-primary); color: #fff; }
.btn-primary:hover { background: var(--jb-primary-dark); color: #fff; text-decoration: none; }
.btn-secondary { background: #e8edf2; color: #1a2b3c; }
.btn-secondary:hover { background: #d5dde6; text-decoration: none; }
.btn-danger { background: #c62828; color: #fff; }
.btn-danger:hover { background: #b71c1c; color: #fff; text-decoration: none; }
.btn-danger:disabled { opacity: .55; cursor: not-allowed; }
.btn-sm { padding: .35rem .65rem; font-size: .8rem; }
.btn-block { width: 100%; justify-content: center; }

.alert {
    max-width: 1200px;
    margin: 1rem auto 0;
    padding: .75rem 1rem;
    border-radius: 6px;
}

.container > .alert {
    margin: 1rem 0;
    max-width: none;
}

.alert-error { background: #ffebee; color: #b71c1c; border: 1px solid #ef9a9a; }
.alert-success { background: #e8f5e9; color: #1b5e20; border: 1px solid #a5d6a7; }
.alert-warning { background: #fff8e1; color: #f57f17; border: 1px solid #ffe082; }

.form-group { margin-bottom: 1rem; }
.form-group label,
.form-group-label { display: block; margin-bottom: .35rem; font-weight: 600; font-size: .9rem; color: var(--jb-primary-darker); }
.form-group input[type="text"],
.form-group input[type="password"],
.form-group select {
    width: 100%;
    padding: .6rem .75rem;
    border: 1px solid #ccd5df;
    border-radius: 6px;
    font-size: .95rem;
}

.file-upload { position: relative; }

.file-upload-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.file-upload-dropzone {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    padding: 2rem 1.5rem;
    border: 2px dashed #b8c5d3;
    border-radius: 12px;
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    cursor: pointer;
    transition: border-color .2s, background .2s, box-shadow .2s;
    text-align: center;
}

.file-upload-dropzone:hover,
.file-upload.is-dragover .file-upload-dropzone {
    border-color: var(--jb-primary);
    background: linear-gradient(180deg, var(--jb-primary-subtle) 0%, var(--jb-primary-light) 100%);
    box-shadow: 0 0 0 4px rgba(var(--jb-primary-rgb), .08);
}

.file-upload-dropzone:focus {
    outline: none;
    border-color: var(--jb-primary);
    box-shadow: 0 0 0 4px rgba(var(--jb-primary-rgb), .15);
}

.file-upload-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: #fff;
    color: var(--jb-primary);
    font-size: 1.35rem;
    box-shadow: 0 2px 8px rgba(var(--jb-primary-rgb), .12);
    margin-bottom: .25rem;
}

.file-upload-title {
    margin: 0;
    font-size: .95rem;
    color: #1a2b3c;
}

.file-upload-title span {
    color: #5a6b7c;
    font-weight: normal;
}

.file-upload-hint {
    margin: 0;
    font-size: .8rem;
    color: #7a8b9c;
}

.file-upload.has-file .file-upload-dropzone {
    display: none;
}

.file-upload-selected {
    display: none;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem;
    border: 1px solid #a5d6a7;
    border-radius: 10px;
    background: #f1f8f4;
}

.file-upload.has-file .file-upload-selected {
    display: flex;
}

.file-upload-file {
    display: flex;
    align-items: center;
    gap: .65rem;
    flex: 1;
    min-width: 0;
}

.file-upload-file .fa-file-excel {
    flex-shrink: 0;
    font-size: 1.35rem;
    color: #2e7d32;
}

.file-upload-name {
    flex: 1;
    min-width: 0;
    font-size: .9rem;
    font-weight: 600;
    color: #1a2b3c;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.file-upload-clear {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: #5a6b7c;
    cursor: pointer;
    transition: background .15s, color .15s;
}

.file-upload-clear:hover {
    background: #e8edf2;
    color: #c62828;
}

.import-progress {
    margin-bottom: 1rem;
    padding: 1.1rem 1.15rem;
    border: 1px solid #b6c8dc;
    border-radius: 12px;
    background: linear-gradient(180deg, #f8fafc 0%, #eef4fa 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}

.import-progress-label {
    margin: 0 0 .75rem;
    font-size: .92rem;
    font-weight: 600;
    color: var(--jb-primary-darker);
}

.import-progress-bar-wrap {
    width: 100%;
}

.import-progress-track {
    position: relative;
    width: 100%;
    height: 1.35rem;
    border-radius: 999px;
    background: #dbe4ee;
    overflow: hidden;
    box-shadow: inset 0 1px 3px rgba(13, 59, 102, .12);
}

.import-progress-fill {
    display: block;
    width: 0;
    height: 100%;
    min-width: 0;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--jb-primary-dark) 0%, var(--jb-primary) 45%, var(--jb-primary-accent) 100%);
    box-shadow: 0 0 12px rgba(var(--jb-primary-rgb), .35);
    transition: width .3s ease;
}

.import-progress.is-preparing .import-progress-fill {
    width: 35% !important;
    animation: import-progress-indeterminate 1.4s ease-in-out infinite;
}

.import-progress.is-active .import-progress-fill {
    background: linear-gradient(90deg, var(--jb-primary) 0%, var(--jb-primary-mid) 60%, var(--jb-primary-soft) 100%);
}

@keyframes import-progress-indeterminate {
    0% { transform: translateX(-120%); }
    100% { transform: translateX(320%); }
}

.import-progress-meta {
    margin: .7rem 0 0;
    font-size: .82rem;
    color: #5a6b7c;
}

#import-error {
    margin: 0 0 1rem;
    max-width: none;
}

.form-check label { font-weight: normal; display: flex; align-items: center; gap: .5rem; }
.form-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.inline-form { display: inline; }

.admin-danger-zone {
    margin-top: 1.5rem;
    border-left: 4px solid #c62828;
}

.admin-danger-intro { margin: 0 0 .35rem; }
.admin-danger-warning { margin: .75rem 0 1rem; color: #5a6b7c; font-size: .9rem; }
.admin-danger-form { margin: 0; }

.admin-settings-card { margin-top: 1.5rem; }
.admin-settings-form { margin: 0; padding: 0; box-shadow: none; }
.admin-settings-form > .btn { margin-top: 1rem; }

.admin-settings-form.admin-category-form {
    margin-top: 1.25rem;
    margin-bottom: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e8edf2;
}

.admin-settings-form.admin-category-form + .admin-settings-form.admin-category-form {
    margin-top: 2rem;
}

.settings-view-fieldset {
    border: 0;
    padding: 0;
    margin: 0 0 1rem;
}

.settings-view-legend {
    display: block;
    margin-bottom: .35rem;
    font-weight: 600;
    font-size: .9rem;
    color: var(--jb-primary-darker);
    padding: 0;
}

.settings-view-radio {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.settings-view-choice label {
    cursor: pointer;
    gap: .35rem;
    background: #e8edf2;
    color: #1a2b3c;
    border-color: transparent;
}

.settings-view-choice label:hover {
    background: #d5dde6;
    color: #1a2b3c;
}

.settings-view-choice label:has(input:checked) {
    background: var(--jb-primary);
    color: #fff;
    border-color: var(--jb-primary);
}

.settings-view-choice label:has(input:checked):hover {
    background: var(--jb-primary-dark);
    color: #fff;
}

.theme-preset-list {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.theme-preset-btn {
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 2px solid transparent;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.theme-preset-btn:hover {
    transform: scale(1.05);
}

.theme-preset-btn.is-selected {
    border-color: var(--jb-primary-darker);
    box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--jb-primary);
}

.theme-color-picker-wrap {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-top: .85rem;
}

.theme-color-picker-wrap label {
    margin: 0;
    font-weight: 600;
    font-size: .9rem;
    color: var(--jb-primary-darker);
}

.theme-color-picker-wrap input[type="color"] {
    width: 3rem;
    height: 2.25rem;
    padding: .15rem;
    border: 1px solid #d8e0e8;
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
}

.import-history-intro { margin: 0 0 1rem; }
.import-row-inactive td {
    color: #8a97a5;
}
.import-history-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    flex-shrink: 0;
}

.data-table-import-history .import-history-actions .btn-sm {
    padding: .45rem .6rem;
    font-size: .85rem;
    line-height: 1;
}

.data-table-import-history .import-history-actions .btn-sm i {
    font-size: .95rem;
}

.import-type-label {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    white-space: nowrap;
}

.import-type-label i {
    font-size: .8rem;
    flex-shrink: 0;
}

.data-table-import-history {
    width: 100%;
    table-layout: auto;
}

.data-table-import-history th,
.data-table-import-history td {
    padding: .5rem .5rem;
    vertical-align: middle;
}

.data-table-import-history .col-import-date,
.data-table-import-history .col-import-type,
.data-table-import-history .col-period,
.data-table-import-history .col-import-count,
.data-table-import-history .col-import-status {
    width: 1%;
    white-space: nowrap;
}

.data-table-import-history .col-import-count {
    text-align: center;
}

.data-table-import-history .import-type-label {
    font-size: inherit;
}

.data-table-import-history .import-type-label i {
    font-size: 1em;
}

.data-table-import-history .col-import-fill {
    width: auto;
    padding: 0;
}

.data-table-import-history .col-import-status {
    text-align: right;
}

.admin-auto-ignore-intro { margin: 0 0 1rem; }

.admin-auto-ignore-table {
    table-layout: auto;
}

.admin-auto-ignore-table th,
.admin-auto-ignore-table td {
    overflow: visible;
}

.admin-auto-ignore-table .col-auto-rule-name,
.admin-auto-ignore-table .col-auto-rule-account,
.admin-auto-ignore-table .col-auto-rule-category,
.admin-auto-ignore-table .col-auto-rule-status,
.admin-auto-ignore-table .col-action {
    width: 1%;
    white-space: nowrap;
}

.admin-auto-ignore-table .col-auto-rule-motif {
    width: auto;
}

.admin-auto-ignore-table .admin-auto-ignore-motif {
    font-size: .85rem;
    background: #f4f7fa;
    padding: .15rem .4rem;
    border-radius: 4px;
    white-space: nowrap;
    display: inline-block;
}
.admin-auto-ignore-inactive td {
    color: #8a97a5;
}
.admin-auto-ignore-form {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e8edf2;
}
.admin-auto-ignore-form-title {
    margin: 0 0 1rem;
    font-size: 1rem;
    color: var(--jb-primary-darker);
}
.admin-auto-ignore-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}

.admin-auto-ignore-form-grid--category-rule {
    grid-template-columns:
        minmax(0, max-content)
        minmax(11rem, 2fr)
        minmax(0, max-content);
    align-items: start;
}

.admin-auto-ignore-form-grid--category-rule .form-group {
    margin-bottom: 0;
    min-width: 0;
}

.admin-auto-ignore-form-grid--category-rule .form-group--rule-category,
.admin-auto-ignore-form-grid--category-rule .form-group--rule-account {
    width: max-content;
    max-width: 14rem;
}

.admin-auto-ignore-form-grid--category-rule .form-group input[type="text"],
.admin-auto-ignore-form-grid--category-rule .form-group select {
    box-sizing: border-box;
    height: 2.5rem;
    padding-top: 0;
    padding-bottom: 0;
}

.admin-auto-ignore-form-grid--category-rule .form-group--rule-category select,
.admin-auto-ignore-form-grid--category-rule .form-group--rule-account select {
    width: auto;
    min-width: 8.5rem;
    max-width: 14rem;
}

.badge-active {
    background: #e8f5e9;
    color: #2e7d32;
}
.badge-inactive {
    background: #f4f7fa;
    color: #7a8b9c;
}

.admin-auto-ignore-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
}

.admin-auto-rule-edit {
    display: none;
}

.admin-auto-rule-edit td {
    padding: .85rem 1rem;
    background: #f4f7fa;
}

.admin-auto-rule-edit-form {
    margin: 0;
}

.admin-auto-rule-edit-form .admin-auto-ignore-form-grid--category-rule {
    grid-template-columns:
        minmax(0, max-content)
        minmax(11rem, 2fr)
        minmax(0, max-content)
        auto;
    align-items: end;
    margin-bottom: 0;
}

.admin-auto-rule-edit-actions {
    display: flex;
    align-items: center;
    gap: .5rem;
    min-height: 2.5rem;
}

.admin-auto-rule-edit-form .form-group--rule-actions .visually-hidden {
    display: block;
    height: 0;
    margin: 0;
    overflow: hidden;
}

tr.admin-auto-rule-view.is-editing-hidden {
    display: none;
}

tr.admin-auto-rule-edit.is-editing-visible {
    display: table-row;
}

.toggle-switch {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .2rem;
    border: none;
    background: transparent;
    cursor: pointer;
    vertical-align: middle;
    border-radius: 999px;
    transition: transform .15s ease;
}

.toggle-switch:hover {
    transform: scale(1.04);
}

.toggle-switch:active {
    transform: scale(0.98);
}

.toggle-switch-track {
    display: block;
    width: 2.6rem;
    height: 1.4rem;
    background: linear-gradient(180deg, #d5dce3 0%, #c5cdd6 100%);
    border-radius: 999px;
    position: relative;
    transition: background .22s ease, box-shadow .22s ease;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, .14);
}

.toggle-switch.is-on .toggle-switch-track {
    background: linear-gradient(180deg, #4caf50 0%, #388e3c 100%);
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .12);
}

.toggle-switch-thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 1.1rem;
    height: 1.1rem;
    background: #fff;
    border-radius: 50%;
    transition: transform .22s cubic-bezier(.4, 0, .2, 1), box-shadow .22s ease;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .22);
}

.toggle-switch.is-on .toggle-switch-thumb {
    transform: translateX(1.2rem);
    box-shadow: 0 1px 4px rgba(15, 23, 42, .18);
}

.toggle-switch:hover .toggle-switch-track {
    background: linear-gradient(180deg, #c9d1da 0%, #b8c2cc 100%);
}

.toggle-switch.is-on:hover .toggle-switch-track {
    background: linear-gradient(180deg, #43a047 0%, #2e7d32 100%);
}

.toggle-switch:focus {
    outline: none;
}

.toggle-switch:focus-visible {
    outline: 2px solid var(--jb-primary);
    outline-offset: 2px;
}

.form-hint { margin: .35rem 0 0; font-size: .85rem; color: #7a8b9c; }

.filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; align-items: center; }

.operations-results-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem 1rem;
    margin-bottom: .85rem;
}

.operations-list-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: .75rem 1rem;
    margin-bottom: .85rem;
}

.operations-list-actions .operations-category-toolbar {
    margin-bottom: 0;
}

.operations-results-summary {
    min-width: 0;
}

.operations-results-summary .stat-meta {
    margin: 0;
}

.operations-range-meta {
    margin: .2rem 0 0;
    font-size: .82rem;
    color: #7a8b9c;
}

.operations-pagination {
    display: flex;
    align-items: center;
    gap: .35rem;
    flex-shrink: 0;
}

.operations-pagination--top {
    margin-left: auto;
    justify-content: flex-end;
}

.operations-pagination--bottom {
    justify-content: center;
    margin-top: 1rem;
    padding-top: .25rem;
}

.pagination-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    min-height: 2.25rem;
    padding: .4rem .75rem;
    border: 1px solid #cfd8e3;
    border-radius: 8px;
    background: #fff;
    color: #3d5166;
    font-size: .85rem;
    font-weight: 600;
    text-decoration: none;
    line-height: 1;
    transition: background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}

a.pagination-btn:hover {
    background: #f4f7fa;
    border-color: #b8c5d3;
    color: var(--jb-primary-darker);
    text-decoration: none;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .06);
}

button.pagination-btn {
    font-family: inherit;
    cursor: pointer;
}

button.pagination-btn:hover:not(:disabled) {
    background: #f4f7fa;
    border-color: #b8c5d3;
    color: var(--jb-primary-darker);
    box-shadow: 0 1px 3px rgba(15, 23, 42, .06);
}

button.pagination-btn:disabled {
    opacity: .45;
    cursor: default;
}

.pagination-btn.is-disabled {
    opacity: .45;
    cursor: default;
}

.pagination-pages {
    display: flex;
    align-items: center;
    gap: .2rem;
    list-style: none;
    margin: 0;
    padding: 0 .15rem;
}

.pagination-page {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.25rem;
    height: 2.25rem;
    padding: 0 .5rem;
    border: 1px solid transparent;
    border-radius: 8px;
    background: transparent;
    color: #3d5166;
    font-size: .85rem;
    font-weight: 600;
    text-decoration: none;
    line-height: 1;
    transition: background .15s ease, border-color .15s ease, color .15s ease;
}

a.pagination-page:hover {
    background: #f4f7fa;
    border-color: #d8e0e8;
    color: var(--jb-primary-darker);
    text-decoration: none;
}

.pagination-page.is-active {
    background: var(--jb-primary);
    border-color: var(--jb-primary);
    color: #fff;
    box-shadow: 0 2px 6px rgba(var(--jb-primary-rgb), .28);
}

.pagination-ellipsis {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 2.25rem;
    color: #8a97a5;
    font-size: .9rem;
    user-select: none;
}

.empty-state { color: #7a8b9c; padding: 1rem 0; }
.help-text { color: #5a6b7c; font-size: .9rem; }
.actions { white-space: nowrap; }

.hero {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
}

.hero-card {
    background: #fff;
    border-radius: 12px;
    padding: 2.5rem;
    max-width: 480px;
    text-align: center;
    box-shadow: 0 8px 30px rgba(0,0,0,.08);
}

.hero-icon { font-size: 3rem; color: var(--jb-primary); margin-bottom: 1rem; }
.hero-subtitle { color: #5a6b7c; margin-bottom: 1.5rem; }
.hero-features { list-style: none; padding: 0; margin: 0 0 1.5rem; text-align: left; }
.hero-features li { padding: .4rem 0; color: #3a4b5c; }
.hero-features i { width: 1.5rem; color: var(--jb-primary); }

/* Page d'accueil / présentation */
.landing-body {
    background: linear-gradient(160deg, #e8f0f8 0%, #f5f8fb 45%, #eef2f7 100%);
}

.landing-header {
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid rgba(13, 59, 102, 0.08);
    position: sticky;
    top: 0;
    z-index: 100;
}

.landing-header-inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: .85rem 1.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.landing-brand {
    display: flex;
    align-items: center;
    gap: .55rem;
    font-weight: 700;
    font-size: 1.15rem;
    color: var(--jb-primary-darker);
    text-decoration: none;
}

.landing-brand i { color: var(--jb-primary); font-size: 1.35rem; }
.landing-header-cta { text-decoration: none; }

.landing-main { flex: 1; }

.landing-hero {
    max-width: 1100px;
    margin: 0 auto;
    padding: 3rem 1.25rem 4rem;
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 3rem;
    align-items: center;
}

.landing-eyebrow {
    display: inline-block;
    margin: 0 0 .75rem;
    padding: .3rem .75rem;
    background: var(--jb-primary-light);
    color: var(--jb-primary);
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .02em;
}

.landing-hero h1 {
    margin: 0 0 1rem;
    font-size: clamp(2rem, 4vw, 2.75rem);
    line-height: 1.15;
    color: var(--jb-primary-darker);
}

.landing-highlight { color: var(--jb-primary); }

.landing-lead {
    margin: 0 0 1.75rem;
    font-size: 1.05rem;
    line-height: 1.65;
    color: #4a5d73;
    max-width: 34rem;
}

.landing-hero-actions { margin-bottom: 1.75rem; }

.btn-lg {
    padding: .75rem 1.35rem;
    font-size: 1rem;
}

.landing-trust {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    color: #5a6b7c;
    font-size: .9rem;
}

.landing-trust i { color: var(--jb-primary); margin-right: .35rem; }

.landing-mockup {
    background: #fff;
    border-radius: 14px;
    padding: 1.25rem;
    box-shadow: 0 20px 50px rgba(13, 59, 102, 0.12);
    border: 1px solid rgba(13, 59, 102, 0.06);
}

.landing-mockup-bar {
    height: 8px;
    width: 40%;
    background: linear-gradient(90deg, var(--jb-primary), var(--jb-primary-accent));
    border-radius: 4px;
    margin-bottom: 1.25rem;
}

.landing-mockup-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .7rem 0;
    border-bottom: 1px solid #eef2f6;
    font-size: .9rem;
    color: #2c3e50;
}

.landing-mockup-row:last-child { border-bottom: none; }
.landing-mockup-row.muted { color: #8a9bab; font-size: .85rem; }

.landing-mockup-label {
    display: flex;
    align-items: center;
    gap: .35rem;
}

.landing-mockup-row em { font-style: normal; font-weight: 600; }

.landing-mockup-row .dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: .5rem;
    flex-shrink: 0;
}

.dot.courant { background: var(--jb-primary); }
.dot.carte { background: #ad1457; }

.landing-section {
    max-width: 1100px;
    margin: 0 auto;
    padding: 2rem 1.25rem 3rem;
}

.landing-section-title {
    text-align: center;
    margin: 0 0 .5rem;
    font-size: 1.75rem;
    color: var(--jb-primary-darker);
}

.landing-section-subtitle {
    text-align: center;
    margin: 0 0 2rem;
    color: #5a6b7c;
}

.landing-features {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
}

.landing-feature-card {
    background: #fff;
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
    border: 1px solid rgba(13, 59, 102, 0.05);
    transition: transform .2s ease, box-shadow .2s ease;
}

.landing-feature-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 28px rgba(13, 59, 102, 0.1);
}

.landing-feature-icon {
    width: 48px;
    height: 48px;
    border-radius: 10px;
    background: var(--jb-primary-light);
    color: var(--jb-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    margin-bottom: 1rem;
}

.landing-feature-card h3 {
    margin: 0 0 .5rem;
    font-size: 1.1rem;
    color: var(--jb-primary-darker);
}

.landing-feature-card p {
    margin: 0;
    color: #5a6b7c;
    font-size: .92rem;
    line-height: 1.55;
}

.landing-feature-card p code {
    font-size: .85em;
    padding: .1rem .35rem;
    border-radius: 4px;
    background: var(--jb-primary-subtle);
    color: var(--jb-primary-darker);
}

.landing-steps {
    background: rgba(255, 255, 255, 0.6);
    border-radius: 16px;
    margin-bottom: 2rem;
    max-width: calc(1100px - 2.5rem);
}

.landing-step-list {
    list-style: none;
    padding: 0;
    margin: 2rem 0 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
}

.landing-step-list--four {
    grid-template-columns: repeat(4, 1fr);
}

.landing-step-list li {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.landing-step-num {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--jb-primary);
    color: #fff;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .95rem;
}

.landing-step-list strong {
    display: block;
    color: var(--jb-primary-darker);
    margin-bottom: .25rem;
}

.landing-step-list p {
    margin: 0;
    color: #5a6b7c;
    font-size: .9rem;
    line-height: 1.5;
}

.landing-cta {
    max-width: 1100px;
    margin: 0 auto 3rem;
    padding: 0 1.25rem;
}

.landing-cta-inner {
    background: linear-gradient(135deg, var(--jb-primary-darker) 0%, var(--jb-primary) 100%);
    border-radius: 16px;
    padding: 2.5rem 2rem;
    text-align: center;
    color: #fff;
}

.landing-cta-inner h2 {
    margin: 0 0 .5rem;
    color: #fff;
    font-size: 1.5rem;
}

.landing-cta-inner p {
    margin: 0 0 1.5rem;
    color: rgba(255, 255, 255, 0.85);
}

.btn-light {
    background: #fff;
    color: var(--jb-primary-darker);
    text-decoration: none;
}

.btn-light:hover {
    background: #f0f4f8;
    color: var(--jb-primary-darker);
    text-decoration: none;
}

.landing-footer { margin-top: 0; }

@media (max-width: 1100px) and (min-width: 901px) {
    .landing-features { grid-template-columns: repeat(2, 1fr); }
    .landing-step-list--four { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 900px) {
    .landing-hero {
        grid-template-columns: 1fr;
        padding-top: 2rem;
    }

    .landing-hero-visual { order: -1; max-width: 400px; margin: 0 auto; width: 100%; }
    .landing-features { grid-template-columns: 1fr; }
    .landing-step-list,
    .landing-step-list--four { grid-template-columns: 1fr; }
}

.login-container {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
}

.login-box {
    background: #fff;
    border-radius: 12px;
    padding: 2rem;
    width: 100%;
    max-width: 400px;
    box-shadow: 0 8px 30px rgba(0,0,0,.08);
}

.login-header { text-align: center; margin-bottom: 1.5rem; }
.login-logo-icon { font-size: 2.5rem; color: var(--jb-primary); }

.input-wrapper { position: relative; }

.input-wrapper .input-icon {
    position: absolute;
    left: .85rem;
    top: 50%;
    transform: translateY(-50%);
    color: #9aa8b8;
    pointer-events: none;
    z-index: 1;
}

.form-group .input-wrapper input[type="text"],
.form-group .input-wrapper input[type="password"] {
    width: 100%;
    padding: .6rem .75rem .6rem 2.5rem;
    border: 1px solid #ccd5df;
    border-radius: 6px;
    font-size: .95rem;
    box-sizing: border-box;
}

.form-group .input-wrapper input[type="password"] {
    padding-right: 2.75rem;
}

.password-toggle {
    position: absolute;
    right: .5rem;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    color: #9aa8b8;
    z-index: 1;
    padding: .25rem;
}
.login-footer { text-align: center; margin-top: 1rem; }
.back-link { color: #5a6b7c; font-size: .9rem; }

.site-footer {
    background: var(--jb-primary-darker);
    color: rgba(255,255,255,.7);
    padding: .75rem 1rem;
    text-align: center;
    font-size: .85rem;
    margin-top: auto;
}

.footer-inner p { margin: 0; }

@media (max-width: 768px) {
    .navbar-toggle { display: flex; }
    .navbar-links {
        display: none;
        width: 100%;
        flex-direction: column;
        padding-bottom: .5rem;
    }
    .navbar-links.open { display: flex; }
    .data-table { font-size: .85rem; }
    .data-table .col-date { width: 5.5rem; }
    .data-table .col-type { width: 7.5rem; }
    .data-table .col-amount { width: 7rem; }
    .table-wrap .data-table { min-width: 32rem; }
    .table-wrap-fit .data-table-import-history { min-width: 0; }
    .data-table th, .data-table td { padding: .45rem .5rem; }
    .operations-results-header {
        flex-direction: column;
        align-items: stretch;
    }
    .operations-pagination--top {
        margin-left: auto;
        justify-content: flex-end;
    }
    .pagination-btn span {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }
    .pagination-btn {
        min-width: 2.25rem;
        padding: .4rem .55rem;
    }
    .admin-auto-ignore-form-grid--category-rule {
        grid-template-columns: 1fr;
    }
    .admin-auto-ignore-form-grid--category-rule .form-group--rule-category,
    .admin-auto-ignore-form-grid--category-rule .form-group--rule-account {
        width: 100%;
        max-width: none;
    }
    .admin-auto-ignore-form-grid--category-rule .form-group--rule-category select,
    .admin-auto-ignore-form-grid--category-rule .form-group--rule-account select {
        width: 100%;
        max-width: none;
    }
}
