@import url('https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&display=swap');

:root, [data-theme="dark"] {
  --brand: #283143;
  --brand-light: #3a455a;
  --brand-lighter: #5d6a85;
  --brand-soft: rgba(40, 49, 67, 0.08);

  --accent: #FF432E;
  --accent-hover: #E33420;
  --accent-soft: rgba(255, 67, 46, 0.12);
  --accent-strong: #c92a18;

  --gradient-soft: linear-gradient(135deg, #ffe5e0 0%, #f5f6fa 100%);

  --bg: #0f1115;
  --bg-elevated: #1a1d24;
  --bg-card: #20242c;
  --bg-input: #262b34;
  --border: #2d333d;
  --border-strong: #3d434f;

  --text: #e8eaed;
  --text-muted: #9aa0a8;
  --text-dim: #6c727a;

  --success: #34d399;
  --warning: #fbbf24;
  --danger: #f87171;
  --info: #60a5fa;

  --font-heading: 'Century Gothic', 'CenturyGothic', 'AppleGothic', 'URW Gothic', 'Avant Garde', 'Figtree', sans-serif;
  --font-body: 'Figtree', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  --radius: 10px;
  --radius-sm: 6px;
  --shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
  --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.5);
}

[data-theme="light"] {
  --brand: #283143;
  --brand-light: #3a455a;
  --brand-lighter: #5d6a85;
  --brand-soft: rgba(40, 49, 67, 0.06);

  --accent: #FF432E;
  --accent-hover: #E33420;
  --accent-soft: rgba(255, 67, 46, 0.10);
  --accent-strong: #c92a18;

  --bg: #f4f5f7;
  --bg-elevated: #ffffff;
  --bg-card: #ffffff;
  --bg-input: #f4f5f7;
  --border: #e2e5ea;
  --border-strong: #c8cdd5;

  --text: #1a1d24;
  --text-muted: #5d6473;
  --text-dim: #8a93a3;

  --success: #059669;
  --warning: #d97706;
  --danger: #dc2626;
  --info: #2563eb;

  --shadow: 0 2px 12px rgba(40, 49, 67, 0.08);
  --shadow-elevated: 0 8px 24px rgba(40, 49, 67, 0.12);
}

* {
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.5;
  min-height: 100vh;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body { padding-bottom: env(safe-area-inset-bottom); }

h1, h2, h3, h4, .heading-display {
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--text);
}

h1, .heading-display {
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.1;
}

h3 {
  font-size: 18px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

h4 {
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.app {
  max-width: 600px;
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* Adaptatif : on élargit progressivement sur les écrans plus larges.
   Le mobile et la tablette gardent leur rendu compact (600px),
   les PC moyens passent à 900px, les grands écrans à 1100px. */
@media (min-width: 900px) {
  .app:not(.app-admin) { max-width: 900px; }
}
@media (min-width: 1400px) {
  .app:not(.app-admin) { max-width: 1100px; }
}

.topbar {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--brand);
  color: #fff;
  border-bottom: 3px solid var(--accent);
  padding: 10px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: max(10px, env(safe-area-inset-top));
  box-shadow: var(--shadow);
}

.topbar-logo {
  display: flex;
  align-items: center;
  gap: 10px;
}

.topbar-logo-icon {
  height: 32px;
  width: 32px;
  color: #fff;
  flex-shrink: 0;
}
.topbar-logo-icon svg { width: 100%; height: 100%; display: block; }

.topbar-title {
  font-weight: 600;
  font-size: 14px;
  display: flex;
  flex-direction: column;
  line-height: 1.2;
  color: #fff;
  font-family: var(--font-body);
}
.topbar-title small {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.7);
  font-weight: 500;
  margin-top: 2px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.topbar-user {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.75);
  display: flex;
  align-items: center;
  gap: 8px;
}

.btn-icon {
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.75);
  cursor: pointer;
  padding: 6px;
  border-radius: var(--radius-sm);
  font-size: 16px;
  line-height: 1;
  transition: background 0.15s, color 0.15s;
}
.btn-icon:hover { background: rgba(255, 255, 255, 0.12); color: #fff; }

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--radius-sm);
  background: transparent;
  color: rgba(255, 255, 255, 0.75);
  border: none;
  cursor: pointer;
  font-size: 15px;
}
.theme-toggle:hover { background: rgba(255, 255, 255, 0.12); color: #fff; }

.tabs {
  display: flex;
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 59px;
  z-index: 9;
}
.tab {
  flex: 1;
  padding: 14px 8px;
  text-align: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  border-bottom: 3px solid transparent;
  font-family: var(--font-body);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  transition: color 0.15s, border-color 0.15s;
}
.tab:hover { color: var(--text); }
.tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}
.tab:disabled { opacity: 0.5; cursor: not-allowed; }

.content { flex: 1; padding: 16px; }

.card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}

.field { margin-bottom: 14px; }
.field-label {
  display: block;
  font-size: 11px;
  color: var(--text-muted);
  margin-bottom: 6px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
}

.input, .select, .textarea {
  width: 100%;
  background: var(--bg-input);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 11px 14px;
  font-size: 16px;
  font-family: var(--font-body);
  outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.input:focus, .select:focus, .textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.textarea { resize: vertical; min-height: 80px; }

.field-row { display: flex; gap: 10px; }
.field-row > .field { flex: 1; }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: var(--radius-sm);
  padding: 11px 18px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  font-family: var(--font-body);
  text-decoration: none;
  transition: background 0.15s, transform 0.05s, box-shadow 0.15s;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.btn:hover:not(:disabled) { background: var(--accent-hover); box-shadow: var(--shadow); }
.btn:active:not(:disabled) { transform: scale(0.98); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-block { width: 100%; }
.btn-secondary {
  background: var(--bg-input);
  color: var(--text);
  border: 1px solid var(--border-strong);
}
.btn-secondary:hover:not(:disabled) { background: var(--bg-elevated); border-color: var(--brand-lighter); }
.btn-danger { background: var(--danger); }
.btn-danger:hover:not(:disabled) { background: #ef4444; }
.btn-success { background: var(--success); }
.btn-success:hover:not(:disabled) { background: #2ec97f; }
.btn-brand {
  background: var(--brand);
  color: #fff;
}
.btn-brand:hover:not(:disabled) { background: var(--brand-light); }
.btn-sm { padding: 6px 12px; font-size: 11px; letter-spacing: 0.06em; }

.badge {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-family: var(--font-body);
}
.badge-gray   { background: rgba(154,160,168,0.18); color: #c5c9cf; }
[data-theme="light"] .badge-gray   { background: rgba(93,100,115,0.15); color: #5d6473; }
.badge-blue   { background: rgba(96,165,250,0.18); color: #93c5fd; }
[data-theme="light"] .badge-blue   { background: rgba(37,99,235,0.12); color: #1d4ed8; }
.badge-green  { background: rgba(52,211,153,0.18); color: #6ee7b7; }
[data-theme="light"] .badge-green  { background: rgba(5,150,105,0.12); color: #047857; }
.badge-red    { background: rgba(248,113,113,0.18); color: #fca5a5; }
[data-theme="light"] .badge-red    { background: rgba(220,38,38,0.12); color: #b91c1c; }
.badge-yellow { background: rgba(251,191,36,0.18); color: #fcd34d; }
[data-theme="light"] .badge-yellow { background: rgba(217,119,6,0.15); color: #b45309; }
.badge-accent {
  background: var(--accent-soft);
  color: var(--accent);
}

.alert {
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  margin-bottom: 14px;
  border-left: 3px solid;
}
.alert-error   { background: rgba(248,113,113,0.10); color: #fca5a5; border-left-color: var(--danger); }
[data-theme="light"] .alert-error { background: rgba(220,38,38,0.06); color: #991b1b; }
.alert-success { background: rgba(52,211,153,0.10); color: #6ee7b7; border-left-color: var(--success); }
[data-theme="light"] .alert-success { background: rgba(5,150,105,0.06); color: #065f46; }
.alert-warning { background: rgba(251,191,36,0.10); color: #fcd34d; border-left-color: var(--warning); }
[data-theme="light"] .alert-warning { background: rgba(217,119,6,0.08); color: #92400e; }
.alert-info    { background: rgba(96,165,250,0.10); color: #93c5fd; border-left-color: var(--info); }
[data-theme="light"] .alert-info { background: rgba(37,99,235,0.06); color: #1e40af; }
.alert-accent {
  background: var(--accent-soft);
  color: var(--accent-strong);
  border-left-color: var(--accent);
}
[data-theme="dark"] .alert-accent { color: var(--accent); }

.ts-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 14px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 10px;
  cursor: pointer;
  transition: border-color 0.15s, transform 0.05s, box-shadow 0.15s;
  box-shadow: var(--shadow);
}
.ts-row:hover { border-color: var(--accent); }
.ts-row:active { transform: scale(0.99); }
.ts-row-main { flex: 1; min-width: 0; }
.ts-row-date { font-weight: 700; font-size: 14px; margin-bottom: 4px; color: var(--text); }
.ts-row-chantier { font-size: 13px; color: var(--text-muted); margin-bottom: 6px; word-break: break-word; }
.ts-row-meta { font-size: 12px; color: var(--text-dim); display: flex; gap: 12px; flex-wrap: wrap; }
.ts-row-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }

.photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 8px;
  margin-top: 8px;
}
.photo-thumb {
  position: relative;
  aspect-ratio: 1;
  background: var(--bg-input);
  border-radius: var(--radius-sm);
  overflow: hidden;
  cursor: pointer;
  border: 1px solid var(--border);
}
.photo-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-thumb .remove {
  position: absolute;
  top: 4px; right: 4px;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: rgba(0,0,0,0.75);
  color: white;
  border: none;
  cursor: pointer;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.photo-add {
  aspect-ratio: 1;
  background: var(--bg-input);
  border: 2px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 12px;
  text-align: center;
  padding: 8px;
  transition: color 0.15s, border-color 0.15s;
}
.photo-add:hover { color: var(--accent); border-color: var(--accent); }
.photo-add-icon { font-size: 28px; line-height: 1; margin-bottom: 4px; font-weight: 300; }

.photo-progress { font-size: 12px; color: var(--text-muted); margin-top: 8px; }

.stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 14px; }
.stat-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  text-align: center;
  box-shadow: var(--shadow);
  position: relative;
  overflow: hidden;
}
.stat-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--accent);
}
.stat-label { font-size: 10px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.stat-value {
  font-size: 28px;
  font-weight: 700;
  margin-top: 4px;
  color: var(--text);
  letter-spacing: 0.02em;
  font-family: var(--font-heading);
}

.empty { text-align: center; padding: 40px 20px; color: var(--text-muted); }
.empty-icon { font-size: 32px; margin-bottom: 10px; opacity: 0.5; }
.loading { text-align: center; padding: 30px 20px; color: var(--text-muted); }

.login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background:
    radial-gradient(ellipse at top left, rgba(255, 67, 46, 0.15) 0%, transparent 55%),
    radial-gradient(ellipse at bottom right, rgba(40, 49, 67, 0.4) 0%, transparent 50%),
    var(--bg);
}
[data-theme="light"] .login-page {
  background:
    radial-gradient(ellipse at top left, rgba(255, 67, 46, 0.18) 0%, transparent 55%),
    radial-gradient(ellipse at bottom right, rgba(40, 49, 67, 0.08) 0%, transparent 50%),
    var(--bg);
}

.login-card {
  width: 100%;
  max-width: 400px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 32px 28px;
  box-shadow: var(--shadow-elevated);
  position: relative;
  overflow: hidden;
}
.login-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: var(--accent);
}

.login-logo {
  text-align: center;
  margin-bottom: 28px;
}
.login-logo img {
  max-width: 220px;
  height: auto;
  display: block;
  margin: 0 auto 14px auto;
}
.login-logo .subtitle {
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin-top: 10px;
  font-family: var(--font-heading);
}

.login-corner-theme {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 5;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--bg-card);
  color: var(--text-muted);
  border: 1px solid var(--border);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  box-shadow: var(--shadow);
}
.login-corner-theme:hover { color: var(--accent); border-color: var(--accent); }

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 16px;
}
.modal-content { max-width: 100%; max-height: 100%; }
.modal-content img { max-width: 100%; max-height: 90vh; display: block; border-radius: var(--radius); }
.modal-close {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(0,0,0,0.6);
  color: white;
  border: none;
  font-size: 22px;
  cursor: pointer;
}

.ts-detail-meta { font-size: 13px; color: var(--text-muted); margin: 4px 0; }
.ts-detail-meta strong {
  color: var(--text);
  font-weight: 700;
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.06em;
  margin-right: 6px;
}
.ts-detail-description {
  background: var(--bg-input);
  padding: 12px;
  border-radius: var(--radius-sm);
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 14px;
  margin-top: 10px;
  border-left: 3px solid var(--accent);
}

.actions-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }

.filter-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
  padding: 12px;
  background: var(--bg-elevated);
  border-radius: var(--radius);
  border: 1px solid var(--border);
}
.filter-bar .field { margin-bottom: 0; flex: 1; min-width: 120px; }
.filter-bar .field-label { margin-bottom: 4px; font-size: 10px; }
.filter-bar .input, .filter-bar .select { padding: 8px 10px; font-size: 14px; }

.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 -16px; padding: 0 16px; }
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 600px;
  background: var(--bg-card);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
}
.data-table th, .data-table td {
  padding: 11px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.data-table th {
  background: var(--brand);
  color: #fff;
  font-weight: 700;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  position: sticky;
  top: 0;
  font-family: var(--font-body);
}
.data-table tr:last-child td { border-bottom: none; }
.data-table tr { cursor: pointer; transition: background 0.15s; }
.data-table tr:hover td { background: var(--bg-input); }
.data-table .col-desc { white-space: normal; max-width: 280px; }

.page-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  flex-wrap: wrap;
  gap: 10px;
}
.page-actions h3 { margin: 0; }

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 18px;
}
.kpi-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  box-shadow: var(--shadow);
  position: relative;
  overflow: hidden;
}
.kpi-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background: var(--accent);
}
.kpi-label {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
}
.kpi-value {
  font-size: 28px;
  font-weight: 700;
  margin-top: 6px;
  color: var(--text);
  letter-spacing: 0.02em;
  font-family: var(--font-heading);
}
.kpi-value.warn { color: var(--accent); }
.kpi-value.danger { color: var(--danger); }
.kpi-value.success { color: var(--success); }
.kpi-sublabel { font-size: 12px; color: var(--text-dim); margin-top: 4px; }

.list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 8px;
  box-shadow: var(--shadow);
  transition: border-color 0.15s;
}
.list-item:hover { border-color: var(--accent); }
.list-item-main { flex: 1; min-width: 0; }
.list-item-title {
  font-weight: 700;
  font-size: 14px;
  color: var(--text);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.list-item-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.list-item-actions { display: flex; gap: 6px; flex-shrink: 0; }

.checkbox-list {
  max-height: 320px;
  overflow-y: auto;
  background: var(--bg-input);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 6px;
}
.checkbox-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 4px;
  cursor: pointer;
  font-size: 14px;
  color: var(--text);
}
.checkbox-item:hover { background: var(--bg-elevated); }
.checkbox-item input[type="checkbox"], .checkbox-item input[type="radio"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--accent);
}
.checkbox-item-sub { font-size: 12px; color: var(--text-muted); margin-left: auto; }

.team-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}
.team-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}
.team-card-header h4 { margin: 0; }
.team-members { display: flex; flex-wrap: wrap; gap: 6px; }
.team-member {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--bg-input);
  padding: 5px 10px 5px 12px;
  border-radius: 999px;
  font-size: 13px;
  color: var(--text);
  border: 1px solid var(--border);
}
.team-member button {
  background: transparent;
  border: none;
  color: var(--text-muted);
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  padding: 0 2px;
}
.team-member button:hover { color: var(--danger); }

.empty-small {
  text-align: center;
  padding: 14px;
  color: var(--text-dim);
  font-size: 13px;
  font-style: italic;
}

.tabs-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
@media (min-width: 601px) {
  /* Sur desktop tout tient : on laisse le menu Paramètres déborder sans être coupé */
  .tabs-scroll { overflow: visible; }
}
.tabs-scroll .tab { min-width: 100px; flex: 0 0 auto; }

.app-admin { max-width: 1100px; }
.app-admin .tabs { top: 0; }

@media (min-width: 600px) {
  .app-admin .content { padding: 22px; }
}

.password-display {
  background: var(--bg-input);
  border: 2px solid var(--accent);
  padding: 16px;
  border-radius: var(--radius-sm);
  font-family: 'Courier New', monospace;
  font-size: 18px;
  font-weight: 600;
  text-align: center;
  margin: 14px 0;
  letter-spacing: 1px;
  word-break: break-all;
  color: var(--accent);
}

@media (max-width: 600px) {
  /* Onglets compacts pour que tout tienne à l'écran sur mobile */
  .tabs {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .tabs::-webkit-scrollbar { display: none; }
  .tab {
    padding: 11px 6px;
    font-size: 10.5px;
    letter-spacing: 0.01em;
    font-weight: 700;
    line-height: 1.15;
    min-width: 0;
  }
  .nav-settings-btn { padding: 11px 6px; font-size: 10.5px; letter-spacing: 0.01em; }
}
@media (max-width: 380px) {
  .content { padding: 12px; }
  .field-row { flex-direction: column; gap: 0; }
  .tab { font-size: 9.5px; padding: 10px 4px; }
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* ============================================================
   Module KANBAN
   ============================================================ */
.kanban-toolbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-bottom: 16px;
}
.kanban-toolbar .spacer { flex: 1; }
.kanban-toolbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-bottom: 16px;
}
.kanban-toolbar .spacer { flex: 1 1 auto; }
.kanban-toolbar .toolbar-check { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-muted); }
.kanban-board {
  display: flex; gap: 18px; align-items: flex-start;
  overflow-x: auto; padding-bottom: 16px;
  scroll-snap-type: x proximity;
}
.kanban-board.single-col { display: block; }
.kanban-board.single-col .kanban-column { width: 100%; max-width: 100%; margin: 0; }

.kanban-column {
  flex: 1 1 340px; min-width: 320px; max-width: 460px;
  scroll-snap-align: start;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  display: flex; flex-direction: column;
  max-height: calc(100vh - 240px);
}
@media (max-width: 900px) {
  .kanban-column { flex: 0 0 88%; min-width: 88%; max-width: 88%; }
}
.kanban-column-head {
  padding: 12px 14px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  position: sticky; top: 0; background: var(--bg-elevated); z-index: 1;
  border-radius: var(--radius) var(--radius) 0 0;
}
.kanban-column-title { font-family: var(--font-heading); font-weight: 700; font-size: 15px; }
.kanban-column-title small { display: block; color: var(--text-muted); font-weight: 400; font-size: 12px; }
.kanban-column-body { padding: 12px; overflow-y: auto; flex: 1; }

.kanban-prio-group { margin-bottom: 6px; }
.kanban-prio-label {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px;
  color: var(--text-dim); margin: 8px 4px 4px;
  display: flex; align-items: center; gap: 6px;
}
.kanban-prio-label::before {
  content: ''; width: 8px; height: 8px; border-radius: 50%; display: inline-block;
}
.kanban-prio-urgent .kanban-prio-label::before { background: var(--danger); }
.kanban-prio-normal .kanban-prio-label::before { background: var(--info); }
.kanban-prio-faible .kanban-prio-label::before { background: var(--text-dim); }

.kanban-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-left: 4px solid var(--border-strong);
  border-radius: var(--radius-sm);
  padding: 10px 12px; margin-bottom: 8px; cursor: pointer;
  transition: border-color 0.15s, transform 0.05s;
}
.kanban-card:hover { border-color: var(--accent); }
.kanban-card:active { transform: scale(0.995); }
.kanban-card.context-only { opacity: 0.55; cursor: default; }
.kanban-card.cloturee { opacity: 0.6; }
.kanban-card-title { font-weight: 600; font-size: 14px; margin-bottom: 6px; word-break: break-word; }
.kanban-card-title .lock { color: var(--text-dim); font-size: 12px; margin-left: 4px; }
.kanban-card-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; }
.kanban-assignee {
  display: inline-flex; align-items: center; gap: 5px;
  color: var(--text-muted);
}
.kanban-assignee-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.kanban-card-sub { color: var(--text-dim); font-size: 12px; margin-top: 4px; }
.kanban-card-creator { opacity: 0.7; font-style: italic; margin-left: 6px; }
.kanban-card.dragging { opacity: 0.4; }

/* Teinte de priorité sur toute la carte (fond doux + liseré gauche assorti) */
.kanban-card.prio-tint-red    { background: rgba(248,113,113,0.16); border-left-color: var(--danger); }
.kanban-card.prio-tint-blue   { background: rgba(96,165,250,0.16); border-left-color: var(--info); }
.kanban-card.prio-tint-green  { background: rgba(52,211,153,0.16); border-left-color: var(--success); }
.kanban-card.prio-tint-yellow { background: rgba(251,191,36,0.16); border-left-color: var(--warning); }
.kanban-card.prio-tint-gray   { background: rgba(154,160,168,0.12); border-left-color: var(--text-dim); }
.kanban-card.prio-tint-accent { background: var(--accent-soft); border-left-color: var(--accent); }
[data-theme="light"] .kanban-card.prio-tint-red    { background: rgba(220,38,38,0.10); }
[data-theme="light"] .kanban-card.prio-tint-blue   { background: rgba(37,99,235,0.09); }
[data-theme="light"] .kanban-card.prio-tint-green  { background: rgba(5,150,105,0.10); }
[data-theme="light"] .kanban-card.prio-tint-yellow { background: rgba(217,119,6,0.12); }
[data-theme="light"] .kanban-card.prio-tint-gray   { background: rgba(93,100,115,0.08); }

.kanban-add-btn {
  width: 100%; padding: 8px; background: transparent;
  border: 1px dashed var(--border-strong); color: var(--text-muted);
  border-radius: var(--radius-sm); cursor: pointer; font-size: 13px;
}
.kanban-add-btn:hover { border-color: var(--accent); color: var(--accent); }

.kanban-comments { margin-top: 12px; }
.kanban-comment {
  background: var(--bg-input); border-radius: var(--radius-sm);
  padding: 8px 10px; margin-bottom: 6px;
}
.kanban-comment-head { font-size: 12px; color: var(--text-muted); margin-bottom: 2px; }
.kanban-comment-body { font-size: 14px; white-space: pre-wrap; word-break: break-word; }

.kanban-subtask {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; border: 1px solid var(--border); border-radius: var(--radius-sm);
  margin-bottom: 6px;
}
.kanban-subtask .st-title { flex: 1; font-size: 14px; }

/* ===== Paramètres Kanban ===== */
.kparams-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.kparams-grid .panel-full { grid-column:1 / -1; }
.card-panel { background:var(--bg-elevated); border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.panel-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:10px; }
.panel-head h3 { margin:0; font-family:var(--font-heading); font-size:16px; }
.kparams-list { display:flex; flex-direction:column; gap:6px; }
.kparam-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); }
.kparam-actions { display:flex; gap:6px; flex:0 0 auto; }
.mod-items { display:flex; flex-direction:column; gap:6px; margin:8px 0; }
.mod-item { border:1px solid var(--border); border-radius:var(--radius-sm); padding:8px; }
.mod-item-line { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.mod-child { margin-left:18px; opacity:.9; }
@media (max-width:760px){ .kparams-grid { grid-template-columns:1fr; } }

/* ===== Suivi de pointage sous le Kanban ===== */
.kanban-activite { margin-top: 24px; }
.activite-hint { color: var(--text-dim); font-size: 13px; padding: 12px; background: var(--bg-elevated); border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); }
.activite-loading { color: var(--text-muted); font-size: 13px; padding: 10px; }
.activite-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; border-top: 1px solid var(--border); padding-top: 16px; }
.activite-head h3 { margin: 0; font-family: var(--font-heading); font-size: 16px; }
.activite-row { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 12px 14px; margin-bottom: 8px; }
.activite-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.activite-auteur { font-weight: 600; }
.activite-desc { font-size: 14px; white-space: pre-wrap; word-break: break-word; }
.activite-photos { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.activite-photo { width: 84px; height: 84px; object-fit: cover; border-radius: var(--radius-sm); border: 1px solid var(--border-strong); cursor: pointer; transition: transform .1s, border-color .15s; }
.activite-photo:hover { transform: scale(1.04); border-color: var(--accent); }

/* ===== Filtre par statut (multi) ===== */
.statut-filter { position: relative; display: inline-block; }
.statut-filter-menu {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 30;
  background: var(--bg-elevated); border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-elevated, 0 8px 24px rgba(0,0,0,.4));
  padding: 8px; min-width: 200px;
}
.statut-filter-item { display: flex; align-items: center; gap: 8px; padding: 5px 6px; border-radius: var(--radius-sm); cursor: pointer; }
.statut-filter-item:hover { background: var(--bg-input); }
.statut-filter-actions { border-top: 1px solid var(--border); margin-top: 6px; padding-top: 6px; }

/* ===== Calendrier / Planning ===== */
.cal-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.cal-toolbar .spacer { flex: 1 1 auto; }
.cal-nav-btn { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--border); background: var(--bg-elevated); color: var(--text); cursor: pointer; font-size: 16px; line-height: 1; transition: background .15s, border-color .15s; }
.cal-nav-btn:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
#calTitle { font-family: var(--font-heading); letter-spacing: .5px; }

.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-dow { text-align: center; font-size: 11px; letter-spacing: .6px; text-transform: uppercase; color: var(--text-dim); font-weight: 700; padding: 2px 0 6px; }

.cal-cell {
  min-height: 116px;
  background: var(--bg-elevated);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 7px 8px;
  overflow: hidden;
  transition: box-shadow .15s, transform .05s;
}
.cal-cell:not(.cal-empty):hover { box-shadow: var(--shadow); }
.cal-cell.cal-empty { background: transparent; border: none; }
/* week-end : teinte douce neutre */
.cal-cell.cal-weekend { background: color-mix(in srgb, var(--bg-elevated) 92%, var(--text-dim)); }
/* aujourd'hui : pastille chaleureuse, pas d'encadré agressif */
.cal-cell.cal-today { border-color: var(--accent); }
.cal-cell.cal-today .cal-daynum-badge { background: var(--accent); color: #fff; }

.cal-daynum { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.cal-daynum-badge { font-size: 12px; font-weight: 700; color: var(--text-muted); min-width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; }
.cal-add { width: 20px; height: 20px; line-height: 1; border-radius: 6px; border: 1px dashed var(--border-strong); background: transparent; color: var(--text-dim); cursor: pointer; font-size: 13px; padding: 0; opacity: 0; transition: opacity .15s, background .15s; }
.cal-cell:hover .cal-add { opacity: 1; }
.cal-add:hover { background: var(--accent); color: #fff; border-color: var(--accent); border-style: solid; }

/* Chantiers : discrets, neutres, juste un repère (pas d'alerte rouge) */
.cal-chantier { font-size: 10px; padding: 1px 6px; margin-bottom: 2px; color: var(--text-muted); background: transparent; border-radius: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 5px; }
.cal-chantier::before { content: ''; width: 6px; height: 6px; border-radius: 2px; background: var(--info); flex: 0 0 auto; opacity: .65; }
.cal-chantier-wrap { margin-bottom: 5px; }

/* Ouvrier planifié : carte douce avec la couleur perso en accent */
.cal-plan { font-size: 11px; padding: 3px 6px; margin-bottom: 3px; background: var(--bg-card); border: 1px solid var(--border); border-left: 3px solid var(--text-dim); border-radius: 6px; display: flex; align-items: center; gap: 5px; white-space: nowrap; overflow: hidden; }
.cal-plan .cal-pname { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.cal-plan .cal-pch { color: var(--text-dim); font-size: 10px; }
.cal-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.cal-x { margin-left: auto; border: none; background: transparent; color: var(--text-dim); cursor: pointer; font-size: 12px; padding: 0 2px; border-radius: 4px; }
.cal-x:hover { color: var(--danger); background: rgba(248,113,113,.12); }

/* Indispos : tons chauds mais doux */
.cal-dispo { font-size: 10px; padding: 2px 6px; margin-top: 2px; border-radius: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 4px; }
.cal-dispo.is-valide { background: rgba(248,113,113,0.14); color: var(--danger); }
.cal-dispo.is-demande { background: rgba(251,191,36,0.16); color: var(--warning); }
.cal-dispo.is-refuse { background: rgba(154,160,168,0.12); color: var(--text-dim); text-decoration: line-through; }
.cal-more { font-size: 10px; color: var(--text-dim); padding-left: 2px; }

.cal-legend { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 16px; font-size: 12px; color: var(--text-muted); padding: 12px 14px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 10px; }
.cal-leg { display: inline-flex; align-items: center; gap: 6px; }
.cal-leg-dot { width: 8px; height: 8px; border-radius: 2px; background: var(--info); opacity: .65; display: inline-block; }
.cal-leg-worker { width: 9px; height: 9px; border-radius: 50%; background: var(--accent); display: inline-block; }
@media (max-width: 760px) {
  .cal-cell { min-height: 84px; font-size: 10px; padding: 5px; }
  .cal-grid { gap: 3px; }
  .cal-add { opacity: 1; }
}

/* ===== Vue jour agrandie ===== */
.dayv-list { display: flex; flex-direction: column; gap: 6px; }
.dayv-chantier, .dayv-plan, .dayv-dispo { display: flex; align-items: center; gap: 8px; padding: 9px 12px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: 14px; flex-wrap: wrap; }
.dayv-ch-dot { width: 8px; height: 8px; border-radius: 2px; flex: 0 0 auto; }
.dayv-plan { border-left: 3px solid var(--text-dim); }
.dayv-dispo { background: rgba(248,113,113,0.06); }

/* ===== Dashboard récap ===== */
.recap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; margin-top: 8px; }
.recap-card { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
.recap-card-head { font-family: var(--font-heading); font-size: 15px; font-weight: 600; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.recap-ic { font-size: 16px; }
.recap-week { display: flex; flex-direction: column; gap: 8px; }
.recap-day { padding: 8px 10px; border-radius: 8px; background: var(--bg-card); border: 1px solid var(--border); }
.recap-day.is-today { border-color: var(--accent); }
.recap-day-head { font-size: 12px; font-weight: 700; color: var(--text-muted); margin-bottom: 4px; }
.recap-week-line { font-size: 13px; padding: 1px 0; }
.recap-task { display: flex; gap: 9px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.recap-task:last-child { border-bottom: none; }
.recap-task-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--danger); margin-top: 5px; flex: 0 0 auto; }
.recap-task-title { font-size: 14px; font-weight: 500; }
.recap-pt { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.recap-pt:last-child { border-bottom: none; }
.recap-alert { background: rgba(251,191,36,0.14); color: var(--warning); padding: 8px 11px; border-radius: 8px; font-size: 13px; font-weight: 500; margin-bottom: 10px; }

/* Dashboard compact sur mobile : tout tient sans scroller */
@media (max-width: 600px) {
  #tab-accueil > h2 { font-size: 18px; margin: 0 0 10px; }
  .recap-grid { gap: 10px; margin-top: 4px; }
  .recap-card { padding: 11px 12px; border-radius: 10px; }
  .recap-card-head { font-size: 13px; margin-bottom: 8px; gap: 6px; }
  .recap-ic { font-size: 14px; }
  /* "Ma semaine" : une ligne dense par jour */
  .recap-week { gap: 4px; }
  .recap-day { padding: 5px 8px; border-radius: 7px; display: flex; align-items: baseline; gap: 8px; }
  .recap-day-head { margin-bottom: 0; font-size: 11px; flex: 0 0 auto; min-width: 62px; }
  .recap-week-line { font-size: 12px; padding: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .recap-task { padding: 6px 0; gap: 7px; }
  .recap-task-title { font-size: 13px; }
  .recap-task .help { font-size: 11px; }
  .recap-pt { padding: 5px 0; font-size: 12px; }
  .recap-alert { padding: 6px 9px; font-size: 12px; margin-bottom: 7px; }
}

/* ===== Documents de chantier ===== */
.doc-upload { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 10px; padding: 12px; margin-bottom: 6px; }
.doc-grid { display: flex; flex-direction: column; gap: 8px; }
.doc-item { display: flex; align-items: center; gap: 10px; padding: 8px; background: var(--bg-card); border: 1px solid var(--border); border-radius: 9px; }
.doc-thumb { width: 46px; height: 46px; border-radius: 7px; object-fit: cover; background: var(--bg-input); flex: 0 0 auto; cursor: pointer; }
.doc-thumb-pdf { display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--danger); background: rgba(248,113,113,0.12); }
.doc-meta { flex: 1 1 auto; min-width: 0; }
.doc-name { font-size: 13px; font-weight: 600; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-name:hover { color: var(--accent); }
.doc-note { font-size: 12px; color: var(--text-muted); margin-top: 2px; }

/* ===== Menu déroulant Paramètres (nav) ===== */
.nav-settings { position: relative; margin-left: auto; display: flex; align-items: stretch; }
.nav-settings-btn { padding: 14px 8px; font-size: 13px; font-weight: 700; color: var(--text-muted); background: transparent; border: none; cursor: pointer; border-bottom: 3px solid transparent; font-family: var(--font-body); text-transform: uppercase; letter-spacing: 0.05em; white-space: nowrap; }
.nav-settings-btn:hover { color: var(--text); }
.nav-settings-menu { position: absolute; top: 100%; right: 0; min-width: 190px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow); padding: 6px; display: none; z-index: 40; }
.nav-settings-menu.open { display: block; }
.nav-settings-menu .tab { display: block; width: 100%; text-align: left; flex: none; padding: 10px 12px; border-radius: 7px; border-bottom: none; text-transform: none; letter-spacing: 0; font-size: 13px; }
.nav-settings-menu .tab:hover { background: var(--bg-card); color: var(--text); }
.nav-settings-menu .tab.active { background: var(--accent-soft); color: var(--accent); }

/* ===== Config dashboard ===== */
.dashcfg-list { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }
.dashcfg-item { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 10px; cursor: pointer; font-size: 14px; }
.dashcfg-item input { width: 18px; height: 18px; }
@media (max-width: 600px) {
  .nav-settings { margin-left: 0; }
  /* La barre défile en x (overflow) et rognerait un menu en absolu :
     position fixe (ancrée par JS sous le bouton) pour s'afficher par-dessus tout. */
  .nav-settings-menu { position: fixed; left: auto; min-width: 200px; z-index: 60; }
}

/* ============================================================
   Filtres de l'onglet Projets (chantiers) — Lot 2026-06-05
   ============================================================ */
.chantiers-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 10px 0 14px;
  padding: 10px 12px;
  background: var(--bg-muted, rgba(255,255,255,0.03));
  border: 1px solid var(--border, rgba(255,255,255,0.08));
  border-radius: var(--radius, 8px);
}
.chantiers-search { flex: 1 1 220px; min-width: 200px; }
.chantiers-search .input { width: 100%; }
.chantiers-statut-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.chantiers-statut-tabs .btn.btn-sm {
  padding: 4px 10px;
  font-size: 12px;
}
.chantiers-count {
  margin-left: auto;
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
}
@media (max-width: 700px) {
  .chantiers-filters { flex-direction: column; align-items: stretch; }
  .chantiers-count { margin-left: 0; text-align: right; }
  .chantiers-statut-tabs { justify-content: flex-start; }
}

/* ============================================================
   Bandeau d'invitation aux notifications push — 2026-06-05
   ============================================================ */
.push-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  background: linear-gradient(90deg, var(--brand-accent, #FF432E) 0%, #ff5a44 100%);
  color: #fff;
  font-size: 14px;
  font-family: var(--font-body, Figtree), sans-serif;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12);
  flex-wrap: wrap;
  z-index: 5;
  position: relative;
}
.push-banner-icon { font-size: 18px; flex-shrink: 0; }
.push-banner-text { flex: 1 1 200px; line-height: 1.4; }
.push-banner .btn {
  background: rgba(255,255,255,0.18);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.35);
  padding: 4px 12px;
  font-weight: 600;
}
.push-banner .btn:hover { background: rgba(255,255,255,0.3); }
.push-banner .btn.btn-secondary {
  background: transparent;
  border-color: rgba(255,255,255,0.4);
  padding: 4px 8px;
}
.push-banner .btn:disabled { opacity: 0.6; cursor: wait; }

/* Bloc Paramètres → notifications */
.push-settings-card {
  background: var(--bg-muted, rgba(255,255,255,0.03));
  border: 1px solid var(--border, rgba(255,255,255,0.08));
  border-radius: var(--radius, 8px);
  padding: 16px;
  margin-top: 12px;
}
.push-settings-card h4 { margin: 0 0 8px; }
.push-settings-status {
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 13px;
  margin: 10px 0;
}
.push-settings-status.is-granted { background: rgba(5, 150, 105, 0.15); color: #059669; border-left: 3px solid #059669; }
.push-settings-status.is-denied { background: rgba(220, 38, 38, 0.15); color: #DC2626; border-left: 3px solid #DC2626; }
.push-settings-status.is-default { background: rgba(217, 119, 6, 0.15); color: #D97706; border-left: 3px solid #D97706; }
.push-devices-list {
  margin-top: 10px;
  font-size: 13px;
}
.push-device {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,0.08));
}
.push-device:last-child { border-bottom: none; }
.push-device-name { flex: 1; color: var(--text); }
.push-device-date { color: var(--text-muted); font-size: 12px; }
