/* v115 — système visuel unifié                                               */
/* Base v113.2 stable : CSS uniquement, aucune logique métier modifiée.       */
/* ========================================================================== */

:root {
  --ink: #172231;
  --ui-surface: rgba(255, 255, 255, .82);
  --ui-surface-solid: #FFFFFF;
  --ui-surface-soft: rgba(244, 247, 246, .92);
  --ui-border: rgba(28, 42, 57, .075);
  --ui-border-strong: rgba(28, 42, 57, .115);
  --ui-muted: #748093;
  --ui-radius-card: 14px;
  --ui-radius-control: 11px;
  --ui-radius-sheet: 22px;
  --ui-row-height: 54px;
  --ui-control-height: 44px;
  --ui-shadow-card: 0 7px 24px rgba(39, 55, 72, .035);
}

/* Typographie et rythme de section. */
.profile-section-label,
.income-block-title,
.month-balance-title {
  color: var(--ui-muted) !important;
  font-size: 11px !important;
  line-height: 1.2 !important;
  font-weight: 750 !important;
  letter-spacing: .045em !important;
  text-transform: uppercase !important;
}

.profile-section-label {
  margin: 20px 3px 8px !important;
}

.settings-sheet-title,
.sheet-title {
  color: var(--ink) !important;
  font-size: 21px !important;
  line-height: 1.12 !important;
  font-weight: 780 !important;
  letter-spacing: -.035em !important;
}

.settings-sheet-subtitle,
.v110-section-note,
.household-member-meta,
.cloud-backup-meta,
.household-activity-meta,
.v110-feature-row-sub,
.v110-search-row-sub,
.v112-anomaly-row small {
  color: var(--ui-muted) !important;
}

/* Une seule famille de surfaces pour les cartes et cellules. */
.income-block,
.month-balance,
.variable-category,
.income-grid .swipe-row,
.income-summary-card,
.v110-home-main,
.v110-home-tile,
.v110-feature-row,
.v110-annual-card,
.v110-annual-ranking,
.v110-search-row,
.v112-bank-row,
.v112-anomaly-row,
.profile-account-card,
.household-summary,
.household-members-list,
.household-activity-list,
.cloud-backup-list,
.profile-inline-panel,
.household-invite-result,
.household-join-panel {
  border: 1px solid var(--ui-border) !important;
  border-radius: var(--ui-radius-card) !important;
  background: var(--ui-surface) !important;
  box-shadow: none !important;
}

/* La carte d'accueil reste légèrement mise en avant, mais avec la même géométrie. */
.v110-home-main {
  background: linear-gradient(145deg, rgba(8,127,104,.095), rgba(255,255,255,.92)) !important;
}

.income-block,
.month-balance {
  padding: 15px !important;
  background: var(--ui-surface-soft) !important;
}

.income-block { margin: 16px 0 18px !important; }
.month-balance { margin-bottom: 18px !important; }
.variable-categories { gap: 10px !important; }

/* Catégories variables : un seul contour externe, contenu interne plus calme. */
.variable-category {
  overflow: hidden !important;
}
.variable-category .category-head {
  padding: 14px !important;
  border: 0 !important;
  background: transparent !important;
  border-radius: 0 !important;
}
.variable-category .category-metrics {
  margin-top: 12px !important;
  padding: 10px 11px !important;
  gap: 7px !important;
  border: 1px solid var(--ui-border) !important;
  border-radius: 11px !important;
  background: rgba(244,247,246,.82) !important;
}
.variable-category .category-list {
  padding-left: 14px !important;
  padding-right: 14px !important;
}
.category-name { color: var(--ink) !important; font-size: 16px !important; }
.category-progress,
.month-balance-progress,
.v110-feature-progress {
  background: rgba(28,42,57,.075) !important;
}
.category-progress-bar:not(.over),
.month-balance-progress-bar:not(.over),
.v110-feature-progress > span {
  background: var(--ca-accent) !important;
}

/* Listes type Réglages : mêmes bords, même hauteur, un seul séparateur. */
.settings-list,
.profile-settings-list {
  overflow: hidden !important;
  border: 1px solid var(--ui-border) !important;
  border-radius: var(--ui-radius-card) !important;
  background: var(--ui-surface) !important;
  padding: 0 !important;
}

.settings-row,
.profile-settings-list .settings-row {
  min-height: var(--ui-row-height) !important;
  padding: 0 16px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--ui-border) !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: var(--ink);
  font-size: 14px !important;
}

.settings-list > .settings-row:last-child,
.settings-list > label.settings-row:last-child,
.profile-settings-list > .settings-row:last-child,
.profile-settings-list > label.settings-row:last-child,
.household-settings-list > .settings-row:last-child {
  border-bottom: 0 !important;
}

.settings-chevron {
  margin-left: 12px !important;
  color: #A5ACB7 !important;
  font-size: 20px !important;
  font-weight: 450 !important;
}

.settings-row.danger,
.settings-row.danger-soft { color: #B0443B !important; }

/* Foyer / activité / sauvegardes : alignement identique à Réglages. */
.household-summary {
  min-height: var(--ui-row-height) !important;
  padding: 12px 14px !important;
}
.household-member-row,
.cloud-backup-row,
.household-activity-row {
  min-height: var(--ui-row-height) !important;
  padding: 10px 14px !important;
  border-bottom: 1px solid var(--ui-border) !important;
}
.household-member-row:last-child,
.cloud-backup-row:last-child,
.household-activity-row:last-child { border-bottom: 0 !important; }

.profile-section-head {
  min-height: 30px !important;
  margin-top: 20px !important;
  align-items: center !important;
}
.profile-section-head .profile-section-label {
  margin: 0 !important;
}

/* Boutons texte / mini actions : même langage visuel. */
.profile-mini-button,
.profile-text-button,
.v110-feature-action,
.v112-manage-button,
.v110-close,
.v112-split-head > button,
.household-copy-button,
.household-member-actions button,
.cloud-backup-actions button {
  border: 0 !important;
  border-radius: var(--ui-radius-control) !important;
  background: rgba(28,42,57,.055) !important;
  color: var(--ca-accent) !important;
  font-weight: 720 !important;
}
.profile-text-button,
.v110-close {
  background: transparent !important;
  border-radius: 8px !important;
}
.v110-feature-action.danger,
.household-member-actions .danger-action,
.cloud-backup-actions .danger-action {
  color: #B0443B !important;
  background: rgba(176,68,59,.065) !important;
}

/* Contrôles et formulaires : 46px / rayon 11px partout. */
.field input,
.field select,
.profile-inline-panel input,
.profile-inline-panel select,
.household-join-panel input,
.v110-form input,
.v110-form select,
.v110-year-select,
.v110-search-input,
.v110-quick-sheet input[type="text"],
.v110-quick-sheet select,
.v112-entry-meta select,
#entry-reimbursed-amount,
#v112-bank-payer,
.v112-transaction-sheet select,
.v112-transaction-sheet input,
.v112-split-line input,
.v112-split-line select,
.auth-field input {
  min-height: 46px !important;
  border: 1px solid var(--ui-border-strong) !important;
  border-radius: var(--ui-radius-control) !important;
  background: var(--ui-surface-solid) !important;
  color: var(--ink) !important;
  box-shadow: none !important;
}

.field input:focus,
.field select:focus,
.profile-inline-panel input:focus,
.profile-inline-panel select:focus,
.household-join-panel input:focus,
.v110-form input:focus,
.v110-form select:focus,
.v110-search-input:focus,
.v110-quick-sheet input:focus,
.v110-quick-sheet select:focus,
.v112-transaction-sheet input:focus,
.v112-transaction-sheet select:focus,
.auth-field input:focus {
  border-color: rgba(8,127,104,.38) !important;
  box-shadow: 0 0 0 3px rgba(8,127,104,.075) !important;
  outline: none !important;
}

/* Boutons principaux/secondaires : géométrie commune. */
.income-add,
.mini-add,
.add-button,
.category-action,
.category-toggle,
.category-add-expense,
.data-button,
.copy-back,
.copy-month-button,
.copy-confirm-button,
.sheet-button,
.profile-inline-actions button,
.household-join-actions button,
.v112-primary-row-button,
.v112-secondary-row-button,
.v112-file-button,
.v112-bank-toolbar select {
  border-radius: var(--ui-radius-control) !important;
}

.income-add,
.mini-add,
.data-button,
.sheet-button,
.copy-confirm-button,
.profile-inline-actions button,
.household-join-actions button,
.v112-primary-row-button,
.v112-secondary-row-button {
  min-height: var(--ui-control-height) !important;
}

.income-add,
.mini-add,
.add-button,
.data-button,
.sheet-button:not(.primary),
.copy-confirm-button:not(.primary),
.v112-secondary-row-button,
.profile-inline-actions button:first-child,
.household-join-actions button:first-child {
  border: 1px solid var(--ui-border) !important;
  background: var(--ui-surface) !important;
  color: var(--ink) !important;
}

.sheet-button.primary,
.copy-confirm-button.primary,
.auth-submit,
.v112-primary-row-button,
.profile-inline-actions button:last-child:not(.danger-action),
.household-join-actions button:last-child {
  border: 0 !important;
  background: var(--ca-accent) !important;
  color: #FFFFFF !important;
  border-radius: var(--ui-radius-control) !important;
}

.danger-confirm,
.profile-inline-actions button.danger-action:last-child {
  background: #B0443B !important;
  color: #FFFFFF !important;
  border-color: transparent !important;
}

.category-action,
.category-toggle,
.v110-receipt-button,
.v112-manage-button {
  background: rgba(28,42,57,.05) !important;
  border: 1px solid var(--ui-border) !important;
}
.category-action.danger { color: #B0443B !important; }
.category-add-expense {
  border: 1px dashed rgba(28,42,57,.14) !important;
  background: transparent !important;
}

/* Revenus / dépenses : même rayon et même densité de lignes. */
.income-grid { gap: 7px !important; }
.income-grid .swipe-row {
  border-radius: var(--ui-radius-card) !important;
}
.income-grid .swipe-content {
  min-height: 70px !important;
  padding: 12px 13px !important;
  border-radius: calc(var(--ui-radius-card) - 1px) !important;
}
.plain-list .swipe-row {
  border-color: var(--ui-border) !important;
}
.swipe-content { min-height: 58px !important; }
.line-title { color: var(--ink) !important; }

/* Accueil et fonctionnalités v110/v112 : même densité et mêmes cartes. */
.v110-home { gap: 8px !important; margin: 12px 0 18px !important; }
.v110-home-main { padding: 16px !important; }
.v110-home-grid { gap: 7px !important; }
.v110-home-tile { min-height: 68px !important; padding: 11px 12px !important; }
.v110-settings-section { margin-top: 20px !important; }
.v110-feature-list { gap: 6px !important; }
.v110-feature-row { min-height: var(--ui-row-height) !important; padding: 10px 12px !important; }
.v110-annual { gap: 6px !important; }
.v110-annual-card,
.v110-annual-ranking { padding: 11px 12px !important; }
.v110-search-results { gap: 6px !important; }
.v110-search-row { min-height: 54px !important; padding: 10px 12px !important; }
.v112-bank-preview { gap: 6px !important; }
.v112-bank-row { min-height: 52px !important; padding: 9px 11px !important; }
.v112-anomaly-row { min-height: 52px !important; padding: 10px 12px !important; }
.v112-all-clear,
.v110-closed-banner,
.v110-alert {
  border-radius: var(--ui-radius-control) !important;
}

/* En-tête et boutons rapides : dimensions identiques. */
.v110-header-actions { gap: 7px !important; }
.v110-icon-button {
  width: 38px !important;
  height: 38px !important;
  border-radius: 11px !important;
  box-shadow: inset 0 0 0 1px var(--ui-border) !important;
  background: var(--ui-surface) !important;
}
.v110-icon-button.primary {
  background: var(--ca-accent) !important;
  box-shadow: none !important;
}
.v110-fab {
  border-radius: 14px !important;
  box-shadow: 0 8px 24px rgba(8,127,104,.20) !important;
}

/* Sheets : même surface et même géométrie sans toucher au scroll / drag. */
.sheet {
  background: rgba(255,253,248,.98) !important;
  border-color: var(--ui-border) !important;
  box-shadow: 0 -16px 42px rgba(27,39,52,.11) !important;
}

#month-settings-sheet .sheet-drag-zone,
#profile-sheet .sheet-drag-zone {
  background: rgba(255,253,248,.98) !important;
}

html.is-ios .sheet,
html.is-ios .v110-overlay .sheet,
html.is-ios .v112-transaction-sheet {
  border-radius: 24px 24px 0 0 !important;
}

@media (hover:hover) and (pointer:fine) {
  .sheet,
  .v110-overlay .sheet,
  .v112-transaction-sheet {
    border-radius: var(--ui-radius-sheet) !important;
  }
}

/* Profil : carte compte et avatars alignés avec le reste. */
.profile-account-card {
  margin: 8px 0 4px !important;
  padding: 14px !important;
}
.profile-avatar {
  width: 48px !important;
  height: 48px !important;
  flex-basis: 48px !important;
}
.settings-account-name { color: var(--ink) !important; font-weight: 760 !important; }
.settings-account-email,
.settings-account-sync { color: var(--ui-muted) !important; }

/* Auth : reprend exactement les mêmes tokens que l'application. */
.auth-gate { background: #F3F5F6 !important; }
.auth-card {
  border: 1px solid var(--ui-border) !important;
  border-radius: 22px !important;
  background: var(--ui-surface-solid) !important;
  box-shadow: 0 14px 44px rgba(33,45,61,.07) !important;
}
.auth-brand-mark { border-radius: 13px !important; }
.auth-tabs {
  border-radius: 12px !important;
  background: rgba(28,42,57,.055) !important;
}
.auth-tab { border-radius: 9px !important; }
.auth-submit { min-height: 48px !important; }

/* Barre basse : même finition, tout en conservant le comportement v102. */
.ca-bottom-nav {
  border-top-color: var(--ui-border) !important;
  background: rgba(255,255,255,.94) !important;
}
body.utility-sheet-open .ca-bottom-nav {
  border-radius: 0 !important;
}

/* iOS : aucune scrollbar ne doit recouvrir les cellules des feuilles utilitaires. */
html.is-ios #month-settings-sheet .sheet-scroll-content,
html.is-ios #profile-sheet .sheet-scroll-content,
html.is-ios .v110-search-results,
html.is-ios .v112-bank-preview {
  scrollbar-width: none !important;
}
html.is-ios #month-settings-sheet .sheet-scroll-content::-webkit-scrollbar,
html.is-ios #profile-sheet .sheet-scroll-content::-webkit-scrollbar,
html.is-ios .v110-search-results::-webkit-scrollbar,
html.is-ios .v112-bank-preview::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important;
}

/* Petits écrans : conserver la densité sans tasser les textes. */
@media (max-width: 390px) {
  .settings-row,
  .profile-settings-list .settings-row { padding-left: 14px !important; padding-right: 14px !important; }
  .income-block,
  .month-balance { padding: 14px !important; }
  .v110-home-main { padding: 15px !important; }
}
