/* Stelapp — système de design (une seule feuille, aucune dépendance) */
:root {
  /* Palette Stelapp : blanc crème, bleu nuit, orange pour tout ce qui agit ou attire l'œil */
  --green-900: #f0a33a; --green-800: #c4781a; --green-700: #d8891f; --green-600: #d8891f; --green-500: #f0a33a; --green-100: #fdebd0; --green-50: #fbf3e6;
  --ok: #2e7d5b; --ok-100: #e2f2ea;
  --ink: #111111; --ink-2: #2a2a2a; --ink-3: #5a5a5a; --line: #e8e1d3; --line-2: #d8cfbc;
  --bg: #f8f4ec; --card: #fffdf9; --amber: #b7791f; --amber-100: #fbf0d9; --red: #c0392b; --red-100: #fbe4e1; --blue: #2b6cb0; --blue-100: #e1ecf8; --violet: #6b46c1; --violet-100: #ece6f8;
  --radius: 12px; --shadow: 0 1px 2px rgba(30,42,68,.05), 0 4px 16px rgba(30,42,68,.06);
  --font: "Manrope", "Inter", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
}
* { box-sizing: border-box; }
html { font-size: 16px; -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font); color: var(--ink); background: var(--bg); line-height: 1.5; }
a { color: var(--green-700); text-decoration: none; } a:hover { text-decoration: underline; }
h1, h2, h3, h4 { margin: 0 0 .5rem; line-height: 1.2; font-weight: 700; letter-spacing: -.01em; }
h1 { font-size: 1.75rem; } h2 { font-size: 1.3rem; } h3 { font-size: 1.05rem; }
p { margin: 0 0 .75rem; }
small, .muted { color: var(--ink-3); }
code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .9em; }
pre { white-space: pre-wrap; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: .75rem 1rem; }
hr { border: 0; border-top: 1px solid var(--line); margin: 1rem 0; }
table { width: 100%; border-collapse: collapse; font-size: .93rem; }
th, td { text-align: left; padding: .6rem .75rem; border-bottom: 1px solid var(--line); vertical-align: top; }
th { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-3); font-weight: 600; }
tr:hover td { background: var(--green-50); }
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }

/* Boutons & formulaires */
.btn { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1rem; border-radius: 9px; border: 1px solid var(--line-2); background: #fff; color: var(--ink); font: inherit; font-weight: 600; cursor: pointer; text-decoration: none !important; white-space: nowrap; }
.btn:hover { background: var(--green-50); border-color: var(--green-500); }
.btn-primary { background: var(--green-500); color: #1a1408; border-color: var(--green-500); font-weight: 700; } .btn-primary:hover { background: var(--green-700); border-color: var(--green-700); }
.btn-amber { background: var(--amber); color: #fff; border-color: var(--amber); }
.btn-danger { color: var(--red); border-color: var(--red-100); } .btn-danger:hover { background: var(--red-100); border-color: var(--red); }
.btn-sm { padding: .3rem .65rem; font-size: .85rem; } .btn-lg { padding: .8rem 1.4rem; font-size: 1.05rem; }
.btn[disabled] { opacity: .5; cursor: not-allowed; }
label { display: block; font-size: .85rem; font-weight: 600; margin-bottom: .3rem; color: var(--ink-2); }
input, select, textarea { width: 100%; font: inherit; padding: .6rem .75rem; border: 1px solid var(--line-2); border-radius: 9px; background: #fff; color: var(--ink); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--green-500); outline-offset: 1px; border-color: var(--green-500); }
textarea { min-height: 120px; resize: vertical; }
.field { margin-bottom: 1rem; }
.form-inline { display: flex; gap: .5rem; align-items: end; flex-wrap: wrap; }
.form-inline .field { margin: 0; flex: 1; min-width: 160px; }
form.inline { display: inline; }
.checkbox { display: flex; gap: .5rem; align-items: center; font-weight: 500; }
.checkbox input { width: auto; }

/* Layout application */
.app { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
.sidebar { background: var(--green-900); color: #1a1408; padding: 1.25rem 1rem; display: flex; flex-direction: column; gap: .25rem; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.sidebar .brand { display: flex; align-items: center; gap: .6rem; color: #111; font-weight: 800; font-size: 1.25rem; padding: .25rem .5rem 1rem; letter-spacing: -.02em; }
.sidebar .brand svg { width: 28px; height: 28px; }
.sidebar a.nav { display: flex; align-items: center; gap: .6rem; color: #1a1408; padding: .42rem .75rem; border-radius: 8px; font-weight: 500; font-size: .95rem; }
.sidebar a.nav:hover { background: rgba(255,255,255,.35); text-decoration: none; color: #111; }
.sidebar a.nav.active { background: #111; color: #fff; }
.sidebar .nav .count { margin-left: auto; background: #111; color: #fff; font-size: .72rem; font-weight: 700; padding: .05rem .45rem; border-radius: 99px; }
.sidebar .section { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: #5a3a08; padding: .7rem .75rem .25rem; }
.sidebar .footer { margin-top: auto; padding: 1rem .5rem 0; font-size: .82rem; color: #3a2a10; }
.main { padding: 1.5rem 2rem 4rem; max-width: 1280px; width: 100%; }
.topbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap; }
.topbar h1 { margin: 0; }
.demo-banner { background: var(--amber-100); color: #7a4f0e; border-bottom: 1px solid #efd9a8; padding: .5rem 2rem; font-weight: 700; font-size: .85rem; letter-spacing: .04em; display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.demo-banner span { font-weight: 500; letter-spacing: 0; }
.live-banner { background: var(--green-100); color: var(--green-800); border-bottom: 1px solid #bfe0cd; padding: .5rem 2rem; font-weight: 700; font-size: .85rem; }

/* Cartes & grilles */
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.25rem; box-shadow: var(--shadow); }
.card + .card { margin-top: 1rem; }
.card h2, .card h3 { display: flex; align-items: center; gap: .5rem; justify-content: space-between; }
.card h2 .actions, .card h3 .actions { font-weight: 500; font-size: .85rem; }
.grid { display: grid; gap: 1rem; }
.grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } .grid-5 { grid-template-columns: repeat(5, 1fr); }
.stack > * + * { margin-top: 1rem; }
.row { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.spread { justify-content: space-between; }

/* Tuiles KPI */
.kpi { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem 1.1rem; box-shadow: var(--shadow); }
.kpi .k-title { font-size: .8rem; font-weight: 700; color: var(--ink-3); text-transform: uppercase; letter-spacing: .05em; display: flex; gap: .4rem; align-items: center; }
.kpi .k-row { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; padding: .35rem 0; border-top: 1px solid var(--line); font-size: .93rem; }
.kpi .k-row > span:first-child { min-width: 0; }
.kpi .k-val { flex: none; text-align: right; }
.kpi .k-row:first-of-type { border-top: 0; margin-top: .4rem; }
.kpi .k-val { font-weight: 700; font-variant-numeric: tabular-nums; font-size: 1.05rem; }
.kpi .k-val.warn { color: var(--amber); } .kpi .k-val.bad { color: var(--red); } .kpi .k-val.good { color: var(--ok); }

/* Badges */
.badge { display: inline-block; font-size: .74rem; font-weight: 700; padding: .12rem .5rem; border-radius: 99px; letter-spacing: .02em; white-space: nowrap; }
.badge-green { background: var(--ok-100); color: var(--ok); } .badge-amber { background: var(--amber-100); color: #7a4f0e; }
.badge-red { background: var(--red-100); color: #8c2318; } .badge-gray { background: #eceff0; color: #4d5a55; } .badge-blue { background: var(--blue-100); color: #1f4f85; } .badge-violet { background: var(--violet-100); color: #4b2f8e; }

/* Attention requise */
.attention { border-left: 4px solid var(--amber); }
.attention h2 { color: #7a4f0e; }
.att-item { display: flex; gap: .75rem; padding: .7rem 0; border-top: 1px solid var(--line); align-items: flex-start; }
.att-item:first-of-type { border-top: 0; }
.att-item .dot { font-size: .85rem; line-height: 1.6; }
.att-item .t { font-weight: 600; } .att-item .w { color: var(--ink-3); font-size: .88rem; }
.att-item .act { margin-left: auto; display: flex; gap: .4rem; flex-shrink: 0; }

/* Liste d'activité */
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline li { display: grid; grid-template-columns: 62px 1fr; gap: .75rem; padding: .55rem 0; border-top: 1px solid var(--line); font-size: .93rem; }
.timeline li:first-child { border-top: 0; }
.timeline .when { color: var(--ink-3); font-size: .82rem; font-variant-numeric: tabular-nums; padding-top: .1rem; }
.timeline .who { font-size: .75rem; color: var(--ink-3); }

/* Démo */
.demo-steps { display: grid; grid-template-columns: repeat(6, 1fr); gap: .75rem; }
.demo-step { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; display: flex; flex-direction: column; gap: .5rem; min-height: 150px; }
.demo-step .n { width: 30px; height: 30px; border-radius: 50%; background: var(--green-500); color: #1a1408; font-weight: 800; display: grid; place-items: center; }
.demo-step.done .n { background: var(--green-500); }
.demo-step .t { font-weight: 700; line-height: 1.25; } .demo-step .s { font-size: .82rem; color: var(--ink-3); flex: 1; }
.demo-result { border-left: 4px solid var(--green-600); }
.demo-result .narr { list-style: none; padding: 0; margin: .5rem 0; }
.demo-result .narr li { padding: .35rem 0; border-top: 1px dashed var(--line); animation: fadein .4s ease both; }
.demo-result .narr li:nth-child(1){animation-delay:.05s}.demo-result .narr li:nth-child(2){animation-delay:.35s}.demo-result .narr li:nth-child(3){animation-delay:.65s}.demo-result .narr li:nth-child(4){animation-delay:.95s}.demo-result .narr li:nth-child(5){animation-delay:1.25s}.demo-result .narr li:nth-child(6){animation-delay:1.55s}.demo-result .narr li:nth-child(7){animation-delay:1.85s}.demo-result .narr li:nth-child(8){animation-delay:2.15s}
@keyframes fadein { from { opacity: 0; transform: translateY(4px);} to { opacity: 1; transform: none; } }
.mail { background: #fff; border: 1px solid var(--line-2); border-radius: 10px; padding: 1rem; font-size: .93rem; white-space: pre-wrap; }
.mail .hdr { color: var(--ink-3); font-size: .82rem; border-bottom: 1px solid var(--line); padding-bottom: .5rem; margin-bottom: .5rem; }

/* Divers */
.tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--line); margin-bottom: 1rem; flex-wrap: wrap; }
.tabs a { padding: .5rem .9rem; border-bottom: 2px solid transparent; color: var(--ink-2); font-weight: 600; }
.tabs a.active { border-color: var(--green-700); color: var(--green-800); } .tabs a:hover { text-decoration: none; color: var(--green-800); }
.empty { padding: 2rem; text-align: center; color: var(--ink-3); }
.flash { padding: .75rem 1rem; border-radius: 9px; margin-bottom: 1rem; font-weight: 500; }
.flash-ok { background: var(--ok-100); color: var(--ok); } .flash-err { background: var(--red-100); color: #8c2318; } .flash-info { background: var(--blue-100); color: #1f4f85; }
.score { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 7px; font-weight: 800; font-size: .85rem; }
.score-A { background: var(--ok-100); color: var(--ok); } .score-B { background: var(--blue-100); color: #1f4f85; } .score-C { background: #eceff0; color: #4d5a55; }
.gauge { height: 10px; background: #eceff0; border-radius: 99px; overflow: hidden; }
.gauge > i { display: block; height: 100%; background: var(--green-500); }
.kv { display: grid; grid-template-columns: 180px 1fr; gap: .35rem 1rem; font-size: .93rem; }
.kv dt { color: var(--ink-3); } .kv dd { margin: 0; }
.chip { display: inline-block; padding: .2rem .6rem; border-radius: 99px; background: var(--bg); border: 1px solid var(--line); font-size: .8rem; margin: .15rem .15rem 0 0; }
details summary { cursor: pointer; font-weight: 600; }
.calendar { display: grid; grid-template-columns: repeat(7, 1fr); gap: .55rem; }
.day { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: .75rem; min-height: 160px; }
.day.today { border-color: var(--green-500); box-shadow: 0 0 0 2px var(--green-100); }
.day .dh { font-weight: 700; font-size: .85rem; text-transform: capitalize; margin-bottom: .5rem; }
.evt { font-size: .82rem; padding: .35rem .5rem; border-radius: 7px; background: var(--green-50); border-left: 3px solid var(--green-600); margin-bottom: .35rem; }
.evt.chantier { background: var(--blue-100); border-color: var(--blue); } .evt.proposed { border-style: dashed; opacity: .8; }
.evt .tm { font-weight: 700; }

/* Auth */
.auth { min-height: 100vh; display: grid; place-items: center; padding: 2rem 1rem; background: var(--green-900); }
.auth .card { width: 100%; max-width: 440px; padding: 2rem; }
.auth .brand { display: flex; align-items: center; gap: .6rem; font-weight: 800; font-size: 1.4rem; margin-bottom: 1.25rem; color: var(--green-900); }

@media (max-width: 1100px) { .grid-5 { grid-template-columns: repeat(3, 1fr);} .grid-4 { grid-template-columns: repeat(2, 1fr);} .demo-steps { grid-template-columns: repeat(3, 1fr);} .calendar { grid-template-columns: repeat(4, 1fr);} }
@media (max-width: 800px) {
  .app { grid-template-columns: 1fr; }
  .sidebar { position: static; height: auto; flex-direction: row; flex-wrap: wrap; gap: .25rem; padding: .75rem; }
  .sidebar .section, .sidebar .footer { display: none; } .sidebar .brand { width: 100%; padding-bottom: .5rem; }
  .sidebar a.nav { padding: .4rem .6rem; font-size: .85rem; }
  .main { padding: 1rem; } .demo-banner { padding: .5rem 1rem; }
  .grid-2, .grid-3, .grid-4, .grid-5, .demo-steps { grid-template-columns: 1fr; }
  /* Quatorze jours sur un téléphone : deux colonnes, sinon la page n'en finit plus. */
  .calendar { grid-template-columns: repeat(2, 1fr); gap: .45rem; }
  .calendar .day { padding: .5rem .55rem; }
  .kv { grid-template-columns: 1fr; }
  table { display: block; overflow-x: auto; }
}

@media (prefers-reduced-motion: reduce) { .demo-result .narr li { animation: none; } }

/* Panneaux compacts, bouton vert de démonstration, boîte à idées, totaux */
.card.compact { padding: .9rem 1rem; } .card.compact h2 { font-size: .98rem; margin-bottom: .5rem; }
.card.compact .att-item { padding: .5rem 0; gap: .6rem; } .card.compact .att-item .t { font-size: .9rem; } .card.compact .att-item .w { font-size: .78rem; }
.card.compact .timeline li { padding: .4rem 0; font-size: .86rem; } .card.compact .timeline .who { font-size: .74rem; }
.btn-green { background: #2e7d5b; border-color: #2e7d5b; color: #fff; font-weight: 700; } .btn-green:hover { background: #256a4d; border-color: #256a4d; }
.k-total { display: block; font-size: .66rem; font-weight: 600; color: var(--ink-3); white-space: nowrap; text-align: right; }
.card.ideas { background: #fffbf2; border-color: #f3d9a8; }
.idea-form { display: flex; gap: .5rem; margin-bottom: .6rem; } .idea-form input { flex: 1; }
.idea-row { display: flex; justify-content: space-between; gap: .6rem; align-items: center; font-size: .86rem; padding: .35rem 0; border-top: 1px solid var(--line); }

/* Écran d'accueil : une affiche, pas un tableau de bord */
body.welcome-body { background: var(--bg); }
.welcome { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 3rem 1.5rem; gap: 1.2rem; }
.welcome-mark svg { width: 120px; height: 120px; }
.welcome-brand { font-size: 1.1rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-3); }
.welcome h1 { font-size: clamp(1.9rem, 4.5vw, 3.4rem); line-height: 1.1; letter-spacing: -.035em; max-width: 22ch; margin: 0; color: #111; text-wrap: balance; }
.welcome p { font-size: 1.15rem; color: var(--ink-2); max-width: 40ch; margin: 0; }
.welcome .btn-lg { padding: 1rem 2.6rem; font-size: 1.1rem; border-radius: 12px; margin-top: .6rem; }
.welcome-foot { margin-top: 2.5rem; font-size: .85rem; color: var(--ink-3); } .welcome-foot a { color: var(--ink-3); text-decoration: underline; }

/* Machine commerciale */
.funnel { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; }
.funnel-step { flex: 1 1 88px; min-width: 88px; background: var(--green-50); border: 1px solid var(--line); border-radius: 10px; padding: .55rem .6rem; }
.funnel-step .fv { font-size: 1.45rem; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.1; }
.funnel-step .fl { font-size: .76rem; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; }
.score-bar { display: inline-block; width: 46px; height: 6px; border-radius: 99px; background: var(--line); vertical-align: middle; overflow: hidden; }
.score-bar > span { display: block; height: 100%; background: var(--green-500); }
ul.rules { margin: .3rem 0 0; padding-left: 1.1rem; font-size: .9rem; }
ul.rules li { margin-bottom: .25rem; }
ol.tour { margin: .3rem 0 0; padding-left: 1.3rem; font-size: .95rem; }
ol.tour li { margin-bottom: .4rem; }
details.touch { border-top: 1px solid var(--line); padding: .5rem 0; }
details.touch summary { cursor: pointer; font-size: .9rem; }
details.touch pre { margin: .5rem 0; font-size: .82rem; }
details.touch .w { font-size: .82rem; color: var(--ink-3); }

/* Liste d'appels — lisible d'une main, debout */
.callcard .pitch { font-size: 1.02rem; line-height: 1.55; border-left: 3px solid var(--green-500); padding-left: .8rem; margin: .3rem 0 .6rem; }
.card.call { padding: 1rem 1.1rem; }
.card.call + .card.call { margin-top: .75rem; }
.call-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
a.tel { display: inline-block; margin: .5rem 0 .3rem; font-size: 1.7rem; font-weight: 800; letter-spacing: .02em; font-variant-numeric: tabular-nums; color: var(--ink); text-decoration: none; }
a.tel:hover { color: var(--green-700); }
.card.call .w { font-size: .9rem; color: var(--ink-3); margin: .2rem 0 .5rem; }
.call-actions { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .6rem; }
/* Un élément de grille refuse de rétrécir sous la taille de son contenu tant qu'on ne
   l'y autorise pas : sans ce min-width, toute la page déborde vers la droite sur un téléphone. */
.app > .main, .main { min-width: 0; }
@media (max-width: 720px) {
  .main { padding: 1rem 1rem 3rem; max-width: 100%; }
  .card, .card.call, .kpi { min-width: 0; }
  .demo-banner, .live-banner { flex-wrap: wrap; padding: .5rem .9rem; font-size: .78rem; }
  .topbar h1 { font-size: 1.35rem; }
  .call-head { flex-wrap: wrap; }
  .btn { white-space: normal; }
  a.tel { font-size: 2rem; }
  .call-actions .btn { flex: 1 1 46%; justify-content: center; }
  .funnel-step { flex: 1 1 30%; }
  .card table { display: block; overflow-x: auto; }
}

/* Kit de vente : le script se lit d'abord, il se modifie ensuite. Sur un téléphone,
   un pavé de texte lisible vaut mieux qu'une zone de saisie de seize lignes. */
.script { white-space: pre-wrap; word-break: break-word; font-family: inherit; font-size: .95rem; line-height: 1.6; margin: 0; padding: .9rem 1rem; background: var(--bg-2, #faf7f0); border: 1px solid var(--line); border-radius: 10px; max-width: 68ch; overflow-x: auto; }
.script-edit { margin-top: .8rem; }
.script-edit summary { cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--ink-3); }
.script-edit summary:hover { color: var(--ink); }
.script-edit textarea { min-height: 320px; }

/* Sur téléphone, le menu devenait un mur de vingt liens à franchir avant d'arriver
   au contenu. Il tient maintenant sur une seule ligne qui défile latéralement, et la
   page commence tout de suite — comme sur un ordinateur. */
@media (max-width: 800px) {
  .sidebar { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; padding: .55rem .75rem; gap: .35rem; }
  .sidebar::-webkit-scrollbar { display: none; }
  .sidebar .brand { display: none; }
  .sidebar a.nav { flex: 0 0 auto; white-space: nowrap; }
  .sidebar .nav .count { margin-left: .35rem; }
}

/* Petit lien « annuler » sur un rendez-vous de l'agenda : discret, mais accessible
   au doigt sur téléphone (zone de 32 px de haut). */
.lnk-annuler { background: none; border: 0; padding: .3rem .25rem; margin-left: .35rem; font: inherit; font-size: .7rem; color: var(--muted, #6b7280); text-decoration: underline; cursor: pointer; min-height: 32px; }
.lnk-annuler:hover { color: #b91c1c; }

/* Encart « Installer sur mon téléphone » (Réglages). Les deux gestes restent
   affichés même quand le navigateur propose son propre bouton : sur iPhone il
   n'y a pas de bouton, seulement le geste. */
.install-manuel { display: flex; flex-direction: column; gap: .4rem; margin-top: .8rem; font-size: .88rem; color: var(--muted, #6b7280); }
.install-manuel b { color: inherit; font-weight: 700; }

/* Patrimoine : les deux chiffres qui comptent, avant tout le reste.
   La valeur du parc d'abord, le chiffre d'affaires juste en dessous, plus discret. */
.patrimoine-tete { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1.25rem 2.5rem;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.25rem 1.4rem; box-shadow: var(--shadow); margin-bottom: 1rem; }
.patrimoine-tete .pt-label { font-size: .78rem; font-weight: 700; color: var(--ink-3);
  text-transform: uppercase; letter-spacing: .06em; margin-bottom: .15rem; }
.patrimoine-tete .pt-chiffre { font-size: clamp(2.1rem, 7vw, 3rem); font-weight: 800; line-height: 1;
  letter-spacing: -.03em; font-variant-numeric: tabular-nums; color: var(--ink); }
.patrimoine-tete .pt-chiffre-2 { font-size: clamp(1.4rem, 4.5vw, 1.9rem); font-weight: 800; line-height: 1.05;
  letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: var(--ink); }
.patrimoine-tete .pt-detail { font-size: .8rem; color: var(--ink-3); margin-top: .35rem; }
.patrimoine-tete .pt-principal { flex: 1 1 15rem; min-width: 0; }
.patrimoine-tete .pt-second { flex: 0 1 13rem; min-width: 0; }
@media (max-width: 620px) { .patrimoine-tete { gap: 1rem; } .patrimoine-tete .pt-second { flex-basis: 100%; } }

/* Agenda sur quatorze jours : le week-end est visible mais visiblement à part. */
.calendar .day.weekend { background: color-mix(in srgb, var(--ink) 4%, transparent); }
.calendar .day.weekend .dh { opacity: .72; }
